@overdoser/react-toolkit 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +15 -0
- package/components/Button/Button.d.ts +13 -0
- package/components/Chart/AreaChart.d.ts +85 -0
- package/components/Chart/Axis.d.ts +30 -0
- package/components/Chart/BarChart.d.ts +111 -0
- package/components/Chart/ChartContainer.d.ts +33 -0
- package/components/Chart/ChartLegend.d.ts +9 -0
- package/components/Chart/ChartTooltip.d.ts +32 -0
- package/components/Chart/LineChart.d.ts +112 -0
- package/components/Chart/PieChart.d.ts +100 -0
- package/components/Chart/RadarChart.d.ts +86 -0
- package/components/Chart/Sparkline.d.ts +31 -0
- package/components/Chart/TradingChart.d.ts +89 -0
- package/components/Chart/index.d.ts +18 -0
- package/components/Chart/scales.d.ts +21 -0
- package/components/Chart/trading/indicators.d.ts +28 -0
- package/components/Chart/trading/period.d.ts +19 -0
- package/components/Chart/trading/types.d.ts +122 -0
- package/components/Chart/types.d.ts +60 -0
- package/components/Chart/useChartDimensions.d.ts +12 -0
- package/index.css +1 -1
- package/index.d.ts +2 -0
- package/index.js +3369 -1077
- package/llms.txt +361 -0
- package/manifest.json +305 -2
- package/package.json +1 -1
- package/recipes/dashboard-charts.tsx +123 -0
- package/recipes/interactive-area-chart.tsx +226 -0
- package/recipes/interactive-bar-chart.tsx +211 -0
- package/recipes/interactive-line-chart.tsx +221 -0
- package/recipes/interactive-pie-chart.tsx +191 -0
- package/recipes/trading-chart.tsx +188 -0
- package/components/Button/Button.stories.d.ts +0 -17
- package/components/Dropdown/Dropdown.stories.d.ts +0 -8
- package/components/Form/Form.stories.d.ts +0 -11
- package/components/Link/Link.stories.d.ts +0 -9
- package/components/List/List.stories.d.ts +0 -9
- package/components/Modal/Modal.stories.d.ts +0 -9
- package/components/Popover/Popover.stories.d.ts +0 -9
- package/components/Table/Table.stories.d.ts +0 -20
- package/components/Typography/Typography.stories.d.ts +0 -15
- package/components/inputs/Checkbox/Checkbox.stories.d.ts +0 -9
- package/components/inputs/Input/Input.stories.d.ts +0 -13
- package/components/inputs/Radio/Radio.stories.d.ts +0 -7
- package/components/inputs/Select/Select.stories.d.ts +0 -18
- package/components/inputs/Textarea/Textarea.stories.d.ts +0 -10
- package/test-setup.d.ts +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
export interface SparklineProps {
|
|
3
|
+
/** Numeric series, in left-to-right order. */
|
|
4
|
+
data: number[];
|
|
5
|
+
/** Pixel width. @default 80 */
|
|
6
|
+
width?: number;
|
|
7
|
+
/** Pixel height. @default 24 */
|
|
8
|
+
height?: number;
|
|
9
|
+
/** Stroke color (CSS). @default 'var(--crk-chart-1)' */
|
|
10
|
+
color?: string;
|
|
11
|
+
/** Stroke width in pixels. @default 1.5 */
|
|
12
|
+
strokeWidth?: number;
|
|
13
|
+
/** Interpolation between points. @default 'monotone' */
|
|
14
|
+
curve?: 'linear' | 'monotone';
|
|
15
|
+
/** Fill the area under the line. @default false */
|
|
16
|
+
fill?: boolean;
|
|
17
|
+
/** Draw a dot at the last point. @default false */
|
|
18
|
+
showLastPoint?: boolean;
|
|
19
|
+
/** Accessible label for the chart (`aria-label`). */
|
|
20
|
+
'aria-label'?: string;
|
|
21
|
+
className?: string;
|
|
22
|
+
style?: CSSProperties;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Tiny inline trend line with no axes, legend, or tooltip — sized in pixels
|
|
26
|
+
* so it can sit inside a table cell, KPI tile, or anywhere a glyph fits.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* <Sparkline data={[1, 3, 2, 4, 3, 5, 4]} />
|
|
30
|
+
*/
|
|
31
|
+
export declare const Sparkline: import('react').ForwardRefExoticComponent<SparklineProps & import('react').RefAttributes<SVGSVGElement>>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
import { Bar, CrosshairInfo, Datafeed, IndicatorConfig, Period, Resolution, SeriesType, Timezone, VisibleRange } from './trading/types';
|
|
3
|
+
export interface TradingChartProps {
|
|
4
|
+
datafeed: Datafeed;
|
|
5
|
+
symbol: string;
|
|
6
|
+
resolution: Resolution;
|
|
7
|
+
/**
|
|
8
|
+
* Visible time-range window (e.g. `'1D'`, `'5D'`, `'1M'`, `'1Y'`, `'5Y'`).
|
|
9
|
+
* When set, the chart fetches bars for the last `period` of time and the
|
|
10
|
+
* initial visible range covers the whole window. Overrides `initialLookback`.
|
|
11
|
+
*
|
|
12
|
+
* The chart does not auto-adjust `resolution` when `period` changes — use
|
|
13
|
+
* `suggestResolutionForPeriod()` / `suggestPeriodForResolution()` if you
|
|
14
|
+
* want them coupled in your UI.
|
|
15
|
+
*/
|
|
16
|
+
period?: Period;
|
|
17
|
+
/** Main-pane series style. @default 'candle' */
|
|
18
|
+
seriesType?: SeriesType;
|
|
19
|
+
/** Indicators to render. Overlays go on the main pane; volume/rsi get their own sub-pane below. */
|
|
20
|
+
indicators?: IndicatorConfig[];
|
|
21
|
+
/** Decimal places for price labels and tooltip. @default 2 */
|
|
22
|
+
precision?: number;
|
|
23
|
+
/** Initial historical bars to request when `period` is not set. @default 500 */
|
|
24
|
+
initialLookback?: number;
|
|
25
|
+
/** Pixel height of the chart. @default 420 */
|
|
26
|
+
height?: number;
|
|
27
|
+
/** Up-candle / line color. @default 'var(--crk-color-success)' */
|
|
28
|
+
upColor?: string;
|
|
29
|
+
/** Down-candle color. @default 'var(--crk-color-danger)' */
|
|
30
|
+
downColor?: string;
|
|
31
|
+
/** Stroke color for `seriesType="line"` and the area outline. @default 'var(--crk-chart-1)' */
|
|
32
|
+
lineColor?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Controlled timezone — pair with `onTimezoneChange` if the consumer wants
|
|
35
|
+
* to own the value. If omitted, the chart uses `defaultTimezone` and the
|
|
36
|
+
* built-in config panel manages it internally.
|
|
37
|
+
*/
|
|
38
|
+
timezone?: Timezone;
|
|
39
|
+
/** Initial timezone when uncontrolled. @default 'local' */
|
|
40
|
+
defaultTimezone?: Timezone;
|
|
41
|
+
/** Fires when the timezone changes — either via the config panel or
|
|
42
|
+
* externally. */
|
|
43
|
+
onTimezoneChange?: (tz: Timezone) => void;
|
|
44
|
+
/**
|
|
45
|
+
* Show the gear button + configuration popover in the chart header.
|
|
46
|
+
* The panel lets the user pick a timezone today; more settings will live
|
|
47
|
+
* here in the future. @default true
|
|
48
|
+
*/
|
|
49
|
+
showConfigPanel?: boolean;
|
|
50
|
+
/** Fired when the crosshair moves (`null` when leaving the chart). */
|
|
51
|
+
onCrosshair?: (info: CrosshairInfo | null) => void;
|
|
52
|
+
/** Fired after pan / zoom / data updates. */
|
|
53
|
+
onVisibleRangeChange?: (range: VisibleRange, bars: Bar[]) => void;
|
|
54
|
+
className?: string;
|
|
55
|
+
style?: CSSProperties;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Canvas-rendered candlestick / line / area chart with a TradingView-style
|
|
59
|
+
* datafeed adapter, pan + zoom + crosshair, and a small library of built-in
|
|
60
|
+
* indicators (SMA, EMA, Bollinger Bands as overlays; RSI and Volume in
|
|
61
|
+
* sub-panes).
|
|
62
|
+
*
|
|
63
|
+
* Drop a `Datafeed` in and the chart calls `getBars` on mount, then
|
|
64
|
+
* `subscribeBars` for realtime ticks. Pan-left past the loaded window
|
|
65
|
+
* triggers another `getBars` for older history automatically.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* <TradingChart
|
|
69
|
+
* datafeed={myDatafeed}
|
|
70
|
+
* symbol="AAPL"
|
|
71
|
+
* resolution="60"
|
|
72
|
+
* seriesType="candle"
|
|
73
|
+
* indicators={[
|
|
74
|
+
* { type: 'ema', period: 12, color: 'var(--crk-chart-2)' },
|
|
75
|
+
* { type: 'ema', period: 26, color: 'var(--crk-chart-3)' },
|
|
76
|
+
* { type: 'volume' },
|
|
77
|
+
* { type: 'rsi' },
|
|
78
|
+
* ]}
|
|
79
|
+
* />
|
|
80
|
+
*/
|
|
81
|
+
export declare function TradingChart({ datafeed, symbol, resolution, period, seriesType, indicators, precision, initialLookback, height, upColor, downColor, lineColor, timezone, defaultTimezone, onTimezoneChange, showConfigPanel, onCrosshair, onVisibleRangeChange, className, style, }: TradingChartProps): import("react/jsx-runtime").JSX.Element;
|
|
82
|
+
/**
|
|
83
|
+
* Full crosshair date/time label with a timezone tag.
|
|
84
|
+
* Format: `YYYY-MM-DD HH:MM:SS <tz>` — `<tz>` is `+HH:MM` for local,
|
|
85
|
+
* `UTC`, or the short timezone name (`EST`, `BST`, …) for IANA zones.
|
|
86
|
+
*/
|
|
87
|
+
export declare function formatCrosshairTime(unixSec: number, timezone: Timezone): string;
|
|
88
|
+
/** Convert a TV-style resolution to an approximate seconds-per-bar count. */
|
|
89
|
+
export declare function approxIntervalSeconds(resolution: Resolution): number;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { LineChart } from './LineChart';
|
|
2
|
+
export type { LineChartProps, LineLabelArgs, LineDotArgs, LinePointClickArgs, } from './LineChart';
|
|
3
|
+
export { AreaChart } from './AreaChart';
|
|
4
|
+
export type { AreaChartProps } from './AreaChart';
|
|
5
|
+
export { BarChart } from './BarChart';
|
|
6
|
+
export type { BarChartProps, BarClickArgs, BarLabelArgs } from './BarChart';
|
|
7
|
+
export { PieChart } from './PieChart';
|
|
8
|
+
export type { PieChartProps, PieLabelArgs, PieSliceClickArgs } from './PieChart';
|
|
9
|
+
export { RadarChart } from './RadarChart';
|
|
10
|
+
export type { RadarChartProps, RadarAxisLabelArgs } from './RadarChart';
|
|
11
|
+
export { TradingChart, formatCrosshairTime } from './TradingChart';
|
|
12
|
+
export type { TradingChartProps } from './TradingChart';
|
|
13
|
+
export type { Bar, Resolution, Period, Timezone, Datafeed, GetBarsArgs, SubscribeBarsArgs, SubscriptionHandle, SeriesType, IndicatorConfig, CrosshairInfo, VisibleRange, } from './trading/types';
|
|
14
|
+
export { sma, ema, bollinger, rsi, volume as volumeSeries } from './trading/indicators';
|
|
15
|
+
export { periodToSeconds, suggestResolutionForPeriod, suggestPeriodForResolution, } from './trading/period';
|
|
16
|
+
export { Sparkline } from './Sparkline';
|
|
17
|
+
export type { SparklineProps } from './Sparkline';
|
|
18
|
+
export type { ChartConfig, SeriesConfig, ChartClasses, ChartMargin } from './types';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Returns the [min, max] of a numeric series. */
|
|
2
|
+
export declare function extent(values: number[]): [number, number];
|
|
3
|
+
/** Maps a numeric domain `[d0, d1]` to a pixel range `[r0, r1]`. */
|
|
4
|
+
export declare function linearScale(domain: [number, number], range: [number, number]): {
|
|
5
|
+
(v: number): number;
|
|
6
|
+
invert(px: number): number;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Categorical scale — maps each domain entry to the center of an equal-width band.
|
|
10
|
+
* `padding` is the inner gap as a fraction of band width.
|
|
11
|
+
*/
|
|
12
|
+
export declare function bandScale<T extends string | number>(domain: T[], range: [number, number], padding?: number): {
|
|
13
|
+
(v: T): number;
|
|
14
|
+
bandWidth(): number;
|
|
15
|
+
step(): number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Returns approximately `count` "nice" tick values that span `[min, max]`.
|
|
19
|
+
* Uses a 1/2/5 × 10ⁿ progression so labels round cleanly.
|
|
20
|
+
*/
|
|
21
|
+
export declare function niceTicks(min: number, max: number, count?: number): number[];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Bar } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Simple Moving Average over `period` bars. The first `period - 1` entries
|
|
4
|
+
* are `null` (warm-up) so the resulting array is aligned to `bars`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function sma(bars: Bar[], period: number): (number | null)[];
|
|
7
|
+
/**
|
|
8
|
+
* Exponential Moving Average with the standard `α = 2 / (period + 1)`
|
|
9
|
+
* smoothing constant, seeded with the first `period` bars' SMA.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ema(bars: Bar[], period: number): (number | null)[];
|
|
12
|
+
export interface BollingerBands {
|
|
13
|
+
middle: (number | null)[];
|
|
14
|
+
upper: (number | null)[];
|
|
15
|
+
lower: (number | null)[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Bollinger Bands. `middle` is an SMA of `period` closes; `upper`/`lower`
|
|
19
|
+
* are `middle ± stdDev * σ` where σ is the population standard deviation.
|
|
20
|
+
*/
|
|
21
|
+
export declare function bollinger(bars: Bar[], period: number, stdDev?: number): BollingerBands;
|
|
22
|
+
/**
|
|
23
|
+
* Relative Strength Index using Wilder's smoothing (the original definition).
|
|
24
|
+
* Output ranges 0–100; first `period` entries are `null`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function rsi(bars: Bar[], period?: number): (number | null)[];
|
|
27
|
+
/** Pass-through of the volume series for convenience and downstream typing. */
|
|
28
|
+
export declare function volume(bars: Bar[]): (number | null)[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Period, Resolution } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a `Period` string to seconds. Accepts the typed presets as well as
|
|
4
|
+
* any `<n><unit>` string where unit is `h` / `d` / `w` / `m` / `y`
|
|
5
|
+
* (case-insensitive). Falls back to 30 days on unparseable input.
|
|
6
|
+
*/
|
|
7
|
+
export declare function periodToSeconds(period: Period): number;
|
|
8
|
+
/**
|
|
9
|
+
* Recommend a `Resolution` for a given `Period`, targeting roughly 200–500
|
|
10
|
+
* visible bars — the sweet spot where candles stay legible and the price axis
|
|
11
|
+
* has enough headroom. Consumers can override; the coupling is opinionated,
|
|
12
|
+
* not enforced.
|
|
13
|
+
*/
|
|
14
|
+
export declare function suggestResolutionForPeriod(period: Period): Resolution;
|
|
15
|
+
/**
|
|
16
|
+
* Recommend a `Period` for a given `Resolution` — the inverse of
|
|
17
|
+
* `suggestResolutionForPeriod`. Same 200–500-bar target.
|
|
18
|
+
*/
|
|
19
|
+
export declare function suggestPeriodForResolution(resolution: Resolution): Period;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single OHLCV bar. `time` is a unix timestamp **in seconds** (TradingView
|
|
3
|
+
* convention). `volume` is optional — when absent, the volume sub-pane shows
|
|
4
|
+
* nothing meaningful.
|
|
5
|
+
*/
|
|
6
|
+
export interface Bar {
|
|
7
|
+
time: number;
|
|
8
|
+
open: number;
|
|
9
|
+
high: number;
|
|
10
|
+
low: number;
|
|
11
|
+
close: number;
|
|
12
|
+
volume?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* TradingView-style resolution string — the size of one bar. Minutes are bare
|
|
16
|
+
* numbers (`'1'`, `'5'`, `'60'`), and longer periods use letter suffixes:
|
|
17
|
+
* - `'D'` — daily
|
|
18
|
+
* - `'W'` — weekly
|
|
19
|
+
* - `'M'` — monthly
|
|
20
|
+
*
|
|
21
|
+
* Any other string is accepted (passed through to the datafeed) — useful for
|
|
22
|
+
* exchange-specific intervals (`'1H'`, `'4H'`, `'12H'`, etc.).
|
|
23
|
+
*/
|
|
24
|
+
export type Resolution = '1' | '3' | '5' | '15' | '30' | '60' | '120' | '240' | 'D' | 'W' | 'M' | (string & {});
|
|
25
|
+
/**
|
|
26
|
+
* Visible time-range window. Drives the initial X-axis span of the chart.
|
|
27
|
+
* Common presets are typed; any other `<n><unit>` string (`'30d'`, `'2y'`,
|
|
28
|
+
* `'48h'`, …) is accepted and parsed.
|
|
29
|
+
*/
|
|
30
|
+
export type Period = '1D' | '5D' | '1M' | '3M' | '6M' | '1Y' | '5Y' | (string & {});
|
|
31
|
+
/**
|
|
32
|
+
* Timezone used to render the crosshair date/time label.
|
|
33
|
+
* - `'local'` — the user's local timezone (offset shown as `+HH:MM`).
|
|
34
|
+
* - `'utc'` — UTC.
|
|
35
|
+
* - Any other string is treated as an IANA timezone name
|
|
36
|
+
* (e.g. `'America/New_York'`, `'Europe/London'`).
|
|
37
|
+
*/
|
|
38
|
+
export type Timezone = 'local' | 'utc' | (string & {});
|
|
39
|
+
/** Returned by `subscribeBars` so the chart can later unsubscribe. */
|
|
40
|
+
export type SubscriptionHandle = string | number | symbol | object;
|
|
41
|
+
export interface GetBarsArgs {
|
|
42
|
+
symbol: string;
|
|
43
|
+
resolution: Resolution;
|
|
44
|
+
/** Inclusive lower bound, unix seconds. */
|
|
45
|
+
from: number;
|
|
46
|
+
/** Inclusive upper bound, unix seconds. */
|
|
47
|
+
to: number;
|
|
48
|
+
/** Hint about how many bars to return; the datafeed may return more or fewer. */
|
|
49
|
+
countBack?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface SubscribeBarsArgs {
|
|
52
|
+
symbol: string;
|
|
53
|
+
resolution: Resolution;
|
|
54
|
+
/**
|
|
55
|
+
* Called when a new tick arrives. If the bar's `time` equals the previous
|
|
56
|
+
* bar's `time`, the chart treats it as an update to the in-progress bar;
|
|
57
|
+
* otherwise it's appended as a new bar.
|
|
58
|
+
*/
|
|
59
|
+
onTick: (bar: Bar) => void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Plug-in interface for streaming or batched OHLCV data — modelled on the
|
|
63
|
+
* TradingView Charting Library so adapters port over with minimal churn.
|
|
64
|
+
*/
|
|
65
|
+
export interface Datafeed {
|
|
66
|
+
/** Resolve a historical window. Must return bars sorted by `time` ascending. */
|
|
67
|
+
getBars(args: GetBarsArgs): Promise<Bar[]>;
|
|
68
|
+
/** Start streaming live ticks for `symbol` at `resolution`. */
|
|
69
|
+
subscribeBars(args: SubscribeBarsArgs): SubscriptionHandle;
|
|
70
|
+
/** Stop the corresponding subscription. */
|
|
71
|
+
unsubscribeBars(handle: SubscriptionHandle): void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Visual series mode for the main pane.
|
|
75
|
+
* - `'candle'` — filled candlesticks (open/close body + high/low wick).
|
|
76
|
+
* - `'bar'` — OHLC bars (high/low vertical line + open tick left + close tick right).
|
|
77
|
+
* - `'line'` — close-price line.
|
|
78
|
+
* - `'area'` — close-price line with a translucent fill below.
|
|
79
|
+
*/
|
|
80
|
+
export type SeriesType = 'candle' | 'bar' | 'line' | 'area';
|
|
81
|
+
/** Configuration for one indicator. Concrete shape depends on `type`. */
|
|
82
|
+
export type IndicatorConfig = {
|
|
83
|
+
type: 'sma';
|
|
84
|
+
period: number;
|
|
85
|
+
color?: string;
|
|
86
|
+
} | {
|
|
87
|
+
type: 'ema';
|
|
88
|
+
period: number;
|
|
89
|
+
color?: string;
|
|
90
|
+
} | {
|
|
91
|
+
type: 'bollinger';
|
|
92
|
+
period: number;
|
|
93
|
+
stdDev?: number;
|
|
94
|
+
color?: string;
|
|
95
|
+
fillOpacity?: number;
|
|
96
|
+
} | {
|
|
97
|
+
type: 'rsi';
|
|
98
|
+
period?: number;
|
|
99
|
+
color?: string;
|
|
100
|
+
overbought?: number;
|
|
101
|
+
oversold?: number;
|
|
102
|
+
} | {
|
|
103
|
+
type: 'volume';
|
|
104
|
+
upColor?: string;
|
|
105
|
+
downColor?: string;
|
|
106
|
+
};
|
|
107
|
+
/** Reported to consumers when the user moves the crosshair. */
|
|
108
|
+
export interface CrosshairInfo {
|
|
109
|
+
/** Index of the bar under the crosshair, or `null` if off-chart. */
|
|
110
|
+
barIndex: number | null;
|
|
111
|
+
/** Bar at `barIndex`, or `null` if off-chart. */
|
|
112
|
+
bar: Bar | null;
|
|
113
|
+
/** Y-axis value the crosshair sits at, in price units (main pane). */
|
|
114
|
+
priceAtCursor: number | null;
|
|
115
|
+
}
|
|
116
|
+
/** Returned by useful internal helpers; not part of the public API. */
|
|
117
|
+
export interface VisibleRange {
|
|
118
|
+
/** First bar index (fractional during smooth pan). */
|
|
119
|
+
from: number;
|
|
120
|
+
/** Last bar index. */
|
|
121
|
+
to: number;
|
|
122
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/** Configuration for a single data series in a chart. */
|
|
3
|
+
export interface SeriesConfig {
|
|
4
|
+
/** Visible label in the legend and tooltip. */
|
|
5
|
+
label: string;
|
|
6
|
+
/** CSS color value, e.g. `'var(--crk-chart-1)'` or `'#ff0'`. */
|
|
7
|
+
color: string;
|
|
8
|
+
/**
|
|
9
|
+
* Optional icon to render in the legend instead of the default color
|
|
10
|
+
* swatch. Use an inline SVG for best results; it inherits `color` from
|
|
11
|
+
* the series, so `stroke="currentColor"` / `fill="currentColor"` are
|
|
12
|
+
* recommended.
|
|
13
|
+
*/
|
|
14
|
+
icon?: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Keyed by data-field name. Each entry configures one rendered series.
|
|
18
|
+
* The keys here must match keys present on the rows in `data`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const config: ChartConfig = {
|
|
22
|
+
* revenue: { label: 'Revenue', color: 'var(--crk-chart-1)' },
|
|
23
|
+
* costs: { label: 'Costs', color: 'var(--crk-chart-2)' },
|
|
24
|
+
* };
|
|
25
|
+
*/
|
|
26
|
+
export type ChartConfig = Record<string, SeriesConfig>;
|
|
27
|
+
/** Override class names on internal elements of any chart. */
|
|
28
|
+
export interface ChartClasses {
|
|
29
|
+
root: string;
|
|
30
|
+
svg: string;
|
|
31
|
+
grid: string;
|
|
32
|
+
axis: string;
|
|
33
|
+
axisLabel: string;
|
|
34
|
+
series: string;
|
|
35
|
+
point: string;
|
|
36
|
+
legend: string;
|
|
37
|
+
legendItem: string;
|
|
38
|
+
tooltip: string;
|
|
39
|
+
}
|
|
40
|
+
/** Inner padding (in CSS pixels) between the SVG edge and the plot area. */
|
|
41
|
+
export interface ChartMargin {
|
|
42
|
+
top: number;
|
|
43
|
+
right: number;
|
|
44
|
+
bottom: number;
|
|
45
|
+
left: number;
|
|
46
|
+
}
|
|
47
|
+
/** Active hover state shared by all axis-based charts. */
|
|
48
|
+
export interface ActivePoint {
|
|
49
|
+
/** Index into the chart's `data` array. */
|
|
50
|
+
index: number;
|
|
51
|
+
/** Pixel coordinates (SVG-space) of the focal point. */
|
|
52
|
+
x: number;
|
|
53
|
+
y: number;
|
|
54
|
+
}
|
|
55
|
+
/** Render-prop signature for a custom tooltip body. */
|
|
56
|
+
export type TooltipRenderer<T> = (args: {
|
|
57
|
+
row: T;
|
|
58
|
+
index: number;
|
|
59
|
+
config: ChartConfig;
|
|
60
|
+
}) => ReactNode;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export interface ChartDimensions {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Tracks the rendered size of `ref` using `ResizeObserver`.
|
|
8
|
+
*
|
|
9
|
+
* `initial` is used until the observer reports the real size; pick something
|
|
10
|
+
* non-zero so SSR / first paint has plausible scales.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useChartDimensions(ref: RefObject<HTMLElement | null>, initial?: ChartDimensions): ChartDimensions;
|
package/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";:root{--crk-color-primary: #6366f1;--crk-color-primary-hover: #4f46e5;--crk-color-primary-active: #4338ca;--crk-color-primary-light: rgba(99, 102, 241, .08);--crk-color-primary-ring: rgba(99, 102, 241, .35);--crk-color-secondary: #64748b;--crk-color-secondary-hover: #475569;--crk-color-secondary-light: rgba(100, 116, 139, .08);--crk-color-danger: #ef4444;--crk-color-danger-hover: #dc2626;--crk-color-danger-light: rgba(239, 68, 68, .08);--crk-color-success: #10b981;--crk-color-success-light: rgba(16, 185, 129, .08);--crk-color-warning: #f59e0b;--crk-color-warning-light: rgba(245, 158, 11, .08);--crk-color-bg: #ffffff;--crk-color-bg-subtle: #f8fafc;--crk-color-bg-muted: #f1f5f9;--crk-color-text: #0f172a;--crk-color-text-secondary: #334155;--crk-color-text-muted: #94a3b8;--crk-color-border: #e2e8f0;--crk-color-border-hover: #cbd5e1;--crk-font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--crk-font-size-xs: .75rem;--crk-font-size-sm: .8125rem;--crk-font-size-md: .875rem;--crk-font-size-lg: 1rem;--crk-font-size-xl: 1.125rem;--crk-font-size-2xl: 1.375rem;--crk-font-size-3xl: 1.75rem;--crk-font-size-4xl: 2.25rem;--crk-font-size-5xl: 3rem;--crk-font-weight-normal: 400;--crk-font-weight-medium: 500;--crk-font-weight-semibold: 600;--crk-font-weight-bold: 700;--crk-line-height-tight: 1.2;--crk-line-height-normal: 1.5;--crk-line-height-relaxed: 1.7;--crk-letter-spacing-tight: -.025em;--crk-letter-spacing-normal: -.011em;--crk-control-line-height: 1.25rem;--crk-control-padding-y-sm: .375rem;--crk-control-padding-y-md: .5rem;--crk-control-padding-y-lg: .75rem;--crk-control-padding-x-sm: .9375rem;--crk-control-padding-x-md: 1.25rem;--crk-control-padding-x-lg: 1.5625rem;--crk-spacing-xs: .25rem;--crk-spacing-sm: .5rem;--crk-spacing-md: .75rem;--crk-spacing-lg: 1rem;--crk-spacing-xl: 1.5rem;--crk-spacing-2xl: 2rem;--crk-spacing-3xl: 3rem;--crk-border-radius-sm: .375rem;--crk-border-radius-md: .5rem;--crk-border-radius-lg: .75rem;--crk-border-radius-xl: 1rem;--crk-border-radius-full: 9999px;--crk-border-width: 1px;--crk-border-color: var(--crk-color-border);--crk-shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--crk-shadow-sm: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--crk-shadow-md: 0 4px 8px -2px rgba(0, 0, 0, .06), 0 2px 4px -2px rgba(0, 0, 0, .04);--crk-shadow-lg: 0 12px 24px -4px rgba(0, 0, 0, .08), 0 4px 8px -2px rgba(0, 0, 0, .03);--crk-shadow-xl: 0 20px 40px -8px rgba(0, 0, 0, .1), 0 8px 16px -4px rgba(0, 0, 0, .04);--crk-shadow-ring: 0 0 0 3px var(--crk-color-primary-ring);--crk-z-dropdown: 1000;--crk-z-popover: 1010;--crk-z-modal-backdrop: 1040;--crk-z-modal: 1050;--crk-transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--crk-transition-normal: .2s cubic-bezier(.4, 0, .2, 1);--crk-transition-smooth: .3s cubic-bezier(.4, 0, .2, 1);--crk-transition-spring: .4s cubic-bezier(.34, 1.56, .64, 1)}.crk-root-8RX49{--crk-btn-font-family: var(--crk-font-family);--crk-btn-font-weight: 500;--crk-btn-letter-spacing: var(--crk-letter-spacing-normal);--crk-btn-border-radius: var(--crk-border-radius-md);--crk-btn-gap: var(--crk-spacing-sm);--crk-btn-transition: var(--crk-transition-smooth);--crk-btn-disabled-opacity: .5;--crk-btn-dot-size: .25em;--crk-btn-dot-gap: .2em;--crk-btn-dot-color: currentColor;--crk-btn-dot-bounce-height: -.25em;--crk-btn-dot-speed: 1.2s;--crk-btn-dot-content-shift: -.75em;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--crk-btn-gap);font-family:var(--crk-btn-font-family);font-weight:var(--crk-btn-font-weight);letter-spacing:var(--crk-btn-letter-spacing);border:none;border-radius:var(--crk-btn-border-radius);cursor:pointer;overflow:hidden;-webkit-user-select:none;user-select:none;transition:var(--crk-btn-transition);white-space:nowrap}.crk-root-8RX49:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-root-8RX49:disabled:not(.crk-loading-QfItr){opacity:var(--crk-btn-disabled-opacity);cursor:not-allowed}.crk-primary-st6yY{background-color:var(--crk-color-primary);color:#fff;box-shadow:var(--crk-shadow-sm)}.crk-primary-st6yY:hover:not(:disabled){background-color:var(--crk-color-primary-hover);box-shadow:var(--crk-shadow-md)}.crk-primary-st6yY:active:not(:disabled){background-color:var(--crk-color-primary-active);box-shadow:var(--crk-shadow-sm)}.crk-secondary-j-3rj{background-color:transparent;color:var(--crk-color-text-secondary);border:1.5px solid var(--crk-color-border);box-shadow:var(--crk-shadow-xs)}.crk-secondary-j-3rj:hover:not(:disabled){background-color:var(--crk-color-bg-subtle);border-color:var(--crk-color-border-hover)}.crk-secondary-j-3rj:active:not(:disabled){background-color:var(--crk-color-bg-muted)}.crk-danger-Hxs5n{background-color:var(--crk-color-danger);color:#fff;box-shadow:var(--crk-shadow-sm)}.crk-danger-Hxs5n:hover:not(:disabled){background-color:var(--crk-color-danger-hover);box-shadow:var(--crk-shadow-md)}.crk-danger-Hxs5n:active:not(:disabled){background-color:var(--crk-color-danger-active);box-shadow:var(--crk-shadow-sm)}.crk-ghost-kQ0A8{background-color:transparent;color:var(--crk-color-text-secondary)}.crk-ghost-kQ0A8:hover:not(:disabled){background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-ghost-kQ0A8:active:not(:disabled){background-color:#6366f126}.crk-sm-RXFPY{--crk-btn-font-size: var(--crk-font-size-sm);--crk-btn-line-height: var(--crk-control-line-height);--crk-btn-padding-y: var(--crk-control-padding-y-sm);--crk-btn-padding-x: var(--crk-control-padding-x-sm);--crk-btn-border-radius: var(--crk-border-radius-sm);font-size:var(--crk-btn-font-size);line-height:var(--crk-btn-line-height);padding:var(--crk-btn-padding-y) var(--crk-btn-padding-x);border-radius:var(--crk-btn-border-radius)}.crk-md-nDnOD{--crk-btn-font-size: var(--crk-font-size-md);--crk-btn-line-height: var(--crk-control-line-height);--crk-btn-padding-y: var(--crk-control-padding-y-md);--crk-btn-padding-x: var(--crk-control-padding-x-md);font-size:var(--crk-btn-font-size);line-height:var(--crk-btn-line-height);padding:var(--crk-btn-padding-y) var(--crk-btn-padding-x)}.crk-lg-qD-Qh{--crk-btn-font-size: var(--crk-font-size-lg);--crk-btn-line-height: var(--crk-control-line-height);--crk-btn-padding-y: var(--crk-control-padding-y-lg);--crk-btn-padding-x: var(--crk-control-padding-x-lg);--crk-btn-border-radius: var(--crk-border-radius-lg);font-size:var(--crk-btn-font-size);line-height:var(--crk-btn-line-height);padding:var(--crk-btn-padding-y) var(--crk-btn-padding-x);border-radius:var(--crk-btn-border-radius)}.crk-fullWidth-AHpSl{width:100%}.crk-loading-QfItr{cursor:wait}.crk-loading-QfItr.crk-primary-st6yY{background-color:#8b8fa8;box-shadow:none}.crk-loading-QfItr.crk-secondary-j-3rj{background-color:var(--crk-color-bg-muted);border-color:var(--crk-color-border);box-shadow:none}.crk-loading-QfItr.crk-danger-Hxs5n{background-color:#b0a0a0;box-shadow:none}.crk-loading-QfItr.crk-ghost-kQ0A8{background-color:var(--crk-color-bg-muted)}.crk-content-PpYVU{display:inline-flex;align-items:center;gap:var(--crk-spacing-sm)}.crk-shimmer-8iQSU{position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.18) 50%,transparent 65%);background-size:200% 100%;background-position:200% 0;opacity:0;pointer-events:none;transition:opacity .3s}.crk-loadingShimmer-BVvFw .crk-shimmer-8iQSU{opacity:1;animation:crk-shimmerSweep-uiZ01 1.4s ease-in-out infinite}@keyframes crk-shimmerSweep-uiZ01{0%{background-position:200% 0}to{background-position:-200% 0}}.crk-dots-U8wss{position:absolute;right:.5em;top:50%;transform:translateY(-50%);display:inline-flex;gap:var(--crk-btn-dot-gap);align-items:center;opacity:0;pointer-events:none;transition:opacity .3s}.crk-loadingDots-eKv64 .crk-content-PpYVU{transform:translate(var(--crk-btn-dot-content-shift));transition:transform .3s}.crk-loadingDots-eKv64 .crk-dots-U8wss{opacity:1}.crk-dot-Owuk1{display:block;width:var(--crk-btn-dot-size);height:var(--crk-btn-dot-size);border-radius:50%;background:var(--crk-btn-dot-color);opacity:.5;animation:crk-dotBounce-FwdcC var(--crk-btn-dot-speed) ease-in-out infinite}.crk-dot-Owuk1:nth-child(2){animation-delay:.2s}.crk-dot-Owuk1:nth-child(3){animation-delay:.4s}@keyframes crk-dotBounce-FwdcC{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(var(--crk-btn-dot-bounce-height))}}@property --crk-border-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}.crk-loadingBorder-9ULFw{overflow:visible}.crk-loadingBorder-9ULFw.crk-secondary-j-3rj{border-color:transparent}.crk-loadingBorder-9ULFw:before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:conic-gradient(from var(--crk-border-angle, 0deg),transparent 0%,currentColor 15%,transparent 30%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s}.crk-primary-st6yY.crk-loadingBorder-9ULFw:before,.crk-danger-Hxs5n.crk-loadingBorder-9ULFw:before{background:conic-gradient(from var(--crk-border-angle, 0deg),transparent 0%,rgba(255,255,255,.6) 15%,transparent 30%)}.crk-secondary-j-3rj.crk-loadingBorder-9ULFw:before,.crk-ghost-kQ0A8.crk-loadingBorder-9ULFw:before{background:conic-gradient(from var(--crk-border-angle, 0deg),transparent 0%,var(--crk-color-text-secondary) 15%,transparent 30%)}.crk-loadingBorder-9ULFw:before{opacity:1;animation:crk-borderSpin-EJ2gW 1.4s linear infinite}@keyframes crk-borderSpin-EJ2gW{to{--crk-border-angle: 360deg}}.crk-root-2j4Vp{--crk-link-font-family: var(--crk-font-family);--crk-link-font-weight: 500;--crk-link-border-radius: var(--crk-border-radius-sm);--crk-link-transition: var(--crk-transition-smooth);font-family:var(--crk-link-font-family);font-weight:var(--crk-link-font-weight);text-decoration:none;border-radius:var(--crk-link-border-radius);cursor:pointer;transition:color var(--crk-link-transition),background-color var(--crk-link-transition)}.crk-root-2j4Vp:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-default-3TBlr{color:var(--crk-color-primary)}.crk-default-3TBlr:hover{color:var(--crk-color-primary-hover);text-decoration:underline;text-underline-offset:2px}.crk-default-3TBlr:active{color:var(--crk-color-primary-active)}.crk-muted-vReNc{color:var(--crk-color-text-muted)}.crk-muted-vReNc:hover{color:var(--crk-color-text-secondary)}.crk-muted-vReNc:active{color:var(--crk-color-text)}.crk-danger-ugf9r{color:var(--crk-color-danger)}.crk-danger-ugf9r:hover{color:var(--crk-color-danger-hover)}.crk-danger-ugf9r:active{color:var(--crk-color-danger-active)}.crk-srOnly-LGQgs{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.crk-root-U-oiq{--crk-typo-font-family: var(--crk-font-family);--crk-typo-line-height: 1.5;--crk-typo-color: var(--crk-color-text);--crk-typo-letter-spacing: var(--crk-letter-spacing-normal);font-family:var(--crk-typo-font-family);line-height:var(--crk-typo-line-height);color:var(--crk-typo-color);margin:0;letter-spacing:var(--crk-typo-letter-spacing)}.crk-h1-Aivwz{font-size:var(--crk-font-size-5xl);font-weight:600;line-height:1.15;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h2-CV8Oo{font-size:var(--crk-font-size-4xl);font-weight:600;line-height:1.2;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h3-lrbrK{font-size:var(--crk-font-size-3xl);font-weight:600;line-height:1.25;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h4--jkC1{font-size:var(--crk-font-size-2xl);font-weight:500;line-height:1.3;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h5-GnQvD{font-size:var(--crk-font-size-xl);font-weight:500;line-height:1.35;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h6-MKlIN{font-size:var(--crk-font-size-lg);font-weight:500;line-height:1.4;letter-spacing:var(--crk-letter-spacing-tight)}.crk-p-FzRtm{font-size:var(--crk-font-size-md);line-height:1.7;color:var(--crk-color-text-secondary)}.crk-span-NZvLx{font-size:inherit}.crk-label-Cwi6a{font-size:var(--crk-font-size-sm);font-weight:500;color:var(--crk-color-text-secondary);letter-spacing:.01em}.crk-normal-7AeZz{font-weight:400}.crk-medium-36OXr{font-weight:500}.crk-semibold-oQixc{font-weight:600}.crk-bold-bk4b4{font-weight:700}.crk-default-79lKR{color:var(--crk-color-text)}.crk-muted-itOSW{color:var(--crk-color-text-muted)}.crk-primary-rp36t{color:var(--crk-color-primary)}.crk-danger-SyOy-{color:var(--crk-color-danger)}.crk-success-w8PpD{color:var(--crk-color-success)}.crk-align-left-3AGYw{text-align:left}.crk-align-center-h-x--{text-align:center}.crk-align-right-IXFhK{text-align:right}.crk-truncate-eqr85{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-root-PVrgx{font-family:var(--crk-font-family);list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.crk-unordered-FhCWT .crk-item-TfW82:before{content:"";display:inline-block;width:6px;height:6px;background-color:var(--crk-color-primary);opacity:.4;border-radius:50%;flex-shrink:0;position:relative;top:-1px}.crk-ordered-8x4YC{counter-reset:list-counter}.crk-ordered-8x4YC .crk-item-TfW82{counter-increment:list-counter}.crk-ordered-8x4YC .crk-item-TfW82:before{content:counter(list-counter) ".";color:var(--crk-color-text-muted);font-size:var(--crk-font-size-sm);font-weight:500;min-width:1.5em;flex-shrink:0}.crk-none-f03Kx .crk-item-TfW82:before{display:none}.crk-sm-Rg4Mv{gap:var(--crk-spacing-xs)}.crk-md-X4Icb{gap:var(--crk-spacing-sm)}.crk-lg-JjNKZ{gap:var(--crk-spacing-md)}.crk-item-TfW82{font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);display:flex;align-items:baseline;gap:var(--crk-spacing-sm);line-height:1.7}.crk-wrapper-zxjMt{display:flex;flex-direction:column}.crk-root-Gf85-{--crk-table-font-size: var(--crk-font-size-md);--crk-table-border-color: var(--crk-border-color);--crk-table-border-radius: var(--crk-border-radius-lg);--crk-table-header-bg: var(--crk-color-bg-subtle);--crk-table-header-color: var(--crk-color-text-muted);--crk-table-cell-padding: 12px 16px;--crk-table-header-padding: 10px 16px;width:100%;border-collapse:separate;border-spacing:0;font-family:inherit;font-size:var(--crk-table-font-size);border:1px solid var(--crk-table-border-color);border-radius:var(--crk-table-border-radius);overflow:hidden}.crk-headerCell-ePPZW{position:relative;padding:var(--crk-table-header-padding);text-align:left;font-size:var(--crk-font-size-sm);font-weight:600;color:var(--crk-table-header-color);text-transform:uppercase;letter-spacing:.04em;background-color:var(--crk-table-header-bg);border-bottom:1px solid var(--crk-table-border-color);white-space:nowrap}.crk-headerCellSortable-NMybk{cursor:pointer;-webkit-user-select:none;user-select:none;padding-right:28px;transition:background-color var(--crk-transition-fast)}.crk-headerCellSortable-NMybk:hover{background-color:var(--crk-color-bg-muted)}.crk-sortIndicator-WGD2S{position:absolute;right:10px;top:50%;translate:0 -50%;display:inline-flex;flex-direction:column;font-size:8px;line-height:1;gap:1px}.crk-sortArrow-1-ok4{color:var(--crk-color-text-muted);opacity:.3;transition:opacity var(--crk-transition-fast),color var(--crk-transition-fast)}.crk-sortArrowActive-yhWrO{opacity:1;color:var(--crk-color-primary)}.crk-sortIndex-HGoca{position:absolute;top:-2px;right:-10px;font-size:7px;font-weight:700;color:var(--crk-color-primary);line-height:1}.crk-row-H0wL1{transition:background-color var(--crk-transition-fast)}.crk-row-H0wL1:not(:last-child) .crk-cell-ZfnbG{border-bottom:1px solid var(--crk-table-border-color)}.crk-cell-ZfnbG{padding:var(--crk-table-cell-padding);color:var(--crk-color-text-secondary);vertical-align:middle}.crk-emptyRow-AoPfj .crk-emptyCell-99-7C{padding:var(--crk-spacing-3xl);text-align:center;color:var(--crk-color-text-muted);font-size:var(--crk-font-size-md)}.crk-striped-6Qckq .crk-row-H0wL1:nth-child(2n){background-color:var(--crk-color-bg-subtle)}.crk-hoverable-ljU9B .crk-row-H0wL1:hover{background-color:var(--crk-color-primary-light)}.crk-compact-2-UWr .crk-headerCell-ePPZW{padding:6px 12px}.crk-compact-2-UWr .crk-headerCell-ePPZW.crk-headerCellSortable-NMybk{padding-right:24px}.crk-compact-2-UWr .crk-cell-ZfnbG{padding:8px 12px;font-size:var(--crk-font-size-sm)}.crk-paginator-UlYIY{display:flex;align-items:center;justify-content:space-between;padding:var(--crk-spacing-md) 0;font-size:var(--crk-font-size-sm);color:var(--crk-color-text-muted);gap:var(--crk-spacing-md)}.crk-paginatorInfo-BVca4{display:flex;align-items:center;gap:var(--crk-spacing-md)}.crk-paginatorText-sqWS0{white-space:nowrap}.crk-pageSizeSelect-yhqJQ{appearance:none;font-family:var(--crk-font-family);font-size:var(--crk-font-size-sm);color:var(--crk-color-text-secondary);background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-sm);padding:4px 24px 4px 8px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath fill='%2394a3b8' d='M0 0l4 5 4-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.crk-pageSizeSelect-yhqJQ:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-paginatorNav-MDSui{display:flex;align-items:center;gap:2px}.crk-pageButton-1PX-g{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;padding:0 6px;font-family:var(--crk-font-family);font-size:var(--crk-font-size-sm);color:var(--crk-color-text-secondary);border-radius:var(--crk-border-radius-sm);transition:all var(--crk-transition-fast)}.crk-pageButton-1PX-g:hover:not(:disabled){background-color:var(--crk-color-bg-muted)}.crk-pageButton-1PX-g:disabled{opacity:.3;cursor:not-allowed}.crk-pageButton-1PX-g:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-pageButtonActive--D7Q7{background-color:var(--crk-color-primary);color:#fff;font-weight:600}.crk-pageButtonActive--D7Q7:hover:not(:disabled){background-color:var(--crk-color-primary-hover)}.crk-pageEllipsis-en59J{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;color:var(--crk-color-text-muted)}@keyframes crk-menuEnter-F0Yyt{0%{opacity:0;transform:translateY(-8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.crk-root-an8Cf{position:relative;display:inline-block}.crk-fullWidth-S-uVk{display:block;width:100%}.crk-trigger-LwPaD{all:unset;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-trigger-LwPaD::placeholder{color:var(--crk-color-text-muted)}.crk-trigger-LwPaD:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-trigger-LwPaD:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-trigger-LwPaD:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-trigger-LwPaD{cursor:pointer;display:inline-flex;align-items:center;width:100%;text-align:left;font-size:var(--crk-font-size-md);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-md) 2.5em var(--crk-control-padding-y-md) .85em;position:relative}.crk-trigger-LwPaD.crk-fullWidth-S-uVk{width:100%}.crk-trigger-LwPaD:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-triggerOpen-U4pa9{border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-triggerLabel-QLITs{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-triggerError-3jlu1{border-color:var(--crk-color-danger)}.crk-triggerError-3jlu1:focus-visible{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-placeholder-fWdch{color:var(--crk-color-text-muted);font-weight:400}.crk-chevron-jmDNe{position:absolute;right:.75em;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--crk-color-text-muted);display:flex;width:0;height:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.35em solid currentColor;transition:transform var(--crk-transition-fast)}.crk-triggerOpen-U4pa9 .crk-chevron-jmDNe{transform:translateY(-50%) rotate(180deg)}.crk-menu-fxnKL{background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-lg);box-shadow:var(--crk-shadow-lg);box-sizing:border-box;position:absolute;top:calc(100% + 4px);min-width:180px;padding:4px;display:none;flex-direction:column}.crk-menu-fxnKL.crk-fullWidth-S-uVk{width:100%;left:0;right:0}.crk-menu-fxnKL{z-index:var(--crk-z-dropdown);opacity:0;transform:translateY(-8px) scale(.95);animation:none}.crk-menuOpen-HF-Y1{display:flex;animation:crk-menuEnter-F0Yyt .2s cubic-bezier(.34,1.56,.64,1) forwards}.crk-alignLeft-buCDJ{left:0}.crk-alignRight-05P9w{right:0}.crk-item-f-Rhh{all:unset;cursor:pointer;display:flex;align-items:center;padding:8px 12px;font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);border-radius:var(--crk-border-radius-sm);transition:all var(--crk-transition-fast);gap:var(--crk-spacing-sm)}.crk-item-f-Rhh:hover{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-item-f-Rhh:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-item-f-Rhh:active{background-color:#6366f126}.crk-itemDisabled-L-d6i{opacity:.4;cursor:not-allowed;pointer-events:none}.crk-itemSelected-Fwmuo{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary);font-weight:500}@keyframes crk-popoverFade-hj41M{0%{opacity:0}to{opacity:1}}.crk-root-8H-L9{position:relative;display:inline-block}.crk-trigger-Zn1nQ{all:unset;cursor:pointer;display:inline-flex}.crk-trigger-Zn1nQ:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring);border-radius:var(--crk-border-radius-md)}.crk-popover-rvS3X{--crk-popover-padding: var(--crk-spacing-lg);--crk-popover-min-width: 200px;--crk-popover-border-radius: var(--crk-border-radius-lg);--crk-popover-shadow: var(--crk-shadow-lg);--crk-popover-animation: crk-popoverFade-hj41M .15s ease-out;background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-lg);box-shadow:var(--crk-shadow-lg);position:absolute;padding:var(--crk-popover-padding);z-index:var(--crk-z-popover);animation:var(--crk-popover-animation);min-width:var(--crk-popover-min-width);border-radius:var(--crk-popover-border-radius);box-shadow:var(--crk-popover-shadow)}.crk-bottom-lawQw{top:calc(100% + 8px);left:50%;translate:-50% 0}.crk-top-rqvC6{bottom:calc(100% + 8px);left:50%;translate:-50% 0}.crk-left-J6exv{right:calc(100% + 8px);top:50%;translate:0 -50%}.crk-right-3y20l{left:calc(100% + 8px);top:50%;translate:0 -50%}@keyframes crk-backdropIn-x5Z-A{0%{opacity:0;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}to{opacity:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}@keyframes crk-modalIn-xFUwm{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.crk-backdrop-jYpTA{--crk-modal-backdrop-bg: rgba(15, 23, 42, .4);--crk-modal-backdrop-blur: 4px;position:fixed;inset:0;background-color:var(--crk-modal-backdrop-bg);-webkit-backdrop-filter:blur(var(--crk-modal-backdrop-blur));backdrop-filter:blur(var(--crk-modal-backdrop-blur));display:flex;align-items:center;justify-content:center;z-index:var(--crk-z-modal-backdrop);animation:crk-backdropIn-x5Z-A .25s ease forwards;padding:var(--crk-spacing-xl)}.crk-modal-yNG-7{--crk-modal-bg: #fff;--crk-modal-border-radius: var(--crk-border-radius-xl);--crk-modal-shadow: var(--crk-shadow-xl);--crk-modal-padding: var(--crk-spacing-xl);background-color:var(--crk-modal-bg);border-radius:var(--crk-modal-border-radius);box-shadow:var(--crk-modal-shadow);display:flex;flex-direction:column;max-height:calc(100vh - 3rem);width:100%;z-index:var(--crk-z-modal);animation:crk-modalIn-xFUwm .3s cubic-bezier(.34,1.56,.64,1);overflow:hidden}.crk-sm--xyY9{max-width:400px}.crk-md-ETTfh{max-width:560px}.crk-lg-5DBb7{max-width:720px}.crk-fullscreen-b4jQ-{max-width:100vw;max-height:100vh;border-radius:0}.crk-header-NS30G{display:flex;align-items:center;padding:var(--crk-modal-padding) var(--crk-modal-padding) var(--crk-spacing-lg);font-size:var(--crk-font-size-xl);font-weight:600;letter-spacing:-.01em;color:var(--crk-color-text);flex-shrink:0}.crk-headerWithClose-4davm{justify-content:space-between}.crk-closeButton-JX-aq{all:unset;cursor:pointer;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--crk-border-radius-md);color:var(--crk-color-text-muted);transition:all var(--crk-transition-fast)}.crk-closeButton-JX-aq:hover{background-color:var(--crk-color-bg-muted);color:var(--crk-color-text)}.crk-closeButton-JX-aq:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-body-3zIj9{padding:0 var(--crk-modal-padding) var(--crk-modal-padding);flex:1 1 auto;overflow-y:auto;font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);line-height:1.625}.crk-footer-Oyz-R{display:flex;align-items:center;justify-content:flex-end;gap:var(--crk-spacing-sm);padding:var(--crk-spacing-lg) var(--crk-modal-padding);border-top:1px solid var(--crk-color-border);flex-shrink:0}.crk-root-jHIIP{display:flex;flex-direction:column;gap:var(--crk-spacing-xl)}.crk-formErrors-eh-OP{display:flex;flex-direction:column;gap:0;padding:.75em 1em;background:var(--crk-color-danger-light);border:1px solid var(--crk-color-danger);border-radius:var(--crk-border-radius-md);list-style:none;margin:0}.crk-formError-XEuWv{font-size:var(--crk-font-size-sm);color:var(--crk-color-danger);display:flex;align-items:baseline;gap:.5em;padding:.25em 0}.crk-formError-XEuWv:before{content:"•";flex-shrink:0;font-size:1.1em;line-height:1}.crk-field-OUlYz{display:flex;flex-direction:column;gap:6px}.crk-label-udkR7{font-size:var(--crk-font-size-sm);font-weight:500;color:var(--crk-color-text);letter-spacing:normal;cursor:pointer}.crk-labelError-LOgKi{color:var(--crk-color-danger)}.crk-required-IYiA2{color:var(--crk-color-danger);margin-left:2px}.crk-error-yFZXm{font-size:var(--crk-font-size-xs);color:var(--crk-color-danger);display:flex;align-items:center;gap:4px;margin-top:2px}.crk-helperText-Dm-rb{font-size:var(--crk-font-size-xs);color:var(--crk-color-text-muted);margin-top:2px}.crk-row-nNbx-{display:flex;gap:var(--crk-spacing-lg)}.crk-row-nNbx->*{flex:1;min-width:0}.crk-root-rSgdy{--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-root-rSgdy::placeholder{color:var(--crk-color-text-muted)}.crk-root-rSgdy:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-root-rSgdy:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-root-rSgdy:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-root-rSgdy{width:100%;display:block}.crk-wrapper-GHy8V{display:flex;align-items:center;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-wrapper-GHy8V::placeholder{color:var(--crk-color-text-muted)}.crk-wrapper-GHy8V:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-wrapper-GHy8V:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-wrapper-GHy8V:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-wrapper-GHy8V{overflow:hidden}.crk-wrapper-GHy8V .crk-root-rSgdy{border:none;box-shadow:none;outline:none;flex:1;min-width:0;font:inherit;color:inherit;padding:0;background:transparent}.crk-wrapper-GHy8V .crk-root-rSgdy:focus{box-shadow:none}.crk-wrapper-GHy8V .crk-root-rSgdy:disabled{opacity:1}.crk-sm-DptM5{font-size:var(--crk-font-size-sm);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-sm) 10px}.crk-md-F4B0G{font-size:var(--crk-font-size-md);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-md) 12px}.crk-lg-pBxwX{font-size:var(--crk-font-size-lg);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-lg) 16px}.crk-error-fucxe{border-color:var(--crk-color-danger)}.crk-error-fucxe:focus{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-prefix-w53Md,.crk-suffix-fcNgR{display:flex;align-items:center;color:var(--crk-color-text-muted);font-size:var(--crk-font-size-sm);flex-shrink:0;-webkit-user-select:none;user-select:none}.crk-prefix-w53Md{padding-left:12px}.crk-suffix-fcNgR{padding-right:12px}.crk-hasPrefix--bqPD .crk-root-rSgdy{padding-left:var(--crk-spacing-xs)}.crk-hasSuffix-zO0nX .crk-root-rSgdy{padding-right:var(--crk-spacing-xs)}@keyframes crk-menuEnter-vJjLV{0%{opacity:0;transform:translateY(-.5em) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.crk-wrapper-SP2JE{position:relative;display:inline-flex;width:100%;font-size:var(--crk-font-size-md)}.crk-wrapper-SP2JE.crk-sm-DqshL{font-size:var(--crk-font-size-sm)}.crk-wrapper-SP2JE.crk-md-j4AKI{font-size:var(--crk-font-size-md)}.crk-wrapper-SP2JE.crk-lg-24Xd3{font-size:var(--crk-font-size-lg)}.crk-root-Uu9Ah{--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-root-Uu9Ah::placeholder{color:var(--crk-color-text-muted)}.crk-root-Uu9Ah:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-root-Uu9Ah:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-root-Uu9Ah:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-root-Uu9Ah{width:100%;appearance:none;cursor:pointer;font-size:inherit;padding-right:2.5em}.crk-sm-DqshL.crk-root-Uu9Ah{line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-sm) 2.5em var(--crk-control-padding-y-sm) .7em}.crk-md-j4AKI.crk-root-Uu9Ah{line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-md) 2.5em var(--crk-control-padding-y-md) .85em}.crk-lg-24Xd3.crk-root-Uu9Ah{line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-lg) 2.5em var(--crk-control-padding-y-lg) 1em}.crk-error-9oRU6{border-color:var(--crk-color-danger)}.crk-error-9oRU6:focus{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-arrow-WU8ZW{position:absolute;right:.75em;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--crk-color-text-muted);display:flex;width:0;height:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.35em solid currentColor}.crk-searchableWrapper-7AL4l{display:block}.crk-hiddenSelect-s3DEx{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.crk-searchableTrigger-m-GWV{all:unset;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-searchableTrigger-m-GWV::placeholder{color:var(--crk-color-text-muted)}.crk-searchableTrigger-m-GWV:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-searchableTrigger-m-GWV:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-searchableTrigger-m-GWV{width:100%;cursor:pointer;font-size:inherit;display:flex;align-items:center;text-align:left;padding-right:2.5em;position:relative}.crk-searchableTrigger-m-GWV:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-triggerOpen-Lo8-j{border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-triggerLabel-5rETZ{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-placeholder-teBBh{color:var(--crk-color-text-muted)}.crk-arrowInline-m-roG{position:static;transform:none;flex-shrink:0;margin-left:auto;transition:transform var(--crk-transition-fast)}.crk-triggerOpen-Lo8-j .crk-arrowInline-m-roG{transform:rotate(180deg)}.crk-disabled-pcSeq{pointer-events:none}.crk-visuallyHidden-2tTD5{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.crk-menu--i-je{background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-lg);box-shadow:var(--crk-shadow-lg);box-sizing:border-box;position:absolute;top:calc(100% + .25em);left:0;right:0;z-index:var(--crk-z-dropdown);display:flex;flex-direction:column;padding:.25em;animation:crk-menuEnter-vJjLV .2s cubic-bezier(.34,1.56,.64,1) forwards}.crk-menuItems-VrZnE{max-height:15em;overflow-y:auto;display:flex;flex-direction:column}.crk-item-fU3XI{all:unset;cursor:pointer;display:flex;align-items:center;padding:.5em .75em;font-size:inherit;color:var(--crk-color-text-secondary);border-radius:var(--crk-border-radius-sm);transition:all var(--crk-transition-fast)}.crk-item-fU3XI:hover{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-item-fU3XI:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-itemHighlighted-MvR41{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-itemDisabled-KTUO8{opacity:.4;cursor:not-allowed;pointer-events:none}.crk-itemSelected-42-BG{background-color:var(--crk-color-bg-muted);color:var(--crk-color-text);font-weight:500}.crk-itemSelected-42-BG.crk-itemHighlighted-MvR41{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-noResults-uicSW{padding:.5em .75em;color:var(--crk-color-text-muted);font-size:inherit}.crk-multiTrigger-Pd3wJ{--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-multiTrigger-Pd3wJ::placeholder{color:var(--crk-color-text-muted)}.crk-multiTrigger-Pd3wJ:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-multiTrigger-Pd3wJ:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-multiTrigger-Pd3wJ:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-multiTrigger-Pd3wJ{box-sizing:border-box;width:100%;cursor:text;font-size:inherit;display:flex;flex-wrap:wrap;align-items:center;gap:.3em;min-height:2.5em}.crk-multiTrigger-Pd3wJ.crk-sm-DqshL{padding:var(--crk-control-padding-y-sm) 2.5em var(--crk-control-padding-y-sm) .7em}.crk-multiTrigger-Pd3wJ.crk-md-j4AKI{padding:var(--crk-control-padding-y-md) 2.5em var(--crk-control-padding-y-md) .85em}.crk-multiTrigger-Pd3wJ.crk-lg-24Xd3{padding:var(--crk-control-padding-y-lg) 2.5em var(--crk-control-padding-y-lg) 1em}.crk-multiTrigger-Pd3wJ{position:relative}.crk-multiTrigger-Pd3wJ:focus-within{border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-multiTriggerDisabled-9ajge{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-chip-TuYUB{display:inline-flex;align-items:center;gap:.25em;padding:.1em .4em;background:var(--crk-color-bg-muted);border-radius:var(--crk-border-radius-sm);font-size:.85em;line-height:1.4;color:var(--crk-color-text);max-width:100%;cursor:default}.crk-chipLabel-H4JWu{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-chipRemove-Lfk0R{all:unset;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:1.1em;height:1.1em;border-radius:var(--crk-border-radius-sm);font-size:1em;line-height:1;color:var(--crk-color-text-muted);flex-shrink:0;transition:all var(--crk-transition-fast)}.crk-chipRemove-Lfk0R:hover{color:var(--crk-color-danger);background:var(--crk-color-danger-light)}.crk-multiSearch-OrVeS{all:unset;flex:1 1 3em;min-width:3em;font-size:inherit;line-height:1.4;color:var(--crk-color-text);cursor:text}.crk-multiSearch-OrVeS::placeholder{color:var(--crk-color-text-muted)}.crk-multiSearch-OrVeS:focus{outline:none}.crk-multiSearch-OrVeS:disabled{cursor:not-allowed}.crk-arrowMulti-Nh9Hr{position:absolute;right:.75em;top:50%;transform:translateY(-50%);transition:transform var(--crk-transition-fast)}.crk-triggerOpen-Lo8-j .crk-arrowMulti-Nh9Hr{transform:translateY(-50%) rotate(180deg)}.crk-itemCheck-DPB5A{display:inline-block;width:1em;height:1em;margin-right:.4em;flex-shrink:0}.crk-itemCheck-DPB5A:before{content:"✓";font-size:.85em;color:var(--crk-color-primary)}.crk-root-61cKD{display:inline-flex;align-items:center;gap:.4em;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--crk-font-size-md)}.crk-input-bAjPU{appearance:none;width:1.15em;height:1.15em;border:.1em solid var(--crk-border-color);border-radius:.2em;background:#fff;cursor:pointer;transition:all var(--crk-transition-fast);flex-shrink:0;position:relative;display:grid;place-content:center}.crk-input-bAjPU:after{content:"";display:block;width:.3em;height:.55em;border:solid transparent;border-width:0 .13em .13em 0;transform:rotate(45deg);margin-top:-.1em}.crk-input-bAjPU:checked{background-color:var(--crk-color-primary);border-color:var(--crk-color-primary)}.crk-input-bAjPU:checked:after{border-color:#fff}.crk-input-bAjPU:hover:not(:disabled){border-color:var(--crk-color-border-hover)}.crk-input-bAjPU:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-input-bAjPU:disabled{opacity:.5;cursor:not-allowed}.crk-label-W9IeS{color:var(--crk-color-text-secondary);line-height:1;cursor:pointer}.crk-indeterminate-mLarv .crk-input-bAjPU{background-color:var(--crk-color-primary);border-color:var(--crk-color-primary)}.crk-indeterminate-mLarv .crk-input-bAjPU:after{width:.55em;height:0;border:none;border-top:.13em solid white;border-radius:.05em;transform:none;margin-top:0}.crk-group-NNwCD{display:flex;flex-direction:column;gap:var(--crk-spacing-sm);outline:none}.crk-root-7fGik{display:inline-flex;align-items:center;gap:var(--crk-spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.crk-input-43PQW{appearance:none;width:18px;height:18px;border:1.5px solid var(--crk-border-color);border-radius:50%;background:#fff;cursor:pointer;transition:all var(--crk-transition-fast);flex-shrink:0;display:grid;place-content:center}.crk-input-43PQW:after{content:"";width:8px;height:8px;border-radius:50%;background-color:var(--crk-color-primary);transition:transform var(--crk-transition-spring);transform:scale(0)}.crk-input-43PQW:checked{border-color:var(--crk-color-primary)}.crk-input-43PQW:checked:after{transform:scale(1)}.crk-input-43PQW:hover:not(:disabled){border-color:var(--crk-color-border-hover)}.crk-input-43PQW:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-input-43PQW:disabled{opacity:.5;cursor:not-allowed}.crk-label-aW30x{font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);cursor:pointer}.crk-root-IGgdn{--crk-textarea-min-height: 80px;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-root-IGgdn::placeholder{color:var(--crk-color-text-muted)}.crk-root-IGgdn:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-root-IGgdn:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-root-IGgdn:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-root-IGgdn{width:100%;display:block;min-height:var(--crk-textarea-min-height)}.crk-sm-N-5I2{padding:8px 10px;font-size:var(--crk-font-size-sm)}.crk-md-bbyFl{padding:8px 12px;font-size:var(--crk-font-size-md)}.crk-lg-Pd-Iq{padding:10px 16px;font-size:var(--crk-font-size-lg)}.crk-error-fyu3i{border-color:var(--crk-color-danger)}.crk-error-fyu3i:focus{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-resizeNone-SmNT4{resize:none}.crk-resizeVertical-oi8vP{resize:vertical}.crk-resizeHorizontal-riMLL{resize:horizontal}.crk-resizeBoth-NYSh4{resize:both}.crk-autoExpand-JWone{resize:none;overflow-y:hidden}
|
|
1
|
+
@charset "UTF-8";:root{--crk-color-primary: #6366f1;--crk-color-primary-hover: #4f46e5;--crk-color-primary-active: #4338ca;--crk-color-primary-light: rgba(99, 102, 241, .08);--crk-color-primary-ring: rgba(99, 102, 241, .35);--crk-color-secondary: #64748b;--crk-color-secondary-hover: #475569;--crk-color-secondary-light: rgba(100, 116, 139, .08);--crk-color-danger: #ef4444;--crk-color-danger-hover: #dc2626;--crk-color-danger-active: #b91c1c;--crk-color-danger-light: rgba(239, 68, 68, .08);--crk-color-success: #10b981;--crk-color-success-light: rgba(16, 185, 129, .08);--crk-color-warning: #f59e0b;--crk-color-warning-light: rgba(245, 158, 11, .08);--crk-color-bg: #ffffff;--crk-color-bg-subtle: #f8fafc;--crk-color-bg-muted: #f1f5f9;--crk-color-text: #0f172a;--crk-color-text-secondary: #334155;--crk-color-text-muted: #94a3b8;--crk-color-border: #e2e8f0;--crk-color-border-hover: #cbd5e1;--crk-chart-1: #6366f1;--crk-chart-2: #10b981;--crk-chart-3: #f59e0b;--crk-chart-4: #ec4899;--crk-chart-5: #8b5cf6;--crk-chart-grid: var(--crk-color-border);--crk-chart-axis: var(--crk-color-text-muted);--crk-chart-label-inside: #ffffff;--crk-chart-tooltip-bg: var(--crk-color-text);--crk-chart-tooltip-text: var(--crk-color-bg);--crk-font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--crk-font-size-xs: .75rem;--crk-font-size-sm: .8125rem;--crk-font-size-md: .875rem;--crk-font-size-lg: 1rem;--crk-font-size-xl: 1.125rem;--crk-font-size-2xl: 1.375rem;--crk-font-size-3xl: 1.75rem;--crk-font-size-4xl: 2.25rem;--crk-font-size-5xl: 3rem;--crk-font-weight-normal: 400;--crk-font-weight-medium: 500;--crk-font-weight-semibold: 600;--crk-font-weight-bold: 700;--crk-line-height-tight: 1.2;--crk-line-height-normal: 1.5;--crk-line-height-relaxed: 1.7;--crk-letter-spacing-tight: -.025em;--crk-letter-spacing-normal: -.011em;--crk-control-line-height: 1.25rem;--crk-control-padding-y-sm: .375rem;--crk-control-padding-y-md: .5rem;--crk-control-padding-y-lg: .75rem;--crk-control-padding-x-sm: .9375rem;--crk-control-padding-x-md: 1.25rem;--crk-control-padding-x-lg: 1.5625rem;--crk-spacing-xs: .25rem;--crk-spacing-sm: .5rem;--crk-spacing-md: .75rem;--crk-spacing-lg: 1rem;--crk-spacing-xl: 1.5rem;--crk-spacing-2xl: 2rem;--crk-spacing-3xl: 3rem;--crk-border-radius-sm: .375rem;--crk-border-radius-md: .5rem;--crk-border-radius-lg: .75rem;--crk-border-radius-xl: 1rem;--crk-border-radius-full: 9999px;--crk-border-width: 1px;--crk-border-color: var(--crk-color-border);--crk-shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--crk-shadow-sm: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--crk-shadow-md: 0 4px 8px -2px rgba(0, 0, 0, .06), 0 2px 4px -2px rgba(0, 0, 0, .04);--crk-shadow-lg: 0 12px 24px -4px rgba(0, 0, 0, .08), 0 4px 8px -2px rgba(0, 0, 0, .03);--crk-shadow-xl: 0 20px 40px -8px rgba(0, 0, 0, .1), 0 8px 16px -4px rgba(0, 0, 0, .04);--crk-shadow-ring: 0 0 0 3px var(--crk-color-primary-ring);--crk-z-dropdown: 1000;--crk-z-popover: 1010;--crk-z-modal-backdrop: 1040;--crk-z-modal: 1050;--crk-transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--crk-transition-normal: .2s cubic-bezier(.4, 0, .2, 1);--crk-transition-smooth: .3s cubic-bezier(.4, 0, .2, 1);--crk-transition-spring: .4s cubic-bezier(.34, 1.56, .64, 1)}.crk-root-8RX49{--crk-btn-font-family: var(--crk-font-family);--crk-btn-font-weight: 500;--crk-btn-letter-spacing: var(--crk-letter-spacing-normal);--crk-btn-border-radius: var(--crk-border-radius-md);--crk-btn-gap: var(--crk-spacing-sm);--crk-btn-transition: var(--crk-transition-smooth);--crk-btn-disabled-opacity: .5;--crk-btn-dot-size: .25em;--crk-btn-dot-gap: .2em;--crk-btn-dot-color: currentColor;--crk-btn-dot-bounce-height: -.25em;--crk-btn-dot-speed: 1.2s;--crk-btn-dot-content-shift: -.75em;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--crk-btn-gap);font-family:var(--crk-btn-font-family);font-weight:var(--crk-btn-font-weight);letter-spacing:var(--crk-btn-letter-spacing);border:none;border-radius:var(--crk-btn-border-radius);cursor:pointer;overflow:hidden;-webkit-user-select:none;user-select:none;transition:var(--crk-btn-transition);white-space:nowrap}.crk-root-8RX49:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-root-8RX49:disabled:not(.crk-loading-QfItr){opacity:var(--crk-btn-disabled-opacity);cursor:not-allowed}.crk-primary-st6yY{background-color:var(--crk-color-primary);color:#fff;box-shadow:var(--crk-shadow-sm)}.crk-primary-st6yY:hover:not(:disabled){background-color:var(--crk-color-primary-hover);box-shadow:var(--crk-shadow-md)}.crk-primary-st6yY:active:not(:disabled){background-color:var(--crk-color-primary-active);box-shadow:var(--crk-shadow-sm)}.crk-secondary-j-3rj{background-color:transparent;color:var(--crk-color-text-secondary);outline:1.5px solid var(--crk-color-border);outline-offset:-1.5px;box-shadow:var(--crk-shadow-xs)}.crk-secondary-j-3rj:hover:not(:disabled){background-color:var(--crk-color-bg-subtle);outline-color:var(--crk-color-border-hover)}.crk-secondary-j-3rj:active:not(:disabled){background-color:var(--crk-color-bg-muted)}.crk-danger-Hxs5n{background-color:var(--crk-color-danger);color:#fff;box-shadow:var(--crk-shadow-sm)}.crk-danger-Hxs5n:hover:not(:disabled){background-color:var(--crk-color-danger-hover);box-shadow:var(--crk-shadow-md)}.crk-danger-Hxs5n:active:not(:disabled){background-color:var(--crk-color-danger-active);box-shadow:var(--crk-shadow-sm)}.crk-ghost-kQ0A8{background-color:transparent;color:var(--crk-color-text-secondary)}.crk-ghost-kQ0A8:hover:not(:disabled){background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-ghost-kQ0A8:active:not(:disabled){background-color:#6366f126}.crk-sm-RXFPY{--crk-btn-font-size: var(--crk-font-size-sm);--crk-btn-line-height: var(--crk-control-line-height);--crk-btn-padding-y: var(--crk-control-padding-y-sm);--crk-btn-padding-x: var(--crk-control-padding-x-sm);--crk-btn-border-radius: var(--crk-border-radius-sm);font-size:var(--crk-btn-font-size);line-height:var(--crk-btn-line-height);padding:var(--crk-btn-padding-y) var(--crk-btn-padding-x);border-radius:var(--crk-btn-border-radius)}.crk-md-nDnOD{--crk-btn-font-size: var(--crk-font-size-md);--crk-btn-line-height: var(--crk-control-line-height);--crk-btn-padding-y: var(--crk-control-padding-y-md);--crk-btn-padding-x: var(--crk-control-padding-x-md);font-size:var(--crk-btn-font-size);line-height:var(--crk-btn-line-height);padding:var(--crk-btn-padding-y) var(--crk-btn-padding-x)}.crk-lg-qD-Qh{--crk-btn-font-size: var(--crk-font-size-lg);--crk-btn-line-height: var(--crk-control-line-height);--crk-btn-padding-y: var(--crk-control-padding-y-lg);--crk-btn-padding-x: var(--crk-control-padding-x-lg);--crk-btn-border-radius: var(--crk-border-radius-lg);font-size:var(--crk-btn-font-size);line-height:var(--crk-btn-line-height);padding:var(--crk-btn-padding-y) var(--crk-btn-padding-x);border-radius:var(--crk-btn-border-radius)}.crk-fullWidth-AHpSl{width:100%}.crk-iconOnly-FNrSu{width:calc(var(--crk-btn-line-height) + 2 * var(--crk-btn-padding-y));aspect-ratio:1;padding:0;font-size:calc(var(--crk-btn-font-size) * 1.25);font-weight:700;line-height:1;flex-shrink:0}.crk-iconOnly-FNrSu svg{width:1em;height:1em;display:block}.crk-loading-QfItr{cursor:wait}.crk-loading-QfItr.crk-primary-st6yY{background-color:#8b8fa8;box-shadow:none}.crk-loading-QfItr.crk-secondary-j-3rj{background-color:var(--crk-color-bg-muted);border-color:var(--crk-color-border);box-shadow:none}.crk-loading-QfItr.crk-danger-Hxs5n{background-color:#b0a0a0;box-shadow:none}.crk-loading-QfItr.crk-ghost-kQ0A8{background-color:var(--crk-color-bg-muted)}.crk-content-PpYVU{display:inline-flex;align-items:center;gap:var(--crk-spacing-sm)}.crk-shimmer-8iQSU{position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.18) 50%,transparent 65%);background-size:200% 100%;background-position:200% 0;opacity:0;pointer-events:none;transition:opacity .3s}.crk-loadingShimmer-BVvFw .crk-shimmer-8iQSU{opacity:1;animation:crk-shimmerSweep-uiZ01 1.4s ease-in-out infinite}@keyframes crk-shimmerSweep-uiZ01{0%{background-position:200% 0}to{background-position:-200% 0}}.crk-dots-U8wss{position:absolute;right:.5em;top:50%;transform:translateY(-50%);display:inline-flex;gap:var(--crk-btn-dot-gap);align-items:center;opacity:0;pointer-events:none;transition:opacity .3s}.crk-loadingDots-eKv64 .crk-content-PpYVU{transform:translate(var(--crk-btn-dot-content-shift));transition:transform .3s}.crk-loadingDots-eKv64 .crk-dots-U8wss{opacity:1}.crk-dot-Owuk1{display:block;width:var(--crk-btn-dot-size);height:var(--crk-btn-dot-size);border-radius:50%;background:var(--crk-btn-dot-color);opacity:.5;animation:crk-dotBounce-FwdcC var(--crk-btn-dot-speed) ease-in-out infinite}.crk-dot-Owuk1:nth-child(2){animation-delay:.2s}.crk-dot-Owuk1:nth-child(3){animation-delay:.4s}@keyframes crk-dotBounce-FwdcC{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(var(--crk-btn-dot-bounce-height))}}@property --crk-border-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}.crk-loadingBorder-9ULFw{overflow:visible}.crk-loadingBorder-9ULFw.crk-secondary-j-3rj{outline-color:transparent}.crk-loadingBorder-9ULFw:before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:conic-gradient(from var(--crk-border-angle, 0deg),transparent 0%,currentColor 15%,transparent 30%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s}.crk-primary-st6yY.crk-loadingBorder-9ULFw:before,.crk-danger-Hxs5n.crk-loadingBorder-9ULFw:before{background:conic-gradient(from var(--crk-border-angle, 0deg),transparent 0%,rgba(255,255,255,.6) 15%,transparent 30%)}.crk-secondary-j-3rj.crk-loadingBorder-9ULFw:before,.crk-ghost-kQ0A8.crk-loadingBorder-9ULFw:before{background:conic-gradient(from var(--crk-border-angle, 0deg),transparent 0%,var(--crk-color-text-secondary) 15%,transparent 30%)}.crk-loadingBorder-9ULFw:before{opacity:1;animation:crk-borderSpin-EJ2gW 1.4s linear infinite}@keyframes crk-borderSpin-EJ2gW{to{--crk-border-angle: 360deg}}.crk-root-2j4Vp{--crk-link-font-family: var(--crk-font-family);--crk-link-font-weight: 500;--crk-link-border-radius: var(--crk-border-radius-sm);--crk-link-transition: var(--crk-transition-smooth);font-family:var(--crk-link-font-family);font-weight:var(--crk-link-font-weight);text-decoration:none;border-radius:var(--crk-link-border-radius);cursor:pointer;transition:color var(--crk-link-transition),background-color var(--crk-link-transition)}.crk-root-2j4Vp:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-default-3TBlr{color:var(--crk-color-primary)}.crk-default-3TBlr:hover{color:var(--crk-color-primary-hover);text-decoration:underline;text-underline-offset:2px}.crk-default-3TBlr:active{color:var(--crk-color-primary-active)}.crk-muted-vReNc{color:var(--crk-color-text-muted)}.crk-muted-vReNc:hover{color:var(--crk-color-text-secondary)}.crk-muted-vReNc:active{color:var(--crk-color-text)}.crk-danger-ugf9r{color:var(--crk-color-danger)}.crk-danger-ugf9r:hover{color:var(--crk-color-danger-hover)}.crk-danger-ugf9r:active{color:var(--crk-color-danger-active)}.crk-srOnly-LGQgs{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.crk-root-U-oiq{--crk-typo-font-family: var(--crk-font-family);--crk-typo-line-height: 1.5;--crk-typo-color: var(--crk-color-text);--crk-typo-letter-spacing: var(--crk-letter-spacing-normal);font-family:var(--crk-typo-font-family);line-height:var(--crk-typo-line-height);color:var(--crk-typo-color);margin:0;letter-spacing:var(--crk-typo-letter-spacing)}.crk-h1-Aivwz{font-size:var(--crk-font-size-5xl);font-weight:600;line-height:1.15;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h2-CV8Oo{font-size:var(--crk-font-size-4xl);font-weight:600;line-height:1.2;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h3-lrbrK{font-size:var(--crk-font-size-3xl);font-weight:600;line-height:1.25;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h4--jkC1{font-size:var(--crk-font-size-2xl);font-weight:500;line-height:1.3;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h5-GnQvD{font-size:var(--crk-font-size-xl);font-weight:500;line-height:1.35;letter-spacing:var(--crk-letter-spacing-tight)}.crk-h6-MKlIN{font-size:var(--crk-font-size-lg);font-weight:500;line-height:1.4;letter-spacing:var(--crk-letter-spacing-tight)}.crk-p-FzRtm{font-size:var(--crk-font-size-md);line-height:1.7;color:var(--crk-color-text-secondary)}.crk-span-NZvLx{font-size:inherit}.crk-label-Cwi6a{font-size:var(--crk-font-size-sm);font-weight:500;color:var(--crk-color-text-secondary);letter-spacing:.01em}.crk-normal-7AeZz{font-weight:400}.crk-medium-36OXr{font-weight:500}.crk-semibold-oQixc{font-weight:600}.crk-bold-bk4b4{font-weight:700}.crk-default-79lKR{color:var(--crk-color-text)}.crk-muted-itOSW{color:var(--crk-color-text-muted)}.crk-primary-rp36t{color:var(--crk-color-primary)}.crk-danger-SyOy-{color:var(--crk-color-danger)}.crk-success-w8PpD{color:var(--crk-color-success)}.crk-align-left-3AGYw{text-align:left}.crk-align-center-h-x--{text-align:center}.crk-align-right-IXFhK{text-align:right}.crk-truncate-eqr85{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-root-PVrgx{font-family:var(--crk-font-family);list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.crk-unordered-FhCWT .crk-item-TfW82:before{content:"";display:inline-block;width:6px;height:6px;background-color:var(--crk-color-primary);opacity:.4;border-radius:50%;flex-shrink:0;position:relative;top:-1px}.crk-ordered-8x4YC{counter-reset:list-counter}.crk-ordered-8x4YC .crk-item-TfW82{counter-increment:list-counter}.crk-ordered-8x4YC .crk-item-TfW82:before{content:counter(list-counter) ".";color:var(--crk-color-text-muted);font-size:var(--crk-font-size-sm);font-weight:500;min-width:1.5em;flex-shrink:0}.crk-none-f03Kx .crk-item-TfW82:before{display:none}.crk-sm-Rg4Mv{gap:var(--crk-spacing-xs)}.crk-md-X4Icb{gap:var(--crk-spacing-sm)}.crk-lg-JjNKZ{gap:var(--crk-spacing-md)}.crk-item-TfW82{font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);display:flex;align-items:baseline;gap:var(--crk-spacing-sm);line-height:1.7}.crk-wrapper-zxjMt{display:flex;flex-direction:column}.crk-root-Gf85-{--crk-table-font-size: var(--crk-font-size-md);--crk-table-border-color: var(--crk-border-color);--crk-table-border-radius: var(--crk-border-radius-lg);--crk-table-header-bg: var(--crk-color-bg-subtle);--crk-table-header-color: var(--crk-color-text-muted);--crk-table-cell-padding: 12px 16px;--crk-table-header-padding: 10px 16px;width:100%;border-collapse:separate;border-spacing:0;font-family:inherit;font-size:var(--crk-table-font-size);border:1px solid var(--crk-table-border-color);border-radius:var(--crk-table-border-radius);overflow:hidden}.crk-headerCell-ePPZW{position:relative;padding:var(--crk-table-header-padding);text-align:left;font-size:var(--crk-font-size-sm);font-weight:600;color:var(--crk-table-header-color);text-transform:uppercase;letter-spacing:.04em;background-color:var(--crk-table-header-bg);border-bottom:1px solid var(--crk-table-border-color);white-space:nowrap}.crk-headerCellSortable-NMybk{cursor:pointer;-webkit-user-select:none;user-select:none;padding-right:28px;transition:background-color var(--crk-transition-fast)}.crk-headerCellSortable-NMybk:hover{background-color:var(--crk-color-bg-muted)}.crk-sortIndicator-WGD2S{position:absolute;right:10px;top:50%;translate:0 -50%;display:inline-flex;flex-direction:column;font-size:8px;line-height:1;gap:1px}.crk-sortArrow-1-ok4{color:var(--crk-color-text-muted);opacity:.3;transition:opacity var(--crk-transition-fast),color var(--crk-transition-fast)}.crk-sortArrowActive-yhWrO{opacity:1;color:var(--crk-color-primary)}.crk-sortIndex-HGoca{position:absolute;top:-2px;right:-10px;font-size:7px;font-weight:700;color:var(--crk-color-primary);line-height:1}.crk-row-H0wL1{transition:background-color var(--crk-transition-fast)}.crk-row-H0wL1:not(:last-child) .crk-cell-ZfnbG{border-bottom:1px solid var(--crk-table-border-color)}.crk-cell-ZfnbG{padding:var(--crk-table-cell-padding);color:var(--crk-color-text-secondary);vertical-align:middle}.crk-emptyRow-AoPfj .crk-emptyCell-99-7C{padding:var(--crk-spacing-3xl);text-align:center;color:var(--crk-color-text-muted);font-size:var(--crk-font-size-md)}.crk-striped-6Qckq .crk-row-H0wL1:nth-child(2n){background-color:var(--crk-color-bg-subtle)}.crk-hoverable-ljU9B .crk-row-H0wL1:hover{background-color:var(--crk-color-primary-light)}.crk-compact-2-UWr .crk-headerCell-ePPZW{padding:6px 12px}.crk-compact-2-UWr .crk-headerCell-ePPZW.crk-headerCellSortable-NMybk{padding-right:24px}.crk-compact-2-UWr .crk-cell-ZfnbG{padding:8px 12px;font-size:var(--crk-font-size-sm)}.crk-paginator-UlYIY{display:flex;align-items:center;justify-content:space-between;padding:var(--crk-spacing-md) 0;font-size:var(--crk-font-size-sm);color:var(--crk-color-text-muted);gap:var(--crk-spacing-md)}.crk-paginatorInfo-BVca4{display:flex;align-items:center;gap:var(--crk-spacing-md)}.crk-paginatorText-sqWS0{white-space:nowrap}.crk-pageSizeSelect-yhqJQ{appearance:none;font-family:var(--crk-font-family);font-size:var(--crk-font-size-sm);color:var(--crk-color-text-secondary);background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-sm);padding:4px 24px 4px 8px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath fill='%2394a3b8' d='M0 0l4 5 4-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.crk-pageSizeSelect-yhqJQ:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-paginatorNav-MDSui{display:flex;align-items:center;gap:2px}.crk-pageButton-1PX-g{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;padding:0 6px;font-family:var(--crk-font-family);font-size:var(--crk-font-size-sm);color:var(--crk-color-text-secondary);border-radius:var(--crk-border-radius-sm);transition:all var(--crk-transition-fast)}.crk-pageButton-1PX-g:hover:not(:disabled){background-color:var(--crk-color-bg-muted)}.crk-pageButton-1PX-g:disabled{opacity:.3;cursor:not-allowed}.crk-pageButton-1PX-g:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-pageButtonActive--D7Q7{background-color:var(--crk-color-primary);color:#fff;font-weight:600}.crk-pageButtonActive--D7Q7:hover:not(:disabled){background-color:var(--crk-color-primary-hover)}.crk-pageEllipsis-en59J{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;color:var(--crk-color-text-muted)}@keyframes crk-menuEnter-F0Yyt{0%{opacity:0;transform:translateY(-8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.crk-root-an8Cf{position:relative;display:inline-block}.crk-fullWidth-S-uVk{display:block;width:100%}.crk-trigger-LwPaD{all:unset;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-trigger-LwPaD::placeholder{color:var(--crk-color-text-muted)}.crk-trigger-LwPaD:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-trigger-LwPaD:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-trigger-LwPaD:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-trigger-LwPaD{cursor:pointer;display:inline-flex;align-items:center;width:100%;text-align:left;font-size:var(--crk-font-size-md);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-md) 2.5em var(--crk-control-padding-y-md) .85em;position:relative}.crk-trigger-LwPaD.crk-fullWidth-S-uVk{width:100%}.crk-trigger-LwPaD:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-triggerOpen-U4pa9{border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-triggerLabel-QLITs{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-triggerError-3jlu1{border-color:var(--crk-color-danger)}.crk-triggerError-3jlu1:focus-visible{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-placeholder-fWdch{color:var(--crk-color-text-muted);font-weight:400}.crk-chevron-jmDNe{position:absolute;right:.75em;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--crk-color-text-muted);display:flex;width:0;height:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.35em solid currentColor;transition:transform var(--crk-transition-fast)}.crk-triggerOpen-U4pa9 .crk-chevron-jmDNe{transform:translateY(-50%) rotate(180deg)}.crk-menu-fxnKL{background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-lg);box-shadow:var(--crk-shadow-lg);box-sizing:border-box;position:absolute;top:calc(100% + 4px);min-width:180px;padding:4px;display:none;flex-direction:column}.crk-menu-fxnKL.crk-fullWidth-S-uVk{width:100%;left:0;right:0}.crk-menu-fxnKL{z-index:var(--crk-z-dropdown);opacity:0;transform:translateY(-8px) scale(.95);animation:none}.crk-menuOpen-HF-Y1{display:flex;animation:crk-menuEnter-F0Yyt .2s cubic-bezier(.34,1.56,.64,1) forwards}.crk-alignLeft-buCDJ{left:0}.crk-alignRight-05P9w{right:0}.crk-item-f-Rhh{all:unset;cursor:pointer;display:flex;align-items:center;padding:8px 12px;font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);transition:all var(--crk-transition-fast);gap:var(--crk-spacing-sm)}.crk-item-f-Rhh:hover{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-item-f-Rhh:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-item-f-Rhh:active{background-color:#6366f126}.crk-itemDisabled-L-d6i{opacity:.4;cursor:not-allowed;pointer-events:none}.crk-itemSelected-Fwmuo{background-color:var(--crk-color-bg-muted);color:var(--crk-color-text);font-weight:500}.crk-itemSelected-Fwmuo:hover{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}@keyframes crk-popoverFade-hj41M{0%{opacity:0}to{opacity:1}}.crk-root-8H-L9{position:relative;display:inline-block}.crk-trigger-Zn1nQ{all:unset;cursor:pointer;display:inline-flex}.crk-trigger-Zn1nQ:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring);border-radius:var(--crk-border-radius-md)}.crk-popover-rvS3X{--crk-popover-padding: var(--crk-spacing-lg);--crk-popover-min-width: 200px;--crk-popover-border-radius: var(--crk-border-radius-lg);--crk-popover-shadow: var(--crk-shadow-lg);--crk-popover-animation: crk-popoverFade-hj41M .15s ease-out;background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-lg);box-shadow:var(--crk-shadow-lg);position:absolute;padding:var(--crk-popover-padding);z-index:var(--crk-z-popover);animation:var(--crk-popover-animation);min-width:var(--crk-popover-min-width);border-radius:var(--crk-popover-border-radius);box-shadow:var(--crk-popover-shadow)}.crk-bottom-lawQw{top:calc(100% + 8px);left:50%;translate:-50% 0}.crk-top-rqvC6{bottom:calc(100% + 8px);left:50%;translate:-50% 0}.crk-left-J6exv{right:calc(100% + 8px);top:50%;translate:0 -50%}.crk-right-3y20l{left:calc(100% + 8px);top:50%;translate:0 -50%}@keyframes crk-backdropIn-x5Z-A{0%{opacity:0;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}to{opacity:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}@keyframes crk-modalIn-xFUwm{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.crk-backdrop-jYpTA{--crk-modal-backdrop-bg: rgba(15, 23, 42, .4);--crk-modal-backdrop-blur: 4px;position:fixed;inset:0;background-color:var(--crk-modal-backdrop-bg);-webkit-backdrop-filter:blur(var(--crk-modal-backdrop-blur));backdrop-filter:blur(var(--crk-modal-backdrop-blur));display:flex;align-items:center;justify-content:center;z-index:var(--crk-z-modal-backdrop);animation:crk-backdropIn-x5Z-A .25s ease forwards;padding:var(--crk-spacing-xl)}.crk-modal-yNG-7{--crk-modal-bg: #fff;--crk-modal-border-radius: var(--crk-border-radius-xl);--crk-modal-shadow: var(--crk-shadow-xl);--crk-modal-padding: var(--crk-spacing-xl);background-color:var(--crk-modal-bg);border-radius:var(--crk-modal-border-radius);box-shadow:var(--crk-modal-shadow);display:flex;flex-direction:column;max-height:calc(100vh - 3rem);width:100%;z-index:var(--crk-z-modal);animation:crk-modalIn-xFUwm .3s cubic-bezier(.34,1.56,.64,1);overflow:hidden}.crk-sm--xyY9{max-width:400px}.crk-md-ETTfh{max-width:560px}.crk-lg-5DBb7{max-width:720px}.crk-fullscreen-b4jQ-{max-width:100vw;max-height:100vh;border-radius:0}.crk-header-NS30G{display:flex;align-items:center;padding:var(--crk-modal-padding) var(--crk-modal-padding) var(--crk-spacing-lg);font-size:var(--crk-font-size-xl);font-weight:600;letter-spacing:-.01em;color:var(--crk-color-text);flex-shrink:0}.crk-headerWithClose-4davm{justify-content:space-between}.crk-closeButton-JX-aq{all:unset;cursor:pointer;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--crk-border-radius-md);color:var(--crk-color-text-muted);transition:all var(--crk-transition-fast)}.crk-closeButton-JX-aq:hover{background-color:var(--crk-color-bg-muted);color:var(--crk-color-text)}.crk-closeButton-JX-aq:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-body-3zIj9{padding:0 var(--crk-modal-padding) var(--crk-modal-padding);flex:1 1 auto;overflow-y:auto;font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);line-height:1.625}.crk-footer-Oyz-R{display:flex;align-items:center;justify-content:flex-end;gap:var(--crk-spacing-sm);padding:var(--crk-spacing-lg) var(--crk-modal-padding);border-top:1px solid var(--crk-color-border);flex-shrink:0}.crk-root-jHIIP{display:flex;flex-direction:column;gap:var(--crk-spacing-xl)}.crk-formErrors-eh-OP{display:flex;flex-direction:column;gap:0;padding:.75em 1em;background:var(--crk-color-danger-light);border:1px solid var(--crk-color-danger);border-radius:var(--crk-border-radius-md);list-style:none;margin:0}.crk-formError-XEuWv{font-size:var(--crk-font-size-sm);color:var(--crk-color-danger);display:flex;align-items:baseline;gap:.5em;padding:.25em 0}.crk-formError-XEuWv:before{content:"•";flex-shrink:0;font-size:1.1em;line-height:1}.crk-field-OUlYz{display:flex;flex-direction:column;gap:6px}.crk-label-udkR7{font-size:var(--crk-font-size-sm);font-weight:500;color:var(--crk-color-text);letter-spacing:normal;cursor:pointer}.crk-labelError-LOgKi{color:var(--crk-color-danger)}.crk-required-IYiA2{color:var(--crk-color-danger);margin-left:2px}.crk-error-yFZXm{font-size:var(--crk-font-size-xs);color:var(--crk-color-danger);display:flex;align-items:center;gap:4px;margin-top:2px}.crk-helperText-Dm-rb{font-size:var(--crk-font-size-xs);color:var(--crk-color-text-muted);margin-top:2px}.crk-row-nNbx-{display:flex;gap:var(--crk-spacing-lg)}.crk-row-nNbx->*{flex:1;min-width:0}.crk-root-rSgdy{--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-root-rSgdy::placeholder{color:var(--crk-color-text-muted)}.crk-root-rSgdy:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-root-rSgdy:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-root-rSgdy:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-root-rSgdy{width:100%;display:block}.crk-wrapper-GHy8V{display:flex;align-items:center;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-wrapper-GHy8V::placeholder{color:var(--crk-color-text-muted)}.crk-wrapper-GHy8V:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-wrapper-GHy8V:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-wrapper-GHy8V:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-wrapper-GHy8V{overflow:hidden}.crk-wrapper-GHy8V .crk-root-rSgdy{border:none;box-shadow:none;outline:none;flex:1;min-width:0;font:inherit;color:inherit;padding:0;background:transparent}.crk-wrapper-GHy8V .crk-root-rSgdy:focus{box-shadow:none}.crk-wrapper-GHy8V .crk-root-rSgdy:disabled{opacity:1}.crk-sm-DptM5{font-size:var(--crk-font-size-sm);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-sm) 10px}.crk-md-F4B0G{font-size:var(--crk-font-size-md);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-md) 12px}.crk-lg-pBxwX{font-size:var(--crk-font-size-lg);line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-lg) 16px}.crk-error-fucxe{border-color:var(--crk-color-danger)}.crk-error-fucxe:focus{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-prefix-w53Md,.crk-suffix-fcNgR{display:flex;align-items:center;color:var(--crk-color-text-muted);font-size:var(--crk-font-size-sm);flex-shrink:0;-webkit-user-select:none;user-select:none}.crk-prefix-w53Md{padding-left:12px}.crk-suffix-fcNgR{padding-right:12px}.crk-hasPrefix--bqPD .crk-root-rSgdy{padding-left:var(--crk-spacing-xs)}.crk-hasSuffix-zO0nX .crk-root-rSgdy{padding-right:var(--crk-spacing-xs)}@keyframes crk-menuEnter-vJjLV{0%{opacity:0;transform:translateY(-.5em) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.crk-wrapper-SP2JE{position:relative;display:inline-flex;width:100%;font-size:var(--crk-font-size-md)}.crk-wrapper-SP2JE.crk-sm-DqshL{font-size:var(--crk-font-size-sm)}.crk-wrapper-SP2JE.crk-md-j4AKI{font-size:var(--crk-font-size-md)}.crk-wrapper-SP2JE.crk-lg-24Xd3{font-size:var(--crk-font-size-lg)}.crk-root-Uu9Ah{--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-root-Uu9Ah::placeholder{color:var(--crk-color-text-muted)}.crk-root-Uu9Ah:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-root-Uu9Ah:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-root-Uu9Ah:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-root-Uu9Ah{width:100%;appearance:none;cursor:pointer;font-size:inherit;padding-right:2.5em}.crk-sm-DqshL.crk-root-Uu9Ah{line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-sm) 2.5em var(--crk-control-padding-y-sm) .7em}.crk-md-j4AKI.crk-root-Uu9Ah{line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-md) 2.5em var(--crk-control-padding-y-md) .85em}.crk-lg-24Xd3.crk-root-Uu9Ah{line-height:var(--crk-control-line-height);padding:var(--crk-control-padding-y-lg) 2.5em var(--crk-control-padding-y-lg) 1em}.crk-error-9oRU6{border-color:var(--crk-color-danger)}.crk-error-9oRU6:focus{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-arrow-WU8ZW{position:absolute;right:.75em;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--crk-color-text-muted);display:flex;width:0;height:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.35em solid currentColor}.crk-searchableWrapper-7AL4l{display:block}.crk-hiddenSelect-s3DEx{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.crk-searchableTrigger-m-GWV{all:unset;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-searchableTrigger-m-GWV::placeholder{color:var(--crk-color-text-muted)}.crk-searchableTrigger-m-GWV:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-searchableTrigger-m-GWV:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-searchableTrigger-m-GWV{width:100%;cursor:pointer;font-size:inherit;display:flex;align-items:center;text-align:left;padding-right:2.5em;position:relative}.crk-searchableTrigger-m-GWV:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-triggerOpen-Lo8-j{border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-triggerLabel-5rETZ{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-placeholder-teBBh{color:var(--crk-color-text-muted)}.crk-arrowInline-m-roG{position:static;transform:none;flex-shrink:0;margin-left:auto;transition:transform var(--crk-transition-fast)}.crk-triggerOpen-Lo8-j .crk-arrowInline-m-roG{transform:rotate(180deg)}.crk-disabled-pcSeq{pointer-events:none}.crk-visuallyHidden-2tTD5{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.crk-menu--i-je{background:var(--crk-color-bg);border:var(--crk-border-width) solid var(--crk-color-border);border-radius:var(--crk-border-radius-lg);box-shadow:var(--crk-shadow-lg);box-sizing:border-box;position:absolute;top:calc(100% + .25em);left:0;right:0;z-index:var(--crk-z-dropdown);display:flex;flex-direction:column;padding:.25em;animation:crk-menuEnter-vJjLV .2s cubic-bezier(.34,1.56,.64,1) forwards}.crk-menuItems-VrZnE{max-height:15em;overflow-y:auto;display:flex;flex-direction:column}.crk-item-fU3XI{all:unset;cursor:pointer;display:flex;align-items:center;padding:.5em .75em;font-size:inherit;color:var(--crk-color-text-secondary);transition:all var(--crk-transition-fast)}.crk-item-fU3XI:hover{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-item-fU3XI:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-itemHighlighted-MvR41{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-itemDisabled-KTUO8{opacity:.4;cursor:not-allowed;pointer-events:none}.crk-itemSelected-42-BG{background-color:var(--crk-color-bg-muted);color:var(--crk-color-text);font-weight:500}.crk-itemSelected-42-BG.crk-itemHighlighted-MvR41{background-color:var(--crk-color-primary-light);color:var(--crk-color-primary)}.crk-noResults-uicSW{padding:.5em .75em;color:var(--crk-color-text-muted);font-size:inherit}.crk-multiTrigger-Pd3wJ{--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-multiTrigger-Pd3wJ::placeholder{color:var(--crk-color-text-muted)}.crk-multiTrigger-Pd3wJ:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-multiTrigger-Pd3wJ:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-multiTrigger-Pd3wJ:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-multiTrigger-Pd3wJ{box-sizing:border-box;width:100%;cursor:text;font-size:inherit;display:flex;flex-wrap:wrap;align-items:center;gap:.3em;min-height:2.5em}.crk-multiTrigger-Pd3wJ.crk-sm-DqshL{padding:var(--crk-control-padding-y-sm) 2.5em var(--crk-control-padding-y-sm) .7em}.crk-multiTrigger-Pd3wJ.crk-md-j4AKI{padding:var(--crk-control-padding-y-md) 2.5em var(--crk-control-padding-y-md) .85em}.crk-multiTrigger-Pd3wJ.crk-lg-24Xd3{padding:var(--crk-control-padding-y-lg) 2.5em var(--crk-control-padding-y-lg) 1em}.crk-multiTrigger-Pd3wJ{position:relative}.crk-multiTrigger-Pd3wJ:focus-within{border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-multiTriggerDisabled-9ajge{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-chip-TuYUB{display:inline-flex;align-items:center;gap:.25em;padding:.1em .4em;background:var(--crk-color-bg-muted);border-radius:var(--crk-border-radius-sm);font-size:.85em;line-height:1.4;color:var(--crk-color-text);max-width:100%;cursor:default}.crk-chipLabel-H4JWu{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crk-chipRemove-Lfk0R{all:unset;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:1.1em;height:1.1em;border-radius:var(--crk-border-radius-sm);font-size:1em;line-height:1;color:var(--crk-color-text-muted);flex-shrink:0;transition:all var(--crk-transition-fast)}.crk-chipRemove-Lfk0R:hover{color:var(--crk-color-danger);background:var(--crk-color-danger-light)}.crk-multiSearch-OrVeS{all:unset;flex:1 1 3em;min-width:3em;font-size:inherit;line-height:1.4;color:var(--crk-color-text);cursor:text}.crk-multiSearch-OrVeS::placeholder{color:var(--crk-color-text-muted)}.crk-multiSearch-OrVeS:focus{outline:none}.crk-multiSearch-OrVeS:disabled{cursor:not-allowed}.crk-arrowMulti-Nh9Hr{position:absolute;right:.75em;top:50%;transform:translateY(-50%);transition:transform var(--crk-transition-fast)}.crk-triggerOpen-Lo8-j .crk-arrowMulti-Nh9Hr{transform:translateY(-50%) rotate(180deg)}.crk-itemCheck-DPB5A{display:inline-block;width:1em;height:1em;margin-right:.4em;flex-shrink:0}.crk-itemCheck-DPB5A:before{content:"✓";font-size:.85em;color:var(--crk-color-primary)}.crk-root-61cKD{display:inline-flex;align-items:center;gap:.4em;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--crk-font-size-md)}.crk-input-bAjPU{appearance:none;width:1.15em;height:1.15em;border:.1em solid var(--crk-border-color);border-radius:.2em;background:#fff;cursor:pointer;transition:all var(--crk-transition-fast);flex-shrink:0;position:relative;display:grid;place-content:center}.crk-input-bAjPU:after{content:"";display:block;width:.3em;height:.55em;border:solid transparent;border-width:0 .13em .13em 0;transform:rotate(45deg);margin-top:-.1em}.crk-input-bAjPU:checked{background-color:var(--crk-color-primary);border-color:var(--crk-color-primary)}.crk-input-bAjPU:checked:after{border-color:#fff}.crk-input-bAjPU:hover:not(:disabled){border-color:var(--crk-color-border-hover)}.crk-input-bAjPU:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-input-bAjPU:disabled{opacity:.5;cursor:not-allowed}.crk-label-W9IeS{color:var(--crk-color-text-secondary);line-height:1;cursor:pointer}.crk-indeterminate-mLarv .crk-input-bAjPU{background-color:var(--crk-color-primary);border-color:var(--crk-color-primary)}.crk-indeterminate-mLarv .crk-input-bAjPU:after{width:.55em;height:0;border:none;border-top:.13em solid white;border-radius:.05em;transform:none;margin-top:0}.crk-group-NNwCD{display:flex;flex-direction:column;gap:var(--crk-spacing-sm);outline:none}.crk-root-7fGik{display:inline-flex;align-items:center;gap:var(--crk-spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.crk-input-43PQW{appearance:none;width:18px;height:18px;border:1.5px solid var(--crk-border-color);border-radius:50%;background:#fff;cursor:pointer;transition:all var(--crk-transition-fast);flex-shrink:0;display:grid;place-content:center}.crk-input-43PQW:after{content:"";width:8px;height:8px;border-radius:50%;background-color:var(--crk-color-primary);transition:transform var(--crk-transition-spring);transform:scale(0)}.crk-input-43PQW:checked{border-color:var(--crk-color-primary)}.crk-input-43PQW:checked:after{transform:scale(1)}.crk-input-43PQW:hover:not(:disabled){border-color:var(--crk-color-border-hover)}.crk-input-43PQW:focus-visible{outline:none;box-shadow:var(--crk-shadow-ring)}.crk-input-43PQW:disabled{opacity:.5;cursor:not-allowed}.crk-label-aW30x{font-size:var(--crk-font-size-md);color:var(--crk-color-text-secondary);cursor:pointer}.crk-root-IGgdn{--crk-textarea-min-height: 80px;--crk-input-font-family: var(--crk-font-family);--crk-input-font-size: var(--crk-font-size-md);--crk-input-letter-spacing: var(--crk-letter-spacing-normal);--crk-input-color: var(--crk-color-text);--crk-input-bg: var(--crk-color-bg);--crk-input-border-color: var(--crk-border-color);--crk-input-border-radius: var(--crk-border-radius-md);--crk-input-shadow: var(--crk-shadow-xs);--crk-input-transition: var(--crk-transition-fast);--crk-input-disabled-opacity: .5;box-sizing:border-box;font-family:var(--crk-input-font-family);font-size:var(--crk-input-font-size);letter-spacing:var(--crk-input-letter-spacing);color:var(--crk-input-color);background:var(--crk-input-bg);border:var(--crk-border-width) solid var(--crk-input-border-color);border-radius:var(--crk-input-border-radius);box-shadow:var(--crk-input-shadow);transition:border-color var(--crk-input-transition),box-shadow var(--crk-input-transition),background-color var(--crk-input-transition)}.crk-root-IGgdn::placeholder{color:var(--crk-color-text-muted)}.crk-root-IGgdn:hover:not(:disabled):not(:focus){border-color:var(--crk-color-border-hover)}.crk-root-IGgdn:focus{outline:none;border-color:var(--crk-color-primary);box-shadow:var(--crk-shadow-ring)}.crk-root-IGgdn:disabled{opacity:var(--crk-input-disabled-opacity);cursor:not-allowed;background:var(--crk-color-bg-subtle)}.crk-root-IGgdn{width:100%;display:block;min-height:var(--crk-textarea-min-height)}.crk-sm-N-5I2{padding:8px 10px;font-size:var(--crk-font-size-sm)}.crk-md-bbyFl{padding:8px 12px;font-size:var(--crk-font-size-md)}.crk-lg-Pd-Iq{padding:10px 16px;font-size:var(--crk-font-size-lg)}.crk-error-fyu3i{border-color:var(--crk-color-danger)}.crk-error-fyu3i:focus{box-shadow:0 0 0 3px var(--crk-color-danger-light)}.crk-resizeNone-SmNT4{resize:none}.crk-resizeVertical-oi8vP{resize:vertical}.crk-resizeHorizontal-riMLL{resize:horizontal}.crk-resizeBoth-NYSh4{resize:both}.crk-autoExpand-JWone{resize:none;overflow-y:hidden}.crk-root-uMSq0{position:relative;width:100%;font-family:var(--crk-font-family);font-size:var(--crk-font-size-sm);color:var(--crk-color-text);letter-spacing:var(--crk-letter-spacing-normal)}.crk-canvas-zhFr0{position:relative;width:100%}.crk-svg-waPLB{display:block;overflow:visible}.crk-gridLine-K2Gx9{stroke:var(--crk-chart-grid);stroke-width:1;shape-rendering:crispEdges;opacity:.7}.crk-axis-Zum8-{pointer-events:none}.crk-axisLabel-Ilv3u{fill:var(--crk-chart-axis);font-size:var(--crk-font-size-xs);font-family:inherit}.crk-cursorLine-iNHim{stroke:var(--crk-color-text-muted);stroke-width:1;stroke-dasharray:3 3;pointer-events:none}.crk-linePath-E4eYA{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.crk-areaPath-ZwMc6{stroke:none;opacity:.18}.crk-point-DTAoa{stroke:var(--crk-color-bg);stroke-width:2}.crk-bar-9sYbq{transition:opacity var(--crk-transition-fast)}.crk-bar-9sYbq:hover{opacity:.85}.crk-barLabelInside-dlQh5{fill:var(--crk-chart-label-inside);font-weight:var(--crk-font-weight-medium)}.crk-activeBar-FJhPJ{opacity:.78}.crk-interactionLayer-dHNAG{fill:transparent;cursor:crosshair}.crk-legend-JL6YI{display:flex;flex-wrap:wrap;gap:var(--crk-spacing-md);padding-top:var(--crk-spacing-md);font-size:var(--crk-font-size-sm);color:var(--crk-color-text-secondary)}.crk-legendItem-rcdvO{display:inline-flex;align-items:center;gap:var(--crk-spacing-xs)}.crk-legendSwatch-eJBsF{display:inline-block;width:.625rem;height:.625rem;border-radius:var(--crk-border-radius-sm);flex-shrink:0}.crk-legendIcon-6gzcO{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:0}.crk-legendIcon-6gzcO svg{width:1em;height:1em;display:block}.crk-legendLabel-C-eu3{color:var(--crk-color-text)}.crk-tooltip-m55-N{position:absolute;pointer-events:none;background:var(--crk-chart-tooltip-bg);color:var(--crk-chart-tooltip-text);padding:var(--crk-spacing-sm) var(--crk-spacing-md);border-radius:var(--crk-border-radius-md);box-shadow:var(--crk-shadow-md);font-size:var(--crk-font-size-xs);line-height:var(--crk-line-height-normal);z-index:1}.crk-tooltipTitle-0EfoX{font-weight:var(--crk-font-weight-semibold);margin-bottom:var(--crk-spacing-xs)}.crk-tooltipRows-MC0wM{display:flex;flex-direction:column;gap:2px}.crk-tooltipRow-ZQomr{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--crk-spacing-xs)}.crk-tooltipLabel-s4OKX{opacity:.85}.crk-tooltipValue-iwj1s{font-variant-numeric:tabular-nums;font-weight:var(--crk-font-weight-medium)}.crk-empty-aa4vk{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:var(--crk-color-text-muted);font-size:var(--crk-font-size-sm)}.crk-sparkline-3-eRc{display:inline-block;vertical-align:middle;line-height:0}.crk-tradingHeader-Pb9wS{font-family:var(--crk-font-family);font-size:var(--crk-font-size-sm);color:var(--crk-color-text);letter-spacing:var(--crk-letter-spacing-normal)}
|