tempest-react-sdk 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -33,6 +33,7 @@ The goal is to start every new React frontend with the same opinionated foundati
33
33
  - [JWT helpers & refresh queue](#jwt-helpers--refresh-queue-recipe)
34
34
  - [Code-splitting with retry](#code-splitting-with-retry-recipe)
35
35
  - [React Query](#react-query-recipe)
36
+ - [Form layout (`Form`, `FormSection`, `FormRow`, `FormActions`)](#form-layout-recipe)
36
37
  - [Forms (zod)](#forms-zod-recipe)
37
38
  - [BR validators & masked inputs](#br-validators--masked-inputs-recipe)
38
39
  - [ViaCEP lookup](#viacep-lookup-recipe)
@@ -149,28 +150,28 @@ The styles ship hashed under the `tempest_` namespace — they do **not** collid
149
150
 
150
151
  Every module is re-exported from the package root — `import { Button, useDebounce, createApiClient } from "tempest-react-sdk"` always works.
151
152
 
152
- | Module | Exports |
153
- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
154
- | `components` | `Avatar`, `Badge`, `Breadcrumbs`, `Button`, `Card`, `Checkbox`, `ChipInput`, `ConfirmDialog`, `Container`, `DatePicker`, `Drawer`, `EmptyState`, `ErrorState`, `FileUpload`, `Grid`, `Input`, `Modal`, `Pagination`, `Progress`, `Radio`, `RadioGroup`, `SearchBar`, `Select`, `Skeleton`, `Spinner`, `Stack`, `Stepper`, `Switch`, `Table`, `Tabs`, `Textarea`, `Toast` (`ToastProvider`, `useToast`), `Tooltip`, `VirtualList` |
155
- | `hooks` | `useDebounce`, `usePagination`, `useClientFilter`, `useMediaQuery`, `useOnline`, `useDocumentVisibility`, `useIntersectionObserver`, `useResizeObserver`, `useClipboard`, `useKeyboardShortcut`, `useBeforeInstallPrompt`, `useIdle`, `useGeolocation`, `useScrollLock`, `useFocusTrap`, `useStableCallback`, `useDeepMemo` |
156
- | `http` | `createApiClient`, `parseResponse`, `uploadWithProgress`, `retry`, `generateIdempotencyKey`, `usePoll`, types: `ApiClient`, `ApiClientConfig`, `ApiError`, `RequestOptions`, `RetryOptions`, `UploadProgressEvent`, `UploadWithProgressOptions`, `UsePollOptions`, `UsePollResult` |
157
- | `auth` _(peer: `zustand`)_ | `createAuthStore`, `AuthGuard`, `decodeJWT`, `isJWTExpired`, `lazyWithRetry`, `createRefreshQueue`, types: `AuthState`, `CreateAuthStoreOptions`, `AuthGuardProps`, `DecodedJWT`, `LazyWithRetryOptions` |
158
- | `query` _(peer: `@tanstack/react-query`)_ | `QueryProvider`, `createQueryKeys`, `STALE_TIME`, `CACHE_TIME`, `REFETCH_TIME` |
159
- | `forms` _(peer: `zod`, `react-hook-form`)_ | `validateForm`, `zodResolver`, `useZodForm`, `validateCPF`, `validateCNPJ`, `formatCEP`, `formatCNPJ`, `unmask`, `CPFInput`, `CNPJInput`, `PhoneInput`, `CEPInput`, `MoneyInput`, `useViaCEP` |
160
- | `sse` | `createEventStream`, `useEventStream` |
161
- | `ws` | `createWebSocket`, `useWebSocket` |
162
- | `push` | `WebPushClient`, `WebPushUnsupportedError`, `WebPushPermissionDeniedError`, `usePushSubscription`, `urlBase64ToUint8Array`, `isPushSupported` |
163
- | `sw` | `registerServiceWorker`, `skipWaiting`, `unregisterAllServiceWorkers`, `installPushHandler`, `installNotificationClickHandler`, `installSkipWaitingListener` |
164
- | `audio` | `createAudioPlayer`, `playAudio`, `stopAudio`, `useAudio` |
165
- | `offline` _(peer: `dexie`)_ | `createOfflineStore`, types: `OfflineStore`, `OfflineStoreConfig`, `ListOptions` |
166
- | `error-boundary` | `ErrorBoundary`, `useErrorHandler`, types: `ErrorBoundaryProps`, `ErrorBoundaryRenderProps` |
167
- | `theme` | `ThemeProvider`, `useTheme`, `getInitialTheme`, `themeInitScript`, types: `ThemeMode`, `ResolvedTheme` |
168
- | `i18n` | `createI18n`, `I18nProvider`, `useI18n`, `useTranslate`, types: `Catalog`, `Messages`, `I18n`, `InterpolationValues` |
169
- | `logger` | `createLogger`, `consoleSink`, types: `Logger`, `LogEntry`, `LogLevel`, `LoggerSink` |
170
- | `telemetry` | `TelemetryProvider`, `useTelemetry`, `consoleTelemetryAdapter`, types: `TelemetryAdapter`, `TelemetryEvent`, `TelemetryUser` |
171
- | `feature-flags` | `FeatureFlagsProvider`, `useFeatureFlag`, `useFlagValue`, `createInMemoryFlags`, types: `FeatureFlagsAdapter`, `FlagValue` |
172
- | `share` | `share`, `isShareSupported`, types: `SharePayload`, `ShareResult` |
173
- | `utils` | `cn`, `formatCurrency`, `formatDate`, `formatDateTime`, `formatPhone`, `formatCPF`, `formatPercent`, `storage` |
153
+ | Module | Exports |
154
+ | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
155
+ | `components` | `Avatar`, `Badge`, `Breadcrumbs`, `Button`, `Card`, `Checkbox`, `ChipInput`, `ConfirmDialog`, `Container`, `DatePicker`, `Drawer`, `EmptyState`, `ErrorState`, `FileUpload`, `Form` (`FormSection`, `FormRow`, `FormActions`), `Grid`, `Input`, `Modal`, `Pagination`, `Progress`, `Radio`, `RadioGroup`, `SearchBar`, `Select`, `Skeleton`, `Spinner`, `Stack`, `Stepper`, `Switch`, `Table`, `Tabs`, `Textarea`, `Toast` (`ToastProvider`, `useToast`), `Tooltip`, `VirtualList` |
156
+ | `hooks` | `useDebounce`, `usePagination`, `useClientFilter`, `useMediaQuery`, `useOnline`, `useDocumentVisibility`, `useIntersectionObserver`, `useResizeObserver`, `useClipboard`, `useKeyboardShortcut`, `useBeforeInstallPrompt`, `useIdle`, `useGeolocation`, `useScrollLock`, `useFocusTrap`, `useStableCallback`, `useDeepMemo` |
157
+ | `http` | `createApiClient`, `parseResponse`, `uploadWithProgress`, `retry`, `generateIdempotencyKey`, `usePoll`, types: `ApiClient`, `ApiClientConfig`, `ApiError`, `RequestOptions`, `RetryOptions`, `UploadProgressEvent`, `UploadWithProgressOptions`, `UsePollOptions`, `UsePollResult` |
158
+ | `auth` _(peer: `zustand`)_ | `createAuthStore`, `AuthGuard`, `decodeJWT`, `isJWTExpired`, `lazyWithRetry`, `createRefreshQueue`, types: `AuthState`, `CreateAuthStoreOptions`, `AuthGuardProps`, `DecodedJWT`, `LazyWithRetryOptions` |
159
+ | `query` _(peer: `@tanstack/react-query`)_ | `QueryProvider`, `createQueryKeys`, `STALE_TIME`, `CACHE_TIME`, `REFETCH_TIME` |
160
+ | `forms` _(peer: `zod`, `react-hook-form`)_ | `validateForm`, `zodResolver`, `useZodForm`, `validateCPF`, `validateCNPJ`, `formatCEP`, `formatCNPJ`, `unmask`, `CPFInput`, `CNPJInput`, `PhoneInput`, `CEPInput`, `MoneyInput`, `useViaCEP` |
161
+ | `sse` | `createEventStream`, `useEventStream` |
162
+ | `ws` | `createWebSocket`, `useWebSocket` |
163
+ | `push` | `WebPushClient`, `WebPushUnsupportedError`, `WebPushPermissionDeniedError`, `usePushSubscription`, `urlBase64ToUint8Array`, `isPushSupported` |
164
+ | `sw` | `registerServiceWorker`, `skipWaiting`, `unregisterAllServiceWorkers`, `installPushHandler`, `installNotificationClickHandler`, `installSkipWaitingListener` |
165
+ | `audio` | `createAudioPlayer`, `playAudio`, `stopAudio`, `useAudio` |
166
+ | `offline` _(peer: `dexie`)_ | `createOfflineStore`, types: `OfflineStore`, `OfflineStoreConfig`, `ListOptions` |
167
+ | `error-boundary` | `ErrorBoundary`, `useErrorHandler`, types: `ErrorBoundaryProps`, `ErrorBoundaryRenderProps` |
168
+ | `theme` | `ThemeProvider`, `useTheme`, `getInitialTheme`, `themeInitScript`, types: `ThemeMode`, `ResolvedTheme` |
169
+ | `i18n` | `createI18n`, `I18nProvider`, `useI18n`, `useTranslate`, types: `Catalog`, `Messages`, `I18n`, `InterpolationValues` |
170
+ | `logger` | `createLogger`, `consoleSink`, types: `Logger`, `LogEntry`, `LogLevel`, `LoggerSink` |
171
+ | `telemetry` | `TelemetryProvider`, `useTelemetry`, `consoleTelemetryAdapter`, `createSentryTelemetryAdapter`, types: `TelemetryAdapter`, `TelemetryEvent`, `TelemetryUser`, `CreateSentryTelemetryAdapterOptions`, `SentryLike` |
172
+ | `feature-flags` | `FeatureFlagsProvider`, `useFeatureFlag`, `useFlagValue`, `createInMemoryFlags`, types: `FeatureFlagsAdapter`, `FlagValue` |
173
+ | `share` | `share`, `isShareSupported`, types: `SharePayload`, `ShareResult` |
174
+ | `utils` | `cn`, `formatCurrency`, `formatDate`, `formatDateTime`, `formatPhone`, `formatCPF`, `formatPercent`, `storage` |
174
175
 
175
176
  Full per-module docs in [`docs/`](./docs) (one markdown per module + draw.io diagrams in [`docs/diagrams/`](./docs/diagrams)).
176
177
 
@@ -531,6 +532,97 @@ export const eventKeys = createQueryKeys("event", {
531
532
  // eventKeys.byId("42") === ["event", "42"]
532
533
  ```
533
534
 
535
+ ### Form layout recipe
536
+
537
+ `Form` is a `<form>` wrapper with a built-in layout variant — pick `stack` for stacked fields (one per row), `inline` for a wrapping horizontal row, or `grid` for an `N`-column layout. Pair with `FormSection` (titled subgroup), `FormRow` (forces side-by-side inside a stacked form), and `FormActions` (footer button row).
538
+
539
+ **Stacked (default) — one field per row:**
540
+
541
+ ```tsx
542
+ import { Form, FormActions, Input, Button } from "tempest-react-sdk";
543
+
544
+ <Form layout="stack" gap={4} onSubmit={onSubmit}>
545
+ <Input label="Nome" {...form.register("name")} />
546
+ <Input label="Email" type="email" {...form.register("email")} />
547
+ <Input label="Senha" type="password" {...form.register("password")} />
548
+ <FormActions align="end">
549
+ <Button type="submit">Criar conta</Button>
550
+ </FormActions>
551
+ </Form>;
552
+ ```
553
+
554
+ **Grid — side-by-side columns:**
555
+
556
+ ```tsx
557
+ import { Form, FormActions, Input, Button } from "tempest-react-sdk";
558
+
559
+ <Form layout="grid" columns={2} gap={4} onSubmit={onSubmit}>
560
+ <Input label="Nome" {...register("name")} />
561
+ <Input label="Sobrenome" {...register("last_name")} />
562
+ <Input label="Email" type="email" {...register("email")} />
563
+ <Input label="Telefone" {...register("phone")} />
564
+ <FormActions align="end" style={{ gridColumn: "1 / -1" }}>
565
+ <Button type="submit">Salvar</Button>
566
+ </FormActions>
567
+ </Form>;
568
+ ```
569
+
570
+ `columns` accepts a number (`repeat(N, minmax(0, 1fr))`) or a raw `grid-template-columns` string (e.g. `"2fr 1fr"`).
571
+
572
+ **Inline — search-style filter row:**
573
+
574
+ ```tsx
575
+ import { Form, Input, Select, Button } from "tempest-react-sdk";
576
+
577
+ <Form layout="inline" gap={2} onSubmit={onSubmit}>
578
+ <Input label="Buscar" placeholder="nome…" />
579
+ <Select label="Status" options={statusOptions} />
580
+ <Button type="submit">Filtrar</Button>
581
+ </Form>;
582
+ ```
583
+
584
+ `inline` aligns children at `flex-end` and wraps — perfect for filter bars or short login forms.
585
+
586
+ **Sections + grouped rows:**
587
+
588
+ `FormSection` lets you nest layouts (e.g. a stacked form with a 3-column "Address" group inside):
589
+
590
+ ```tsx
591
+ import { Form, FormSection, FormRow, FormActions, Input, Button } from "tempest-react-sdk";
592
+
593
+ <Form layout="stack" gap={5}>
594
+ <Input label="Email" {...register("email")} />
595
+
596
+ <FormSection title="Endereço" description="Usado para entrega" layout="grid" columns={3} gap={3}>
597
+ <Input label="CEP" {...register("cep")} />
598
+ <Input label="Cidade" {...register("city")} />
599
+ <Input label="UF" {...register("state")} />
600
+ <Input label="Rua" style={{ gridColumn: "1 / -1" }} {...register("street")} />
601
+ </FormSection>
602
+
603
+ <FormRow>
604
+ <Input label="Validade" placeholder="MM/AA" {...register("expiry")} />
605
+ <Input label="CVV" {...register("cvv")} />
606
+ </FormRow>
607
+
608
+ <FormActions align="between">
609
+ <Button variant="ghost" type="button" onClick={onCancel}>
610
+ Cancelar
611
+ </Button>
612
+ <Button type="submit">Salvar</Button>
613
+ </FormActions>
614
+ </Form>;
615
+ ```
616
+
617
+ | Component | Default layout | What it does |
618
+ | ------------- | ------------------------- | --------------------------------------------------------------------------------------------- |
619
+ | `Form` | `stack` | `<form>` element + flex/grid container. `onSubmit` works as expected. |
620
+ | `FormSection` | `stack` body | Titled subgroup with its own independent layout / columns / gap. |
621
+ | `FormRow` | always horizontal | Forces a wrapping side-by-side row regardless of parent layout. Children share width equally. |
622
+ | `FormActions` | horizontal, `align="end"` | Footer button row. `align` accepts `start` / `center` / `end` / `between`. |
623
+
624
+ Both `Form` and `FormSection` accept `gap` (number → multiple of 4px, or any CSS length string) and `columns` (number → `repeat(N, minmax(0, 1fr))`, or any `grid-template-columns` string).
625
+
534
626
  ### Forms (zod) recipe
535
627
 
536
628
  Three levels of integration — pick the one that fits the form complexity.
@@ -1178,12 +1270,12 @@ The interface is intentionally tiny — any third-party SDK can be wrapped into
1178
1270
 
1179
1271
  ### Telemetry recipe
1180
1272
 
1181
- `TelemetryProvider` accepts an adapter matching `TelemetryAdapter` (`identify`, `track`, `captureException`, `flush`). The default `consoleTelemetryAdapter` logs every event — useful for dev and tests.
1273
+ `TelemetryProvider` accepts an adapter matching `TelemetryAdapter` (`init?`, `identify`, `track`, `captureException`, `flush?`). The bundled `consoleTelemetryAdapter` logs every event — useful for dev and tests.
1182
1274
 
1183
1275
  ```tsx
1184
1276
  import { TelemetryProvider, useTelemetry, consoleTelemetryAdapter } from "tempest-react-sdk";
1185
1277
 
1186
- <TelemetryProvider adapter={consoleTelemetryAdapter()}>
1278
+ <TelemetryProvider adapter={consoleTelemetryAdapter}>
1187
1279
  <App />
1188
1280
  </TelemetryProvider>;
1189
1281
 
@@ -1192,7 +1284,7 @@ function CheckoutForm() {
1192
1284
  return (
1193
1285
  <Button
1194
1286
  onClick={() => {
1195
- telemetry.track("checkout.completed", { total: 100 });
1287
+ telemetry?.track({ name: "checkout.completed", properties: { total: 100 } });
1196
1288
  }}
1197
1289
  >
1198
1290
  Pagar
@@ -1201,7 +1293,43 @@ function CheckoutForm() {
1201
1293
  }
1202
1294
  ```
1203
1295
 
1204
- Concrete adapters for Sentry / PostHog / Datadog are part of the v0.2 roadmap for now you can write one in ~20 lines (see [`docs/telemetry.md`](./docs/telemetry.md)).
1296
+ `useTelemetry()` returns `null` when no provider is mountedcall sites should optional-chain (`telemetry?.track(...)`).
1297
+
1298
+ **Sentry adapter** — wraps `@sentry/browser` so the SDK never depends on Sentry directly. The Sentry namespace is supplied by the caller; if the app already initialises Sentry at startup, just pass that instance.
1299
+
1300
+ ```ts
1301
+ import * as Sentry from "@sentry/browser";
1302
+ import { createSentryTelemetryAdapter, TelemetryProvider } from "tempest-react-sdk";
1303
+
1304
+ const adapter = createSentryTelemetryAdapter({
1305
+ sentry: Sentry,
1306
+ initOptions: {
1307
+ dsn: import.meta.env.VITE_SENTRY_DSN,
1308
+ environment: import.meta.env.MODE,
1309
+ tracesSampleRate: 0.1,
1310
+ },
1311
+ flushTimeout: 2000,
1312
+ breadcrumbCategory: "app",
1313
+ });
1314
+
1315
+ <TelemetryProvider adapter={adapter}>
1316
+ <App />
1317
+ </TelemetryProvider>;
1318
+ ```
1319
+
1320
+ Mapping:
1321
+
1322
+ | `TelemetryAdapter` call | `@sentry/browser` API |
1323
+ | -------------------------------- | ------------------------------------------------------------------ |
1324
+ | `init()` | `Sentry.init(initOptions)` (only when `initOptions` is provided) |
1325
+ | `identify(user)` | `Sentry.setUser({ id, email, username, ...traits })` |
1326
+ | `track({ name, properties })` | `Sentry.addBreadcrumb({ category, message, level: "info", data })` |
1327
+ | `captureException(err, context)` | `Sentry.captureException(err, { extra: context })` |
1328
+ | `flush()` | `Sentry.flush(flushTimeout)` |
1329
+
1330
+ `@sentry/browser` is **not** declared as a peer dep — the adapter only ever touches the namespace you hand it, so apps that don't use Sentry never pay for it. Install Sentry yourself when you opt in: `npm install @sentry/browser`.
1331
+
1332
+ Concrete adapters for PostHog / Datadog / GrowthBook are part of the v0.2 roadmap — for now you can write one in ~20 lines following the Sentry adapter as a template.
1205
1333
 
1206
1334
  ### Logger recipe
1207
1335
 
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ import { default as default_2 } from 'dexie';
6
6
  import { DefaultOptions } from '@tanstack/react-query';
7
7
  import { ErrorInfo } from 'react';
8
8
  import { FieldValues } from 'react-hook-form';
9
+ import { FormHTMLAttributes } from 'react';
9
10
  import { ForwardRefExoticComponent } from 'react';
10
11
  import { HTMLAttributes } from 'react';
11
12
  import { InputHTMLAttributes } from 'react';
@@ -485,6 +486,42 @@ export declare function createQueryKeys<TKey extends string, TEntries extends Re
485
486
  */
486
487
  export declare function createRefreshQueue(refresh: () => Promise<void>): () => Promise<void>;
487
488
 
489
+ /**
490
+ * Build a [[TelemetryAdapter]] backed by `@sentry/browser`. The Sentry SDK
491
+ * is supplied by the caller (not bundled) so apps that already initialise
492
+ * Sentry at startup can share that instance — and apps that don't use
493
+ * Sentry never pay for it.
494
+ *
495
+ * Mapping:
496
+ * - `identify(user)` → `Sentry.setUser`
497
+ * - `track(event)` → `Sentry.addBreadcrumb({ category, message: event.name, data })`
498
+ * - `captureException(err, ctx)` → `Sentry.captureException(err, { extra: ctx })`
499
+ * - `flush()` → `Sentry.flush(flushTimeout)`
500
+ *
501
+ * @example
502
+ * import * as Sentry from "@sentry/browser";
503
+ * import { createSentryTelemetryAdapter, TelemetryProvider } from "tempest-react-sdk";
504
+ *
505
+ * const adapter = createSentryTelemetryAdapter({
506
+ * sentry: Sentry,
507
+ * initOptions: { dsn: import.meta.env.VITE_SENTRY_DSN, tracesSampleRate: 0.1 },
508
+ * });
509
+ *
510
+ * <TelemetryProvider adapter={adapter}><App /></TelemetryProvider>;
511
+ */
512
+ export declare function createSentryTelemetryAdapter(options: CreateSentryTelemetryAdapterOptions): TelemetryAdapter;
513
+
514
+ export declare interface CreateSentryTelemetryAdapterOptions {
515
+ /** The Sentry browser SDK namespace. Required. */
516
+ sentry: SentryLike;
517
+ /** Optional init payload — passed verbatim to `Sentry.init` when the provider mounts. */
518
+ initOptions?: Record<string, unknown>;
519
+ /** Flush timeout in ms (default `2000`). */
520
+ flushTimeout?: number;
521
+ /** Breadcrumb category for `track` events (default `"app"`). */
522
+ breadcrumbCategory?: string;
523
+ }
524
+
488
525
  /**
489
526
  * Open a WebSocket with automatic exponential-backoff reconnect, optional
490
527
  * heartbeat pings, and typed JSON parsing.
@@ -735,6 +772,42 @@ export declare type FilterPredicate<T> = (item: T, search: string) => boolean;
735
772
 
736
773
  export declare type FlagValue = boolean | string | number | null;
737
774
 
775
+ /**
776
+ * Form wrapper with a built-in layout variant. Replaces ad-hoc `<form>` +
777
+ * `<Stack>` / `<Grid>` boilerplate; pair with [[FormRow]], [[FormSection]],
778
+ * and [[FormActions]] for richer layouts.
779
+ *
780
+ * @example
781
+ * <Form layout="grid" columns={2} gap={4} onSubmit={form.handleSubmit(save)}>
782
+ * <Input label="Nome" {...form.register("name")} />
783
+ * <Input label="Email" {...form.register("email")} />
784
+ * <FormActions align="end">
785
+ * <Button type="submit">Salvar</Button>
786
+ * </FormActions>
787
+ * </Form>
788
+ */
789
+ export declare const Form: ForwardRefExoticComponent<FormProps & RefAttributes<HTMLFormElement>>;
790
+
791
+ /**
792
+ * Footer button row for a form. Use inside (or after) [[Form]] / [[FormSection]].
793
+ *
794
+ * @example
795
+ * <FormActions align="end">
796
+ * <Button variant="ghost" onClick={onCancel}>Cancelar</Button>
797
+ * <Button type="submit" loading={form.formState.isSubmitting}>Salvar</Button>
798
+ * </FormActions>
799
+ */
800
+ export declare function FormActions({ align, gap, className, style, children, ...props }: FormActionsProps): JSX.Element;
801
+
802
+ export declare type FormActionsAlign = "start" | "center" | "end" | "between";
803
+
804
+ export declare interface FormActionsProps extends HTMLAttributes<HTMLDivElement> {
805
+ /** Horizontal alignment of buttons. Default `end`. */
806
+ align?: FormActionsAlign;
807
+ /** Gap between buttons. Numbers map to a multiple of the 4px scale (default `2` → 8px). */
808
+ gap?: number | string;
809
+ }
810
+
738
811
  /** Format an 11-digit Brazilian CEP-like value as `00000-000`. */
739
812
  export declare function formatCEP(value: string): string;
740
813
 
@@ -789,6 +862,51 @@ export declare function formatPercent(value: number): string;
789
862
  */
790
863
  export declare function formatPhone(value: string): string;
791
864
 
865
+ export declare type FormLayout = "stack" | "inline" | "grid";
866
+
867
+ export declare interface FormProps extends FormHTMLAttributes<HTMLFormElement>, LayoutProps {
868
+ }
869
+
870
+ /**
871
+ * Forces a horizontal row regardless of parent layout — useful for grouping
872
+ * two short fields side-by-side inside an otherwise stacked form (e.g. CEP +
873
+ * city, expiry month + year).
874
+ *
875
+ * @example
876
+ * <Form layout="stack">
877
+ * <FormRow>
878
+ * <Input label="CEP" />
879
+ * <Input label="Cidade" />
880
+ * </FormRow>
881
+ * <Input label="Endereço completo" />
882
+ * </Form>
883
+ */
884
+ export declare function FormRow({ gap, className, style, children, ...props }: FormRowProps): JSX.Element;
885
+
886
+ export declare interface FormRowProps extends HTMLAttributes<HTMLDivElement> {
887
+ /** Gap between row items. Numbers map to a multiple of the 4px scale (default `3` → 12px). */
888
+ gap?: number | string;
889
+ }
890
+
891
+ /**
892
+ * Visually grouped subset of fields with an optional title and description.
893
+ * Has its own `layout`/`columns`/`gap` so subsets can stack while the parent
894
+ * grids (or vice versa).
895
+ *
896
+ * @example
897
+ * <FormSection title="Endereço" description="Usado para entrega" layout="grid" columns={3}>
898
+ * <Input label="CEP" />
899
+ * <Input label="Rua" />
900
+ * <Input label="Número" />
901
+ * </FormSection>
902
+ */
903
+ export declare function FormSection({ title, description, layout, columns, gap, className, style, children, ...props }: FormSectionProps): JSX.Element;
904
+
905
+ export declare interface FormSectionProps extends Omit<HTMLAttributes<HTMLElement>, "title">, LayoutProps {
906
+ title?: ReactNode;
907
+ description?: ReactNode;
908
+ }
909
+
792
910
  /**
793
911
  * Generate an RFC4122 v4 idempotency key (UUID). Use as the value for an
794
912
  * `Idempotency-Key` header on POST/PATCH requests that must not run twice.
@@ -963,6 +1081,15 @@ export declare interface KeyboardShortcut {
963
1081
 
964
1082
  declare type KeyBuilder = (...args: any[]) => readonly unknown[];
965
1083
 
1084
+ declare interface LayoutProps {
1085
+ /** Field arrangement. `stack` stacks fields vertically, `inline` lines them up in a wrapping row, `grid` arranges them in `columns` equal-width tracks. Default `stack`. */
1086
+ layout?: FormLayout;
1087
+ /** Number of columns when `layout="grid"`, or a custom `grid-template-columns` value. Default `2`. */
1088
+ columns?: number | string;
1089
+ /** Gap between fields. Numbers map to a multiple of the 4px scale (default `4` → 16px). */
1090
+ gap?: number | string;
1091
+ }
1092
+
966
1093
  /**
967
1094
  * Wrap `React.lazy` with automatic retry. Common cause of failure:
968
1095
  * deployed-then-cached `index.html` references chunk filenames that no
@@ -1387,6 +1514,27 @@ export declare interface SelectProps extends SelectHTMLAttributes<HTMLSelectElem
1387
1514
  wrapperClassName?: string;
1388
1515
  }
1389
1516
 
1517
+ /**
1518
+ * Minimal subset of `@sentry/browser` used by the adapter. Lets you pass
1519
+ * either the real SDK module (`import * as Sentry from "@sentry/browser"`)
1520
+ * or a stubbed object in tests.
1521
+ */
1522
+ export declare interface SentryLike {
1523
+ init?: (options: Record<string, unknown>) => void;
1524
+ setUser: (user: Record<string, unknown> | null) => void;
1525
+ addBreadcrumb: (breadcrumb: {
1526
+ category?: string;
1527
+ message?: string;
1528
+ level?: string;
1529
+ data?: Record<string, unknown>;
1530
+ }) => void;
1531
+ captureException: (error: unknown, hint?: {
1532
+ extra?: Record<string, unknown>;
1533
+ contexts?: Record<string, unknown>;
1534
+ }) => void;
1535
+ flush?: (timeout?: number) => Promise<boolean>;
1536
+ }
1537
+
1390
1538
  /**
1391
1539
  * Wrap the Web Share API with a uniform result object. Falls through to
1392
1540
  * `unsupported: true` when the browser lacks `navigator.share`, leaving the
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- .tempest_avatar_3xMuZ{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--tempest-surface-2);color:var(--tempest-text);overflow:hidden;font-weight:600;text-transform:uppercase;flex-shrink:0;-webkit-user-select:none;user-select:none}.tempest_image_ieqGp{width:100%;height:100%;object-fit:cover}.tempest_xs_oSaLL{width:24px;height:24px;font-size:10px}.tempest_sm_sZ2bk{width:32px;height:32px;font-size:12px}.tempest_md_Fdkbz{width:40px;height:40px;font-size:14px}.tempest_lg_pTTUA{width:56px;height:56px;font-size:18px}.tempest_xl_mW58F{width:80px;height:80px;font-size:24px}.tempest_status_ISBnL{position:relative}.tempest_dot_Wgfo-{position:absolute;bottom:0;right:0;width:28%;height:28%;border-radius:50%;border:2px solid var(--tempest-bg)}.tempest_dot_Wgfo-.tempest_online_-aWoW{background-color:var(--tempest-success)}.tempest_dot_Wgfo-.tempest_offline_-StX3{background-color:var(--tempest-text-subtle)}.tempest_dot_Wgfo-.tempest_busy_TbwuF{background-color:var(--tempest-danger)}.tempest_badge_RsuMz{display:inline-flex;align-items:center;gap:var(--tempest-space-1);padding:2px 8px;border-radius:var(--tempest-radius-full);font-size:12px;font-weight:600;line-height:1.4}.tempest_neutral_lulSm{background-color:var(--tempest-surface-2);color:var(--tempest-text)}.tempest_success_u9JiS{background-color:var(--tempest-success-bg);color:var(--tempest-success)}.tempest_warning_nsGp-{background-color:var(--tempest-warning-bg);color:var(--tempest-warning)}.tempest_danger_PD2hz{background-color:var(--tempest-danger-bg);color:var(--tempest-danger)}.tempest_info_na6DQ{background-color:var(--tempest-info-bg);color:var(--tempest-info)}.tempest_nav_H4g6P{display:flex;align-items:center;gap:var(--tempest-space-1);font-size:13px;color:var(--tempest-text-muted);flex-wrap:wrap}.tempest_item_O4g3P{display:inline-flex;align-items:center;gap:var(--tempest-space-1)}.tempest_link_7WM67{color:var(--tempest-text-muted);text-decoration:none;padding:2px 4px;border-radius:var(--tempest-radius-sm)}.tempest_link_7WM67:hover{color:var(--tempest-text);background-color:var(--tempest-surface)}.tempest_current_JdlcS{color:var(--tempest-text);font-weight:600}.tempest_separator_zGWyJ{color:var(--tempest-text-subtle);margin:0 2px}.tempest_button_2ZuB7{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--tempest-space-2);border:1px solid transparent;border-radius:var(--tempest-radius-md);font-weight:600;line-height:1;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .05s ease;-webkit-user-select:none;user-select:none}.tempest_button_2ZuB7:focus-visible{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_button_2ZuB7:active:not(:disabled){transform:translateY(1px)}.tempest_button_2ZuB7:disabled{opacity:.55}.tempest_primary_s1sM6{background-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_primary_s1sM6:hover:not(:disabled){background-color:var(--tempest-primary-hover)}.tempest_secondary_R0waJ{background-color:var(--tempest-surface);color:var(--tempest-text);border-color:var(--tempest-border)}.tempest_secondary_R0waJ:hover:not(:disabled){background-color:var(--tempest-surface-2)}.tempest_danger_V4fX8{background-color:var(--tempest-danger);color:#fff}.tempest_danger_V4fX8:hover:not(:disabled){background-color:#991b1b}.tempest_ghost_1KINV{background-color:transparent;color:var(--tempest-text)}.tempest_ghost_1KINV:hover:not(:disabled){background-color:var(--tempest-surface)}.tempest_sm_NhG0g{height:32px;padding:0 var(--tempest-space-3);font-size:13px}.tempest_md_hH4h3{height:40px;padding:0 var(--tempest-space-4);font-size:14px}.tempest_lg_2plQf{height:48px;padding:0 var(--tempest-space-5);font-size:16px}.tempest_fullWidth_36oJT{width:100%}.tempest_loading_EQAt2 .tempest_hiddenText_hIiJ2{visibility:hidden}.tempest_spinner_ZExvW{position:absolute;animation:tempest_tempest-spin_UOSVC .8s linear infinite}@keyframes tempest_tempest-spin_UOSVC{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tempest_card_Cb1o4{background-color:var(--tempest-bg);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);padding:var(--tempest-space-5);box-shadow:var(--tempest-shadow-sm)}.tempest_padded_oOxwN{padding:var(--tempest-space-5)}.tempest_flush_aiDZi{padding:0}.tempest_header_PTXf2{display:flex;align-items:center;justify-content:space-between;padding:var(--tempest-space-4) var(--tempest-space-5);border-bottom:1px solid var(--tempest-border)}.tempest_title_mSgoo{margin:0;font-size:15px;font-weight:600;color:var(--tempest-text)}.tempest_body_W441Z{padding:var(--tempest-space-5)}.tempest_wrapper_rpthW{display:inline-flex;align-items:flex-start;gap:var(--tempest-space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.tempest_wrapper_rpthW.tempest_disabled_x7-eg{cursor:not-allowed;opacity:.6}.tempest_input_2kt-h{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.tempest_box_OCPee{flex-shrink:0;width:18px;height:18px;border:1.5px solid var(--tempest-border-strong);border-radius:var(--tempest-radius-sm);background-color:var(--tempest-bg);display:inline-flex;align-items:center;justify-content:center;color:transparent;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.tempest_input_2kt-h:focus-visible+.tempest_box_OCPee{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_input_2kt-h:checked+.tempest_box_OCPee{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_input_2kt-h:indeterminate+.tempest_box_OCPee{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_labelWrap_Ktbp0{display:flex;flex-direction:column;gap:2px;line-height:1.3}.tempest_label_cwRtI{font-size:14px;color:var(--tempest-text)}.tempest_description_rMhG1{font-size:12px;color:var(--tempest-text-muted)}.tempest_wrapper_KR4-F{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_Mz-wX{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_field_iIBJw{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tempest-space-1);padding:4px var(--tempest-space-2);min-height:40px;border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);cursor:text}.tempest_field_iIBJw:focus-within{border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_wrapper_KR4-F.tempest_error_O9n-9 .tempest_field_iIBJw{border-color:var(--tempest-danger)}.tempest_chip_GEwrc{display:inline-flex;align-items:center;gap:4px;background-color:var(--tempest-surface-2);color:var(--tempest-text);padding:2px 4px 2px 8px;border-radius:var(--tempest-radius-full);font-size:12px;font-weight:600}.tempest_remove_JYDIq{background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%}.tempest_remove_JYDIq:hover{background-color:#0000001a}.tempest_input_frJmk{border:none;outline:none;background:transparent;flex:1;min-width:80px;font-size:14px;color:var(--tempest-text)}.tempest_helper_Yts53{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_llJGq{font-size:12px;color:var(--tempest-danger)}.tempest_overlay_dd9h1{position:fixed;inset:0;background-color:#0f172a80;display:flex;align-items:center;justify-content:center;padding:var(--tempest-space-4);z-index:var(--tempest-z-modal);animation:tempest_tempest-fade-in_DvgSp .15s ease-out}.tempest_dialog_ptM-K{background-color:var(--tempest-bg);color:var(--tempest-text);border-radius:var(--tempest-radius-lg);box-shadow:var(--tempest-shadow-lg);width:100%;max-height:90vh;display:flex;flex-direction:column;animation:tempest_tempest-modal-in_UoxQC .15s ease-out}.tempest_sm_K5k3W{max-width:400px}.tempest_md_gvyR7{max-width:560px}.tempest_lg_BgB1a{max-width:800px}.tempest_xl_MR-68{max-width:1024px}.tempest_header_ILG9i{display:flex;align-items:center;justify-content:space-between;padding:var(--tempest-space-4) var(--tempest-space-5);border-bottom:1px solid var(--tempest-border)}.tempest_title_A5OeE{margin:0;font-size:16px;font-weight:600}.tempest_close_-ER1C{background:none;border:none;color:var(--tempest-text-muted);padding:var(--tempest-space-1);border-radius:var(--tempest-radius-sm);display:flex;align-items:center;justify-content:center}.tempest_close_-ER1C:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}.tempest_body_lVhql{padding:var(--tempest-space-5);overflow-y:auto}.tempest_footer_rro2w{display:flex;justify-content:flex-end;gap:var(--tempest-space-2);padding:var(--tempest-space-4) var(--tempest-space-5);border-top:1px solid var(--tempest-border)}@keyframes tempest_tempest-fade-in_DvgSp{0%{opacity:0}to{opacity:1}}@keyframes tempest_tempest-modal-in_UoxQC{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.tempest_wrapper_iHNUs{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_-OEBL{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_required_CTss-{color:var(--tempest-danger);margin-left:2px}.tempest_field_65yGJ{position:relative;display:flex;align-items:center}.tempest_input_WjT81{width:100%;height:40px;padding:0 var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}.tempest_input_WjT81::placeholder{color:var(--tempest-text-subtle)}.tempest_input_WjT81:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_input_WjT81:disabled{background-color:var(--tempest-surface);cursor:not-allowed;color:var(--tempest-text-muted)}.tempest_hasLeftIcon_xYO-v{padding-left:36px}.tempest_hasRightIcon_C7uyr{padding-right:36px}.tempest_iconLeft_KrUhI,.tempest_iconRight_Ssr47{position:absolute;display:flex;align-items:center;color:var(--tempest-text-muted);pointer-events:none}.tempest_iconLeft_KrUhI{left:12px}.tempest_iconRight_Ssr47{right:12px}.tempest_error_VLISa .tempest_input_WjT81{border-color:var(--tempest-danger)}.tempest_error_VLISa .tempest_input_WjT81:focus{box-shadow:0 0 0 3px #b91c1c2e}.tempest_helper_7Vc-s{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_xz4xS{font-size:12px;color:var(--tempest-danger)}.tempest_overlay_hcG1G{position:fixed;inset:0;background-color:#0f172a73;z-index:var(--tempest-z-modal);animation:tempest_tempest-drawer-overlay_XFbxY .15s ease-out}.tempest_panel_wUX0N{position:fixed;top:0;bottom:0;background-color:var(--tempest-bg);color:var(--tempest-text);box-shadow:var(--tempest-shadow-lg);display:flex;flex-direction:column;z-index:calc(var(--tempest-z-modal) + 1);animation-duration:.22s;animation-timing-function:ease-out;animation-fill-mode:both}.tempest_right_-oX-6{right:0;width:min(420px,92vw);animation-name:tempest_tempest-drawer-in-right_pWYHv}.tempest_left_xi3nD{left:0;width:min(420px,92vw);animation-name:tempest_tempest-drawer-in-left_o7JSb}.tempest_top_7rGCn{inset:0 0 auto;height:min(70vh,480px);animation-name:tempest_tempest-drawer-in-top_kn6AF}.tempest_bottom_zd-25{inset:auto 0 0;height:min(70vh,480px);animation-name:tempest_tempest-drawer-in-bottom_0x3u7}.tempest_header_sYoP1{display:flex;align-items:center;justify-content:space-between;padding:var(--tempest-space-4) var(--tempest-space-5);border-bottom:1px solid var(--tempest-border)}.tempest_title_LqUOu{margin:0;font-size:16px;font-weight:600}.tempest_close_tYPhU{background:none;border:none;color:var(--tempest-text-muted);padding:var(--tempest-space-1);border-radius:var(--tempest-radius-sm);display:flex;align-items:center}.tempest_close_tYPhU:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}.tempest_body_aV9FG{padding:var(--tempest-space-5);overflow-y:auto;flex:1}.tempest_footer_AuvUP{display:flex;justify-content:flex-end;gap:var(--tempest-space-2);padding:var(--tempest-space-4) var(--tempest-space-5);border-top:1px solid var(--tempest-border)}@keyframes tempest_tempest-drawer-overlay_XFbxY{0%{opacity:0}to{opacity:1}}@keyframes tempest_tempest-drawer-in-right_pWYHv{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes tempest_tempest-drawer-in-left_o7JSb{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes tempest_tempest-drawer-in-top_kn6AF{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes tempest_tempest-drawer-in-bottom_0x3u7{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tempest_wrapper_gzyTd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--tempest-space-3);padding:var(--tempest-space-8) var(--tempest-space-4);text-align:center;color:var(--tempest-text-muted)}.tempest_icon_qVCyh{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--tempest-radius-full);background-color:var(--tempest-surface);color:var(--tempest-text-muted)}.tempest_title_xPfUf{margin:0;font-size:16px;font-weight:600;color:var(--tempest-text)}.tempest_description_oWwH1{margin:0;font-size:14px;color:var(--tempest-text-muted);max-width:480px}.tempest_action_dqxw1{margin-top:var(--tempest-space-2)}.tempest_wrapper_luRyF{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--tempest-space-3);padding:var(--tempest-space-8) var(--tempest-space-4);text-align:center}.tempest_icon_dEdBl{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--tempest-radius-full);background-color:var(--tempest-danger-bg);color:var(--tempest-danger)}.tempest_title_StutD{margin:0;font-size:16px;font-weight:600;color:var(--tempest-text)}.tempest_description_A2XCb{margin:0;font-size:14px;color:var(--tempest-text-muted);max-width:480px}.tempest_action_vm1LC{margin-top:var(--tempest-space-2)}.tempest_wrapper_E0qHs{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_lbMkx{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_dropzone_jqua0{border:2px dashed var(--tempest-border-strong);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-surface);padding:var(--tempest-space-6) var(--tempest-space-5);text-align:center;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.tempest_dropzone_jqua0:hover{border-color:var(--tempest-primary)}.tempest_dropzone_jqua0.tempest_active_CG9Uk{border-color:var(--tempest-primary);background-color:#0066ff0f}.tempest_dropzone_jqua0.tempest_disabled_WNUUl{opacity:.6;cursor:not-allowed}.tempest_icon_i9fGH{color:var(--tempest-text-muted);margin-bottom:var(--tempest-space-2)}.tempest_title_bTVFl{font-weight:600;color:var(--tempest-text);font-size:14px;margin:0}.tempest_subtitle_S54OV{color:var(--tempest-text-muted);font-size:12px;margin:var(--tempest-space-1) 0 0}.tempest_files_WljYm{margin-top:var(--tempest-space-3);display:flex;flex-direction:column;gap:var(--tempest-space-2)}.tempest_file_Lp-dR{display:flex;align-items:center;justify-content:space-between;gap:var(--tempest-space-3);padding:var(--tempest-space-2) var(--tempest-space-3);background-color:var(--tempest-bg);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);font-size:13px}.tempest_fileMeta_LTnN2{color:var(--tempest-text-muted);font-size:11px}.tempest_remove_jskra{background:none;border:none;color:var(--tempest-text-muted);cursor:pointer;padding:4px;border-radius:var(--tempest-radius-sm)}.tempest_remove_jskra:hover{background-color:var(--tempest-surface);color:var(--tempest-danger)}.tempest_hidden_ReEq6{display:none}.tempest_container_fJfOt{margin-left:auto;margin-right:auto;padding-left:var(--tempest-space-4);padding-right:var(--tempest-space-4);width:100%}.tempest_container_fJfOt.tempest_sm_k8D4-{max-width:640px}.tempest_container_fJfOt.tempest_md_EnpYy{max-width:768px}.tempest_container_fJfOt.tempest_lg_UU-Ig{max-width:1024px}.tempest_container_fJfOt.tempest_xl_2TEWj{max-width:1280px}.tempest_container_fJfOt.tempest_full_l8bvG{max-width:100%}.tempest_stack_sxR8u{display:flex}.tempest_stack_sxR8u.tempest_vertical_2TMf5{flex-direction:column}.tempest_stack_sxR8u.tempest_horizontal_r7-c-{flex-direction:row}.tempest_stack_sxR8u.tempest_center_EDSAh{align-items:center}.tempest_stack_sxR8u.tempest_start_ucQ-K{align-items:flex-start}.tempest_stack_sxR8u.tempest_end_pnKlF{align-items:flex-end}.tempest_stack_sxR8u.tempest_stretch_pX6l7{align-items:stretch}.tempest_stack_sxR8u.tempest_justifyStart_lHYsS{justify-content:flex-start}.tempest_stack_sxR8u.tempest_justifyCenter_JH2m6{justify-content:center}.tempest_stack_sxR8u.tempest_justifyEnd_EBisT{justify-content:flex-end}.tempest_stack_sxR8u.tempest_justifyBetween_mAJwT{justify-content:space-between}.tempest_stack_sxR8u.tempest_wrap_-xxOh{flex-wrap:wrap}.tempest_grid_o-JIX{display:grid;width:100%}.tempest_wrapper_cRGQm{display:flex;align-items:center;justify-content:space-between;gap:var(--tempest-space-3);padding:var(--tempest-space-3) 0;font-size:13px;color:var(--tempest-text-muted);flex-wrap:wrap}.tempest_controls_fdL-y{display:flex;align-items:center;gap:var(--tempest-space-1)}.tempest_page_WjG0l{min-width:32px;height:32px;padding:0 var(--tempest-space-2);border:1px solid var(--tempest-border);background-color:var(--tempest-bg);color:var(--tempest-text);border-radius:var(--tempest-radius-md);font-size:13px;font-weight:500}.tempest_page_WjG0l:hover:not(:disabled){background-color:var(--tempest-surface)}.tempest_page_WjG0l:disabled{opacity:.5}.tempest_active_1kqsJ{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_active_1kqsJ:hover{background-color:var(--tempest-primary-hover)}.tempest_ellipsis_V294k{padding:0 var(--tempest-space-2);color:var(--tempest-text-subtle)}.tempest_sizeSelect_ZayTo{height:32px;padding:0 var(--tempest-space-2);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:13px}.tempest_wrapper_BQek1{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_bar_uC-0x{width:100%;height:8px;background-color:var(--tempest-surface-2);border-radius:var(--tempest-radius-full);overflow:hidden}.tempest_fill_vmg7x{height:100%;background-color:var(--tempest-primary);border-radius:inherit;transition:width .18s ease}.tempest_fill_vmg7x.tempest_success_gWJ8U{background-color:var(--tempest-success)}.tempest_fill_vmg7x.tempest_warning_DGkPO{background-color:var(--tempest-warning)}.tempest_fill_vmg7x.tempest_danger_gfwHh{background-color:var(--tempest-danger)}.tempest_indeterminate_HojUj .tempest_fill_vmg7x{width:30%!important;animation:tempest_tempest-progress-loop_0nEdF 1.4s ease-in-out infinite}.tempest_label_qqHJM{font-size:12px;color:var(--tempest-text-muted);display:flex;justify-content:space-between}@keyframes tempest_tempest-progress-loop_0nEdF{0%{transform:translate(-100%)}to{transform:translate(360%)}}.tempest_wrapper_P-gFm{display:inline-flex;align-items:flex-start;gap:var(--tempest-space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.tempest_wrapper_P-gFm.tempest_disabled_0-cna{cursor:not-allowed;opacity:.6}.tempest_input_7R8ZN{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.tempest_dot_P7ejP{flex-shrink:0;width:18px;height:18px;border:1.5px solid var(--tempest-border-strong);border-radius:50%;background-color:var(--tempest-bg);display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s ease}.tempest_dot_P7ejP:after{content:"";width:10px;height:10px;border-radius:50%;background-color:var(--tempest-primary);transform:scale(0);transition:transform .15s ease}.tempest_input_7R8ZN:checked+.tempest_dot_P7ejP{border-color:var(--tempest-primary)}.tempest_input_7R8ZN:checked+.tempest_dot_P7ejP:after{transform:scale(1)}.tempest_input_7R8ZN:focus-visible+.tempest_dot_P7ejP{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_labelWrap_iQ1HR{display:flex;flex-direction:column;gap:2px;line-height:1.3}.tempest_label_vAFIP{font-size:14px;color:var(--tempest-text)}.tempest_description_bEB8u{font-size:12px;color:var(--tempest-text-muted)}.tempest_group_oi329{display:flex;flex-direction:column;gap:var(--tempest-space-2)}.tempest_group_oi329.tempest_horizontal_1Ovgu{flex-direction:row;gap:var(--tempest-space-4);flex-wrap:wrap}.tempest_wrapper_dKXJJ{position:relative;width:100%;max-width:360px}.tempest_input_m0lPc{width:100%;height:40px;padding:0 36px;border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}.tempest_input_m0lPc:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_iconLeft_030-U,.tempest_clear_nb6lG{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;color:var(--tempest-text-muted)}.tempest_iconLeft_030-U{left:12px;pointer-events:none}.tempest_clear_nb6lG{right:8px;width:24px;height:24px;border:none;background:transparent;border-radius:var(--tempest-radius-full)}.tempest_clear_nb6lG:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}.tempest_wrapper_KS2K3{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_Lmgos{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_required_PvDVJ{color:var(--tempest-danger);margin-left:2px}.tempest_field_h-wBy{position:relative;display:flex;align-items:center}.tempest_select_cjdcr{width:100%;height:40px;padding:0 36px 0 var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;appearance:none;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.tempest_select_cjdcr:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_select_cjdcr:disabled{background-color:var(--tempest-surface);cursor:not-allowed;color:var(--tempest-text-muted)}.tempest_caret_MdCao{position:absolute;right:12px;pointer-events:none;color:var(--tempest-text-muted)}.tempest_error_sw9MU .tempest_select_cjdcr{border-color:var(--tempest-danger)}.tempest_helper_frosK{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_-zd6i{font-size:12px;color:var(--tempest-danger)}.tempest_skeleton_CB4uF{display:block;background:linear-gradient(90deg,var(--tempest-surface) 0%,var(--tempest-surface-2) 50%,var(--tempest-surface) 100%);background-size:200% 100%;border-radius:var(--tempest-radius-md);animation:tempest_tempest-skeleton_H5Y8e 1.4s ease-in-out infinite}.tempest_text_-A8IF{height:14px;border-radius:var(--tempest-radius-sm)}.tempest_circle_DYcl8{border-radius:50%}@keyframes tempest_tempest-skeleton_H5Y8e{0%{background-position:200% 0}to{background-position:-200% 0}}.tempest_spinner_GpFZS{display:inline-block;border:2px solid var(--tempest-surface-2);border-top-color:var(--tempest-primary);border-radius:50%;animation:tempest_tempest-spinner_wKVCY .7s linear infinite}.tempest_sm_3sIoD{width:14px;height:14px}.tempest_md_M2sPj{width:20px;height:20px}.tempest_lg_IxTw2{width:32px;height:32px}@keyframes tempest_tempest-spinner_wKVCY{to{transform:rotate(360deg)}}.tempest_stepper_w3qjQ{display:flex;align-items:flex-start;gap:var(--tempest-space-2);width:100%}.tempest_stepper_w3qjQ.tempest_vertical_d4mOs{flex-direction:column;align-items:stretch}.tempest_step_s2nqL{display:flex;align-items:center;gap:var(--tempest-space-2);flex:1}.tempest_dot_d1bSL{width:28px;height:28px;border-radius:50%;border:2px solid var(--tempest-border-strong);background-color:var(--tempest-bg);color:var(--tempest-text-muted);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.tempest_step_s2nqL.tempest_completed_gcFHM .tempest_dot_d1bSL{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_step_s2nqL.tempest_active_kL-CH .tempest_dot_d1bSL{border-color:var(--tempest-primary);color:var(--tempest-primary)}.tempest_label_8irAI{font-size:13px;color:var(--tempest-text-muted);font-weight:600}.tempest_step_s2nqL.tempest_active_kL-CH .tempest_label_8irAI,.tempest_step_s2nqL.tempest_completed_gcFHM .tempest_label_8irAI{color:var(--tempest-text)}.tempest_connector_lyeWp{flex:1;height:2px;background-color:var(--tempest-border);margin:0 var(--tempest-space-1)}.tempest_connector_lyeWp.tempest_completed_gcFHM{background-color:var(--tempest-primary)}.tempest_stepper_w3qjQ.tempest_vertical_d4mOs .tempest_connector_lyeWp{width:2px;height:24px;margin:0 0 0 13px}.tempest_wrapper_kudO9{display:inline-flex;align-items:center;gap:var(--tempest-space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.tempest_wrapper_kudO9.tempest_disabled_2aZ0V{cursor:not-allowed;opacity:.6}.tempest_input_5BPNu{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.tempest_track_7ObdZ{width:36px;height:20px;background-color:var(--tempest-border-strong);border-radius:var(--tempest-radius-full);position:relative;transition:background-color .18s ease;flex-shrink:0}.tempest_thumb_-FTeK{position:absolute;top:2px;left:2px;width:16px;height:16px;background-color:#fff;border-radius:50%;box-shadow:var(--tempest-shadow-sm);transition:transform .18s ease}.tempest_input_5BPNu:checked+.tempest_track_7ObdZ{background-color:var(--tempest-primary)}.tempest_input_5BPNu:checked+.tempest_track_7ObdZ .tempest_thumb_-FTeK{transform:translate(16px)}.tempest_input_5BPNu:focus-visible+.tempest_track_7ObdZ{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_label_LrH7V{font-size:14px;color:var(--tempest-text)}.tempest_scroll_unrJp{width:100%;overflow-x:auto;border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-bg)}.tempest_table_Dkosn{width:100%;border-collapse:collapse;font-size:14px}.tempest_th_PNuEx,.tempest_td_jv9tA{padding:var(--tempest-space-3) var(--tempest-space-4);text-align:left;border-bottom:1px solid var(--tempest-border)}.tempest_th_PNuEx{background-color:var(--tempest-surface);color:var(--tempest-text-muted);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.tempest_tr_7UG8J:last-child .tempest_td_jv9tA{border-bottom:none}.tempest_tr_7UG8J.tempest_clickable_B6Si-{cursor:pointer}.tempest_tr_7UG8J.tempest_clickable_B6Si-:hover{background-color:var(--tempest-surface)}.tempest_alignRight_9hY0G{text-align:right}.tempest_alignCenter_YiUQy{text-align:center}.tempest_emptyRow_kdMiv{padding:var(--tempest-space-6);text-align:center;color:var(--tempest-text-muted)}.tempest_tablist_WR6ag{display:flex;gap:var(--tempest-space-1);border-bottom:1px solid var(--tempest-border);overflow-x:auto}.tempest_tab_IdDYc{background:transparent;border:none;padding:var(--tempest-space-3) var(--tempest-space-4);font-size:14px;font-weight:600;color:var(--tempest-text-muted);cursor:pointer;position:relative;white-space:nowrap;transition:color .15s ease}.tempest_tab_IdDYc:hover:not(:disabled){color:var(--tempest-text)}.tempest_tab_IdDYc.tempest_active_PTNtG{color:var(--tempest-primary)}.tempest_tab_IdDYc.tempest_active_PTNtG:after{content:"";position:absolute;left:var(--tempest-space-3);right:var(--tempest-space-3);bottom:-1px;height:2px;background-color:var(--tempest-primary);border-radius:var(--tempest-radius-sm) var(--tempest-radius-sm) 0 0}.tempest_tab_IdDYc:disabled{opacity:.5;cursor:not-allowed}.tempest_panel_08i9c{padding:var(--tempest-space-4) 0}.tempest_pill_lGuqn .tempest_tab_IdDYc{border-radius:var(--tempest-radius-full);padding:6px var(--tempest-space-3);font-size:13px}.tempest_pill_lGuqn .tempest_tab_IdDYc.tempest_active_PTNtG:after{display:none}.tempest_pill_lGuqn .tempest_tab_IdDYc.tempest_active_PTNtG{background-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_pill_lGuqn.tempest_tablist_WR6ag{border-bottom:none}.tempest_wrapper_C0gfg{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_cWLXP{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_required_rDZXE{color:var(--tempest-danger);margin-left:2px}.tempest_textarea_Z-y6g{width:100%;min-height:96px;padding:var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;font-family:inherit;resize:vertical;transition:border-color .15s ease,box-shadow .15s ease}.tempest_textarea_Z-y6g::placeholder{color:var(--tempest-text-subtle)}.tempest_textarea_Z-y6g:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_textarea_Z-y6g:disabled{background-color:var(--tempest-surface);cursor:not-allowed;color:var(--tempest-text-muted)}.tempest_error_NWC9f .tempest_textarea_Z-y6g{border-color:var(--tempest-danger)}.tempest_helper_gedut{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_ey07q{font-size:12px;color:var(--tempest-danger)}.tempest_trigger_Dmc5E{display:inline-flex;position:relative}.tempest_bubble_TPGHB{position:absolute;z-index:var(--tempest-z-dropdown);background-color:#11151c;color:#fff;padding:4px 8px;border-radius:var(--tempest-radius-sm);font-size:12px;white-space:nowrap;pointer-events:none;box-shadow:var(--tempest-shadow-md);animation:tempest_tempest-tooltip-in_csYeZ .12s ease-out}.tempest_top_m2tnn{bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.tempest_bottom_9Twz4{top:calc(100% + 8px);left:50%;transform:translate(-50%)}.tempest_left_UPdrG{right:calc(100% + 8px);top:50%;transform:translateY(-50%)}.tempest_right_CV--T{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}@keyframes tempest_tempest-tooltip-in_csYeZ{0%{opacity:0;transform:scale(.95) translate(var(--tempest-tx, 0),var(--tempest-ty, 0))}to{opacity:1}}.tempest_container_x4-Qm{position:fixed;top:var(--tempest-space-4);right:var(--tempest-space-4);display:flex;flex-direction:column;gap:var(--tempest-space-2);z-index:var(--tempest-z-toast);pointer-events:none}.tempest_toast_FLdHz{pointer-events:auto;display:flex;align-items:flex-start;gap:var(--tempest-space-3);padding:var(--tempest-space-3) var(--tempest-space-4);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);border:1px solid var(--tempest-border);box-shadow:var(--tempest-shadow-md);min-width:280px;max-width:420px;animation:tempest_tempest-toast-in_E2d-A .18s ease-out}.tempest_success_Oy694{border-left:4px solid var(--tempest-success)}.tempest_warning_84GC8{border-left:4px solid var(--tempest-warning)}.tempest_error_hrQAA{border-left:4px solid var(--tempest-danger)}.tempest_info_eq5bQ{border-left:4px solid var(--tempest-info)}.tempest_title_-H6R2{font-weight:600;font-size:14px;color:var(--tempest-text);margin:0}.tempest_description_-QwfC{font-size:13px;color:var(--tempest-text-muted);margin:2px 0 0}.tempest_close_i10-s{margin-left:auto;background:none;border:none;color:var(--tempest-text-muted);padding:4px;border-radius:var(--tempest-radius-sm);display:flex;align-items:center}.tempest_close_i10-s:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}@keyframes tempest_tempest-toast-in_E2d-A{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.tempest_scroll_8Giwl{position:relative;overflow:auto;width:100%}.tempest_spacer_P3Pvl{position:relative;width:100%}.tempest_row_Ff0VU{position:absolute;left:0;right:0}
1
+ .tempest_avatar_3xMuZ{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--tempest-surface-2);color:var(--tempest-text);overflow:hidden;font-weight:600;text-transform:uppercase;flex-shrink:0;-webkit-user-select:none;user-select:none}.tempest_image_ieqGp{width:100%;height:100%;object-fit:cover}.tempest_xs_oSaLL{width:24px;height:24px;font-size:10px}.tempest_sm_sZ2bk{width:32px;height:32px;font-size:12px}.tempest_md_Fdkbz{width:40px;height:40px;font-size:14px}.tempest_lg_pTTUA{width:56px;height:56px;font-size:18px}.tempest_xl_mW58F{width:80px;height:80px;font-size:24px}.tempest_status_ISBnL{position:relative}.tempest_dot_Wgfo-{position:absolute;bottom:0;right:0;width:28%;height:28%;border-radius:50%;border:2px solid var(--tempest-bg)}.tempest_dot_Wgfo-.tempest_online_-aWoW{background-color:var(--tempest-success)}.tempest_dot_Wgfo-.tempest_offline_-StX3{background-color:var(--tempest-text-subtle)}.tempest_dot_Wgfo-.tempest_busy_TbwuF{background-color:var(--tempest-danger)}.tempest_badge_RsuMz{display:inline-flex;align-items:center;gap:var(--tempest-space-1);padding:2px 8px;border-radius:var(--tempest-radius-full);font-size:12px;font-weight:600;line-height:1.4}.tempest_neutral_lulSm{background-color:var(--tempest-surface-2);color:var(--tempest-text)}.tempest_success_u9JiS{background-color:var(--tempest-success-bg);color:var(--tempest-success)}.tempest_warning_nsGp-{background-color:var(--tempest-warning-bg);color:var(--tempest-warning)}.tempest_danger_PD2hz{background-color:var(--tempest-danger-bg);color:var(--tempest-danger)}.tempest_info_na6DQ{background-color:var(--tempest-info-bg);color:var(--tempest-info)}.tempest_nav_H4g6P{display:flex;align-items:center;gap:var(--tempest-space-1);font-size:13px;color:var(--tempest-text-muted);flex-wrap:wrap}.tempest_item_O4g3P{display:inline-flex;align-items:center;gap:var(--tempest-space-1)}.tempest_link_7WM67{color:var(--tempest-text-muted);text-decoration:none;padding:2px 4px;border-radius:var(--tempest-radius-sm)}.tempest_link_7WM67:hover{color:var(--tempest-text);background-color:var(--tempest-surface)}.tempest_current_JdlcS{color:var(--tempest-text);font-weight:600}.tempest_separator_zGWyJ{color:var(--tempest-text-subtle);margin:0 2px}.tempest_button_2ZuB7{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--tempest-space-2);border:1px solid transparent;border-radius:var(--tempest-radius-md);font-weight:600;line-height:1;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .05s ease;-webkit-user-select:none;user-select:none}.tempest_button_2ZuB7:focus-visible{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_button_2ZuB7:active:not(:disabled){transform:translateY(1px)}.tempest_button_2ZuB7:disabled{opacity:.55}.tempest_primary_s1sM6{background-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_primary_s1sM6:hover:not(:disabled){background-color:var(--tempest-primary-hover)}.tempest_secondary_R0waJ{background-color:var(--tempest-surface);color:var(--tempest-text);border-color:var(--tempest-border)}.tempest_secondary_R0waJ:hover:not(:disabled){background-color:var(--tempest-surface-2)}.tempest_danger_V4fX8{background-color:var(--tempest-danger);color:#fff}.tempest_danger_V4fX8:hover:not(:disabled){background-color:#991b1b}.tempest_ghost_1KINV{background-color:transparent;color:var(--tempest-text)}.tempest_ghost_1KINV:hover:not(:disabled){background-color:var(--tempest-surface)}.tempest_sm_NhG0g{height:32px;padding:0 var(--tempest-space-3);font-size:13px}.tempest_md_hH4h3{height:40px;padding:0 var(--tempest-space-4);font-size:14px}.tempest_lg_2plQf{height:48px;padding:0 var(--tempest-space-5);font-size:16px}.tempest_fullWidth_36oJT{width:100%}.tempest_loading_EQAt2 .tempest_hiddenText_hIiJ2{visibility:hidden}.tempest_spinner_ZExvW{position:absolute;animation:tempest_tempest-spin_UOSVC .8s linear infinite}@keyframes tempest_tempest-spin_UOSVC{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tempest_card_Cb1o4{background-color:var(--tempest-bg);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);padding:var(--tempest-space-5);box-shadow:var(--tempest-shadow-sm)}.tempest_padded_oOxwN{padding:var(--tempest-space-5)}.tempest_flush_aiDZi{padding:0}.tempest_header_PTXf2{display:flex;align-items:center;justify-content:space-between;padding:var(--tempest-space-4) var(--tempest-space-5);border-bottom:1px solid var(--tempest-border)}.tempest_title_mSgoo{margin:0;font-size:15px;font-weight:600;color:var(--tempest-text)}.tempest_body_W441Z{padding:var(--tempest-space-5)}.tempest_wrapper_rpthW{display:inline-flex;align-items:flex-start;gap:var(--tempest-space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.tempest_wrapper_rpthW.tempest_disabled_x7-eg{cursor:not-allowed;opacity:.6}.tempest_input_2kt-h{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.tempest_box_OCPee{flex-shrink:0;width:18px;height:18px;border:1.5px solid var(--tempest-border-strong);border-radius:var(--tempest-radius-sm);background-color:var(--tempest-bg);display:inline-flex;align-items:center;justify-content:center;color:transparent;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.tempest_input_2kt-h:focus-visible+.tempest_box_OCPee{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_input_2kt-h:checked+.tempest_box_OCPee{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_input_2kt-h:indeterminate+.tempest_box_OCPee{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_labelWrap_Ktbp0{display:flex;flex-direction:column;gap:2px;line-height:1.3}.tempest_label_cwRtI{font-size:14px;color:var(--tempest-text)}.tempest_description_rMhG1{font-size:12px;color:var(--tempest-text-muted)}.tempest_wrapper_KR4-F{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_Mz-wX{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_field_iIBJw{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tempest-space-1);padding:4px var(--tempest-space-2);min-height:40px;border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);cursor:text}.tempest_field_iIBJw:focus-within{border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_wrapper_KR4-F.tempest_error_O9n-9 .tempest_field_iIBJw{border-color:var(--tempest-danger)}.tempest_chip_GEwrc{display:inline-flex;align-items:center;gap:4px;background-color:var(--tempest-surface-2);color:var(--tempest-text);padding:2px 4px 2px 8px;border-radius:var(--tempest-radius-full);font-size:12px;font-weight:600}.tempest_remove_JYDIq{background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%}.tempest_remove_JYDIq:hover{background-color:#0000001a}.tempest_input_frJmk{border:none;outline:none;background:transparent;flex:1;min-width:80px;font-size:14px;color:var(--tempest-text)}.tempest_helper_Yts53{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_llJGq{font-size:12px;color:var(--tempest-danger)}.tempest_overlay_dd9h1{position:fixed;inset:0;background-color:#0f172a80;display:flex;align-items:center;justify-content:center;padding:var(--tempest-space-4);z-index:var(--tempest-z-modal);animation:tempest_tempest-fade-in_DvgSp .15s ease-out}.tempest_dialog_ptM-K{background-color:var(--tempest-bg);color:var(--tempest-text);border-radius:var(--tempest-radius-lg);box-shadow:var(--tempest-shadow-lg);width:100%;max-height:90vh;display:flex;flex-direction:column;animation:tempest_tempest-modal-in_UoxQC .15s ease-out}.tempest_sm_K5k3W{max-width:400px}.tempest_md_gvyR7{max-width:560px}.tempest_lg_BgB1a{max-width:800px}.tempest_xl_MR-68{max-width:1024px}.tempest_header_ILG9i{display:flex;align-items:center;justify-content:space-between;padding:var(--tempest-space-4) var(--tempest-space-5);border-bottom:1px solid var(--tempest-border)}.tempest_title_A5OeE{margin:0;font-size:16px;font-weight:600}.tempest_close_-ER1C{background:none;border:none;color:var(--tempest-text-muted);padding:var(--tempest-space-1);border-radius:var(--tempest-radius-sm);display:flex;align-items:center;justify-content:center}.tempest_close_-ER1C:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}.tempest_body_lVhql{padding:var(--tempest-space-5);overflow-y:auto}.tempest_footer_rro2w{display:flex;justify-content:flex-end;gap:var(--tempest-space-2);padding:var(--tempest-space-4) var(--tempest-space-5);border-top:1px solid var(--tempest-border)}@keyframes tempest_tempest-fade-in_DvgSp{0%{opacity:0}to{opacity:1}}@keyframes tempest_tempest-modal-in_UoxQC{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.tempest_wrapper_iHNUs{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_-OEBL{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_required_CTss-{color:var(--tempest-danger);margin-left:2px}.tempest_field_65yGJ{position:relative;display:flex;align-items:center}.tempest_input_WjT81{width:100%;height:40px;padding:0 var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}.tempest_input_WjT81::placeholder{color:var(--tempest-text-subtle)}.tempest_input_WjT81:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_input_WjT81:disabled{background-color:var(--tempest-surface);cursor:not-allowed;color:var(--tempest-text-muted)}.tempest_hasLeftIcon_xYO-v{padding-left:36px}.tempest_hasRightIcon_C7uyr{padding-right:36px}.tempest_iconLeft_KrUhI,.tempest_iconRight_Ssr47{position:absolute;display:flex;align-items:center;color:var(--tempest-text-muted);pointer-events:none}.tempest_iconLeft_KrUhI{left:12px}.tempest_iconRight_Ssr47{right:12px}.tempest_error_VLISa .tempest_input_WjT81{border-color:var(--tempest-danger)}.tempest_error_VLISa .tempest_input_WjT81:focus{box-shadow:0 0 0 3px #b91c1c2e}.tempest_helper_7Vc-s{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_xz4xS{font-size:12px;color:var(--tempest-danger)}.tempest_overlay_hcG1G{position:fixed;inset:0;background-color:#0f172a73;z-index:var(--tempest-z-modal);animation:tempest_tempest-drawer-overlay_XFbxY .15s ease-out}.tempest_panel_wUX0N{position:fixed;top:0;bottom:0;background-color:var(--tempest-bg);color:var(--tempest-text);box-shadow:var(--tempest-shadow-lg);display:flex;flex-direction:column;z-index:calc(var(--tempest-z-modal) + 1);animation-duration:.22s;animation-timing-function:ease-out;animation-fill-mode:both}.tempest_right_-oX-6{right:0;width:min(420px,92vw);animation-name:tempest_tempest-drawer-in-right_pWYHv}.tempest_left_xi3nD{left:0;width:min(420px,92vw);animation-name:tempest_tempest-drawer-in-left_o7JSb}.tempest_top_7rGCn{inset:0 0 auto;height:min(70vh,480px);animation-name:tempest_tempest-drawer-in-top_kn6AF}.tempest_bottom_zd-25{inset:auto 0 0;height:min(70vh,480px);animation-name:tempest_tempest-drawer-in-bottom_0x3u7}.tempest_header_sYoP1{display:flex;align-items:center;justify-content:space-between;padding:var(--tempest-space-4) var(--tempest-space-5);border-bottom:1px solid var(--tempest-border)}.tempest_title_LqUOu{margin:0;font-size:16px;font-weight:600}.tempest_close_tYPhU{background:none;border:none;color:var(--tempest-text-muted);padding:var(--tempest-space-1);border-radius:var(--tempest-radius-sm);display:flex;align-items:center}.tempest_close_tYPhU:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}.tempest_body_aV9FG{padding:var(--tempest-space-5);overflow-y:auto;flex:1}.tempest_footer_AuvUP{display:flex;justify-content:flex-end;gap:var(--tempest-space-2);padding:var(--tempest-space-4) var(--tempest-space-5);border-top:1px solid var(--tempest-border)}@keyframes tempest_tempest-drawer-overlay_XFbxY{0%{opacity:0}to{opacity:1}}@keyframes tempest_tempest-drawer-in-right_pWYHv{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes tempest_tempest-drawer-in-left_o7JSb{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes tempest_tempest-drawer-in-top_kn6AF{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes tempest_tempest-drawer-in-bottom_0x3u7{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tempest_wrapper_gzyTd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--tempest-space-3);padding:var(--tempest-space-8) var(--tempest-space-4);text-align:center;color:var(--tempest-text-muted)}.tempest_icon_qVCyh{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--tempest-radius-full);background-color:var(--tempest-surface);color:var(--tempest-text-muted)}.tempest_title_xPfUf{margin:0;font-size:16px;font-weight:600;color:var(--tempest-text)}.tempest_description_oWwH1{margin:0;font-size:14px;color:var(--tempest-text-muted);max-width:480px}.tempest_action_dqxw1{margin-top:var(--tempest-space-2)}.tempest_wrapper_luRyF{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--tempest-space-3);padding:var(--tempest-space-8) var(--tempest-space-4);text-align:center}.tempest_icon_dEdBl{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--tempest-radius-full);background-color:var(--tempest-danger-bg);color:var(--tempest-danger)}.tempest_title_StutD{margin:0;font-size:16px;font-weight:600;color:var(--tempest-text)}.tempest_description_A2XCb{margin:0;font-size:14px;color:var(--tempest-text-muted);max-width:480px}.tempest_action_vm1LC{margin-top:var(--tempest-space-2)}.tempest_wrapper_E0qHs{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_lbMkx{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_dropzone_jqua0{border:2px dashed var(--tempest-border-strong);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-surface);padding:var(--tempest-space-6) var(--tempest-space-5);text-align:center;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.tempest_dropzone_jqua0:hover{border-color:var(--tempest-primary)}.tempest_dropzone_jqua0.tempest_active_CG9Uk{border-color:var(--tempest-primary);background-color:#0066ff0f}.tempest_dropzone_jqua0.tempest_disabled_WNUUl{opacity:.6;cursor:not-allowed}.tempest_icon_i9fGH{color:var(--tempest-text-muted);margin-bottom:var(--tempest-space-2)}.tempest_title_bTVFl{font-weight:600;color:var(--tempest-text);font-size:14px;margin:0}.tempest_subtitle_S54OV{color:var(--tempest-text-muted);font-size:12px;margin:var(--tempest-space-1) 0 0}.tempest_files_WljYm{margin-top:var(--tempest-space-3);display:flex;flex-direction:column;gap:var(--tempest-space-2)}.tempest_file_Lp-dR{display:flex;align-items:center;justify-content:space-between;gap:var(--tempest-space-3);padding:var(--tempest-space-2) var(--tempest-space-3);background-color:var(--tempest-bg);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);font-size:13px}.tempest_fileMeta_LTnN2{color:var(--tempest-text-muted);font-size:11px}.tempest_remove_jskra{background:none;border:none;color:var(--tempest-text-muted);cursor:pointer;padding:4px;border-radius:var(--tempest-radius-sm)}.tempest_remove_jskra:hover{background-color:var(--tempest-surface);color:var(--tempest-danger)}.tempest_hidden_ReEq6{display:none}.tempest_form_jNBDR{display:flex;width:100%}.tempest_form_jNBDR.tempest_stack_O1Hl-{flex-direction:column}.tempest_form_jNBDR.tempest_inline_LBQAv{flex-direction:row;align-items:flex-end;flex-wrap:wrap}.tempest_form_jNBDR.tempest_grid_-B86T{display:grid;width:100%}.tempest_section_HGqw3{display:flex;flex-direction:column;width:100%}.tempest_sectionHeader_ji9hQ{display:flex;flex-direction:column;margin-bottom:var(--tempest-space-3)}.tempest_sectionTitle_GTPwe{font-size:var(--tempest-font-size-lg);font-weight:600;color:var(--tempest-text-primary);margin:0}.tempest_sectionDescription_KjW7k{font-size:var(--tempest-font-size-sm);color:var(--tempest-text-secondary);margin:var(--tempest-space-1) 0 0}.tempest_sectionBody_Vp2wz{display:flex;width:100%}.tempest_sectionBody_Vp2wz.tempest_stack_O1Hl-{flex-direction:column}.tempest_sectionBody_Vp2wz.tempest_inline_LBQAv{flex-direction:row;align-items:flex-end;flex-wrap:wrap}.tempest_sectionBody_Vp2wz.tempest_grid_-B86T{display:grid}.tempest_row_1EkVR{display:flex;flex-direction:row;align-items:flex-end;flex-wrap:wrap;width:100%}.tempest_row_1EkVR>*{flex:1 1 0;min-width:0}.tempest_actions_hK95I{display:flex;flex-direction:row;width:100%;margin-top:var(--tempest-space-2)}.tempest_actions_hK95I.tempest_start_gXnm3{justify-content:flex-start}.tempest_actions_hK95I.tempest_center_mKkz4{justify-content:center}.tempest_actions_hK95I.tempest_end_O3yDQ{justify-content:flex-end}.tempest_actions_hK95I.tempest_between_tte2z{justify-content:space-between}.tempest_container_fJfOt{margin-left:auto;margin-right:auto;padding-left:var(--tempest-space-4);padding-right:var(--tempest-space-4);width:100%}.tempest_container_fJfOt.tempest_sm_k8D4-{max-width:640px}.tempest_container_fJfOt.tempest_md_EnpYy{max-width:768px}.tempest_container_fJfOt.tempest_lg_UU-Ig{max-width:1024px}.tempest_container_fJfOt.tempest_xl_2TEWj{max-width:1280px}.tempest_container_fJfOt.tempest_full_l8bvG{max-width:100%}.tempest_stack_sxR8u{display:flex}.tempest_stack_sxR8u.tempest_vertical_2TMf5{flex-direction:column}.tempest_stack_sxR8u.tempest_horizontal_r7-c-{flex-direction:row}.tempest_stack_sxR8u.tempest_center_EDSAh{align-items:center}.tempest_stack_sxR8u.tempest_start_ucQ-K{align-items:flex-start}.tempest_stack_sxR8u.tempest_end_pnKlF{align-items:flex-end}.tempest_stack_sxR8u.tempest_stretch_pX6l7{align-items:stretch}.tempest_stack_sxR8u.tempest_justifyStart_lHYsS{justify-content:flex-start}.tempest_stack_sxR8u.tempest_justifyCenter_JH2m6{justify-content:center}.tempest_stack_sxR8u.tempest_justifyEnd_EBisT{justify-content:flex-end}.tempest_stack_sxR8u.tempest_justifyBetween_mAJwT{justify-content:space-between}.tempest_stack_sxR8u.tempest_wrap_-xxOh{flex-wrap:wrap}.tempest_grid_o-JIX{display:grid;width:100%}.tempest_wrapper_cRGQm{display:flex;align-items:center;justify-content:space-between;gap:var(--tempest-space-3);padding:var(--tempest-space-3) 0;font-size:13px;color:var(--tempest-text-muted);flex-wrap:wrap}.tempest_controls_fdL-y{display:flex;align-items:center;gap:var(--tempest-space-1)}.tempest_page_WjG0l{min-width:32px;height:32px;padding:0 var(--tempest-space-2);border:1px solid var(--tempest-border);background-color:var(--tempest-bg);color:var(--tempest-text);border-radius:var(--tempest-radius-md);font-size:13px;font-weight:500}.tempest_page_WjG0l:hover:not(:disabled){background-color:var(--tempest-surface)}.tempest_page_WjG0l:disabled{opacity:.5}.tempest_active_1kqsJ{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_active_1kqsJ:hover{background-color:var(--tempest-primary-hover)}.tempest_ellipsis_V294k{padding:0 var(--tempest-space-2);color:var(--tempest-text-subtle)}.tempest_sizeSelect_ZayTo{height:32px;padding:0 var(--tempest-space-2);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:13px}.tempest_wrapper_BQek1{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_bar_uC-0x{width:100%;height:8px;background-color:var(--tempest-surface-2);border-radius:var(--tempest-radius-full);overflow:hidden}.tempest_fill_vmg7x{height:100%;background-color:var(--tempest-primary);border-radius:inherit;transition:width .18s ease}.tempest_fill_vmg7x.tempest_success_gWJ8U{background-color:var(--tempest-success)}.tempest_fill_vmg7x.tempest_warning_DGkPO{background-color:var(--tempest-warning)}.tempest_fill_vmg7x.tempest_danger_gfwHh{background-color:var(--tempest-danger)}.tempest_indeterminate_HojUj .tempest_fill_vmg7x{width:30%!important;animation:tempest_tempest-progress-loop_0nEdF 1.4s ease-in-out infinite}.tempest_label_qqHJM{font-size:12px;color:var(--tempest-text-muted);display:flex;justify-content:space-between}@keyframes tempest_tempest-progress-loop_0nEdF{0%{transform:translate(-100%)}to{transform:translate(360%)}}.tempest_wrapper_P-gFm{display:inline-flex;align-items:flex-start;gap:var(--tempest-space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.tempest_wrapper_P-gFm.tempest_disabled_0-cna{cursor:not-allowed;opacity:.6}.tempest_input_7R8ZN{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.tempest_dot_P7ejP{flex-shrink:0;width:18px;height:18px;border:1.5px solid var(--tempest-border-strong);border-radius:50%;background-color:var(--tempest-bg);display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s ease}.tempest_dot_P7ejP:after{content:"";width:10px;height:10px;border-radius:50%;background-color:var(--tempest-primary);transform:scale(0);transition:transform .15s ease}.tempest_input_7R8ZN:checked+.tempest_dot_P7ejP{border-color:var(--tempest-primary)}.tempest_input_7R8ZN:checked+.tempest_dot_P7ejP:after{transform:scale(1)}.tempest_input_7R8ZN:focus-visible+.tempest_dot_P7ejP{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_labelWrap_iQ1HR{display:flex;flex-direction:column;gap:2px;line-height:1.3}.tempest_label_vAFIP{font-size:14px;color:var(--tempest-text)}.tempest_description_bEB8u{font-size:12px;color:var(--tempest-text-muted)}.tempest_group_oi329{display:flex;flex-direction:column;gap:var(--tempest-space-2)}.tempest_group_oi329.tempest_horizontal_1Ovgu{flex-direction:row;gap:var(--tempest-space-4);flex-wrap:wrap}.tempest_wrapper_dKXJJ{position:relative;width:100%;max-width:360px}.tempest_input_m0lPc{width:100%;height:40px;padding:0 36px;border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}.tempest_input_m0lPc:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_iconLeft_030-U,.tempest_clear_nb6lG{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;color:var(--tempest-text-muted)}.tempest_iconLeft_030-U{left:12px;pointer-events:none}.tempest_clear_nb6lG{right:8px;width:24px;height:24px;border:none;background:transparent;border-radius:var(--tempest-radius-full)}.tempest_clear_nb6lG:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}.tempest_wrapper_KS2K3{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_Lmgos{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_required_PvDVJ{color:var(--tempest-danger);margin-left:2px}.tempest_field_h-wBy{position:relative;display:flex;align-items:center}.tempest_select_cjdcr{width:100%;height:40px;padding:0 36px 0 var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;appearance:none;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.tempest_select_cjdcr:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_select_cjdcr:disabled{background-color:var(--tempest-surface);cursor:not-allowed;color:var(--tempest-text-muted)}.tempest_caret_MdCao{position:absolute;right:12px;pointer-events:none;color:var(--tempest-text-muted)}.tempest_error_sw9MU .tempest_select_cjdcr{border-color:var(--tempest-danger)}.tempest_helper_frosK{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_-zd6i{font-size:12px;color:var(--tempest-danger)}.tempest_skeleton_CB4uF{display:block;background:linear-gradient(90deg,var(--tempest-surface) 0%,var(--tempest-surface-2) 50%,var(--tempest-surface) 100%);background-size:200% 100%;border-radius:var(--tempest-radius-md);animation:tempest_tempest-skeleton_H5Y8e 1.4s ease-in-out infinite}.tempest_text_-A8IF{height:14px;border-radius:var(--tempest-radius-sm)}.tempest_circle_DYcl8{border-radius:50%}@keyframes tempest_tempest-skeleton_H5Y8e{0%{background-position:200% 0}to{background-position:-200% 0}}.tempest_spinner_GpFZS{display:inline-block;border:2px solid var(--tempest-surface-2);border-top-color:var(--tempest-primary);border-radius:50%;animation:tempest_tempest-spinner_wKVCY .7s linear infinite}.tempest_sm_3sIoD{width:14px;height:14px}.tempest_md_M2sPj{width:20px;height:20px}.tempest_lg_IxTw2{width:32px;height:32px}@keyframes tempest_tempest-spinner_wKVCY{to{transform:rotate(360deg)}}.tempest_stepper_w3qjQ{display:flex;align-items:flex-start;gap:var(--tempest-space-2);width:100%}.tempest_stepper_w3qjQ.tempest_vertical_d4mOs{flex-direction:column;align-items:stretch}.tempest_step_s2nqL{display:flex;align-items:center;gap:var(--tempest-space-2);flex:1}.tempest_dot_d1bSL{width:28px;height:28px;border-radius:50%;border:2px solid var(--tempest-border-strong);background-color:var(--tempest-bg);color:var(--tempest-text-muted);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.tempest_step_s2nqL.tempest_completed_gcFHM .tempest_dot_d1bSL{background-color:var(--tempest-primary);border-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_step_s2nqL.tempest_active_kL-CH .tempest_dot_d1bSL{border-color:var(--tempest-primary);color:var(--tempest-primary)}.tempest_label_8irAI{font-size:13px;color:var(--tempest-text-muted);font-weight:600}.tempest_step_s2nqL.tempest_active_kL-CH .tempest_label_8irAI,.tempest_step_s2nqL.tempest_completed_gcFHM .tempest_label_8irAI{color:var(--tempest-text)}.tempest_connector_lyeWp{flex:1;height:2px;background-color:var(--tempest-border);margin:0 var(--tempest-space-1)}.tempest_connector_lyeWp.tempest_completed_gcFHM{background-color:var(--tempest-primary)}.tempest_stepper_w3qjQ.tempest_vertical_d4mOs .tempest_connector_lyeWp{width:2px;height:24px;margin:0 0 0 13px}.tempest_wrapper_kudO9{display:inline-flex;align-items:center;gap:var(--tempest-space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.tempest_wrapper_kudO9.tempest_disabled_2aZ0V{cursor:not-allowed;opacity:.6}.tempest_input_5BPNu{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.tempest_track_7ObdZ{width:36px;height:20px;background-color:var(--tempest-border-strong);border-radius:var(--tempest-radius-full);position:relative;transition:background-color .18s ease;flex-shrink:0}.tempest_thumb_-FTeK{position:absolute;top:2px;left:2px;width:16px;height:16px;background-color:#fff;border-radius:50%;box-shadow:var(--tempest-shadow-sm);transition:transform .18s ease}.tempest_input_5BPNu:checked+.tempest_track_7ObdZ{background-color:var(--tempest-primary)}.tempest_input_5BPNu:checked+.tempest_track_7ObdZ .tempest_thumb_-FTeK{transform:translate(16px)}.tempest_input_5BPNu:focus-visible+.tempest_track_7ObdZ{outline:2px solid var(--tempest-primary);outline-offset:2px}.tempest_label_LrH7V{font-size:14px;color:var(--tempest-text)}.tempest_scroll_unrJp{width:100%;overflow-x:auto;border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-lg);background-color:var(--tempest-bg)}.tempest_table_Dkosn{width:100%;border-collapse:collapse;font-size:14px}.tempest_th_PNuEx,.tempest_td_jv9tA{padding:var(--tempest-space-3) var(--tempest-space-4);text-align:left;border-bottom:1px solid var(--tempest-border)}.tempest_th_PNuEx{background-color:var(--tempest-surface);color:var(--tempest-text-muted);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.tempest_tr_7UG8J:last-child .tempest_td_jv9tA{border-bottom:none}.tempest_tr_7UG8J.tempest_clickable_B6Si-{cursor:pointer}.tempest_tr_7UG8J.tempest_clickable_B6Si-:hover{background-color:var(--tempest-surface)}.tempest_alignRight_9hY0G{text-align:right}.tempest_alignCenter_YiUQy{text-align:center}.tempest_emptyRow_kdMiv{padding:var(--tempest-space-6);text-align:center;color:var(--tempest-text-muted)}.tempest_tablist_WR6ag{display:flex;gap:var(--tempest-space-1);border-bottom:1px solid var(--tempest-border);overflow-x:auto}.tempest_tab_IdDYc{background:transparent;border:none;padding:var(--tempest-space-3) var(--tempest-space-4);font-size:14px;font-weight:600;color:var(--tempest-text-muted);cursor:pointer;position:relative;white-space:nowrap;transition:color .15s ease}.tempest_tab_IdDYc:hover:not(:disabled){color:var(--tempest-text)}.tempest_tab_IdDYc.tempest_active_PTNtG{color:var(--tempest-primary)}.tempest_tab_IdDYc.tempest_active_PTNtG:after{content:"";position:absolute;left:var(--tempest-space-3);right:var(--tempest-space-3);bottom:-1px;height:2px;background-color:var(--tempest-primary);border-radius:var(--tempest-radius-sm) var(--tempest-radius-sm) 0 0}.tempest_tab_IdDYc:disabled{opacity:.5;cursor:not-allowed}.tempest_panel_08i9c{padding:var(--tempest-space-4) 0}.tempest_pill_lGuqn .tempest_tab_IdDYc{border-radius:var(--tempest-radius-full);padding:6px var(--tempest-space-3);font-size:13px}.tempest_pill_lGuqn .tempest_tab_IdDYc.tempest_active_PTNtG:after{display:none}.tempest_pill_lGuqn .tempest_tab_IdDYc.tempest_active_PTNtG{background-color:var(--tempest-primary);color:var(--tempest-primary-foreground)}.tempest_pill_lGuqn.tempest_tablist_WR6ag{border-bottom:none}.tempest_wrapper_C0gfg{display:flex;flex-direction:column;gap:var(--tempest-space-1);width:100%}.tempest_label_cWLXP{font-size:13px;font-weight:600;color:var(--tempest-text)}.tempest_required_rDZXE{color:var(--tempest-danger);margin-left:2px}.tempest_textarea_Z-y6g{width:100%;min-height:96px;padding:var(--tempest-space-3);border:1px solid var(--tempest-border);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);color:var(--tempest-text);font-size:14px;font-family:inherit;resize:vertical;transition:border-color .15s ease,box-shadow .15s ease}.tempest_textarea_Z-y6g::placeholder{color:var(--tempest-text-subtle)}.tempest_textarea_Z-y6g:focus{outline:none;border-color:var(--tempest-primary);box-shadow:0 0 0 3px #0066ff2e}.tempest_textarea_Z-y6g:disabled{background-color:var(--tempest-surface);cursor:not-allowed;color:var(--tempest-text-muted)}.tempest_error_NWC9f .tempest_textarea_Z-y6g{border-color:var(--tempest-danger)}.tempest_helper_gedut{font-size:12px;color:var(--tempest-text-muted)}.tempest_errorText_ey07q{font-size:12px;color:var(--tempest-danger)}.tempest_trigger_Dmc5E{display:inline-flex;position:relative}.tempest_bubble_TPGHB{position:absolute;z-index:var(--tempest-z-dropdown);background-color:#11151c;color:#fff;padding:4px 8px;border-radius:var(--tempest-radius-sm);font-size:12px;white-space:nowrap;pointer-events:none;box-shadow:var(--tempest-shadow-md);animation:tempest_tempest-tooltip-in_csYeZ .12s ease-out}.tempest_top_m2tnn{bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.tempest_bottom_9Twz4{top:calc(100% + 8px);left:50%;transform:translate(-50%)}.tempest_left_UPdrG{right:calc(100% + 8px);top:50%;transform:translateY(-50%)}.tempest_right_CV--T{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}@keyframes tempest_tempest-tooltip-in_csYeZ{0%{opacity:0;transform:scale(.95) translate(var(--tempest-tx, 0),var(--tempest-ty, 0))}to{opacity:1}}.tempest_container_x4-Qm{position:fixed;top:var(--tempest-space-4);right:var(--tempest-space-4);display:flex;flex-direction:column;gap:var(--tempest-space-2);z-index:var(--tempest-z-toast);pointer-events:none}.tempest_toast_FLdHz{pointer-events:auto;display:flex;align-items:flex-start;gap:var(--tempest-space-3);padding:var(--tempest-space-3) var(--tempest-space-4);border-radius:var(--tempest-radius-md);background-color:var(--tempest-bg);border:1px solid var(--tempest-border);box-shadow:var(--tempest-shadow-md);min-width:280px;max-width:420px;animation:tempest_tempest-toast-in_E2d-A .18s ease-out}.tempest_success_Oy694{border-left:4px solid var(--tempest-success)}.tempest_warning_84GC8{border-left:4px solid var(--tempest-warning)}.tempest_error_hrQAA{border-left:4px solid var(--tempest-danger)}.tempest_info_eq5bQ{border-left:4px solid var(--tempest-info)}.tempest_title_-H6R2{font-weight:600;font-size:14px;color:var(--tempest-text);margin:0}.tempest_description_-QwfC{font-size:13px;color:var(--tempest-text-muted);margin:2px 0 0}.tempest_close_i10-s{margin-left:auto;background:none;border:none;color:var(--tempest-text-muted);padding:4px;border-radius:var(--tempest-radius-sm);display:flex;align-items:center}.tempest_close_i10-s:hover{background-color:var(--tempest-surface);color:var(--tempest-text)}@keyframes tempest_tempest-toast-in_E2d-A{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.tempest_scroll_8Giwl{position:relative;overflow:auto;width:100%}.tempest_spacer_P3Pvl{position:relative;width:100%}.tempest_row_Ff0VU{position:absolute;left:0;right:0}