@graphysdk/react-renderer 2.0.0-beta.1786440210947 → 2.0.0-beta.1787130761469

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.
@@ -1 +1 @@
1
- @property --graphy-text-scale{syntax:"<number>";inherits:true;initial-value:1}@property --graphy-font-size-xxs{syntax:"<length>";inherits:true;initial-value:10px}@property --graphy-font-size-xs{syntax:"<length>";inherits:true;initial-value:11px}@property --graphy-font-size-sm{syntax:"<length>";inherits:true;initial-value:12px}@property --graphy-font-size-md{syntax:"<length>";inherits:true;initial-value:14px}@property --graphy-font-size-lg{syntax:"<length>";inherits:true;initial-value:16px}@property --graphy-font-size-xl{syntax:"<length>";inherits:true;initial-value:20px}@property --graphy-font-size-editor-body{syntax:"<length>";inherits:true;initial-value:15px}@property --graphy-font-size-heading-sm{syntax:"<length>";inherits:true;initial-value:18px}@property --graphy-font-size-heading-md{syntax:"<length>";inherits:true;initial-value:22px}@property --graphy-font-size-heading-lg{syntax:"<length>";inherits:true;initial-value:28px}._1d8mpa10{overflow:visible}._324dw20{filter:drop-shadow(0 2px 2px #0e0e3414)drop-shadow(0 0 2px #0f0f181f)}._1suo8ub0{filter:drop-shadow(0 4px 4px #0e0e3414)drop-shadow(0 0 4px #0f0f181f)}._16vokpr0{pointer-events:none;-webkit-user-select:none;user-select:none}._2qyyu60{flex-shrink:0;display:block;overflow:visible}._10igzta0{pointer-events:none;position:fixed;top:0;left:0}.bow4tg0{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale));position:relative;overflow:hidden}.bow4tg1{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale))}.bow4tg2{background-color:var(--graphy-graph-background);position:absolute;top:0;bottom:0;left:0;right:0}.bow4tg3{outline:none}.bow4tg4{background-image:linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent)), linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent));background-position:0 0,1em 1em;background-size:2em 2em}._1ii3bsb0{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-grey-100:#fff;--graphy-grey-95:#fcfcfc;--graphy-grey-90:#fafafa;--graphy-grey-85:#f5f5f5;--graphy-grey-80:#f0f0f0;--graphy-grey-75:#e8e8e8;--graphy-grey-70:#e5e5e5;--graphy-grey-60:#ccc;--graphy-grey-50:#c4c4c4;--graphy-grey-0:#1d2129;--graphy-red-60:#e14b49;--graphy-red-50:#f93939;--graphy-amber-70:#ffba8c;--graphy-amber-50:#ffc849;--graphy-amber-40:#feae47;--graphy-amber-30:#e7a816;--graphy-green-60:#06b299;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-grey-gradient-80:linear-gradient(to top, #f0f0f1, #f9f9ff);--graphy-text-primary:var(--graphy-black);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-grey-100);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-border-100:var(--graphy-grey-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-grey-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-grey-0) 10%);--graphy-sunken-background:var(--graphy-grey-90);--graphy-default-background:var(--graphy-grey-100);--graphy-raised-background:var(--graphy-grey-85);--graphy-overlay-background:var(--graphy-grey-100);--graphy-overlay-border-gradient:var(--graphy-border-10);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-grey-100);--graphy-grid-line-color:var(--graphy-border-10);--graphy-axis-tick-color:var(--graphy-border-10);--graphy-origin-line-color:var(--graphy-grey-0);--graphy-legend-background:var(--graphy-default-background);--graphy-legend-border-color:var(--graphy-border-10);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-legend-text-color:var(--graphy-text-primary);--graphy-dimmed-series-label-text-color:var(--graphy-text-disabled);--graphy-dimmed-series-label-line-color:var(--graphy-grey-60);--graphy-trend-negative-color:var(--graphy-red-60);--graphy-trend-positive-color:var(--graphy-green-60);--graphy-trend-neutral-color:var(--graphy-text-secondary);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-grey-80);--graphy-toolbar-button-background-color-selected:var(--graphy-grey-60);--graphy-toolbar-separator-color:var(--graphy-grey-60);--graphy-tooltip-background:var(--graphy-white);--graphy-tooltip-border-color:var(--graphy-border-10);--graphy-tooltip-heading-text-color:var(--graphy-text-primary);--graphy-tooltip-label-text-color:var(--graphy-text-secondary);--graphy-tooltip-value-text-color:var(--graphy-text-primary);--graphy-tooltip-primary-row-color:var(--graphy-grey-80);--graphy-hover-guide-line-color:color-mix(in srgb, transparent, var(--graphy-black) 20%);--graphy-hover-guide-fill-color:color-mix(in srgb, transparent, var(--graphy-black) 4%);--graphy-heatmap-empty-tile-background:var(--graphy-grey-80);--graphy-data-label-outside-background:color-mix(in srgb, transparent, var(--graphy-text-primary) 10%);--graphy-data-label-text-color:var(--graphy-text-primary);--graphy-data-label-inside-text-color:var(--graphy-white);--graphy-stack-total-text-color:var(--graphy-text-primary);--graphy-stack-total-background:var(--graphy-grey-100);--graphy-stack-total-stroke:var(--graphy-grey-60);--graphy-default-annotation-arrow-stroke:var(--graphy-black);--graphy-default-annotation-shape-stroke:var(--graphy-black);--graphy-default-annotation-shape-fill:var(--graphy-canvas-blue);--graphy-arrow-annotation-sticker-outline-color:#1d2129;--graphy-arrow-annotation-sticker-outline-color-inverse:#fff;--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:#3d414c;--graphy-canvas-default:#000;--graphy-canvas-blue:#3b82f6;--graphy-canvas-cyan:#06b6d4;--graphy-canvas-green:#10b981;--graphy-canvas-yellow:#e5b400;--graphy-canvas-orange:#f97316;--graphy-canvas-red:#ef4444;--graphy-canvas-pink:#e845bf;--graphy-canvas-purple:#8b5cf6;--graphy-canvas-gray:#78716c;--graphy-canvas-inverse:#fff;--graphy-grid-line-width:1px;--graphy-grid-line-dash:2 3;--graphy-grid-line-dotted:0 3;--graphy-tooltip-border-radius:6px;--graphy-tooltip-border-width:1px;--graphy-tooltip-padding-block:8px;--graphy-tooltip-padding-inline:10px;--graphy-tooltip-row-gap:4px;--graphy-tooltip-shadow:0 4px 12px #0000002e;--graphy-editor-control-height:32px;--graphy-tick-label-offset:10px;--graphy-legend-item-gap:8px;--graphy-legend-swatch-gap:8px;--graphy-legend-swatch-width:10px;--graphy-legend-swatch-height:12px;--graphy-legend-pill-padding-inline:8px;--graphy-legend-pill-padding-block:2px;--graphy-legend-pill-border-width:1px;--graphy-headline-row-gap:2px;--graphy-headline-item-gap:24px;--graphy-text-scale:1;--graphy-font-family-default:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-weight-black:900;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-tick-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-axis-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-data-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-stack-total:var(--graphy-font-weight-semibold) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-category-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-legend-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-series-label:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-heading:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip-label:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-goal-line-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-chart-total:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-small:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-medium:var(--graphy-font-weight-medium) var(--graphy-font-size-lg)/var(--graphy-font-line-height-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-large:var(--graphy-font-weight-semibold) var(--graphy-font-size-xl)/var(--graphy-font-line-height-xl) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default))}._1ii3bsb1{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-grey-100:#000;--graphy-grey-95:#0d0d0d;--graphy-grey-90:#1a1a1a;--graphy-grey-85:#1f1f1f;--graphy-grey-80:#2a2a2a;--graphy-grey-75:#2e2e2e;--graphy-grey-70:#353535;--graphy-grey-60:#494949;--graphy-grey-50:#6f6f6f;--graphy-grey-0:#fff;--graphy-red-60:#cb3333;--graphy-red-50:#f93939;--graphy-amber-70:#f48135;--graphy-amber-50:#feae47;--graphy-amber-40:#ffc849;--graphy-amber-30:#ffd061;--graphy-green-60:#0ac600;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-grey-gradient-80:linear-gradient(to top, #222429, #31353f);--graphy-text-primary:var(--graphy-grey-0);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 80%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-grey-70);--graphy-border-100:var(--graphy-grey-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-grey-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-grey-0) 10%);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-sunken-background:var(--graphy-grey-100);--graphy-default-background:var(--graphy-grey-90);--graphy-raised-background:var(--graphy-grey-80);--graphy-overlay-background:var(--graphy-grey-90);--graphy-overlay-border-gradient:var(--graphy-grey-gradient-80);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-grey-90);--graphy-grid-line-color:var(--graphy-border-10);--graphy-axis-tick-color:var(--graphy-border-10);--graphy-origin-line-color:var(--graphy-grey-0);--graphy-legend-background:var(--graphy-default-background);--graphy-legend-border-color:var(--graphy-border-10);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-legend-text-color:var(--graphy-text-primary);--graphy-dimmed-series-label-text-color:var(--graphy-text-disabled);--graphy-dimmed-series-label-line-color:var(--graphy-grey-60);--graphy-trend-negative-color:var(--graphy-red-60);--graphy-trend-positive-color:var(--graphy-green-60);--graphy-trend-neutral-color:var(--graphy-text-secondary);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-grey-80);--graphy-toolbar-button-background-color-selected:var(--graphy-grey-60);--graphy-toolbar-separator-color:var(--graphy-grey-60);--graphy-tooltip-background:var(--graphy-grey-70);--graphy-tooltip-border-color:var(--graphy-grey-60);--graphy-tooltip-heading-text-color:var(--graphy-text-primary);--graphy-tooltip-label-text-color:var(--graphy-text-secondary);--graphy-tooltip-value-text-color:var(--graphy-text-primary);--graphy-tooltip-primary-row-color:var(--graphy-grey-60);--graphy-hover-guide-line-color:color-mix(in srgb, transparent, var(--graphy-white) 20%);--graphy-hover-guide-fill-color:color-mix(in srgb, transparent, var(--graphy-white) 6%);--graphy-heatmap-empty-tile-background:var(--graphy-grey-80);--graphy-data-label-outside-background:color-mix(in srgb, transparent, var(--graphy-text-primary) 10%);--graphy-data-label-text-color:var(--graphy-text-primary);--graphy-data-label-inside-text-color:var(--graphy-white);--graphy-stack-total-text-color:var(--graphy-text-primary);--graphy-stack-total-background:var(--graphy-grey-100);--graphy-stack-total-stroke:var(--graphy-grey-60);--graphy-default-annotation-arrow-stroke:var(--graphy-white);--graphy-default-annotation-shape-stroke:var(--graphy-white);--graphy-default-annotation-shape-fill:var(--graphy-canvas-blue);--graphy-arrow-annotation-sticker-outline-color:#fff;--graphy-arrow-annotation-sticker-outline-color-inverse:#1d2129;--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:var(--graphy-white);--graphy-canvas-default:#fff;--graphy-canvas-blue:#60a5fa;--graphy-canvas-cyan:#22d3ee;--graphy-canvas-green:#34d399;--graphy-canvas-yellow:#ffc800;--graphy-canvas-orange:#fb923c;--graphy-canvas-red:#f87171;--graphy-canvas-pink:#f979d9;--graphy-canvas-purple:#a78bfa;--graphy-canvas-gray:#a8a29e;--graphy-canvas-inverse:#000;--graphy-grid-line-width:1px;--graphy-grid-line-dash:2 3;--graphy-grid-line-dotted:0 3;--graphy-tooltip-border-radius:6px;--graphy-tooltip-border-width:1px;--graphy-tooltip-padding-block:8px;--graphy-tooltip-padding-inline:10px;--graphy-tooltip-row-gap:4px;--graphy-tooltip-shadow:0 4px 12px #0000002e;--graphy-editor-control-height:32px;--graphy-tick-label-offset:10px;--graphy-legend-item-gap:8px;--graphy-legend-swatch-gap:8px;--graphy-legend-swatch-width:10px;--graphy-legend-swatch-height:12px;--graphy-legend-pill-padding-inline:8px;--graphy-legend-pill-padding-block:2px;--graphy-legend-pill-border-width:1px;--graphy-headline-row-gap:2px;--graphy-headline-item-gap:24px;--graphy-text-scale:1;--graphy-font-family-default:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-weight-black:900;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-tick-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-axis-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-data-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-stack-total:var(--graphy-font-weight-semibold) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-category-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-legend-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-series-label:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-heading:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip-label:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-goal-line-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-chart-total:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-small:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-medium:var(--graphy-font-weight-medium) var(--graphy-font-size-lg)/var(--graphy-font-line-height-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-large:var(--graphy-font-weight-semibold) var(--graphy-font-size-xl)/var(--graphy-font-line-height-xl) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default))}._1cocly40{color:inherit;text-underline-offset:.15em;text-decoration:underline}._19519k80{background:var(--graphy-tooltip-background);border:var(--graphy-tooltip-border-width) solid var(--graphy-tooltip-border-color);border-radius:var(--graphy-tooltip-border-radius);padding-block:var(--graphy-tooltip-padding-block);min-width:120px;max-width:280px;box-shadow:var(--graphy-tooltip-shadow);flex-direction:column;gap:4px;display:flex}._19519k81{font:var(--graphy-font-tooltip-heading);color:var(--graphy-tooltip-heading-text-color);white-space:nowrap;text-overflow:ellipsis;padding-inline:var(--graphy-tooltip-padding-inline);overflow:hidden}._19519k82{font:var(--graphy-font-tooltip-label);color:var(--graphy-tooltip-value-text-color);padding-inline:var(--graphy-tooltip-padding-inline)}._19519k83{flex-direction:column;display:flex}._19519k84{padding-block:var(--graphy-tooltip-row-gap);padding-inline:var(--graphy-tooltip-padding-inline);flex-direction:row;align-items:center;gap:8px;display:flex}._19519k85{background-color:var(--graphy-tooltip-primary-row-color)}._19519k86{flex-shrink:0;display:block;overflow:visible}._19519k87{width:12px;height:12px}._19519k88{font:var(--graphy-font-tooltip-label);color:var(--graphy-tooltip-label-text-color);white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}._19519k89{font:var(--graphy-font-tooltip-label);color:var(--graphy-tooltip-value-text-color);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}._19519k8a{pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1000;position:fixed;top:0;left:0}.vultop0{box-sizing:border-box;white-space:nowrap;color:#2a2a28;opacity:.62;background-color:#ffffff8c;border-radius:999px;flex-shrink:0;align-items:center;gap:10px;height:22px;padding-inline-start:9px;padding-inline-end:11px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11.5px;line-height:1;text-decoration:none;transition:opacity .12s,max-width .25s,padding .25s,gap .25s;display:inline-flex;box-shadow:0 1px 4px #00000017}.vultop0:hover{opacity:1}.vultop0:focus-visible{opacity:1}.vultop0:focus-visible{outline-offset:2px;outline:2px solid #2a2a28}.vultop0[data-zone=mid]{opacity:.8;background-color:#ffffffbf}.vultop0[data-zone=dark]{opacity:.85;color:#fff;box-shadow:none;background-color:#ffffff14}.vultop0[data-zone=dark]:focus-visible{outline:2px solid #fff}.vultop0[data-visual=mini]{justify-content:center;gap:0;width:22px;padding-inline-start:0;padding-inline-end:0}.vultop0[data-visual=mini]:hover{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop0[data-visual=mini]:focus-visible{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop1{flex-direction:row-reverse}.vultop2{flex-shrink:0;justify-content:center;align-items:center;width:9px;height:12px;display:inline-flex}.vultop3{object-fit:contain;width:9px;height:12px;display:block}.vultop0[data-zone=dark] .vultop3{filter:invert()}.vultop4{align-items:baseline;gap:.3em;max-width:120px;transition:max-width .25s,opacity .25s;display:inline-flex;overflow:hidden}.vultop0[data-visual=mini] .vultop4{opacity:0;max-width:0}.vultop0[data-visual=mini]:hover .vultop4{opacity:1;max-width:120px}.vultop0[data-visual=mini]:focus-visible .vultop4{opacity:1;max-width:120px}.vultop5{font-weight:550}.vultop6{place-self:end}.vultop7{position:absolute;top:50%;right:0;transform:translateY(-50%)}@media (prefers-reduced-motion:reduce){.vultop0,.vultop4{transition:none}}.yl2d2l0{justify-content:center;align-items:center;gap:var(--graphy-space-xs);block-size:32px;inline-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;display:inline-flex}.yl2d2l0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.yl2d2l0[data-popup-open]{background:var(--graphy-toolbar-button-background-color-selected)}.yl2d2l1{border:1px solid var(--graphy-border-100);box-sizing:border-box;border-radius:50%;block-size:16px;inline-size:16px}.yl2d2l2{flex-shrink:0;block-size:8px;inline-size:8px}.yl2d2l3{z-index:var(--graphy-z-index-editor-popover)}.yl2d2l4{gap:var(--graphy-space-lg);min-inline-size:220px;padding:var(--graphy-space-lg);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);flex-direction:column;display:flex}.yl2d2l5{gap:var(--graphy-space-sm);flex-direction:column;display:flex}.yl2d2l6{font:var(--graphy-font-menu-group-title);color:var(--graphy-text-secondary)}.yl2d2l7{grid-template-columns:repeat(6,1fr);display:grid}.yl2d2l8{border-radius:var(--graphy-radii-md);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;block-size:28px;inline-size:28px;padding:0;display:inline-flex}.yl2d2l8:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.yl2d2l8[data-active=true]{background:var(--graphy-toolbar-button-background-color-selected)}.yl2d2l9{box-sizing:border-box;border-radius:50%;block-size:1.6em;inline-size:1.6em}.yl2d2la{align-items:center;gap:var(--graphy-space-sm);inline-size:100%;padding:var(--graphy-space-xs) var(--graphy-space-sm);background:var(--graphy-grey-80);border-radius:var(--graphy-radii-md);border:1px solid var(--graphy-grey-70);color:var(--graphy-text-primary);font:var(--graphy-font-input);cursor:pointer;text-align:start;display:flex}.yl2d2la:hover{border-color:var(--graphy-grey-70)}.yl2d2la:focus-visible{border-color:var(--graphy-grey-60);outline:none}.yl2d2la[data-popup-open]{border-color:var(--graphy-grey-60)}.yl2d2lb{font:var(--graphy-font-input);color:var(--graphy-text-primary);flex:1}.yl2d2lc{gap:var(--graphy-space-md);inline-size:240px;padding:var(--graphy-space-lg);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);flex-direction:column;display:flex}.yl2d2ld{block-size:auto!important;inline-size:100%!important}.yl2d2ld .react-colorful__saturation{aspect-ratio:1;border-radius:var(--graphy-radii-md);border:1px solid var(--graphy-grey-70);inline-size:100%;margin-bottom:var(--graphy-space-sm);box-sizing:border-box}.yl2d2ld .react-colorful__hue{border-radius:var(--graphy-radii-sm);border:1px solid var(--graphy-grey-70);box-sizing:border-box;block-size:16px}.yl2d2ld .react-colorful__pointer{border:2px solid var(--graphy-white);block-size:18px;inline-size:18px;box-shadow:var(--graphy-elevation-sm)}.yl2d2ld .react-colorful__saturation-pointer,.yl2d2ld .react-colorful__hue-pointer{border-radius:50%}.yl2d2le{inline-size:100%;padding:var(--graphy-space-xs) var(--graphy-space-sm);background:var(--graphy-grey-80);border:1px solid var(--graphy-grey-70);border-radius:var(--graphy-radii-md);color:var(--graphy-text-primary);font:var(--graphy-font-input);text-transform:uppercase;outline:none}.yl2d2le:hover{border-color:var(--graphy-grey-70)}.yl2d2le:focus{border-color:var(--graphy-grey-60)}._1ebx0ha0{align-items:center;gap:var(--graphy-space-xs);padding:var(--graphy-space-xs);background:var(--graphy-toolbar-background-color);border-radius:var(--graphy-radii-lg);display:flex}._1ebx0ha0:before{content:"";pointer-events:none;border-radius:var(--graphy-radii-lg);background:var(--graphy-overlay-border-gradient) border-box;-webkit-mask-composite:xor;border:1px solid #0000;position:absolute;top:0;bottom:0;left:0;right:0;transform:translateZ(0);-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:padding-box,border-box;mask-clip:padding-box,border-box;-webkit-mask-origin:padding-box,border-box;mask-origin:padding-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}._1ebx0ha1{padding-inline:var(--graphy-space-xs);align-items:center;gap:var(--graphy-space-xxs);display:flex}._1ebx0ha2{background:var(--graphy-toolbar-separator-color);width:1px;height:16px}.asohov0{flex-shrink:0}.asohov1{color:var(--graphy-icon-primary)}.asohov2{color:var(--graphy-icon-secondary)}._1qkyw7q0{justify-content:center;align-items:center;gap:var(--graphy-space-xs);block-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;display:inline-flex}._1qkyw7q0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}._1qkyw7q0[data-popup-open]{background:var(--graphy-toolbar-button-background-color-selected)}._1qkyw7q1{white-space:nowrap;align-items:center;display:inline-flex}._1qkyw7q2{flex-shrink:0;block-size:10px;inline-size:10px}._1qkyw7q3{z-index:var(--graphy-z-index-toolbar-popover)}._1qkyw7q4{min-inline-size:180px;padding:var(--graphy-space-xs);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);outline:none;flex-direction:column;display:flex}._1qkyw7q5{padding:var(--graphy-space-sm) var(--graphy-space-md);border-radius:var(--graphy-radii-sm);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-menu-item-label);-webkit-user-select:none;user-select:none;outline:none;align-items:center;display:flex}._1qkyw7q5[data-highlighted]{background:var(--graphy-toolbar-button-background-color-hovered)}._1qkyw7q5[data-selected=true]{background:var(--graphy-toolbar-button-background-color-selected)}.b5kquu0{block-size:32px;min-inline-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;justify-content:center;align-items:center;display:inline-flex}.b5kquu0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.b5kquu0[data-active=true],.b5kquu0[data-popup-open]{background:var(--graphy-toolbar-button-background-color-selected)}.b5kquu1{z-index:var(--graphy-z-index-toolbar-popover)}.b5kquu2{align-items:center;gap:var(--graphy-space-xs);padding:var(--graphy-space-xs);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);outline:none;display:flex}.b5kquu3{inline-size:220px;padding:var(--graphy-space-xs) var(--graphy-space-sm);background:var(--graphy-grey-80);border:1px solid var(--graphy-grey-70);border-radius:var(--graphy-radii-md);color:var(--graphy-text-primary);font:var(--graphy-font-input);outline:none}.b5kquu3:hover{border-color:var(--graphy-grey-70)}.b5kquu3:focus{border-color:var(--graphy-grey-60)}.b5kquu4{background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;block-size:32px;min-inline-size:32px;color:var(--graphy-text-primary);border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.b5kquu4:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.k91gos0{block-size:32px;min-inline-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;justify-content:center;align-items:center;display:inline-flex}.k91gos0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.k91gos0[data-pressed]{background:var(--graphy-toolbar-button-background-color-selected)}.k91gos1{padding:var(--graphy-space-xs) var(--graphy-space-md);background:var(--graphy-text-primary);color:var(--graphy-default-background);border-radius:var(--graphy-radii-xs);font:var(--graphy-font-uitooltip-secondary);pointer-events:none;z-index:var(--graphy-z-index-toolbar-tooltip)}._1bp10ig0{z-index:var(--graphy-z-index-toolbar)}._2ngohc0 .ProseMirror{outline:none}._2ngohc0 .ProseMirror .is-empty:before{content:attr(data-placeholder);color:currentColor;opacity:.4;float:left;pointer-events:none;height:0}._2ngohc0 .ProseMirror h1,._2ngohc0 .ProseMirror h2,._2ngohc0 .ProseMirror h3,._2ngohc0 .ProseMirror h4,._2ngohc0 .ProseMirror h5,._2ngohc0 .ProseMirror h6{margin:0}._2ngohc0 .ProseMirror h1{font:var(--graphy-font-text-editor-h1)}._2ngohc0 .ProseMirror h2{font:var(--graphy-font-text-editor-h2)}._2ngohc0 .ProseMirror h3{font:var(--graphy-font-text-editor-h3)}._2ngohc0 .ProseMirror h4,._2ngohc0 .ProseMirror h5,._2ngohc0 .ProseMirror h6{font:var(--graphy-font-text-editor-h6)}._2ngohc0 .ProseMirror p{font:var(--graphy-font-text-editor-body);margin:0}._2ngohc0 .ProseMirror p[data-variant=caption]{font:var(--graphy-font-text-editor-h6)}._2ngohc0 .ProseMirror a{text-underline-offset:.15em;cursor:text;text-decoration:underline}._4dlrid0{font:var(--graphy-font-text-editor-h3);margin:0}._4dlrid1{font:var(--graphy-font-text-editor-body);margin:0}p[data-variant=caption]{font:var(--graphy-font-text-editor-h6);margin:0}.xfz7dq0{position:absolute}.xfz7dq1{align-items:end;column-gap:var(--graphy-space-xs);color:var(--graphy-text-secondary);grid-template-columns:minmax(0,1fr) auto;display:grid}.xfz7dq2{min-width:0;font:var(--graphy-font-source-label)}.xfz7dq3{font:var(--graphy-font-source-link);overflow-wrap:anywhere;text-decoration:underline}.xfz7dq3:hover{color:var(--graphy-text-primary)}.xfz7dq4{font:var(--graphy-font-source-label);margin-right:var(--graphy-space-xs)}.xfz7dq5{font:var(--graphy-font-source-label);overflow-wrap:anywhere}._1k4qtbg0{position:absolute}._1k4qtbg1{padding-right:110px}._1u9qprb0{justify-content:start;align-items:start;gap:var(--graphy-headline-item-gap);pointer-events:none;display:flex;position:absolute}._1u9qprb1{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}._9aen060{align-items:baseline;gap:4px;display:flex}._9aen061,._9aen062{align-items:center;gap:4px;display:flex}._9aen063{align-items:start;gap:var(--graphy-headline-row-gap);flex-direction:column;display:flex}.n7clvo0{color:var(--graphy-text-primary);font-weight:var(--graphy-font-weight-black);line-height:1}.n7clvo1{color:var(--graphy-text-secondary);white-space:nowrap}.n7clvo2{color:var(--graphy-text-secondary)}.n7clvo3{color:var(--graphy-text-secondary);white-space:nowrap}.n7clvo4{font-size:1.9em}.n7clvo5{font-size:2.3em}.n7clvo6{font-size:2.6em}.n7clvo7,.n7clvo8{font-size:1em}.n7clvo9{font-size:1.2em}.n7clvoa{color:var(--graphy-trend-positive-color)}.n7clvob{color:var(--graphy-trend-negative-color)}.n7clvoc{color:var(--graphy-trend-neutral-color)}.n7clvod{border-radius:50%;justify-content:center;align-items:center;width:12px;height:12px;display:flex}.n7clvoe{color:var(--graphy-trend-positive-color);background-color:color-mix(in srgb, transparent, var(--graphy-trend-positive-color) 20%)}.n7clvof{color:var(--graphy-trend-negative-color);background-color:color-mix(in srgb, transparent, var(--graphy-trend-negative-color) 20%);transform:rotate(180deg)}.n7clvog{color:var(--graphy-trend-neutral-color);background-color:color-mix(in srgb, transparent, var(--graphy-text-primary) 10%)}._1oj6yix0{pointer-events:none;height:100%;position:relative}._1oj6yix1{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}._1oj6yix2{font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);white-space:nowrap;position:absolute;transform:translateY(-50%)}._6a636s0{pointer-events:none;position:absolute}._1kjk02r0{flex-shrink:0;align-items:center;display:inline-flex;position:relative}._1kjk02r1{padding-inline-start:8px}._1kjk02r2{padding-block-start:8px}._1kjk02r3{background-color:var(--graphy-legend-background);border:var(--graphy-legend-pill-border-width) solid var(--graphy-legend-border-color);pointer-events:none;opacity:.6;border-radius:9999px;position:absolute}._1kjk02r4{top:0;bottom:0}._1kjk02r4:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r4:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r4:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r4:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r5{top:8px;bottom:0;left:0;right:0}._1kjk02r6{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;padding-inline:var(--graphy-legend-pill-padding-inline);padding-block:var(--graphy-legend-pill-padding-block);background-color:var(--graphy-legend-background);border:var(--graphy-legend-pill-border-width) solid var(--graphy-legend-border-color);cursor:pointer;pointer-events:auto;font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);-webkit-appearance:none;appearance:none;border-radius:9999px;display:inline-flex;position:relative}._1kjk02r6:focus-visible{outline:1px solid var(--graphy-legend-focus-outline-color)}._1kjk02r7{border-color:var(--graphy-text-primary)}._1kjk02r8{font-variant-numeric:tabular-nums}._1kjk02r9{pointer-events:auto;background:var(--graphy-tooltip-background);border:1px solid var(--graphy-tooltip-border-color);border-radius:var(--graphy-tooltip-border-radius);padding-block:var(--graphy-tooltip-padding-block);padding-inline:var(--graphy-tooltip-padding-inline);box-shadow:var(--graphy-tooltip-shadow);z-index:40;max-width:320px;max-height:240px;font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);overflow-y:auto}._1kjk02ra{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}._1kjk02rb{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;display:flex}._1dw9dgx0{opacity:.7;border-radius:50%}._1cecisi0{align-items:center;gap:var(--graphy-legend-item-gap);pointer-events:none;font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);flex-wrap:nowrap;block-size:100%;inline-size:100%;display:flex}._1cecisi1{flex-direction:row}._1cecisi2{flex-direction:column}._1cecisi3{justify-content:flex-start}._1cecisi4{justify-content:center}._1cecisi5{justify-content:flex-end}._1cecisi6{align-items:flex-start}._1cecisi7{align-items:flex-end}._1cecisi8{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;padding-inline:var(--graphy-legend-pill-padding-inline);padding-block:var(--graphy-legend-pill-padding-block);background-color:var(--graphy-legend-background);border:var(--graphy-legend-pill-border-width) solid var(--graphy-legend-border-color);border-radius:9999px;flex-shrink:0;display:flex}.ph8bdc0{pointer-events:none}.ph8bdc1{flex-shrink:0;align-items:center;display:flex}.ph8bdc2{font:var(--graphy-font-mini-tooltip-label);color:var(--graphy-tooltip-value-text-color)}.ph8bdc3{box-sizing:border-box;background:var(--graphy-tooltip-background);border:1px solid var(--graphy-tooltip-border-color);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:6px;flex-direction:row;align-items:center;gap:5px;width:100%;height:100%;padding:4px 7px;display:flex;box-shadow:0 2px 6px #0000001f}.ph8bdc4{pointer-events:auto}.ph8bdc5,._1agclyl0{pointer-events:none}._1agclyl1{pointer-events:none;fill:var(--graphy-data-label-outside-background)}._1agclyl2{pointer-events:none;fill:var(--graphy-stack-total-background);stroke:var(--graphy-stack-total-stroke);stroke-width:1px}._1agclyl3{pointer-events:none;font:var(--graphy-font-data-label);fill:var(--graphy-data-label-text-color);font-variant-numeric:tabular-nums}._1agclyl4{fill:var(--graphy-data-label-inside-text-color)}._1agclyl6{font:var(--graphy-font-category-label);fill:var(--graphy-data-label-inside-text-color)}._1agclyl7{font:var(--graphy-font-category-label)}._1agclyl8{font:var(--graphy-font-stack-total);fill:var(--graphy-stack-total-text-color)}._1y32a200{cursor:pointer}._120wioc0{font:var(--graphy-font-text-editor-body);color:var(--graphy-text-primary);word-wrap:break-word;white-space:break-spaces;text-align:center;box-sizing:border-box;border-radius:.6em;width:100%;padding:.2em .4em}._120wioc0 p{margin:0;line-height:1.25}._120wioc0 h1,._120wioc0 h2,._120wioc0 h3{margin:0}.to1jkx2{stroke-linecap:round;overflow:visible}.to1jkx3{transition:opacity .15s ease-out,filter .15s ease-out}[data-hover-active=true] .to1jkx3{opacity:var(--to1jkx0,.4);filter:var(--to1jkx1,none)}._17uhij30{position:absolute;top:0;left:0;overflow:visible}
1
+ @property --graphy-text-scale{syntax:"<number>";inherits:true;initial-value:1}@property --graphy-font-size-xxs{syntax:"<length>";inherits:true;initial-value:10px}@property --graphy-font-size-xs{syntax:"<length>";inherits:true;initial-value:11px}@property --graphy-font-size-sm{syntax:"<length>";inherits:true;initial-value:12px}@property --graphy-font-size-md{syntax:"<length>";inherits:true;initial-value:14px}@property --graphy-font-size-lg{syntax:"<length>";inherits:true;initial-value:16px}@property --graphy-font-size-xl{syntax:"<length>";inherits:true;initial-value:20px}@property --graphy-font-size-editor-body{syntax:"<length>";inherits:true;initial-value:15px}@property --graphy-font-size-heading-sm{syntax:"<length>";inherits:true;initial-value:18px}@property --graphy-font-size-heading-md{syntax:"<length>";inherits:true;initial-value:22px}@property --graphy-font-size-heading-lg{syntax:"<length>";inherits:true;initial-value:28px}._1d8mpa10{overflow:visible}._324dw20{filter:drop-shadow(0 2px 2px #0e0e3414)drop-shadow(0 0 2px #0f0f181f)}._1suo8ub0{filter:drop-shadow(0 4px 4px #0e0e3414)drop-shadow(0 0 4px #0f0f181f)}._16vokpr0{pointer-events:none;-webkit-user-select:none;user-select:none}._2qyyu60{flex-shrink:0;display:block;overflow:visible}._10igzta0{pointer-events:none;position:fixed;top:0;left:0}.bow4tg0{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale));position:relative;overflow:hidden}.bow4tg1{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale))}.bow4tg2{background-color:var(--graphy-graph-background);position:absolute;top:0;bottom:0;left:0;right:0}.bow4tg3{outline:none}.bow4tg4{background-image:linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent)), linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent));background-position:0 0,1em 1em;background-size:2em 2em}._1ii3bsb0{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-grey-100:#fff;--graphy-grey-95:#fcfcfc;--graphy-grey-90:#fafafa;--graphy-grey-85:#f5f5f5;--graphy-grey-80:#f0f0f0;--graphy-grey-75:#e8e8e8;--graphy-grey-70:#e5e5e5;--graphy-grey-60:#ccc;--graphy-grey-50:#c4c4c4;--graphy-grey-0:#1d2129;--graphy-red-60:#e14b49;--graphy-red-50:#f93939;--graphy-amber-70:#ffba8c;--graphy-amber-50:#ffc849;--graphy-amber-40:#feae47;--graphy-amber-30:#e7a816;--graphy-green-60:#06b299;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-grey-gradient-80:linear-gradient(to top, #f0f0f1, #f9f9ff);--graphy-text-primary:var(--graphy-black);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-grey-100);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-border-100:var(--graphy-grey-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-grey-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-grey-0) 10%);--graphy-sunken-background:var(--graphy-grey-90);--graphy-default-background:var(--graphy-grey-100);--graphy-raised-background:var(--graphy-grey-85);--graphy-overlay-background:var(--graphy-grey-100);--graphy-overlay-border-gradient:var(--graphy-border-10);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-grey-100);--graphy-grid-line-color:var(--graphy-border-10);--graphy-axis-tick-color:var(--graphy-border-10);--graphy-origin-line-color:var(--graphy-grey-0);--graphy-legend-background:var(--graphy-default-background);--graphy-legend-border-color:var(--graphy-border-10);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-legend-text-color:var(--graphy-text-primary);--graphy-dimmed-series-label-text-color:var(--graphy-text-disabled);--graphy-dimmed-series-label-line-color:var(--graphy-grey-60);--graphy-trend-negative-color:var(--graphy-red-60);--graphy-trend-positive-color:var(--graphy-green-60);--graphy-trend-neutral-color:var(--graphy-text-secondary);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-grey-80);--graphy-toolbar-button-background-color-selected:var(--graphy-grey-60);--graphy-toolbar-separator-color:var(--graphy-grey-60);--graphy-tooltip-background:var(--graphy-white);--graphy-tooltip-border-color:var(--graphy-border-10);--graphy-tooltip-heading-text-color:var(--graphy-text-primary);--graphy-tooltip-label-text-color:var(--graphy-text-secondary);--graphy-tooltip-value-text-color:var(--graphy-text-primary);--graphy-tooltip-primary-row-color:var(--graphy-grey-80);--graphy-hover-guide-line-color:color-mix(in srgb, transparent, var(--graphy-black) 20%);--graphy-hover-guide-fill-color:color-mix(in srgb, transparent, var(--graphy-black) 4%);--graphy-heatmap-empty-tile-background:var(--graphy-grey-80);--graphy-default-annotation-arrow-stroke:var(--graphy-black);--graphy-default-annotation-shape-fill:var(--graphy-canvas-blue);--graphy-arrow-annotation-sticker-outline-color:#1d2129;--graphy-arrow-annotation-sticker-outline-color-inverse:#fff;--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:#3d414c;--graphy-canvas-default:#000;--graphy-canvas-blue:#3b82f6;--graphy-canvas-cyan:#06b6d4;--graphy-canvas-green:#10b981;--graphy-canvas-yellow:#e5b400;--graphy-canvas-orange:#f97316;--graphy-canvas-red:#ef4444;--graphy-canvas-pink:#e845bf;--graphy-canvas-purple:#8b5cf6;--graphy-canvas-gray:#78716c;--graphy-canvas-inverse:#fff;--graphy-grid-line-width:1px;--graphy-tooltip-border-radius:6px;--graphy-tooltip-border-width:1px;--graphy-tooltip-padding-block:8px;--graphy-tooltip-padding-inline:10px;--graphy-tooltip-row-gap:4px;--graphy-tooltip-shadow:0 4px 12px #0000002e;--graphy-editor-control-height:32px;--graphy-legend-item-gap:8px;--graphy-legend-swatch-gap:8px;--graphy-legend-swatch-width:10px;--graphy-legend-swatch-height:12px;--graphy-legend-pill-padding-inline:8px;--graphy-legend-pill-padding-block:2px;--graphy-legend-pill-border-width:1px;--graphy-headline-row-gap:2px;--graphy-headline-item-gap:24px;--graphy-text-scale:1;--graphy-font-family-default:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-weight-black:900;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-legend-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-series-label:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-heading:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip-label:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-chart-total:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-small:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-medium:var(--graphy-font-weight-medium) var(--graphy-font-size-lg)/var(--graphy-font-line-height-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-large:var(--graphy-font-weight-semibold) var(--graphy-font-size-xl)/var(--graphy-font-line-height-xl) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default))}._1ii3bsb1{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-grey-100:#000;--graphy-grey-95:#0d0d0d;--graphy-grey-90:#1a1a1a;--graphy-grey-85:#1f1f1f;--graphy-grey-80:#2a2a2a;--graphy-grey-75:#2e2e2e;--graphy-grey-70:#353535;--graphy-grey-60:#494949;--graphy-grey-50:#6f6f6f;--graphy-grey-0:#fff;--graphy-red-60:#cb3333;--graphy-red-50:#f93939;--graphy-amber-70:#f48135;--graphy-amber-50:#feae47;--graphy-amber-40:#ffc849;--graphy-amber-30:#ffd061;--graphy-green-60:#0ac600;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-grey-gradient-80:linear-gradient(to top, #222429, #31353f);--graphy-text-primary:var(--graphy-grey-0);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 80%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-grey-70);--graphy-border-100:var(--graphy-grey-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-grey-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-grey-0) 10%);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-sunken-background:var(--graphy-grey-100);--graphy-default-background:var(--graphy-grey-90);--graphy-raised-background:var(--graphy-grey-80);--graphy-overlay-background:var(--graphy-grey-90);--graphy-overlay-border-gradient:var(--graphy-grey-gradient-80);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-grey-90);--graphy-grid-line-color:var(--graphy-border-10);--graphy-axis-tick-color:var(--graphy-border-10);--graphy-origin-line-color:var(--graphy-grey-0);--graphy-legend-background:var(--graphy-default-background);--graphy-legend-border-color:var(--graphy-border-10);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-legend-text-color:var(--graphy-text-primary);--graphy-dimmed-series-label-text-color:var(--graphy-text-disabled);--graphy-dimmed-series-label-line-color:var(--graphy-grey-60);--graphy-trend-negative-color:var(--graphy-red-60);--graphy-trend-positive-color:var(--graphy-green-60);--graphy-trend-neutral-color:var(--graphy-text-secondary);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-grey-80);--graphy-toolbar-button-background-color-selected:var(--graphy-grey-60);--graphy-toolbar-separator-color:var(--graphy-grey-60);--graphy-tooltip-background:var(--graphy-grey-70);--graphy-tooltip-border-color:var(--graphy-grey-60);--graphy-tooltip-heading-text-color:var(--graphy-text-primary);--graphy-tooltip-label-text-color:var(--graphy-text-secondary);--graphy-tooltip-value-text-color:var(--graphy-text-primary);--graphy-tooltip-primary-row-color:var(--graphy-grey-60);--graphy-hover-guide-line-color:color-mix(in srgb, transparent, var(--graphy-white) 20%);--graphy-hover-guide-fill-color:color-mix(in srgb, transparent, var(--graphy-white) 6%);--graphy-heatmap-empty-tile-background:var(--graphy-grey-80);--graphy-default-annotation-arrow-stroke:var(--graphy-white);--graphy-default-annotation-shape-fill:var(--graphy-canvas-blue);--graphy-arrow-annotation-sticker-outline-color:#fff;--graphy-arrow-annotation-sticker-outline-color-inverse:#1d2129;--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:var(--graphy-white);--graphy-canvas-default:#fff;--graphy-canvas-blue:#60a5fa;--graphy-canvas-cyan:#22d3ee;--graphy-canvas-green:#34d399;--graphy-canvas-yellow:#ffc800;--graphy-canvas-orange:#fb923c;--graphy-canvas-red:#f87171;--graphy-canvas-pink:#f979d9;--graphy-canvas-purple:#a78bfa;--graphy-canvas-gray:#a8a29e;--graphy-canvas-inverse:#000;--graphy-grid-line-width:1px;--graphy-tooltip-border-radius:6px;--graphy-tooltip-border-width:1px;--graphy-tooltip-padding-block:8px;--graphy-tooltip-padding-inline:10px;--graphy-tooltip-row-gap:4px;--graphy-tooltip-shadow:0 4px 12px #0000002e;--graphy-editor-control-height:32px;--graphy-legend-item-gap:8px;--graphy-legend-swatch-gap:8px;--graphy-legend-swatch-width:10px;--graphy-legend-swatch-height:12px;--graphy-legend-pill-padding-inline:8px;--graphy-legend-pill-padding-block:2px;--graphy-legend-pill-border-width:1px;--graphy-headline-row-gap:2px;--graphy-headline-item-gap:24px;--graphy-text-scale:1;--graphy-font-family-default:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-weight-black:900;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-legend-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-series-label:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-heading:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip-label:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-jumbo-tooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-mini-tooltip-footer:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-tooltip-caption-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-trend-tag-small:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xs)/var(--graphy-font-line-height-xs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-pie-chart-total:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-small:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-medium:var(--graphy-font-weight-medium) var(--graphy-font-size-lg)/var(--graphy-font-line-height-lg) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-difference-arrow-large:var(--graphy-font-weight-semibold) var(--graphy-font-size-xl)/var(--graphy-font-line-height-xl) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--typography-chart-heading-font-family,var(--graphy-font-family-heading));--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--typography-chart-font-family,var(--graphy-font-family-default));--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--typography-chart-font-family,var(--graphy-font-family-default))}._1cocly40{color:inherit;text-underline-offset:.15em;text-decoration:underline}._19519k80{background:var(--graphy-tooltip-background);border:var(--graphy-tooltip-border-width) solid var(--graphy-tooltip-border-color);border-radius:var(--graphy-tooltip-border-radius);padding-block:var(--graphy-tooltip-padding-block);min-width:120px;max-width:280px;box-shadow:var(--graphy-tooltip-shadow);flex-direction:column;gap:4px;display:flex}._19519k81{font:var(--graphy-font-tooltip-heading);color:var(--graphy-tooltip-heading-text-color);white-space:nowrap;text-overflow:ellipsis;padding-inline:var(--graphy-tooltip-padding-inline);overflow:hidden}._19519k82{font:var(--graphy-font-tooltip-label);color:var(--graphy-tooltip-value-text-color);padding-inline:var(--graphy-tooltip-padding-inline)}._19519k83{flex-direction:column;display:flex}._19519k84{padding-block:var(--graphy-tooltip-row-gap);padding-inline:var(--graphy-tooltip-padding-inline);flex-direction:row;align-items:center;gap:8px;display:flex}._19519k85{background-color:var(--graphy-tooltip-primary-row-color)}._19519k86{flex-shrink:0;display:block;overflow:visible}._19519k87{width:12px;height:12px}._19519k88{font:var(--graphy-font-tooltip-label);color:var(--graphy-tooltip-label-text-color);white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}._19519k89{font:var(--graphy-font-tooltip-label);color:var(--graphy-tooltip-value-text-color);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}._19519k8a{pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1000;position:fixed;top:0;left:0}.vultop0{box-sizing:border-box;white-space:nowrap;color:#2a2a28;opacity:.62;background-color:#ffffff8c;border-radius:999px;flex-shrink:0;align-items:center;gap:10px;height:22px;padding-inline-start:9px;padding-inline-end:11px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11.5px;line-height:1;text-decoration:none;transition:opacity .12s,max-width .25s,padding .25s,gap .25s;display:inline-flex;box-shadow:0 1px 4px #00000017}.vultop0:hover{opacity:1}.vultop0:focus-visible{opacity:1}.vultop0:focus-visible{outline-offset:2px;outline:2px solid #2a2a28}.vultop0[data-zone=mid]{opacity:.8;background-color:#ffffffbf}.vultop0[data-zone=dark]{opacity:.85;color:#fff;box-shadow:none;background-color:#ffffff14}.vultop0[data-zone=dark]:focus-visible{outline:2px solid #fff}.vultop0[data-visual=mini]{justify-content:center;gap:0;width:22px;padding-inline-start:0;padding-inline-end:0}.vultop0[data-visual=mini]:hover{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop0[data-visual=mini]:focus-visible{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop1{flex-direction:row-reverse}.vultop2{flex-shrink:0;justify-content:center;align-items:center;width:9px;height:12px;display:inline-flex}.vultop3{object-fit:contain;width:9px;height:12px;display:block}.vultop0[data-zone=dark] .vultop3{filter:invert()}.vultop4{align-items:baseline;gap:.3em;max-width:120px;transition:max-width .25s,opacity .25s;display:inline-flex;overflow:hidden}.vultop0[data-visual=mini] .vultop4{opacity:0;max-width:0}.vultop0[data-visual=mini]:hover .vultop4{opacity:1;max-width:120px}.vultop0[data-visual=mini]:focus-visible .vultop4{opacity:1;max-width:120px}.vultop5{font-weight:550}.vultop6{place-self:end}.vultop7{position:absolute;top:50%;right:0;transform:translateY(-50%)}@media (prefers-reduced-motion:reduce){.vultop0,.vultop4{transition:none}}.yl2d2l0{justify-content:center;align-items:center;gap:var(--graphy-space-xs);block-size:32px;inline-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;display:inline-flex}.yl2d2l0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.yl2d2l0[data-popup-open]{background:var(--graphy-toolbar-button-background-color-selected)}.yl2d2l1{border:1px solid var(--graphy-border-100);box-sizing:border-box;border-radius:50%;block-size:16px;inline-size:16px}.yl2d2l2{flex-shrink:0;block-size:8px;inline-size:8px}.yl2d2l3{z-index:var(--graphy-z-index-editor-popover)}.yl2d2l4{gap:var(--graphy-space-lg);min-inline-size:220px;padding:var(--graphy-space-lg);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);flex-direction:column;display:flex}.yl2d2l5{gap:var(--graphy-space-sm);flex-direction:column;display:flex}.yl2d2l6{font:var(--graphy-font-menu-group-title);color:var(--graphy-text-secondary)}.yl2d2l7{grid-template-columns:repeat(6,1fr);display:grid}.yl2d2l8{border-radius:var(--graphy-radii-md);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;block-size:28px;inline-size:28px;padding:0;display:inline-flex}.yl2d2l8:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.yl2d2l8[data-active=true]{background:var(--graphy-toolbar-button-background-color-selected)}.yl2d2l9{box-sizing:border-box;border-radius:50%;block-size:1.6em;inline-size:1.6em}.yl2d2la{align-items:center;gap:var(--graphy-space-sm);inline-size:100%;padding:var(--graphy-space-xs) var(--graphy-space-sm);background:var(--graphy-grey-80);border-radius:var(--graphy-radii-md);border:1px solid var(--graphy-grey-70);color:var(--graphy-text-primary);font:var(--graphy-font-input);cursor:pointer;text-align:start;display:flex}.yl2d2la:hover{border-color:var(--graphy-grey-70)}.yl2d2la:focus-visible{border-color:var(--graphy-grey-60);outline:none}.yl2d2la[data-popup-open]{border-color:var(--graphy-grey-60)}.yl2d2lb{font:var(--graphy-font-input);color:var(--graphy-text-primary);flex:1}.yl2d2lc{gap:var(--graphy-space-md);inline-size:240px;padding:var(--graphy-space-lg);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);flex-direction:column;display:flex}.yl2d2ld{block-size:auto!important;inline-size:100%!important}.yl2d2ld .react-colorful__saturation{aspect-ratio:1;border-radius:var(--graphy-radii-md);border:1px solid var(--graphy-grey-70);inline-size:100%;margin-bottom:var(--graphy-space-sm);box-sizing:border-box}.yl2d2ld .react-colorful__hue{border-radius:var(--graphy-radii-sm);border:1px solid var(--graphy-grey-70);box-sizing:border-box;block-size:16px}.yl2d2ld .react-colorful__pointer{border:2px solid var(--graphy-white);block-size:18px;inline-size:18px;box-shadow:var(--graphy-elevation-sm)}.yl2d2ld .react-colorful__saturation-pointer,.yl2d2ld .react-colorful__hue-pointer{border-radius:50%}.yl2d2le{inline-size:100%;padding:var(--graphy-space-xs) var(--graphy-space-sm);background:var(--graphy-grey-80);border:1px solid var(--graphy-grey-70);border-radius:var(--graphy-radii-md);color:var(--graphy-text-primary);font:var(--graphy-font-input);text-transform:uppercase;outline:none}.yl2d2le:hover{border-color:var(--graphy-grey-70)}.yl2d2le:focus{border-color:var(--graphy-grey-60)}._1qa8u0q0{block-size:14px;inline-size:100%;padding-inline-start:7px;padding-inline-end:7px}._1qa8u0q1{cursor:pointer;align-items:center;block-size:100%;inline-size:100%;display:flex}._1qa8u0q2{background:var(--graphy-border-10);border-radius:999px;block-size:4px;inline-size:100%}._1qa8u0q3{background:var(--graphy-text-primary);border-radius:999px;block-size:100%}._1qa8u0q4{background:var(--graphy-text-primary);border-radius:50%;block-size:14px;inline-size:14px}._1qa8u0q4:focus-visible{outline:2px solid var(--graphy-brand);outline-offset:2px}._1ebx0ha0{align-items:center;gap:var(--graphy-space-xs);padding:var(--graphy-space-xs);background:var(--graphy-toolbar-background-color);border-radius:var(--graphy-radii-lg);display:flex}._1ebx0ha0:before{content:"";pointer-events:none;border-radius:var(--graphy-radii-lg);background:var(--graphy-overlay-border-gradient) border-box;-webkit-mask-composite:xor;border:1px solid #0000;position:absolute;top:0;bottom:0;left:0;right:0;transform:translateZ(0);-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:padding-box,border-box;mask-clip:padding-box,border-box;-webkit-mask-origin:padding-box,border-box;mask-origin:padding-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}._1ebx0ha1{padding-inline:var(--graphy-space-xs);align-items:center;gap:var(--graphy-space-xxs);display:flex}._1ebx0ha2{background:var(--graphy-toolbar-separator-color);width:1px;height:16px}.ulx3010{z-index:var(--graphy-z-index-editor-popover)}.ulx3011{min-inline-size:200px;padding:var(--graphy-space-xs);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);outline:none;flex-direction:column;display:flex}.ulx3012{align-items:center;gap:var(--graphy-space-sm);padding:var(--graphy-space-sm) var(--graphy-space-md);border-radius:var(--graphy-radii-sm);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-menu-item-label);-webkit-user-select:none;user-select:none;outline:none;display:flex}.ulx3012[data-highlighted]{background:var(--graphy-toolbar-button-background-color-hovered)}.ulx3012[data-selected=true]{background:var(--graphy-toolbar-button-background-color-selected)}.ulx3012[data-disabled]{cursor:default;opacity:.5}.asohov0{flex-shrink:0}.asohov1{color:var(--graphy-icon-primary)}.asohov2{color:var(--graphy-icon-secondary)}._1qkyw7q0{justify-content:center;align-items:center;gap:var(--graphy-space-xs);block-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;display:inline-flex}._1qkyw7q0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}._1qkyw7q0[data-popup-open]{background:var(--graphy-toolbar-button-background-color-selected)}._1qkyw7q1{white-space:nowrap;align-items:center;display:inline-flex}._1qkyw7q2{flex-shrink:0;block-size:10px;inline-size:10px}._1qkyw7q3{z-index:var(--graphy-z-index-toolbar-popover)}._1qkyw7q4{min-inline-size:180px;padding:var(--graphy-space-xs);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);outline:none;flex-direction:column;display:flex}._1qkyw7q5{padding:var(--graphy-space-sm) var(--graphy-space-md);border-radius:var(--graphy-radii-sm);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-menu-item-label);-webkit-user-select:none;user-select:none;outline:none;align-items:center;display:flex}._1qkyw7q5[data-highlighted]{background:var(--graphy-toolbar-button-background-color-hovered)}._1qkyw7q5[data-selected=true]{background:var(--graphy-toolbar-button-background-color-selected)}.b5kquu0{block-size:32px;min-inline-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;justify-content:center;align-items:center;display:inline-flex}.b5kquu0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.b5kquu0[data-active=true],.b5kquu0[data-popup-open]{background:var(--graphy-toolbar-button-background-color-selected)}.b5kquu1{z-index:var(--graphy-z-index-toolbar-popover)}.b5kquu2{align-items:center;gap:var(--graphy-space-xs);padding:var(--graphy-space-xs);background:var(--graphy-overlay-background);border:1px solid var(--graphy-border-10);border-radius:var(--graphy-radii-md);box-shadow:var(--graphy-elevation-md);color:var(--graphy-text-primary);outline:none;display:flex}.b5kquu3{inline-size:220px;padding:var(--graphy-space-xs) var(--graphy-space-sm);background:var(--graphy-grey-80);border:1px solid var(--graphy-grey-70);border-radius:var(--graphy-radii-md);color:var(--graphy-text-primary);font:var(--graphy-font-input);outline:none}.b5kquu3:hover{border-color:var(--graphy-grey-70)}.b5kquu3:focus{border-color:var(--graphy-grey-60)}.b5kquu4{background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;block-size:32px;min-inline-size:32px;color:var(--graphy-text-primary);border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.b5kquu4:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.k91gos0{block-size:32px;min-inline-size:32px;padding:0 var(--graphy-space-sm);background:var(--graphy-toolbar-button-background-color);border-radius:var(--graphy-radii-md);cursor:pointer;color:var(--graphy-text-primary);font:var(--graphy-font-button);border:none;justify-content:center;align-items:center;display:inline-flex}.k91gos0:hover{background:var(--graphy-toolbar-button-background-color-hovered)}.k91gos0[data-pressed]{background:var(--graphy-toolbar-button-background-color-selected)}.k91gos1{padding:var(--graphy-space-xs) var(--graphy-space-md);background:var(--graphy-text-primary);color:var(--graphy-default-background);border-radius:var(--graphy-radii-xs);font:var(--graphy-font-uitooltip-secondary);pointer-events:none;z-index:var(--graphy-z-index-toolbar-tooltip)}._1bp10ig0{z-index:var(--graphy-z-index-toolbar)}._2ngohc0 .ProseMirror{outline:none}._2ngohc0 .ProseMirror .is-empty:before{content:attr(data-placeholder);color:currentColor;opacity:.4;float:left;pointer-events:none;height:0}._2ngohc0 .ProseMirror h1,._2ngohc0 .ProseMirror h2,._2ngohc0 .ProseMirror h3,._2ngohc0 .ProseMirror h4,._2ngohc0 .ProseMirror h5,._2ngohc0 .ProseMirror h6{margin:0}._2ngohc0 .ProseMirror h1{font:var(--graphy-font-text-editor-h1)}._2ngohc0 .ProseMirror h2{font:var(--graphy-font-text-editor-h2)}._2ngohc0 .ProseMirror h3{font:var(--graphy-font-text-editor-h3)}._2ngohc0 .ProseMirror h4,._2ngohc0 .ProseMirror h5,._2ngohc0 .ProseMirror h6{font:var(--graphy-font-text-editor-h6)}._2ngohc0 .ProseMirror p{font:var(--graphy-font-text-editor-body);margin:0}._2ngohc0 .ProseMirror p[data-variant=caption]{font:var(--graphy-font-text-editor-h6)}._2ngohc0 .ProseMirror a{text-underline-offset:.15em;cursor:text;text-decoration:underline}._4dlrid0{font:var(--graphy-font-text-editor-h3);margin:0}._4dlrid1{font:var(--graphy-font-text-editor-body);margin:0}p[data-variant=caption]{font:var(--graphy-font-text-editor-h6);margin:0}.xfz7dq0{position:absolute}.xfz7dq1{align-items:end;column-gap:var(--graphy-space-xs);color:var(--graphy-text-secondary);grid-template-columns:minmax(0,1fr) auto;display:grid}.xfz7dq2{min-width:0;font:var(--graphy-font-source-label)}.xfz7dq3{font:var(--graphy-font-source-link);overflow-wrap:anywhere;text-decoration:underline}.xfz7dq3:hover{color:var(--graphy-text-primary)}.xfz7dq4{font:var(--graphy-font-source-label);margin-right:var(--graphy-space-xs)}.xfz7dq5{font:var(--graphy-font-source-label);overflow-wrap:anywhere}._1k4qtbg0{position:absolute}._1k4qtbg1{padding-right:110px}._1u9qprb0{justify-content:start;align-items:start;gap:var(--graphy-headline-item-gap);pointer-events:none;display:flex;position:absolute}._1u9qprb1{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}._9aen060{align-items:baseline;gap:4px;display:flex}._9aen061,._9aen062{align-items:center;gap:4px;display:flex}._9aen063{align-items:start;gap:var(--graphy-headline-row-gap);flex-direction:column;display:flex}.n7clvo0{color:var(--graphy-text-primary);font-weight:var(--graphy-font-weight-black);line-height:1}.n7clvo1{color:var(--graphy-text-secondary);white-space:nowrap}.n7clvo2{color:var(--graphy-text-secondary)}.n7clvo3{color:var(--graphy-text-secondary);white-space:nowrap}.n7clvo4{font-size:1.9em}.n7clvo5{font-size:2.3em}.n7clvo6{font-size:2.6em}.n7clvo7,.n7clvo8{font-size:1em}.n7clvo9{font-size:1.2em}.n7clvoa{color:var(--graphy-trend-positive-color)}.n7clvob{color:var(--graphy-trend-negative-color)}.n7clvoc{color:var(--graphy-trend-neutral-color)}.n7clvod{border-radius:50%;justify-content:center;align-items:center;width:12px;height:12px;display:flex}.n7clvoe{color:var(--graphy-trend-positive-color);background-color:color-mix(in srgb, transparent, var(--graphy-trend-positive-color) 20%)}.n7clvof{color:var(--graphy-trend-negative-color);background-color:color-mix(in srgb, transparent, var(--graphy-trend-negative-color) 20%);transform:rotate(180deg)}.n7clvog{color:var(--graphy-trend-neutral-color);background-color:color-mix(in srgb, transparent, var(--graphy-text-primary) 10%)}._1oj6yix0{pointer-events:none;height:100%;position:relative}._1oj6yix1{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}._1oj6yix2{font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);white-space:nowrap;position:absolute;transform:translateY(-50%)}._6a636s0{pointer-events:none;position:absolute}._1kjk02r0{flex-shrink:0;align-items:center;display:inline-flex;position:relative}._1kjk02r1{padding-inline-start:8px}._1kjk02r2{padding-block-start:8px}._1kjk02r3{background-color:var(--graphy-legend-background);border:var(--graphy-legend-pill-border-width) solid var(--graphy-legend-border-color);pointer-events:none;opacity:.6;border-radius:9999px;position:absolute}._1kjk02r4{top:0;bottom:0}._1kjk02r4:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r4:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r4:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r4:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r5{top:8px;bottom:0;left:0;right:0}._1kjk02r6{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;padding-inline:var(--graphy-legend-pill-padding-inline);padding-block:var(--graphy-legend-pill-padding-block);background-color:var(--graphy-legend-background);border:var(--graphy-legend-pill-border-width) solid var(--graphy-legend-border-color);cursor:pointer;pointer-events:auto;font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);-webkit-appearance:none;appearance:none;border-radius:9999px;display:inline-flex;position:relative}._1kjk02r6:focus-visible{outline:1px solid var(--graphy-legend-focus-outline-color)}._1kjk02r7{border-color:var(--graphy-text-primary)}._1kjk02r8{font-variant-numeric:tabular-nums}._1kjk02r9{pointer-events:auto;background:var(--graphy-tooltip-background);border:1px solid var(--graphy-tooltip-border-color);border-radius:var(--graphy-tooltip-border-radius);padding-block:var(--graphy-tooltip-padding-block);padding-inline:var(--graphy-tooltip-padding-inline);box-shadow:var(--graphy-tooltip-shadow);z-index:40;max-width:320px;max-height:240px;font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);overflow-y:auto}._1kjk02ra{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}._1kjk02rb{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;display:flex}._1dw9dgx0{opacity:.7;border-radius:50%}._1cecisi0{align-items:center;gap:var(--graphy-legend-item-gap);pointer-events:none;font:var(--graphy-font-legend-label);color:var(--graphy-legend-text-color);flex-wrap:nowrap;block-size:100%;inline-size:100%;display:flex}._1cecisi1{flex-direction:row}._1cecisi2{flex-direction:column}._1cecisi3{justify-content:flex-start}._1cecisi4{justify-content:center}._1cecisi5{justify-content:flex-end}._1cecisi6{align-items:flex-start}._1cecisi7{align-items:flex-end}._1cecisi8{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;padding-inline:var(--graphy-legend-pill-padding-inline);padding-block:var(--graphy-legend-pill-padding-block);background-color:var(--graphy-legend-background);border:var(--graphy-legend-pill-border-width) solid var(--graphy-legend-border-color);border-radius:9999px;flex-shrink:0;display:flex}._1i8rg6j0{cursor:pointer}._1aj6s5s0{pointer-events:auto;font:var(--graphy-font-text-editor-body);color:var(--graphy-text-primary);word-wrap:break-word;white-space:break-spaces;text-align:center;box-sizing:border-box;border-radius:.6em;width:100%;padding:.2em .4em}._1aj6s5s0 p{margin:0;line-height:1.25}._1aj6s5s0 h1,._1aj6s5s0 h2,._1aj6s5s0 h3{margin:0}.ph8bdc0{pointer-events:none}.ph8bdc1{flex-shrink:0;align-items:center;display:flex}.ph8bdc2{font:var(--graphy-font-mini-tooltip-label);color:var(--graphy-tooltip-value-text-color)}.ph8bdc3{box-sizing:border-box;background:var(--graphy-tooltip-background);border:1px solid var(--graphy-tooltip-border-color);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:6px;flex-direction:row;align-items:center;gap:5px;width:100%;height:100%;padding:4px 7px;display:flex;box-shadow:0 2px 6px #0000001f}.ph8bdc4{pointer-events:auto}.ph8bdc5,._1agclyl0,._1agclyl1{pointer-events:none}._1agclyl2{pointer-events:none;font-variant-numeric:tabular-nums}.to1jkx2{stroke-linecap:round;overflow:visible}.to1jkx3{transition:opacity .15s ease-out,filter .15s ease-out}[data-hover-active=true] .to1jkx3{opacity:var(--to1jkx0,.4);filter:var(--to1jkx1,none)}._17uhij30{position:absolute;top:0;left:0;overflow:visible}
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const l=require("./history-chords-DFlFEtc_.cjs"),se=require("./font-values-CStAZ2d1.cjs");let y=require("@graphysdk/viz-engine"),c=require("react"),i=require("react/jsx-runtime"),Y=require("zustand"),K=require("zustand/vanilla"),P=require("clsx");P=l.__toESM(P,1);function L(e){for(const r of e)(r.severity==="error"?console.error:console.warn)(`[graphy] ${r.code}: ${r.message}`,r)}var ne="_1a5iqpb0",oe="_1a5iqpb1";var ie="_1a5iqpb3",ae="_1a5iqpb4",ce="_1a5iqpb5";var O=({errors:e})=>{const[r,...t]=e;return(0,i.jsxs)("div",{role:"alert",className:ne,children:[(0,i.jsx)("strong",{className:oe,children:"This chart could not be rendered."}),r&&(0,i.jsx)(U,{diagnostic:r}),t.length>0&&(0,i.jsx)("ul",{className:"_1a5iqpb2",children:t.map((s,n)=>(0,i.jsx)("li",{children:(0,i.jsx)(U,{diagnostic:s})},`${s.code}-${n}`))})]})},U=({diagnostic:e})=>(0,i.jsxs)("div",{className:ie,children:[(0,i.jsx)("span",{className:ae,children:e.code}),(0,i.jsx)("p",{className:ce,children:e.message}),e.suggestion&&(0,i.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function le(e=[],r=[]){return e.length===r.length&&e.every((t,s)=>Object.is(t,r[s]))}var z=class extends c.Component{constructor(...e){super(...e),this.state={caughtDiagnostic:null}}static getDerivedStateFromError(e){return{caughtDiagnostic:(0,y.buildDiagnostic)(e)}}componentDidCatch(e,r){const t=(0,y.buildDiagnostic)(e);L([t]),this.props.onError?.([t]),console.error("Chart render component stack:",r.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!le(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,i.jsx)(O,{errors:[e]});const{forcedErrors:r,children:t}=this.props;return r&&r.length>0?(0,i.jsx)(O,{errors:r}):t}},X=e=>typeof e=="object"&&"geom"in e&&"render"in e,de=e=>{const r=(0,y.resolveDefinition)(e);return r instanceof y.Geom?r:null},Q=(e,r)=>{const t=e.filter(s=>ue(s,r));return t.length===e.length?e:t},ue=(e,r)=>e.kind!=="annotation"?!0:(0,y.findAnnotation)(r.annotations,e.id)!==null,F=[],me=()=>(0,K.createStore)(e=>({selection:F,setSelection:r=>e(t=>he(t.selection,r)?t:{selection:r}),clearSelection:()=>e(r=>r.selection.length===0?r:{selection:F})})),he=(e,r)=>e===r?!0:e.length!==r.length?!1:e.every((t,s)=>{const n=r[s];return n!==void 0&&(0,y.areEditTargetsEqual)(t,n)}),ge=5,pe=e=>{if(process.env.NODE_ENV==="production")return{emit:()=>{},subscribe:()=>ve,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const r=new Set;let t=null;return{emit:s=>{const n=e.getLastCompile();if(n){t=s;for(const u of r)u(s,n)}},subscribe:s=>(r.add(s),()=>{r.delete(s)}),getLastTrigger:()=>t,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},fe=()=>(0,K.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(r,t)=>e(s=>{if(s.lastSnapshot===t)return s;const n={id:s.nextId,label:ye(r),stages:t.stages,durationMs:t.durationMs};return{lastCompile:n,history:Se(s.history,n,ge),nextId:s.nextId+1,lastSnapshot:t}})})),ve=()=>{},ye=e=>{switch(e.kind){case"init":return"init";case"input":return"input change";case"data":return"data change";case"command":return e.command.metadata.description}},Se=(e,r,t)=>{const s=e.length>=t?e.length-(t-1):0;return[...e.slice(s),r]};function be(e){const r=e.filter(X),t=new Set([...Object.keys(l.BUILT_IN_GEOM_RENDERERS),...r.map(d=>d.geom)]),s=[],n=new Set;for(const d of e){const m=de(d);m===null||t.has(m.type)||n.has(m.type)||(n.add(m.type),s.push({kind:"user-input",severity:"error",code:"MISSING_GEOM_RENDERER",message:`Custom geom '${m.type}' is registered but has no renderer.`,context:{requested:m.type,kind:"geom-renderer"},suggestion:`Add a render half for it: \`defineGeomRenderer(${m.type}Geom, { coord, render })\`, then include it in \`plugins\`.`}))}const u=new Map;for(const d of r){if("definition"in d)continue;const m=`${d.geom}|${d.coord}`,g=u.get(m);g?g.count+=1:u.set(m,{geom:d.geom,coord:d.coord,count:1})}const a=[];for(const{geom:d,coord:m,count:g}of u.values())g<2||a.push({kind:"user-input",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${d}', '${m}') (${g} entries); the last in the array wins.`,context:{requested:`${d}@${m}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${d}', '${m}').`});return{errors:s,warnings:a}}function Ee(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s)r(a.geom,t.type)!==null||n.has(a.geom)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${a.geom}' under ${t.type} coords; the layer is not painted.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${a.geom}', '${t.type}') via \`defineGeomRenderer\`.`}));return u}function Ce(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s){if(a.interactive===!1||a.spatialKind!=="render-hit-test"||n.has(a.geom))continue;const d=r(a.geom,t.type);d===null||d.hitTest||l.isOverlayHosted(d)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares spatialKind 'render-hit-test' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:`Add a \`hitTest\` factory (precomputed geometry) or an overlay render (\`{ fn, options: { overlay: true } }\`, live simulation) to the renderer for ('${a.geom}', '${t.type}').`}))}return u}function xe(e){const r=new Set,t=[];for(const s of e.layers){const n=s.identityKey;s.interactive!==!1&&(s.spatialKind!=="render-hit-test"||typeof n!="object"||r.has(s.geom)||s.data.hasVariable(n.variable)||(r.add(s.geom),t.push({kind:"user-input",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${s.geom}' keys its identity on '${n.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:`Emit the '${n.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return t}function Te(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s){if(a.interactive===!1||a.spatialKind!=="render-hit-test"||n.has(a.geom))continue;const d=r(a.geom,t.type);d===null||!d.hitTest||!l.isOverlayHosted(d)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares both a \`hitTest\` factory and an overlay render; these are alternatives, so only the overlay is used.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR an overlay render (`{ fn, options: { overlay: true } }`) for a live simulation."}))}return u}function Re(e,r){const t=new Set,s=[];for(const n of e.layers)n.interactive!==!1&&(n.spatialKind!=="render-hit-test"||t.has(n.geom)||r.hasCapability(n.geom)||(t.add(n.geom),s.push({kind:"user-input",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${n.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:n.geom,kind:"geom-renderer"},suggestion:"Implement `resolveAnchorPosition(observation, context)` on the geom, returning the normalised panel position an annotation on that observation belongs at."})));return s}function qe(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s){if(a.interactive===!1||a.spatialKind==="render-hit-test"||n.has(a.geom))continue;const d=r(a.geom,t.type);d===null||!l.isOverlayHosted(d)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"OVERLAY_REQUIRES_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares an overlay render but its layer's spatialKind is '${a.spatialKind}', not 'render-hit-test'; the overlay's push-path hover resolves to nothing.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'render-hit-test' so the compiled layer carries the `byKey` index the overlay's `pushHover` resolves against."}))}return u}var Ge=e=>(0,K.createStore)(r=>({compiled:e,setCompiled:t=>r(s=>s.compiled===t?s:{compiled:t})})),Ne=({input:e,data:r,customPalettes:t,plugins:s,resolveRenderer:n,anchorResolver:u,onChange:a,onError:d,onWarnings:m})=>{const g=l.useLatestRef(a),q=l.useLatestRef(d),j=l.useLatestRef(m),[{session:p,compileBus:b}]=(0,c.useState)(()=>{const o=(0,y.createCompiler)({plugins:s});return{session:new y.GraphCompilationSession(o),compileBus:pe(o)}}),[h]=(0,c.useState)(()=>be(s??[])),f=(0,c.useRef)(null),[S]=(0,c.useState)(ke),x=(0,c.useRef)(null),G=(0,c.useCallback)(o=>h.errors.length===0?o:[...h.errors,...o??[]],[h]),T=(0,c.useCallback)(o=>{if(!o.ok)return o.errors;if(x.current)x.current.getState().setCompiled(o.compiled);else{const v=Ge(o.compiled);v.subscribe(S.notify),x.current=v,S.notify()}return null},[S]),[I,_]=(0,c.useState)(()=>{const o=p.compile({input:e,data:r,customPalettes:t});return f.current=o,G(T(o))}),R=(0,c.useCallback)(o=>o.ok?[...o.warnings,...Ee(o.compiled,n),...Ce(o.compiled,n),...xe(o.compiled),...Te(o.compiled,n),...qe(o.compiled,n),...Re(o.compiled,u)]:o.warnings,[n,u]),N=(0,c.useCallback)(o=>{o.length!==0&&(L(o),q.current?.(o))},[q]),E=(0,c.useCallback)(o=>{o.length!==0&&(L(o),j.current?.(o))},[j]);(0,c.useEffect)(()=>{const o=f.current;o&&(N([...h.errors,...o.ok?[]:o.errors]),E([...h.warnings,...R(o)]),o.ok&&b.emit({kind:"init"}))},[b,N,E,h,R]),(0,c.useEffect)(()=>{const o=p.update({input:e,data:r,customPalettes:t});if(!o)return;o.sealedInput&&g.current?.(o.sealedInput);const v=T(o.result);_(G(v)),v&&N(v),E(R(o.result)),v||b.emit({kind:o.inputChanged?"input":"data"})},[e,r,t,p,b,T,N,E,G,R,g]);const D=(0,c.useCallback)(o=>{_(v=>v===null?v:G(null)),E(R(o))},[G,E,R]),k=(0,c.useCallback)(o=>{o.compiled&&x.current?.getState().setCompiled(o.compiled),o.result&&D(o.result),o.command&&b.emit({kind:"command",command:o.command}),o.input&&g.current?.(o.input),o.errors&&N([...o.errors])},[D,b,g,N]),C=(0,c.useCallback)(o=>{for(const v of o)k(v);return o.some(v=>!!v.compiled)},[k]),w=(0,c.useCallback)((o,v)=>{C(p.applyCommand(o,v))},[p,C]),M=(0,c.useCallback)(()=>{C(p.seal())},[p,C]),B=(0,c.useCallback)(()=>C(p.undo()),[p,C]),A=(0,c.useCallback)(()=>C(p.redo()),[p,C]),re=(0,c.useMemo)(()=>({stack:p.history,undo:B,redo:A}),[p,B,A]),te=(0,c.useCallback)(()=>x.current?.getState().compiled??null,[]);return{store:x.current,dispatch:w,seal:M,history:re,subscribe:S.subscribe,getCompiled:te,compileBus:b,compileErrors:I}},ke=()=>{const e=new Set;return{subscribe:r=>(e.add(r),()=>{e.delete(r)}),notify:()=>e.forEach(r=>r())}},je={},J=({data:e,input:r,plugins:t=[],formattingLocale:s,handleRef:n,onChange:u,onError:a,onWarnings:d,customPalettes:m,colorScheme:g="light",themeOverrides:q=je,children:j})=>{const[p]=(0,c.useState)(()=>l.createGeomRendererResolver(t.filter(X))),b=(0,c.useId)(),[h]=(0,c.useState)(()=>(0,y.createAnchorResolver)(t)),[f]=(0,c.useState)(()=>me()),{store:S,dispatch:x,seal:G,history:T,subscribe:I,getCompiled:_,compileBus:R,compileErrors:N}=Ne({input:r,data:e,customPalettes:m,plugins:t,resolveRenderer:p,anchorResolver:h,onChange:u,onError:a,onWarnings:d});(0,c.useEffect)(()=>{if(S)return S.subscribe((k,C)=>{if(k.compiled.spec===C.compiled.spec)return;const{selection:w,setSelection:M}=f.getState();w.length!==0&&M(Q(w,k.compiled.spec))})},[S,f]);const E=(0,c.useMemo)(()=>({dispatch:x,seal:G}),[x,G]);(0,c.useImperativeHandle)(n,()=>({commands:E,undo:T.undo,redo:T.redo,subscribe:I,getCompiled:_,getSelection:()=>f.getState().selection,setSelection:k=>f.getState().setSelection(k),subscribeSelection:f.subscribe}),[E,T,I,_,f]);const D=(0,c.useMemo)(()=>S?{chartId:b,store:S,selectionStore:f,commands:E,history:T,formattingLocale:s,compileBus:R,colorScheme:g,themeOverrides:q,anchorResolver:h}:null,[b,S,f,E,T,s,R,g,q,h]);return(0,i.jsx)(z,{forcedErrors:N,onError:a,resetKeys:[r,e],children:D?(0,i.jsx)(l.GraphContext.Provider,{value:D,children:(0,i.jsx)(l.GeomRendererResolverProvider,{value:p,children:j})}):null})};function _e(e){const r=(0,y.createGraphyBuilder)(e);return{...r,GraphProvider:s=>(0,i.jsx)(J,{...s,plugins:r.plugins})}}var De=({children:e,...r})=>(0,i.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...r,children:e}),Ie="drqe3u0",we="drqe3u1",He="drqe3u2",Me="drqe3u3",H="drqe3u4",$e="drqe3u5",Pe="drqe3u6",Le="drqe3u7",$="drqe3u8",Oe="drqe3u9",Ke="drqe3ua";var Be="drqe3uc",Ae="drqe3ud",Ye="drqe3ue",Ue="drqe3uf";var Fe="drqe3uh",Ve="drqe3ui",V={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},W={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},Z={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},We=({width:e=380,style:r,className:t}={})=>{const{compileBus:s}=l.useGraphContext(),[n]=(0,c.useState)(()=>fe()),[u,a]=(0,c.useState)(!1),[d,m]=(0,c.useState)(y.isCompilerCachingEnabled);(0,c.useEffect)(()=>{const{recordCompile:h}=n.getState(),f=s.getLastTrigger(),S=s.getLastCompile();return f&&S&&h(f,S),s.subscribe(h)},[n,s]);const g=(0,Y.useStore)(n,h=>h.lastCompile),q=(0,Y.useStore)(n,h=>h.history),j=s.getCacheStats(),p=g===null&&q.length===0,b=()=>{m(h=>{const f=!h;return(0,y.setCompilerCachingEnabled)(f),f})};return(0,i.jsxs)("div",{className:(0,P.default)(Ke,t),style:{width:e,...r},children:[(0,i.jsxs)("div",{className:Ie,children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:we,children:"compile cache"}),(0,i.jsx)("div",{className:Ye,children:p?"production: stats disabled":g?`last: ${g.label} · ${ee(g.durationMs)}`:"awaiting first compile…"})]}),(0,i.jsx)("button",{type:"button",onClick:()=>a(h=>!h),className:Ue,children:u?"▾":"▴"})]}),!u&&(0,i.jsxs)("div",{className:"drqe3ub",children:[(0,i.jsxs)("button",{type:"button",onClick:b,className:d?V.enabled:V.disabled,"aria-pressed":d,children:["cache ",d?"enabled":"disabled"]}),(0,i.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!u&&!p&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(ze,{delta:g?.stages,cumulative:j}),(0,i.jsx)(Xe,{entries:q})]})]})},ze=({delta:e,cumulative:r})=>(0,i.jsxs)("table",{className:He,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{className:Fe,children:[(0,i.jsx)("th",{className:Me,children:"stage"}),(0,i.jsx)("th",{className:H,children:"Δ miss"}),(0,i.jsx)("th",{className:H,children:"Δ hit"}),(0,i.jsx)("th",{className:H,children:"total miss"}),(0,i.jsx)("th",{className:H,children:"total hit"})]})}),(0,i.jsx)("tbody",{children:y.COMPILER_STAGE_KEYS.map(t=>{const s=e?.[t],n=Qe(s);return(0,i.jsxs)("tr",{className:Be,children:[(0,i.jsxs)("td",{className:$e,children:[(0,i.jsx)("span",{className:Z[n],"aria-hidden":!0})," ",t]}),(0,i.jsx)("td",{className:n==="ran"?W.ran:W.dim,children:s?.misses??0}),(0,i.jsx)("td",{className:$,children:s?.hits??0}),(0,i.jsx)("td",{className:$,children:r[t].misses}),(0,i.jsx)("td",{className:$,children:r[t].hits})]},t)})})]}),Xe=({entries:e})=>e.length===0?null:(0,i.jsxs)("div",{className:Ae,children:[(0,i.jsx)("div",{className:Ve,children:"recent compiles"}),e.map(r=>{const t=Je(r.stages,u=>u.misses>0),s=y.COMPILER_STAGE_KEYS.length,n=t===0?"cached":"ran";return(0,i.jsxs)("div",{className:Pe,children:[(0,i.jsx)("span",{className:Z[n],"aria-hidden":!0}),(0,i.jsx)("span",{className:Le,title:r.label,children:r.label}),(0,i.jsxs)("span",{className:Oe,children:[t,"/",s," ran · ",ee(r.durationMs)]})]},r.id)})]}),Qe=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",Je=(e,r)=>{let t=0;for(const s of y.COMPILER_STAGE_KEYS)r(e[s])&&(t+=1);return t},ee=e=>e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,Ze=()=>{const{history:e}=l.useGraphContext(),{stack:r,undo:t,redo:s}=e,n=(0,c.useCallback)(d=>r.subscribe(d),[r]),u=(0,c.useCallback)(()=>r.getSnapshot(),[r]),a=(0,c.useSyncExternalStore)(n,u,u);return(0,c.useMemo)(()=>({...a,undo:t,redo:s}),[a,t,s])},er=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),rr=(e,r={})=>{const{target:t,enabled:s=!0}=r;(0,c.useEffect)(()=>{const n=tr(t);if(!s||!n)return;const u=a=>{if(!sr(a)||a.defaultPrevented||nr(a.target))return;const d=l.resolveHistoryStep(a);if(!d)return;const m=e.current;m&&(d==="undo"?m.undo():m.redo())&&a.preventDefault()};return n.addEventListener("keydown",u),()=>n.removeEventListener("keydown",u)},[e,t,s])},tr=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,sr=e=>"key"in e,nr=e=>e instanceof HTMLInputElement?!er.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1;exports.BrandMark=l.BrandMark;exports.CanvasTextMeasurer=l.CanvasTextMeasurer;exports.DefaultFooter=l.DefaultFooter;exports.DefaultGrid=l.DefaultGrid;exports.DefaultHeader=l.DefaultHeader;exports.DefaultSwatch=l.DefaultSwatch;exports.DefaultTooltip=l.DefaultTooltip;exports.DevToolsPanel=We;exports.GraphErrorBoundary=z;exports.GraphErrorPanel=O;exports.GraphProvider=J;exports.GraphRenderer=l.GraphRenderer;exports.HoverProvider=l.HoverProvider;exports.TextMeasurerProvider=l.TextMeasurerProvider;exports.ThemeProvider=l.ThemeProvider;exports.UnitSpaceSvg=De;exports.createGraphyKit=_e;exports.darkTheme=l.darkTheme;exports.defineGeomRenderer=l.defineGeomRenderer;exports.lightTheme=l.lightTheme;exports.lightenCss=l.lightenCss;exports.pruneSelection=Q;exports.resolveBrandMarkVisual=l.resolveBrandMarkVisual;exports.useCompiledSelector=l.useCompiledSelector;exports.useElementScreenRect=l.useElementScreenRect;exports.useGeomHitTest=l.useGeomHitTest;exports.useGeomHover=l.useGeomHover;exports.useGraphCommands=l.useGraphCommands;exports.useGraphHandle=l.useGraphHandle;exports.useGraphHistory=Ze;exports.useGraphHistoryShortcuts=rr;exports.useGraphSelection=l.useGraphSelection;exports.useHandleCompiled=l.useHandleCompiled;exports.useHoverState=l.useHoverState;exports.useTextMeasurer=l.useTextMeasurer;exports.vars=se.vars;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const l=require("./history-chords-BIarPFDp.cjs"),se=require("./typography-CsG_IWDd.cjs");let y=require("@graphysdk/viz-engine"),c=require("react"),i=require("react/jsx-runtime"),Y=require("zustand"),K=require("zustand/vanilla"),P=require("clsx");P=l.__toESM(P,1);function L(e){for(const r of e)(r.severity==="error"?console.error:console.warn)(`[graphy] ${r.code}: ${r.message}`,r)}var ne="_1a5iqpb0",oe="_1a5iqpb1";var ie="_1a5iqpb3",ae="_1a5iqpb4",ce="_1a5iqpb5";var O=({errors:e})=>{const[r,...t]=e;return(0,i.jsxs)("div",{role:"alert",className:ne,children:[(0,i.jsx)("strong",{className:oe,children:"This chart could not be rendered."}),r&&(0,i.jsx)(U,{diagnostic:r}),t.length>0&&(0,i.jsx)("ul",{className:"_1a5iqpb2",children:t.map((s,n)=>(0,i.jsx)("li",{children:(0,i.jsx)(U,{diagnostic:s})},`${s.code}-${n}`))})]})},U=({diagnostic:e})=>(0,i.jsxs)("div",{className:ie,children:[(0,i.jsx)("span",{className:ae,children:e.code}),(0,i.jsx)("p",{className:ce,children:e.message}),e.suggestion&&(0,i.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function le(e=[],r=[]){return e.length===r.length&&e.every((t,s)=>Object.is(t,r[s]))}var z=class extends c.Component{constructor(...e){super(...e),this.state={caughtDiagnostic:null}}static getDerivedStateFromError(e){return{caughtDiagnostic:(0,y.buildDiagnostic)(e)}}componentDidCatch(e,r){const t=(0,y.buildDiagnostic)(e);L([t]),this.props.onError?.([t]),console.error("Chart render component stack:",r.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!le(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,i.jsx)(O,{errors:[e]});const{forcedErrors:r,children:t}=this.props;return r&&r.length>0?(0,i.jsx)(O,{errors:r}):t}},X=e=>typeof e=="object"&&"geom"in e&&"render"in e,de=e=>{const r=(0,y.resolveDefinition)(e);return r instanceof y.Geom?r:null},Q=(e,r)=>{const t=e.filter(s=>ue(s,r));return t.length===e.length?e:t},ue=(e,r)=>e.kind!=="annotation"?!0:(0,y.findAnnotation)(r.annotations,e.id)!==null,F=[],me=()=>(0,K.createStore)(e=>({selection:F,setSelection:r=>e(t=>he(t.selection,r)?t:{selection:r}),clearSelection:()=>e(r=>r.selection.length===0?r:{selection:F})})),he=(e,r)=>e===r?!0:e.length!==r.length?!1:e.every((t,s)=>{const n=r[s];return n!==void 0&&(0,y.areEditTargetsEqual)(t,n)}),ge=5,pe=e=>{if(process.env.NODE_ENV==="production")return{emit:()=>{},subscribe:()=>ve,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const r=new Set;let t=null;return{emit:s=>{const n=e.getLastCompile();if(n){t=s;for(const u of r)u(s,n)}},subscribe:s=>(r.add(s),()=>{r.delete(s)}),getLastTrigger:()=>t,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},fe=()=>(0,K.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(r,t)=>e(s=>{if(s.lastSnapshot===t)return s;const n={id:s.nextId,label:ye(r),stages:t.stages,durationMs:t.durationMs};return{lastCompile:n,history:Se(s.history,n,ge),nextId:s.nextId+1,lastSnapshot:t}})})),ve=()=>{},ye=e=>{switch(e.kind){case"init":return"init";case"input":return"input change";case"data":return"data change";case"command":return e.command.metadata.description}},Se=(e,r,t)=>{const s=e.length>=t?e.length-(t-1):0;return[...e.slice(s),r]};function be(e){const r=e.filter(X),t=new Set([...Object.keys(l.BUILT_IN_GEOM_RENDERERS),...r.map(d=>d.geom)]),s=[],n=new Set;for(const d of e){const m=de(d);m===null||t.has(m.type)||n.has(m.type)||(n.add(m.type),s.push({kind:"user-input",severity:"error",code:"MISSING_GEOM_RENDERER",message:`Custom geom '${m.type}' is registered but has no renderer.`,context:{requested:m.type,kind:"geom-renderer"},suggestion:`Add a render half for it: \`defineGeomRenderer(${m.type}Geom, { coord, render })\`, then include it in \`plugins\`.`}))}const u=new Map;for(const d of r){if("definition"in d)continue;const m=`${d.geom}|${d.coord}`,g=u.get(m);g?g.count+=1:u.set(m,{geom:d.geom,coord:d.coord,count:1})}const a=[];for(const{geom:d,coord:m,count:g}of u.values())g<2||a.push({kind:"user-input",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${d}', '${m}') (${g} entries); the last in the array wins.`,context:{requested:`${d}@${m}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${d}', '${m}').`});return{errors:s,warnings:a}}function Ee(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s)r(a.geom,t.type)!==null||n.has(a.geom)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${a.geom}' under ${t.type} coords; the layer is not painted.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${a.geom}', '${t.type}') via \`defineGeomRenderer\`.`}));return u}function Ce(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s){if(a.interactive===!1||a.spatialKind!=="render-hit-test"||n.has(a.geom))continue;const d=r(a.geom,t.type);d===null||d.hitTest||l.isOverlayHosted(d)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares spatialKind 'render-hit-test' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:`Add a \`hitTest\` factory (precomputed geometry) or an overlay render (\`{ fn, options: { overlay: true } }\`, live simulation) to the renderer for ('${a.geom}', '${t.type}').`}))}return u}function xe(e){const r=new Set,t=[];for(const s of e.layers){const n=s.identityKey;s.interactive!==!1&&(s.spatialKind!=="render-hit-test"||typeof n!="object"||r.has(s.geom)||s.data.hasVariable(n.variable)||(r.add(s.geom),t.push({kind:"user-input",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${s.geom}' keys its identity on '${n.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:`Emit the '${n.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return t}function Te(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s){if(a.interactive===!1||a.spatialKind!=="render-hit-test"||n.has(a.geom))continue;const d=r(a.geom,t.type);d===null||!d.hitTest||!l.isOverlayHosted(d)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares both a \`hitTest\` factory and an overlay render; these are alternatives, so only the overlay is used.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR an overlay render (`{ fn, options: { overlay: true } }`) for a live simulation."}))}return u}function Re(e,r){const t=new Set,s=[];for(const n of e.layers)n.interactive!==!1&&(n.spatialKind!=="render-hit-test"||t.has(n.geom)||r.hasCapability(n.geom)||(t.add(n.geom),s.push({kind:"user-input",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${n.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:n.geom,kind:"geom-renderer"},suggestion:"Implement `resolveAnchorPosition(observation, context)` on the geom, returning the normalised panel position an annotation on that observation belongs at."})));return s}function qe(e,r){const{coordSystem:t,layers:s}=e,n=new Set,u=[];for(const a of s){if(a.interactive===!1||a.spatialKind==="render-hit-test"||n.has(a.geom))continue;const d=r(a.geom,t.type);d===null||!l.isOverlayHosted(d)||(n.add(a.geom),u.push({kind:"user-input",severity:"warning",code:"OVERLAY_REQUIRES_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares an overlay render but its layer's spatialKind is '${a.spatialKind}', not 'render-hit-test'; the overlay's push-path hover resolves to nothing.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'render-hit-test' so the compiled layer carries the `byKey` index the overlay's `pushHover` resolves against."}))}return u}var Ge=e=>(0,K.createStore)(r=>({compiled:e,setCompiled:t=>r(s=>s.compiled===t?s:{compiled:t})})),Ne=({input:e,data:r,customPalettes:t,plugins:s,resolveRenderer:n,anchorResolver:u,onChange:a,onError:d,onWarnings:m})=>{const g=l.useLatestRef(a),q=l.useLatestRef(d),j=l.useLatestRef(m),[{session:p,compileBus:b}]=(0,c.useState)(()=>{const o=(0,y.createCompiler)({plugins:s});return{session:new y.GraphCompilationSession(o),compileBus:pe(o)}}),[h]=(0,c.useState)(()=>be(s??[])),f=(0,c.useRef)(null),[S]=(0,c.useState)(ke),x=(0,c.useRef)(null),G=(0,c.useCallback)(o=>h.errors.length===0?o:[...h.errors,...o??[]],[h]),T=(0,c.useCallback)(o=>{if(!o.ok)return o.errors;if(x.current)x.current.getState().setCompiled(o.compiled);else{const v=Ge(o.compiled);v.subscribe(S.notify),x.current=v,S.notify()}return null},[S]),[I,_]=(0,c.useState)(()=>{const o=p.compile({input:e,data:r,customPalettes:t});return f.current=o,G(T(o))}),R=(0,c.useCallback)(o=>o.ok?[...o.warnings,...Ee(o.compiled,n),...Ce(o.compiled,n),...xe(o.compiled),...Te(o.compiled,n),...qe(o.compiled,n),...Re(o.compiled,u)]:o.warnings,[n,u]),N=(0,c.useCallback)(o=>{o.length!==0&&(L(o),q.current?.(o))},[q]),E=(0,c.useCallback)(o=>{o.length!==0&&(L(o),j.current?.(o))},[j]);(0,c.useEffect)(()=>{const o=f.current;o&&(N([...h.errors,...o.ok?[]:o.errors]),E([...h.warnings,...R(o)]),o.ok&&b.emit({kind:"init"}))},[b,N,E,h,R]),(0,c.useEffect)(()=>{const o=p.update({input:e,data:r,customPalettes:t});if(!o)return;o.sealedInput&&g.current?.(o.sealedInput);const v=T(o.result);_(G(v)),v&&N(v),E(R(o.result)),v||b.emit({kind:o.inputChanged?"input":"data"})},[e,r,t,p,b,T,N,E,G,R,g]);const D=(0,c.useCallback)(o=>{_(v=>v===null?v:G(null)),E(R(o))},[G,E,R]),k=(0,c.useCallback)(o=>{o.compiled&&x.current?.getState().setCompiled(o.compiled),o.result&&D(o.result),o.command&&b.emit({kind:"command",command:o.command}),o.input&&g.current?.(o.input),o.errors&&N([...o.errors])},[D,b,g,N]),C=(0,c.useCallback)(o=>{for(const v of o)k(v);return o.some(v=>!!v.compiled)},[k]),w=(0,c.useCallback)((o,v)=>{C(p.applyCommand(o,v))},[p,C]),M=(0,c.useCallback)(()=>{C(p.seal())},[p,C]),B=(0,c.useCallback)(()=>C(p.undo()),[p,C]),A=(0,c.useCallback)(()=>C(p.redo()),[p,C]),re=(0,c.useMemo)(()=>({stack:p.history,undo:B,redo:A}),[p,B,A]),te=(0,c.useCallback)(()=>x.current?.getState().compiled??null,[]);return{store:x.current,dispatch:w,seal:M,history:re,subscribe:S.subscribe,getCompiled:te,compileBus:b,compileErrors:I}},ke=()=>{const e=new Set;return{subscribe:r=>(e.add(r),()=>{e.delete(r)}),notify:()=>e.forEach(r=>r())}},je={},J=({data:e,input:r,plugins:t=[],formattingLocale:s,handleRef:n,onChange:u,onError:a,onWarnings:d,customPalettes:m,colorScheme:g="light",themeOverrides:q=je,children:j})=>{const[p]=(0,c.useState)(()=>l.createGeomRendererResolver(t.filter(X))),b=(0,c.useId)(),[h]=(0,c.useState)(()=>(0,y.createAnchorResolver)(t)),[f]=(0,c.useState)(()=>me()),{store:S,dispatch:x,seal:G,history:T,subscribe:I,getCompiled:_,compileBus:R,compileErrors:N}=Ne({input:r,data:e,customPalettes:m,plugins:t,resolveRenderer:p,anchorResolver:h,onChange:u,onError:a,onWarnings:d});(0,c.useEffect)(()=>{if(S)return S.subscribe((k,C)=>{if(k.compiled.spec===C.compiled.spec)return;const{selection:w,setSelection:M}=f.getState();w.length!==0&&M(Q(w,k.compiled.spec))})},[S,f]);const E=(0,c.useMemo)(()=>({dispatch:x,seal:G}),[x,G]);(0,c.useImperativeHandle)(n,()=>({commands:E,undo:T.undo,redo:T.redo,subscribe:I,getCompiled:_,getSelection:()=>f.getState().selection,setSelection:k=>f.getState().setSelection(k),subscribeSelection:f.subscribe}),[E,T,I,_,f]);const D=(0,c.useMemo)(()=>S?{chartId:b,store:S,selectionStore:f,commands:E,history:T,formattingLocale:s,compileBus:R,colorScheme:g,themeOverrides:q,anchorResolver:h}:null,[b,S,f,E,T,s,R,g,q,h]);return(0,i.jsx)(z,{forcedErrors:N,onError:a,resetKeys:[r,e],children:D?(0,i.jsx)(l.GraphContext.Provider,{value:D,children:(0,i.jsx)(l.GeomRendererResolverProvider,{value:p,children:j})}):null})};function _e(e){const r=(0,y.createGraphyBuilder)(e);return{...r,GraphProvider:s=>(0,i.jsx)(J,{...s,plugins:r.plugins})}}var De=({children:e,...r})=>(0,i.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...r,children:e}),Ie="drqe3u0",we="drqe3u1",He="drqe3u2",Me="drqe3u3",H="drqe3u4",$e="drqe3u5",Pe="drqe3u6",Le="drqe3u7",$="drqe3u8",Oe="drqe3u9",Ke="drqe3ua";var Be="drqe3uc",Ae="drqe3ud",Ye="drqe3ue",Ue="drqe3uf";var Fe="drqe3uh",Ve="drqe3ui",V={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},W={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},Z={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},We=({width:e=380,style:r,className:t}={})=>{const{compileBus:s}=l.useGraphContext(),[n]=(0,c.useState)(()=>fe()),[u,a]=(0,c.useState)(!1),[d,m]=(0,c.useState)(y.isCompilerCachingEnabled);(0,c.useEffect)(()=>{const{recordCompile:h}=n.getState(),f=s.getLastTrigger(),S=s.getLastCompile();return f&&S&&h(f,S),s.subscribe(h)},[n,s]);const g=(0,Y.useStore)(n,h=>h.lastCompile),q=(0,Y.useStore)(n,h=>h.history),j=s.getCacheStats(),p=g===null&&q.length===0,b=()=>{m(h=>{const f=!h;return(0,y.setCompilerCachingEnabled)(f),f})};return(0,i.jsxs)("div",{className:(0,P.default)(Ke,t),style:{width:e,...r},children:[(0,i.jsxs)("div",{className:Ie,children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:we,children:"compile cache"}),(0,i.jsx)("div",{className:Ye,children:p?"production: stats disabled":g?`last: ${g.label} · ${ee(g.durationMs)}`:"awaiting first compile…"})]}),(0,i.jsx)("button",{type:"button",onClick:()=>a(h=>!h),className:Ue,children:u?"▾":"▴"})]}),!u&&(0,i.jsxs)("div",{className:"drqe3ub",children:[(0,i.jsxs)("button",{type:"button",onClick:b,className:d?V.enabled:V.disabled,"aria-pressed":d,children:["cache ",d?"enabled":"disabled"]}),(0,i.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!u&&!p&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(ze,{delta:g?.stages,cumulative:j}),(0,i.jsx)(Xe,{entries:q})]})]})},ze=({delta:e,cumulative:r})=>(0,i.jsxs)("table",{className:He,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{className:Fe,children:[(0,i.jsx)("th",{className:Me,children:"stage"}),(0,i.jsx)("th",{className:H,children:"Δ miss"}),(0,i.jsx)("th",{className:H,children:"Δ hit"}),(0,i.jsx)("th",{className:H,children:"total miss"}),(0,i.jsx)("th",{className:H,children:"total hit"})]})}),(0,i.jsx)("tbody",{children:y.COMPILER_STAGE_KEYS.map(t=>{const s=e?.[t],n=Qe(s);return(0,i.jsxs)("tr",{className:Be,children:[(0,i.jsxs)("td",{className:$e,children:[(0,i.jsx)("span",{className:Z[n],"aria-hidden":!0})," ",t]}),(0,i.jsx)("td",{className:n==="ran"?W.ran:W.dim,children:s?.misses??0}),(0,i.jsx)("td",{className:$,children:s?.hits??0}),(0,i.jsx)("td",{className:$,children:r[t].misses}),(0,i.jsx)("td",{className:$,children:r[t].hits})]},t)})})]}),Xe=({entries:e})=>e.length===0?null:(0,i.jsxs)("div",{className:Ae,children:[(0,i.jsx)("div",{className:Ve,children:"recent compiles"}),e.map(r=>{const t=Je(r.stages,u=>u.misses>0),s=y.COMPILER_STAGE_KEYS.length,n=t===0?"cached":"ran";return(0,i.jsxs)("div",{className:Pe,children:[(0,i.jsx)("span",{className:Z[n],"aria-hidden":!0}),(0,i.jsx)("span",{className:Le,title:r.label,children:r.label}),(0,i.jsxs)("span",{className:Oe,children:[t,"/",s," ran · ",ee(r.durationMs)]})]},r.id)})]}),Qe=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",Je=(e,r)=>{let t=0;for(const s of y.COMPILER_STAGE_KEYS)r(e[s])&&(t+=1);return t},ee=e=>e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,Ze=()=>{const{history:e}=l.useGraphContext(),{stack:r,undo:t,redo:s}=e,n=(0,c.useCallback)(d=>r.subscribe(d),[r]),u=(0,c.useCallback)(()=>r.getSnapshot(),[r]),a=(0,c.useSyncExternalStore)(n,u,u);return(0,c.useMemo)(()=>({...a,undo:t,redo:s}),[a,t,s])},er=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),rr=(e,r={})=>{const{target:t,enabled:s=!0}=r;(0,c.useEffect)(()=>{const n=tr(t);if(!s||!n)return;const u=a=>{if(!sr(a)||a.defaultPrevented||nr(a.target))return;const d=l.resolveHistoryStep(a);if(!d)return;const m=e.current;m&&(d==="undo"?m.undo():m.redo())&&a.preventDefault()};return n.addEventListener("keydown",u),()=>n.removeEventListener("keydown",u)},[e,t,s])},tr=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,sr=e=>"key"in e,nr=e=>e instanceof HTMLInputElement?!er.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1;exports.BrandMark=l.BrandMark;exports.CanvasTextMeasurer=l.CanvasTextMeasurer;exports.DefaultFooter=l.DefaultFooter;exports.DefaultGrid=l.DefaultGrid;exports.DefaultHeader=l.DefaultHeader;exports.DefaultSwatch=l.DefaultSwatch;exports.DefaultTooltip=l.DefaultTooltip;exports.DevToolsPanel=We;exports.GraphErrorBoundary=z;exports.GraphErrorPanel=O;exports.GraphProvider=J;exports.GraphRenderer=l.GraphRenderer;exports.HoverProvider=l.HoverProvider;exports.TextMeasurerProvider=l.TextMeasurerProvider;exports.ThemeProvider=l.ThemeProvider;exports.UnitSpaceSvg=De;exports.createGraphyKit=_e;exports.darkTheme=l.darkTheme;exports.defineGeomRenderer=l.defineGeomRenderer;exports.lightTheme=l.lightTheme;exports.lightenCss=l.lightenCss;exports.pruneSelection=Q;exports.resolveBrandMarkVisual=l.resolveBrandMarkVisual;exports.useCompiledSelector=l.useCompiledSelector;exports.useElementScreenRect=l.useElementScreenRect;exports.useGeomHitTest=l.useGeomHitTest;exports.useGeomHover=l.useGeomHover;exports.useGraphCommands=l.useGraphCommands;exports.useGraphHandle=l.useGraphHandle;exports.useGraphHistory=Ze;exports.useGraphHistoryShortcuts=rr;exports.useGraphSelection=l.useGraphSelection;exports.useHandleCompiled=l.useHandleCompiled;exports.useHoverState=l.useHoverState;exports.useTextMeasurer=l.useTextMeasurer;exports.vars=se.vars;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { AnchorPlacement } from '@graphysdk/viz-engine';
2
- import { AppearanceConfig } from '@graphysdk/viz-engine';
3
2
  import { BrandMarkVariant } from '@graphysdk/viz-engine';
4
3
  import { CartesianCoordSystem } from '@graphysdk/viz-engine';
5
4
  import { ColorScheme } from '@graphysdk/viz-engine';
@@ -7,7 +6,6 @@ import { Command } from '@graphysdk/viz-engine';
7
6
  import { CommandStackSnapshot } from '@graphysdk/viz-engine';
8
7
  import { CompiledLayer } from '@graphysdk/viz-engine';
9
8
  import { CompiledLayerFor } from '@graphysdk/viz-engine';
10
- import { CompiledPanel } from '@graphysdk/viz-engine';
11
9
  import { CompiledSpec } from '@graphysdk/viz-engine';
12
10
  import { Component } from 'react';
13
11
  import { ComponentType } from 'react';
@@ -17,9 +15,12 @@ import { CSSProperties } from 'react';
17
15
  import { CustomPalettesInput } from '@graphysdk/viz-engine';
18
16
  import { Data } from '@graphysdk/viz-engine';
19
17
  import { DispatchOptions } from '@graphysdk/viz-engine';
18
+ import { EdgeSizes } from '@graphysdk/viz-engine';
20
19
  import { EditTarget } from '@graphysdk/viz-engine';
21
20
  import { ErrorInfo } from 'react';
21
+ import { FontLength } from '@graphysdk/viz-engine/graph-config';
22
22
  import { FontSpec } from '@graphysdk/viz-engine';
23
+ import { FontStyle } from '@graphysdk/viz-engine/graph-config';
23
24
  import { FormattedAxis } from '@graphysdk/viz-engine';
24
25
  import { FormattedHeadline } from '@graphysdk/viz-engine';
25
26
  import { FormattedLegend } from '@graphysdk/viz-engine';
@@ -186,7 +187,7 @@ export declare const darkTheme: string;
186
187
  export declare const DefaultFooter: ({ ref, footerRect, mode, caption, isCaptionVisible, source, isSourceVisible, brandMark, }: FooterSlotProps) => JSX.Element | null;
187
188
 
188
189
  /** Default paint for the grid region — per-tick gridlines, drawn inside the panel frame rect. */
189
- export declare const DefaultGrid: ({ axes, panel, panelFrameRect, panelRect }: GridSlotProps) => JSX.Element;
190
+ export declare const DefaultGrid: ({ axes, panelBorderSizes, panelFrameRect, panelRect }: GridSlotProps) => JSX.Element;
190
191
 
191
192
  /** Default paint for the header region — title, subtitle, and optional header-anchored badge. */
192
193
  export declare const DefaultHeader: ({ ref, headerRect, mode, title, isTitleVisible, subtitle, isSubtitleVisible, brandMark, }: HeaderSlotProps) => JSX.Element | null;
@@ -246,20 +247,6 @@ export declare interface EditorSurfaceSlotProps {
246
247
  panelRect: Rect;
247
248
  }
248
249
 
249
- declare const FONT_STYLES: readonly ["normal", "italic", "oblique"];
250
-
251
- /**
252
- * A CSS length keeping its unit so measurement can treat it like CSS paint does: em scales with
253
- * `textScale` (see `emToPx`), px stays absolute.
254
- */
255
- export declare interface FontLength {
256
- value: number;
257
- unit: 'px' | 'em';
258
- }
259
-
260
- /** A CSS `font-style` keyword accepted by a measured font token override. */
261
- export declare type FontStyle = (typeof FONT_STYLES)[number];
262
-
263
250
  /**
264
251
  * A structured override of a measured font token. Omitted fields keep the token's default (which
265
252
  * still cascades from the leaf tokens, e.g. `fontSizeXs`), so `{ weight: 600 }` changes only the
@@ -416,7 +403,7 @@ export declare type GeomRenderFn<G extends GeomName | string = string, C extends
416
403
  declare interface GeomRenderInput<G extends GeomName | string = string, C extends CoordKind = CoordKind> {
417
404
  layer: CompiledLayerOf<G>;
418
405
  coordSystem: CoordSystemFor<C>;
419
- isAnimated: boolean;
406
+ shouldAnimateTransitions: boolean;
420
407
  formattingLocale: Locale;
421
408
  intro?: LayerIntroPlan | null;
422
409
  }
@@ -434,12 +421,21 @@ export declare interface GeomRenderOptions {
434
421
  overlay: true;
435
422
  }
436
423
 
424
+ /**
425
+ * Animation settings for a graph. `false` disables every animation. A viewer who prefers reduced
426
+ * motion gets no animation whatever this asks for.
427
+ */
428
+ export declare type GraphAnimation = boolean | GraphAnimationProps;
429
+
430
+ /** Per-kind animation settings. Each kind is independent: turning one off leaves the other running. */
437
431
  export declare interface GraphAnimationProps {
438
432
  /**
439
- * Settings for the intro animation played on first mount. `false` disables it, `true` forces it on,
440
- * an object overrides individual intro settings. Defaults on.
433
+ * Settings for the intro animation played when the chart first mounts or the chart type changes.
434
+ * `false` disables it, an object overrides individual intro settings. Defaults on.
441
435
  */
442
436
  intro?: boolean | Partial<IntroAnimationOptions>;
437
+ /** Whether geoms animate to their new position when the underlying data changes. Defaults on. */
438
+ transitions?: boolean;
443
439
  }
444
440
 
445
441
  /** Write access to the graph's spec: applying {@link Command}s and closing the runs they form. */
@@ -611,8 +607,11 @@ export declare interface GraphRendererProps {
611
607
  sizing?: GraphSizing;
612
608
  /** Callback invoked when the graph's container is resized. Fires in every sizing mode. */
613
609
  onResize?: ResizeObserverOnResize;
614
- isAnimated?: boolean;
615
- animation?: GraphAnimationProps;
610
+ /**
611
+ * Animation settings. A boolean disables/enables animations globally, an object tunes the intro
612
+ * and data transitions separately. A reduced-motion preference disables everything regardless.
613
+ */
614
+ animation?: GraphAnimation;
616
615
  showTooltips?: boolean;
617
616
  mode?: GraphMode;
618
617
  /** Per-region component overrides. Unspecified regions render their default. */
@@ -686,7 +685,7 @@ export declare interface GraphyKit<P extends readonly Plugin_2[] = readonly Plug
686
685
  */
687
686
  export declare interface GridSlotProps {
688
687
  axes: FormattedAxis[];
689
- panel: CompiledPanel;
688
+ panelBorderSizes: EdgeSizes;
690
689
  panelFrameRect: GraphLayout['panelFrame'];
691
690
  panelRect: GraphLayout['panel'];
692
691
  }
@@ -846,7 +845,7 @@ export declare const lightTheme: string;
846
845
  * ({@link FontTokenOverride}); the CSS variable's shorthand is serialized from the same object
847
846
  * measurement reads, so paint and layout move together.
848
847
  */
849
- export declare type MeasuredFontTokenKey = 'fontDataLabel' | 'fontStackTotal' | 'fontCategoryLabel' | 'fontTickLabel' | 'fontAxisLabel' | 'fontLegendLabel' | 'fontGoalLineLabel';
848
+ export declare type MeasuredFontTokenKey = 'fontLegendLabel';
850
849
 
851
850
  /**
852
851
  * Anchor point in normalized [0,1] coord-space where a highlight overlay marker
@@ -1028,13 +1027,15 @@ export declare type ThemeOverrides = Partial<Omit<ThemeValues, MeasuredFontToken
1028
1027
  };
1029
1028
 
1030
1029
  /** Resolves the base theme plus per-graph `themeOverrides` into token values and publishes them to the subtree. */
1031
- export declare const ThemeProvider: ({ colorScheme, themeOverrides, appearance, children, }: ThemeProviderProps) => JSX.Element;
1030
+ export declare const ThemeProvider: ({ colorScheme, themeOverrides, textScale, graphBackground, children, }: ThemeProviderProps) => JSX.Element;
1032
1031
 
1033
1032
  declare interface ThemeProviderProps {
1034
- /** The chart chrome this theme dresses. Omit it where there is no chart, as an editing panel does. */
1035
- appearance?: AppearanceConfig;
1036
1033
  colorScheme: ColorScheme;
1037
1034
  themeOverrides?: ThemeOverrides;
1035
+ /** The chart's text scale. Omit it where there is no chart, as an editing panel does. */
1036
+ textScale?: number;
1037
+ /** The chart's resolved background. Omit it where there is no chart; the theme token then stands. */
1038
+ graphBackground?: string;
1038
1039
  children: ReactNode;
1039
1040
  }
1040
1041
 
@@ -1132,8 +1133,8 @@ export declare function useGeomHover(layerId: string): GeomHoverPush;
1132
1133
  * const { dispatch, seal } = useGraphCommands();
1133
1134
  *
1134
1135
  * const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
1135
- * const command = new SetAppearanceCornerRadiusCommand({ cornerRadius: event.target.valueAsNumber });
1136
- * dispatch(command, { transient: true });
1136
+ * const rule = style.graph({ borderRadius: event.target.valueAsNumber });
1137
+ * dispatch(new SetStyleRuleCommand({ list: 'defaults', rule, id: 'frame-radius' }), { transient: true });
1137
1138
  * };
1138
1139
  *
1139
1140
  * const handlePointerUp = () => seal();
@@ -1284,22 +1285,13 @@ export declare const vars: {
1284
1285
  trendPositiveColor: `var(--${string})`;
1285
1286
  trendNeutralColor: `var(--${string})`;
1286
1287
  defaultAnnotationArrowStroke: `var(--${string})`;
1287
- defaultAnnotationShapeStroke: `var(--${string})`;
1288
1288
  defaultAnnotationShapeFill: `var(--${string})`;
1289
1289
  arrowAnnotationStickerOutlineColor: `var(--${string})`;
1290
1290
  arrowAnnotationStickerOutlineColorInverse: `var(--${string})`;
1291
1291
  annotationFrameBorderColor: `var(--${string})`;
1292
1292
  editMenuTriggerIconColor: `var(--${string})`;
1293
1293
  heatmapEmptyTileBackground: `var(--${string})`;
1294
- dataLabelOutsideBackground: `var(--${string})`;
1295
- dataLabelTextColor: `var(--${string})`;
1296
- dataLabelInsideTextColor: `var(--${string})`;
1297
- stackTotalTextColor: `var(--${string})`;
1298
- stackTotalBackground: `var(--${string})`;
1299
- stackTotalStroke: `var(--${string})`;
1300
1294
  gridLineWidth: `var(--${string})`;
1301
- gridLineDash: `var(--${string})`;
1302
- gridLineDotted: `var(--${string})`;
1303
1295
  tooltipBorderRadius: `var(--${string})`;
1304
1296
  tooltipBorderWidth: `var(--${string})`;
1305
1297
  tooltipPaddingBlock: `var(--${string})`;
@@ -1307,7 +1299,6 @@ export declare const vars: {
1307
1299
  tooltipRowGap: `var(--${string})`;
1308
1300
  tooltipShadow: `var(--${string})`;
1309
1301
  editorControlHeight: `var(--${string})`;
1310
- tickLabelOffset: `var(--${string})`;
1311
1302
  legendItemGap: `var(--${string})`;
1312
1303
  legendSwatchGap: `var(--${string})`;
1313
1304
  legendSwatchWidth: `var(--${string})`;
@@ -1388,11 +1379,6 @@ export declare const vars: {
1388
1379
  fontLineHeightHeadingSm: `var(--${string})`;
1389
1380
  fontLineHeightHeadingMd: `var(--${string})`;
1390
1381
  fontLineHeightHeadingLg: `var(--${string})`;
1391
- fontTickLabel: `var(--${string})`;
1392
- fontAxisLabel: `var(--${string})`;
1393
- fontDataLabel: `var(--${string})`;
1394
- fontStackTotal: `var(--${string})`;
1395
- fontCategoryLabel: `var(--${string})`;
1396
1382
  fontLegendLabel: `var(--${string})`;
1397
1383
  fontSeriesLabel: `var(--${string})`;
1398
1384
  fontTooltipLabel: `var(--${string})`;
@@ -1406,7 +1392,6 @@ export declare const vars: {
1406
1392
  fontTooltipCaptionSmall: `var(--${string})`;
1407
1393
  fontTrendTag: `var(--${string})`;
1408
1394
  fontTrendTagSmall: `var(--${string})`;
1409
- fontGoalLineLabel: `var(--${string})`;
1410
1395
  fontPieLabel: `var(--${string})`;
1411
1396
  fontPieChartTotal: `var(--${string})`;
1412
1397
  fontDifferenceArrowSmall: `var(--${string})`;