@archeion/ngx-schema-builder 1.0.0

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/LICENSE ADDED
@@ -0,0 +1,56 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Archeion
4
+
5
+ Portions of this work are derived from jsonjoy-builder
6
+ (https://github.com/lovasoa/jsonjoy-builder) by Ophir LOJKINE,
7
+ licensed under the MIT License. The original copyright notice is
8
+ preserved below.
9
+
10
+ ---
11
+
12
+ Original jsonjoy-builder license:
13
+
14
+ MIT License
15
+
16
+ Copyright (c) 2025 Ophir LOJKINE
17
+
18
+ Permission is hereby granted, free of charge, to any person obtaining a copy
19
+ of this software and associated documentation files (the "Software"), to deal
20
+ in the Software without restriction, including without limitation the rights
21
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
22
+ copies of the Software, and to permit persons to whom the Software is
23
+ furnished to do so, subject to the following conditions:
24
+
25
+ The above copyright notice and this permission notice shall be included in all
26
+ copies or substantial portions of the Software.
27
+
28
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
33
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34
+ SOFTWARE.
35
+
36
+ ---
37
+
38
+ This Archeion port:
39
+
40
+ Permission is hereby granted, free of charge, to any person obtaining a copy
41
+ of this software and associated documentation files (the "Software"), to deal
42
+ in the Software without restriction, including without limitation the rights
43
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
44
+ copies of the Software, and to permit persons to whom the Software is
45
+ furnished to do so, subject to the following conditions:
46
+
47
+ The above copyright notice and this permission notice shall be included in all
48
+ copies or substantial portions of the Software.
49
+
50
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
51
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
52
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
53
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
54
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
55
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
56
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,249 @@
1
+ # @archeion/ngx-schema-builder
2
+
3
+ [![npm](https://img.shields.io/npm/v/@archeion/ngx-schema-builder.svg)](https://www.npmjs.com/package/@archeion/ngx-schema-builder)
4
+ [![license](https://img.shields.io/npm/l/@archeion/ngx-schema-builder.svg)](./LICENSE)
5
+ [![live demo](https://img.shields.io/badge/demo-live-2ea44f)](https://archeionproject.github.io/ngx-schema-builder/)
6
+
7
+ > Build **JSON Schema** (draft-07) visually in Angular — through a live tree editor, a JSON source
8
+ > view, or both side by side.
9
+
10
+ `<lib-jsonjoy-schema-builder>` turns schema authoring into a point-and-click experience, so your
11
+ users never have to hand-write nested JSON Schema. It handles primitives, objects, arrays,
12
+ combinators (`anyOf` / `oneOf` / `allOf`) and `$ref` references out of the box, and adds optional
13
+ dialogs to **infer** a schema from a sample document or **validate** JSON against the current schema.
14
+
15
+ ## Contents
16
+
17
+ - [Features](#features)
18
+ - [Install](#install)
19
+ - [Quick start](#quick-start)
20
+ - [Styles and theming](#styles-and-theming)
21
+ - [API reference](#api-reference)
22
+ - [Inferring and validating](#inferring-and-validating)
23
+ - [$ref suggestions](#ref-suggestions)
24
+ - [Localization](#localization)
25
+ - [Acknowledgements](#acknowledgements)
26
+ - [License](#license)
27
+
28
+ ## Features
29
+
30
+ - 🌳 **Three synced views** — visual tree, raw JSON, or both at once (`mode` ∈ `visual | json | both`).
31
+ - 🧩 **Every JSON Schema type** — strings, numbers, integers, booleans, objects and arrays, with
32
+ full constraint support (`min`/`max`, `pattern`, `format`, `enum`, `uniqueItems`, …).
33
+ - 🔀 **Combinators & references** — compose with `anyOf` / `oneOf` / `allOf` and reuse shared
34
+ definitions through `$ref`.
35
+ - 🪄 **Infer from JSON** — paste a sample document and generate a draft-07 schema to refine.
36
+ - ✅ **Runtime validation** — validate JSON against the current schema with AJV and inline,
37
+ line-mapped error reporting.
38
+ - 🌗 **Light & dark themes** — token-based, retheme with a handful of CSS variables.
39
+ - 🌍 **Localizable** — `en` and `it` shipped; bring your own messages.
40
+ - 🅰️ **Built for Angular 21** — standalone, signal-based, `OnPush`, tree-shakeable. No `NgModule`.
41
+
42
+ ## Install
43
+
44
+ ```bash
45
+ npm install @archeion/ngx-schema-builder
46
+ ```
47
+
48
+ **Peer dependencies:** `@angular/common`, `@angular/core` (^21.2.0). The embedded code editor
49
+ (CodeMirror) and the validator (AJV) ship bundled — no extra peer dependency or web-worker setup.
50
+
51
+ ## Quick start
52
+
53
+ **1. Register the provider** (the analog of React's `<SchemaBuilderProvider>`):
54
+
55
+ ```ts
56
+ import { bootstrapApplication } from '@angular/platform-browser';
57
+ import { provideSchemaBuilder, en } from '@archeion/ngx-schema-builder';
58
+
59
+ bootstrapApplication(AppComponent, {
60
+ providers: [provideSchemaBuilder({ locale: en })],
61
+ });
62
+ ```
63
+
64
+ **2. Add the stylesheet** to your app's global styles (e.g. in `angular.json`):
65
+
66
+ ```jsonc
67
+ "styles": [
68
+ "node_modules/@archeion/ngx-schema-builder/assets/styles/jsonjoy.css",
69
+ "src/styles.css" // your app styles, after jsonjoy.css
70
+ ]
71
+ ```
72
+
73
+ **3. Drop the component in a template** (`value` is a two-way binding):
74
+
75
+ ```ts
76
+ import { Component, signal } from '@angular/core';
77
+ import { SchemaBuilderComponent, type JsonSchema } from '@archeion/ngx-schema-builder';
78
+
79
+ @Component({
80
+ selector: 'app-root',
81
+ imports: [SchemaBuilderComponent],
82
+ template: `<lib-jsonjoy-schema-builder [(value)]="schema" mode="both" />`,
83
+ })
84
+ export class AppComponent {
85
+ readonly schema = signal<JsonSchema>({
86
+ type: 'object',
87
+ properties: { name: { type: 'string' } },
88
+ required: ['name'],
89
+ });
90
+ }
91
+ ```
92
+
93
+ That's it — edits flow back into your `schema` signal as immutable copies.
94
+
95
+ ## Styles and theming
96
+
97
+ The library ships a **precompiled, scoped** stylesheet — not raw Tailwind. Every rule is scoped
98
+ under the `.jsonjoy` class that each component applies automatically, and Tailwind's preflight is
99
+ omitted, so the editor's styles can't collide with your app's. **Load order doesn't matter.** (The
100
+ few unavoidable global at-rules, like `@keyframes`, are namespaced to stay clash-free.)
101
+
102
+ ### Theming
103
+
104
+ The base palette is light/dark and works with no configuration. The **only** override surface is
105
+ the `--jsonjoy-*` token list — set any of them on `.jsonjoy` or an ancestor to retheme the editor
106
+ (your app's own `--color-*` are intentionally not read):
107
+
108
+ ```css
109
+ .jsonjoy {
110
+ --jsonjoy-color-primary: #2563eb;
111
+ --jsonjoy-color-border: #e5e7eb;
112
+ --jsonjoy-radius-md: 0.5rem;
113
+ }
114
+ ```
115
+
116
+ **Dark mode:** add the `dark` class to the editor or any ancestor (e.g. `<html class="dark">`) and
117
+ the editor switches to its dark palette automatically.
118
+
119
+ ## API reference
120
+
121
+ ### `<lib-jsonjoy-schema-builder>`
122
+
123
+ The entry component. State is signal-based — use `[(value)]` for two-way binding.
124
+
125
+ | Input | Type | Default | Description |
126
+ | -------------- | ------------------------------- | ------------ | -------------------------------------------------------- |
127
+ | `value` | `JsonSchema` (model) | `{ type: 'object' }` | The edited schema. Two-way bindable. |
128
+ | `mode` | `'visual' \| 'json' \| 'both'` (model) | `'both'` | Active editing view. Two-way bindable. |
129
+ | `defaultValue` | `JsonSchema \| undefined` | `undefined` | Initial schema used when `value` is not provided. |
130
+ | `readOnly` | `boolean` | `false` | Render the editor in read-only mode. |
131
+ | `autoFocus` | `boolean` | `true` | Focus the first editable field on mount. |
132
+ | `className` | `string \| undefined` | `undefined` | Extra classes merged onto the host (via `cn()`). |
133
+ | `locale` | `Translation \| undefined` | `undefined` | Per-instance locale override (see [Localization](#localization)). |
134
+ | `messages` | `Partial<Translation> \| undefined` | `undefined` | Per-instance message overrides. |
135
+
136
+ ### Public exports
137
+
138
+ Consumers may import only what `public-api.ts` re-exports. The most useful surface:
139
+
140
+ ```ts
141
+ import {
142
+ // Components
143
+ SchemaBuilderComponent,
144
+ SchemaFieldsEditorComponent, // visual tree only
145
+ SchemaJsonEditorComponent, // JSON source only
146
+ InferSchemaDialogComponent,
147
+ ValidateJsonDialogComponent,
148
+
149
+ // Providers & config
150
+ provideSchemaBuilder,
151
+ provideSchemaBuilderRefSuggestions,
152
+
153
+ // Types
154
+ type JsonSchema,
155
+ type SchemaBuilderMode,
156
+ type RefSuggestion,
157
+ type Translation,
158
+
159
+ // Pure helpers
160
+ inferSchema,
161
+ createSchemaFromJson,
162
+ validateJson,
163
+ isObjectSchema,
164
+ getEditorType,
165
+
166
+ // Locales
167
+ en,
168
+ it,
169
+ } from '@archeion/ngx-schema-builder';
170
+ ```
171
+
172
+ ## Inferring and validating
173
+
174
+ Two optional, standalone dialogs cover the common "round-trip" workflows.
175
+
176
+ **Infer a schema from a sample document:**
177
+
178
+ ```html
179
+ <lib-jsonjoy-infer-schema-dialog
180
+ [(open)]="inferOpen"
181
+ (inferred)="schema.set($event)"
182
+ />
183
+ ```
184
+
185
+ | Member | Type | Description |
186
+ | ---------- | --------------------- | -------------------------------------------- |
187
+ | `open` | `boolean` (model) | Dialog visibility. Two-way bindable. |
188
+ | `inferred` | `output<JsonSchema>` | Emits the inferred schema on submit. |
189
+
190
+ **Validate a JSON document against the current schema** (AJV, lazy-loaded):
191
+
192
+ ```html
193
+ <lib-jsonjoy-validate-json-dialog [(open)]="validateOpen" [schema]="schema()" />
194
+ ```
195
+
196
+ | Member | Type | Description |
197
+ | -------- | --------------------- | ------------------------------------ |
198
+ | `open` | `boolean` (model) | Dialog visibility. Two-way bindable. |
199
+ | `schema` | `JsonSchema` (required) | Schema to validate documents against. |
200
+
201
+ Both also expose `inferSchema` / `validateJson` as pure functions if you'd rather drive them
202
+ yourself.
203
+
204
+ ## $ref suggestions
205
+
206
+ Register a suggestion source (e.g. a list of available schemas from your backend). The factory
207
+ runs **inside the injection context**, so it may `inject()` host services:
208
+
209
+ ```ts
210
+ import { provideSchemaBuilderRefSuggestions } from '@archeion/ngx-schema-builder';
211
+
212
+ providers: [
213
+ provideSchemaBuilderRefSuggestions(() => inject(MyBlueprintsService).refSuggestions),
214
+ ];
215
+ ```
216
+
217
+ The reference editor then offers those entries as a clickable list when the user selects the
218
+ `$ref` field type.
219
+
220
+ ## Localization
221
+
222
+ Localization layers in three steps: an `en` baseline ← a provider `locale` ← provider `messages`,
223
+ then optional per-component overrides. Pass a built-in locale, or your own partial messages:
224
+
225
+ ```ts
226
+ import { provideSchemaBuilder, it } from '@archeion/ngx-schema-builder';
227
+
228
+ providers: [
229
+ provideSchemaBuilder({
230
+ locale: it,
231
+ messages: { addField: 'Aggiungi campo' }, // override individual keys
232
+ }),
233
+ ];
234
+ ```
235
+
236
+ `en` and `it` are shipped. To add a locale, implement the `Translation` interface (use `en` as the
237
+ canonical key list) and pass it as `locale`.
238
+
239
+ ## Acknowledgements
240
+
241
+ This library is an Angular port of **[jsonjoy-builder](https://github.com/lovasoa/jsonjoy-builder)**
242
+ by [Ophir LOJKINE](https://github.com/lovasoa). The visual editor's concept, component shape,
243
+ theming approach and most of the JSON-Schema editor semantics come directly from that React
244
+ project — without it, this Angular port would not exist. The original work is MIT-licensed; the
245
+ same notice is preserved in [`LICENSE`](./LICENSE) alongside our derivative copyright.
246
+
247
+ ## License
248
+
249
+ [MIT](./LICENSE) © Archeion
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.jsonjoy *,.jsonjoy :before,.jsonjoy :after,.jsonjoy ::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-leading:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}.jsonjoy,.jsonjoy{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-lime-500:oklch(76.8% .233 130.85);--color-lime-600:oklch(64.8% .2 131.684);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-teal-500:oklch(70.4% .14 182.503);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-500:oklch(62.7% .265 303.9);--color-pink-500:oklch(65.6% .241 354.308);--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-relaxed:1.625;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--color-background:var(--jsonjoy-color-background);--color-foreground:var(--jsonjoy-color-foreground);--color-primary:var(--jsonjoy-color-primary);--color-muted:var(--jsonjoy-color-muted);--color-muted-foreground:var(--jsonjoy-color-muted-foreground);--color-border:var(--jsonjoy-color-border)}.jsonjoy .pointer-events-none{pointer-events:none}.jsonjoy .collapse{visibility:collapse}.jsonjoy .visible{visibility:visible}.jsonjoy .absolute{position:absolute}.jsonjoy .fixed{position:fixed}.jsonjoy .relative{position:relative}.jsonjoy .static{position:static}.jsonjoy .inset-0{inset:calc(var(--spacing) * 0)}.jsonjoy .inset-x-0{inset-inline:calc(var(--spacing) * 0)}.jsonjoy .top-0{top:calc(var(--spacing) * 0)}.jsonjoy .top-12{top:calc(var(--spacing) * 12)}.jsonjoy .bottom-0{bottom:calc(var(--spacing) * 0)}.jsonjoy .-z-10{z-index:calc(10 * -1)}.jsonjoy .z-10{z-index:10}.jsonjoy .z-50{z-index:50}.jsonjoy .container{width:100%}@media (min-width:40rem){.jsonjoy .container{max-width:40rem}}@media (min-width:48rem){.jsonjoy .container{max-width:48rem}}@media (min-width:64rem){.jsonjoy .container{max-width:64rem}}@media (min-width:80rem){.jsonjoy .container{max-width:80rem}}@media (min-width:96rem){.jsonjoy .container{max-width:96rem}}.jsonjoy .m-auto{margin:auto}.jsonjoy .-mx-0\.5{margin-inline:calc(var(--spacing) * -.5)}.jsonjoy .mx-auto{margin-inline:auto}.jsonjoy .mt-1{margin-top:calc(var(--spacing) * 1)}.jsonjoy .mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.jsonjoy .mt-2{margin-top:calc(var(--spacing) * 2)}.jsonjoy .mt-3{margin-top:calc(var(--spacing) * 3)}.jsonjoy .mt-4{margin-top:calc(var(--spacing) * 4)}.jsonjoy .mt-5{margin-top:calc(var(--spacing) * 5)}.jsonjoy .mt-6{margin-top:calc(var(--spacing) * 6)}.jsonjoy .mt-7{margin-top:calc(var(--spacing) * 7)}.jsonjoy .mt-14{margin-top:calc(var(--spacing) * 14)}.jsonjoy .mt-16{margin-top:calc(var(--spacing) * 16)}.jsonjoy .mr-1{margin-right:calc(var(--spacing) * 1)}.jsonjoy .mr-2{margin-right:calc(var(--spacing) * 2)}.jsonjoy .-mb-px{margin-bottom:-1px}.jsonjoy .mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.jsonjoy .mb-2{margin-bottom:calc(var(--spacing) * 2)}.jsonjoy .mb-3{margin-bottom:calc(var(--spacing) * 3)}.jsonjoy .mb-4{margin-bottom:calc(var(--spacing) * 4)}.jsonjoy .mb-6{margin-bottom:calc(var(--spacing) * 6)}.jsonjoy .ml-0{margin-left:calc(var(--spacing) * 0)}.jsonjoy .ml-1{margin-left:calc(var(--spacing) * 1)}.jsonjoy .ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.jsonjoy .json-field-row{align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--jsonjoy-radius-md);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:flex}@media (hover:hover){.jsonjoy .json-field-row:hover{background-color:var(--jsonjoy-color-secondary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .json-field-row:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-secondary) 50%, transparent)}}}.jsonjoy .line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.jsonjoy .block{display:block}.jsonjoy .contents{display:contents}.jsonjoy .flex{display:flex}.jsonjoy .grid{display:grid}.jsonjoy .hidden{display:none}.jsonjoy .inline{display:inline}.jsonjoy .inline-block{display:inline-block}.jsonjoy .inline-flex{display:inline-flex}.jsonjoy .editor-container{width:100%;height:100%}.jsonjoy .editor-container>.cm-editor{height:100%}.jsonjoy .size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.jsonjoy .size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.jsonjoy .size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.jsonjoy .size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.jsonjoy .size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.jsonjoy .size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.jsonjoy .size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.jsonjoy .h-5{height:calc(var(--spacing) * 5)}.jsonjoy .h-6{height:calc(var(--spacing) * 6)}.jsonjoy .h-8{height:calc(var(--spacing) * 8)}.jsonjoy .h-9{height:calc(var(--spacing) * 9)}.jsonjoy .h-10{height:calc(var(--spacing) * 10)}.jsonjoy .h-11{height:calc(var(--spacing) * 11)}.jsonjoy .h-\[420px\]{height:420px}.jsonjoy .h-\[450px\]{height:450px}.jsonjoy .h-\[500px\]{height:500px}.jsonjoy .h-\[600px\]{height:600px}.jsonjoy .h-full{height:100%}.jsonjoy .max-h-48{max-height:calc(var(--spacing) * 48)}.jsonjoy .max-h-\[85vh\]{max-height:85vh}.jsonjoy .max-h-\[90vh\]{max-height:90vh}.jsonjoy .max-h-\[200px\]{max-height:200px}.jsonjoy .max-h-\[480px\]{max-height:480px}.jsonjoy .min-h-0{min-height:calc(var(--spacing) * 0)}.jsonjoy .min-h-screen{min-height:100vh}.jsonjoy .w-1\/2{width:50%}.jsonjoy .w-5{width:calc(var(--spacing) * 5)}.jsonjoy .w-10{width:calc(var(--spacing) * 10)}.jsonjoy .w-11{width:calc(var(--spacing) * 11)}.jsonjoy .w-\[92px\]{width:92px}.jsonjoy .w-\[95vw\]{width:95vw}.jsonjoy .w-\[140px\]{width:140px}.jsonjoy .w-\[280px\]{width:280px}.jsonjoy .w-full{width:100%}.jsonjoy .w-px{width:1px}.jsonjoy .max-w-2xl{max-width:var(--container-2xl)}.jsonjoy .max-w-3xl{max-width:var(--container-3xl)}.jsonjoy .max-w-6xl{max-width:var(--container-6xl)}.jsonjoy .max-w-\[40\%\]{max-width:40%}.jsonjoy .max-w-\[50\%\]{max-width:50%}.jsonjoy .max-w-full{max-width:100%}.jsonjoy .min-w-0{min-width:calc(var(--spacing) * 0)}.jsonjoy .min-w-5{min-width:calc(var(--spacing) * 5)}.jsonjoy .min-w-40{min-width:calc(var(--spacing) * 40)}.jsonjoy .min-w-\[80px\]{min-width:80px}.jsonjoy .min-w-\[120px\]{min-width:120px}.jsonjoy .min-w-\[150px\]{min-width:150px}.jsonjoy .min-w-\[280px\]{min-width:280px}.jsonjoy .flex-1{flex:1}.jsonjoy .shrink-0{flex-shrink:0}.jsonjoy .grow{flex-grow:1}.jsonjoy .transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.jsonjoy .animate-in{animation:var(--jsonjoy-animate-enter)}.jsonjoy .animate-spin{animation:1s linear infinite jsonjoy-spin}.jsonjoy .cursor-pointer{cursor:pointer}.jsonjoy .cursor-text{cursor:text}.jsonjoy .scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.jsonjoy .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.jsonjoy .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.jsonjoy .flex-col{flex-direction:column}.jsonjoy .flex-row{flex-direction:row}.jsonjoy .flex-wrap{flex-wrap:wrap}.jsonjoy .place-items-center{place-items:center}.jsonjoy .items-center{align-items:center}.jsonjoy .items-start{align-items:flex-start}.jsonjoy .justify-between{justify-content:space-between}.jsonjoy .justify-center{justify-content:center}.jsonjoy .justify-end{justify-content:flex-end}.jsonjoy .gap-1{gap:calc(var(--spacing) * 1)}.jsonjoy .gap-1\.5{gap:calc(var(--spacing) * 1.5)}.jsonjoy .gap-2{gap:calc(var(--spacing) * 2)}.jsonjoy .gap-3{gap:calc(var(--spacing) * 3)}.jsonjoy .gap-4{gap:calc(var(--spacing) * 4)}.jsonjoy .gap-6{gap:calc(var(--spacing) * 6)}.jsonjoy :where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}.jsonjoy :where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}.jsonjoy :where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}.jsonjoy :where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.jsonjoy :where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.jsonjoy :where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.jsonjoy .gap-x-4{column-gap:calc(var(--spacing) * 4)}.jsonjoy :where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.jsonjoy .truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.jsonjoy .overflow-auto{overflow:auto}.jsonjoy .overflow-hidden{overflow:hidden}.jsonjoy .overflow-visible{overflow:visible}.jsonjoy .overflow-y-auto{overflow-y:auto}.jsonjoy .json-editor-container{border-radius:var(--jsonjoy-radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--jsonjoy-color-border);background-color:var(--jsonjoy-color-card);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .rounded{border-radius:.25rem}.jsonjoy .rounded-full{border-radius:3.40282e38px}.jsonjoy .rounded-lg{border-radius:var(--jsonjoy-radius-lg)}.jsonjoy .rounded-md{border-radius:var(--jsonjoy-radius-md)}.jsonjoy .rounded-sm{border-radius:var(--jsonjoy-radius-sm)}.jsonjoy .rounded-xl{border-radius:var(--jsonjoy-radius-xl)}.jsonjoy .border{border-style:var(--tw-border-style);border-width:1px}.jsonjoy .border-2{border-style:var(--tw-border-style);border-width:2px}.jsonjoy .border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.jsonjoy .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.jsonjoy .border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.jsonjoy .border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.jsonjoy .border-dashed{--tw-border-style:dashed;border-style:dashed}.jsonjoy .border-border,.jsonjoy .border-border\/40{border-color:var(--jsonjoy-color-border)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .border-border\/40{border-color:color-mix(in oklab, var(--jsonjoy-color-border) 40%, transparent)}}.jsonjoy .border-destructive,.jsonjoy .border-destructive\/30{border-color:var(--jsonjoy-color-destructive)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .border-destructive\/30{border-color:color-mix(in oklab, var(--jsonjoy-color-destructive) 30%, transparent)}}.jsonjoy .border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab, red, red)){.jsonjoy .border-green-500\/30{border-color:color-mix(in oklab, var(--color-green-500) 30%, transparent)}}.jsonjoy .border-input{border-color:var(--jsonjoy-color-input)}.jsonjoy .border-primary{border-color:var(--jsonjoy-color-primary)}.jsonjoy .border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.jsonjoy .border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.jsonjoy .border-transparent{border-color:#0000}.jsonjoy .border-l-border{border-left-color:var(--jsonjoy-color-border)}.jsonjoy .bg-\[var\(--jsonjoy-color-input-bg\)\]{background-color:var(--jsonjoy-color-input-bg)}.jsonjoy .bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.jsonjoy .bg-background{background-color:var(--jsonjoy-color-background)}.jsonjoy .bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-blue-500\/10{background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.jsonjoy .bg-border{background-color:var(--jsonjoy-color-border)}.jsonjoy .bg-card{background-color:var(--jsonjoy-color-card)}.jsonjoy .bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-cyan-500\/10{background-color:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.jsonjoy .bg-destructive{background-color:var(--jsonjoy-color-destructive)}.jsonjoy .bg-gray-500\/10{background-color:#6a72821a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-gray-500\/10{background-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.jsonjoy .bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-green-500\/10{background-color:color-mix(in oklab, var(--color-green-500) 10%, transparent)}}.jsonjoy .bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-indigo-500\/10{background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.jsonjoy .bg-lime-500\/10{background-color:#80cd001a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-lime-500\/10{background-color:color-mix(in oklab, var(--color-lime-500) 10%, transparent)}}.jsonjoy .bg-muted,.jsonjoy .bg-muted\/40{background-color:var(--jsonjoy-color-muted)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-muted\/40{background-color:color-mix(in oklab, var(--jsonjoy-color-muted) 40%, transparent)}}.jsonjoy .bg-muted\/50{background-color:var(--jsonjoy-color-muted)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-muted\/50{background-color:color-mix(in oklab, var(--jsonjoy-color-muted) 50%, transparent)}}.jsonjoy .bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-orange-500\/10{background-color:color-mix(in oklab, var(--color-orange-500) 10%, transparent)}}.jsonjoy .bg-pink-500\/10{background-color:#f6339a1a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-pink-500\/10{background-color:color-mix(in oklab, var(--color-pink-500) 10%, transparent)}}.jsonjoy .bg-popover{background-color:var(--jsonjoy-color-popover)}.jsonjoy .bg-primary,.jsonjoy .bg-primary\/5{background-color:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-primary\/5{background-color:color-mix(in oklab, var(--jsonjoy-color-primary) 5%, transparent)}}.jsonjoy .bg-primary\/10{background-color:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-primary\/10{background-color:color-mix(in oklab, var(--jsonjoy-color-primary) 10%, transparent)}}.jsonjoy .bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-purple-500\/10{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.jsonjoy .bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.jsonjoy .bg-secondary,.jsonjoy .bg-secondary\/30{background-color:var(--jsonjoy-color-secondary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-secondary\/30{background-color:color-mix(in oklab, var(--jsonjoy-color-secondary) 30%, transparent)}}.jsonjoy .bg-secondary\/80{background-color:var(--jsonjoy-color-secondary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-secondary\/80{background-color:color-mix(in oklab, var(--jsonjoy-color-secondary) 80%, transparent)}}.jsonjoy .bg-teal-500\/10{background-color:#00baa71a}@supports (color:color-mix(in lab, red, red)){.jsonjoy .bg-teal-500\/10{background-color:color-mix(in oklab, var(--color-teal-500) 10%, transparent)}}.jsonjoy .bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.jsonjoy .from-primary\/10{--tw-gradient-from:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .from-primary\/10{--tw-gradient-from:color-mix(in oklab, var(--jsonjoy-color-primary) 10%, transparent)}}.jsonjoy .from-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.jsonjoy .via-primary\/5{--tw-gradient-via:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .via-primary\/5{--tw-gradient-via:color-mix(in oklab, var(--jsonjoy-color-primary) 5%, transparent)}}.jsonjoy .via-primary\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.jsonjoy .to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.jsonjoy .p-0\.5{padding:calc(var(--spacing) * .5)}.jsonjoy .p-1{padding:calc(var(--spacing) * 1)}.jsonjoy .p-1\.5{padding:calc(var(--spacing) * 1.5)}.jsonjoy .p-2{padding:calc(var(--spacing) * 2)}.jsonjoy .p-2\.5{padding:calc(var(--spacing) * 2.5)}.jsonjoy .p-3{padding:calc(var(--spacing) * 3)}.jsonjoy .p-4{padding:calc(var(--spacing) * 4)}.jsonjoy .p-5{padding:calc(var(--spacing) * 5)}.jsonjoy .px-1{padding-inline:calc(var(--spacing) * 1)}.jsonjoy .px-2{padding-inline:calc(var(--spacing) * 2)}.jsonjoy .px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.jsonjoy .px-3{padding-inline:calc(var(--spacing) * 3)}.jsonjoy .px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.jsonjoy .px-4{padding-inline:calc(var(--spacing) * 4)}.jsonjoy .px-6{padding-inline:calc(var(--spacing) * 6)}.jsonjoy .px-8{padding-inline:calc(var(--spacing) * 8)}.jsonjoy .py-0\.5{padding-block:calc(var(--spacing) * .5)}.jsonjoy .py-1{padding-block:calc(var(--spacing) * 1)}.jsonjoy .py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.jsonjoy .py-2{padding-block:calc(var(--spacing) * 2)}.jsonjoy .py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.jsonjoy .py-3{padding-block:calc(var(--spacing) * 3)}.jsonjoy .py-6{padding-block:calc(var(--spacing) * 6)}.jsonjoy .py-10{padding-block:calc(var(--spacing) * 10)}.jsonjoy .py-12{padding-block:calc(var(--spacing) * 12)}.jsonjoy .pt-1{padding-top:calc(var(--spacing) * 1)}.jsonjoy .pt-2{padding-top:calc(var(--spacing) * 2)}.jsonjoy .pt-4{padding-top:calc(var(--spacing) * 4)}.jsonjoy .pt-8{padding-top:calc(var(--spacing) * 8)}.jsonjoy .pb-2{padding-bottom:calc(var(--spacing) * 2)}.jsonjoy .text-center{text-align:center}.jsonjoy .text-left{text-align:left}.jsonjoy .font-mono{font-family:var(--font-mono)}.jsonjoy .json-field-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--jsonjoy-color-foreground)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .json-field-label{color:color-mix(in oklab, var(--jsonjoy-color-foreground) 80%, transparent)}}.jsonjoy .text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.jsonjoy .text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.jsonjoy .text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.jsonjoy .text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.jsonjoy .text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.jsonjoy .text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.jsonjoy .leading-none{--tw-leading:1;line-height:1}.jsonjoy .leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.jsonjoy .font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.jsonjoy .font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.jsonjoy .font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.jsonjoy .tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.jsonjoy .tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.jsonjoy .whitespace-nowrap{white-space:nowrap}.jsonjoy .whitespace-pre-line{white-space:pre-line}.jsonjoy .text-amber-600{color:var(--color-amber-600)}.jsonjoy .text-blue-500{color:var(--color-blue-500)}.jsonjoy .text-cyan-500{color:var(--color-cyan-500)}.jsonjoy .text-destructive{color:var(--jsonjoy-color-destructive)}.jsonjoy .text-destructive-foreground{color:var(--jsonjoy-color-destructive-foreground)}.jsonjoy .text-foreground{color:var(--jsonjoy-color-foreground)}.jsonjoy .text-gray-500{color:var(--color-gray-500)}.jsonjoy .text-green-500{color:var(--color-green-500)}.jsonjoy .text-green-600{color:var(--color-green-600)}.jsonjoy .text-indigo-500{color:var(--color-indigo-500)}.jsonjoy .text-input{color:var(--jsonjoy-color-input)}.jsonjoy .text-lime-600{color:var(--color-lime-600)}.jsonjoy .text-muted-foreground,.jsonjoy .text-muted-foreground\/50{color:var(--jsonjoy-color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .text-muted-foreground\/50{color:color-mix(in oklab, var(--jsonjoy-color-muted-foreground) 50%, transparent)}}.jsonjoy .text-orange-500{color:var(--color-orange-500)}.jsonjoy .text-pink-500{color:var(--color-pink-500)}.jsonjoy .text-primary{color:var(--jsonjoy-color-primary)}.jsonjoy .text-primary-foreground{color:var(--jsonjoy-color-primary-foreground)}.jsonjoy .text-purple-500{color:var(--color-purple-500)}.jsonjoy .text-red-500{color:var(--color-red-500)}.jsonjoy .text-red-600{color:var(--color-red-600)}.jsonjoy .text-secondary-foreground{color:var(--jsonjoy-color-secondary-foreground)}.jsonjoy .text-teal-500{color:var(--color-teal-500)}.jsonjoy .uppercase{text-transform:uppercase}.jsonjoy .italic{font-style:italic}.jsonjoy .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.jsonjoy .underline{text-decoration-line:underline}.jsonjoy .underline-offset-4{text-underline-offset:4px}.jsonjoy .opacity-0{opacity:0}.jsonjoy .shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .ring-offset-background{--tw-ring-offset-color:var(--jsonjoy-color-background)}.jsonjoy .outline{outline-style:var(--tw-outline-style);outline-width:1px}.jsonjoy .blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.jsonjoy .filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.jsonjoy .backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.jsonjoy .transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.jsonjoy .transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.jsonjoy .transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.jsonjoy .transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.jsonjoy .transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.jsonjoy .duration-200{--tw-duration:.2s;transition-duration:.2s}.jsonjoy .duration-300{--tw-duration:.3s;transition-duration:.3s}.jsonjoy .ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.jsonjoy .select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.jsonjoy .group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.jsonjoy .group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.jsonjoy .peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.jsonjoy .peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.jsonjoy .file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.jsonjoy .file\:bg-transparent::file-selector-button{background-color:#0000}.jsonjoy .file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.jsonjoy .file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.jsonjoy .file\:text-foreground::file-selector-button{color:var(--jsonjoy-color-foreground)}.jsonjoy .placeholder\:text-muted-foreground::placeholder{color:var(--jsonjoy-color-muted-foreground)}.jsonjoy .backdrop\:bg-black\/40::backdrop{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.jsonjoy .backdrop\:bg-black\/40::backdrop{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}@media (hover:hover){.jsonjoy .hover\:border-primary\/30:hover{border-color:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:border-primary\/30:hover{border-color:color-mix(in oklab, var(--jsonjoy-color-primary) 30%, transparent)}}.jsonjoy .hover\:border-primary\/40:hover{border-color:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--jsonjoy-color-primary) 40%, transparent)}}.jsonjoy .hover\:bg-accent:hover{background-color:var(--jsonjoy-color-accent)}.jsonjoy .hover\:bg-amber-500\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-amber-500\/20:hover{background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.jsonjoy .hover\:bg-destructive\/80:hover{background-color:var(--jsonjoy-color-destructive)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-destructive) 80%, transparent)}}.jsonjoy .hover\:bg-destructive\/90:hover{background-color:var(--jsonjoy-color-destructive)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-destructive) 90%, transparent)}}.jsonjoy .hover\:bg-lime-500\/20:hover{background-color:#80cd0033}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-lime-500\/20:hover{background-color:color-mix(in oklab, var(--color-lime-500) 20%, transparent)}}.jsonjoy .hover\:bg-muted\/50:hover{background-color:var(--jsonjoy-color-muted)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-muted) 50%, transparent)}}.jsonjoy .hover\:bg-primary\/80:hover{background-color:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-primary) 80%, transparent)}}.jsonjoy .hover\:bg-primary\/90:hover{background-color:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-primary) 90%, transparent)}}.jsonjoy .hover\:bg-secondary:hover,.jsonjoy .hover\:bg-secondary\/30:hover{background-color:var(--jsonjoy-color-secondary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-secondary\/30:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-secondary) 30%, transparent)}}.jsonjoy .hover\:bg-secondary\/50:hover{background-color:var(--jsonjoy-color-secondary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-secondary\/50:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-secondary) 50%, transparent)}}.jsonjoy .hover\:bg-secondary\/80:hover{background-color:var(--jsonjoy-color-secondary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--jsonjoy-color-secondary) 80%, transparent)}}.jsonjoy .hover\:text-accent-foreground:hover{color:var(--jsonjoy-color-accent-foreground)}.jsonjoy .hover\:text-destructive:hover{color:var(--jsonjoy-color-destructive)}.jsonjoy .hover\:text-foreground:hover{color:var(--jsonjoy-color-foreground)}.jsonjoy .hover\:underline:hover{text-decoration-line:underline}.jsonjoy .hover\:opacity-80:hover{opacity:.8}.jsonjoy .hover\:opacity-90:hover{opacity:.9}.jsonjoy .hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .hover\:shadow-xs:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .hover\:ring-1:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .hover\:ring-ring\/20:hover{--tw-ring-color:var(--jsonjoy-color-ring)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:ring-ring\/20:hover{--tw-ring-color:color-mix(in oklab, var(--jsonjoy-color-ring) 20%, transparent)}}.jsonjoy .hover\:ring-ring\/30:hover{--tw-ring-color:var(--jsonjoy-color-ring)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .hover\:ring-ring\/30:hover{--tw-ring-color:color-mix(in oklab, var(--jsonjoy-color-ring) 30%, transparent)}}}.jsonjoy .focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .focus\:ring-primary\/30:focus{--tw-ring-color:var(--jsonjoy-color-primary)}@supports (color:color-mix(in lab, red, red)){.jsonjoy .focus\:ring-primary\/30:focus{--tw-ring-color:color-mix(in oklab, var(--jsonjoy-color-primary) 30%, transparent)}}.jsonjoy .focus\:ring-ring:focus{--tw-ring-color:var(--jsonjoy-color-ring)}.jsonjoy .focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.jsonjoy .focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.jsonjoy .focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.jsonjoy .focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.jsonjoy .focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.jsonjoy .focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--jsonjoy-color-ring)}.jsonjoy .focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.jsonjoy .focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--jsonjoy-color-background)}.jsonjoy .focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.jsonjoy .focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.jsonjoy .active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.jsonjoy .disabled\:pointer-events-none:disabled{pointer-events:none}.jsonjoy .disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.jsonjoy .disabled\:opacity-50:disabled{opacity:.5}.jsonjoy .data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.jsonjoy .data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--jsonjoy-color-primary)}.jsonjoy .data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.jsonjoy .data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--jsonjoy-color-input)}@media (min-width:40rem){.jsonjoy .sm\:ml-4{margin-left:calc(var(--spacing) * 4)}.jsonjoy .sm\:ml-auto{margin-left:auto}.jsonjoy .sm\:inline{display:inline}.jsonjoy .sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.jsonjoy .sm\:flex-row{flex-direction:row}.jsonjoy .sm\:flex-nowrap{flex-wrap:nowrap}.jsonjoy .sm\:p-6{padding:calc(var(--spacing) * 6)}.jsonjoy .sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.jsonjoy .sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.jsonjoy .sm\:py-10{padding-block:calc(var(--spacing) * 10)}.jsonjoy .sm\:py-16{padding-block:calc(var(--spacing) * 16)}.jsonjoy .sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.jsonjoy .sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media (min-width:48rem){.jsonjoy .md\:col-span-2{grid-column:span 2/span 2}.jsonjoy .md\:max-w-4xl{max-width:var(--container-4xl)}.jsonjoy .md\:max-w-5xl{max-width:var(--container-5xl)}.jsonjoy .md\:max-w-\[1200px\]{max-width:1200px}.jsonjoy .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.jsonjoy .md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.jsonjoy .md\:flex-row{flex-direction:row}.jsonjoy .md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.jsonjoy .lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.jsonjoy .lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.jsonjoy .\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.jsonjoy .\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.jsonjoy .\[\&_svg\]\:shrink-0 svg{flex-shrink:0}@keyframes jsonjoy-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes jsonjoy-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}@keyframes jsonjoy-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes jsonjoy-scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes jsonjoy-spin{to{transform:rotate(360deg)}}@keyframes jsonjoy-dialog-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes jsonjoy-dialog-overlay-out{0%{opacity:1}to{opacity:0}}@keyframes jsonjoy-dialog-content-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes jsonjoy-dialog-content-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.jsonjoy{--jsonjoy-color-background:#fafafa;--jsonjoy-color-foreground:#1f1f1f;--jsonjoy-color-card:#fff;--jsonjoy-color-card-foreground:#1f1f1f;--jsonjoy-color-popover:#fff;--jsonjoy-color-popover-foreground:#1f1f1f;--jsonjoy-color-primary:#1f1f1f;--jsonjoy-color-primary-foreground:#fff;--jsonjoy-color-secondary:#f3f3f3;--jsonjoy-color-secondary-foreground:#1f1f1f;--jsonjoy-color-muted:#f3f3f3;--jsonjoy-color-muted-foreground:#737373;--jsonjoy-color-accent:#f3f3f3;--jsonjoy-color-accent-foreground:#1f1f1f;--jsonjoy-color-destructive:#f33;--jsonjoy-color-destructive-foreground:#fff;--jsonjoy-color-border:#d9d9d9;--jsonjoy-color-input:#d9d9d9;--jsonjoy-color-input-bg:#f9f9f9;--jsonjoy-color-ring:#1f1f1f;--jsonjoy-radius-xl:.5rem;--jsonjoy-radius-lg:.375rem;--jsonjoy-radius-md:.25rem;--jsonjoy-radius-sm:.125rem;--jsonjoy-animate-fade-in:jsonjoy-fade-in .3s ease-out;--jsonjoy-animate-fade-out:jsonjoy-fade-out .3s ease-out;--jsonjoy-animate-scale-in:jsonjoy-scale-in .2s ease-out;--jsonjoy-animate-scale-out:jsonjoy-scale-out .2s ease-out;--jsonjoy-animate-enter:jsonjoy-fade-in .4s ease-out, jsonjoy-scale-in .3s ease-out;--jsonjoy-animate-exit:jsonjoy-fade-out .3s ease-out, jsonjoy-scale-out .2s ease-out;--jsonjoy-ease-bounce-in:cubic-bezier(.175, .885, .32, 1.275);--jsonjoy-ease-smooth:cubic-bezier(.4, 0, .2, 1);--jsonjoy-font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color:var(--jsonjoy-color-foreground);font-family:var(--jsonjoy-font-sans)}:where(.jsonjoy) :where(button,[type=button],[type=submit],[type=reset]){color:inherit;font:inherit;cursor:pointer;appearance:none;background-color:#0000;background-image:none;border:0;padding:0}:where(.jsonjoy) :where(input,select,textarea){color:inherit;font:inherit;background-color:#0000;border:0}.jsonjoy.dark,.dark .jsonjoy{--jsonjoy-color-background:#141414;--jsonjoy-color-foreground:#f2f2f2;--jsonjoy-color-card:#141414;--jsonjoy-color-card-foreground:#f2f2f2;--jsonjoy-color-popover:#141414;--jsonjoy-color-popover-foreground:#f2f2f2;--jsonjoy-color-primary:#ebebeb;--jsonjoy-color-primary-foreground:#1a1a1a;--jsonjoy-color-secondary:#292929;--jsonjoy-color-secondary-foreground:#f2f2f2;--jsonjoy-color-muted:#292929;--jsonjoy-color-muted-foreground:#a3a3a3;--jsonjoy-color-accent:#292929;--jsonjoy-color-accent-foreground:#f2f2f2;--jsonjoy-color-destructive:#d32222;--jsonjoy-color-destructive-foreground:#fafafa;--jsonjoy-color-border:#333;--jsonjoy-color-input:#333;--jsonjoy-color-input-bg:#1f1f1f;--jsonjoy-color-ring:#d4d4d4}dialog.jsonjoy{margin:auto}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}