@samva/vite 0.10.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -8
- package/CHANGELOG.md +50 -0
- package/README.md +43 -29
- package/dist/brand-BkXQMGgY.d.ts +52 -0
- package/dist/build.d.ts +1 -1
- package/dist/build.js +1 -1
- package/dist/dev.d.ts +8 -0
- package/dist/dev.js +8 -2
- package/dist/editor/assets/index-BBtWrzoS.css +2 -0
- package/dist/editor/assets/index-gqTrwEST.js +34 -0
- package/dist/editor/index.html +2 -2
- package/dist/editor/licenses/babel-parser.md +19 -0
- package/dist/editor/licenses/base-ui-react.md +21 -0
- package/dist/editor/licenses/base-ui-utils.md +21 -0
- package/dist/editor/licenses/cfworker-json-schema.md +7 -0
- package/dist/editor/licenses/clsx.md +9 -0
- package/dist/editor/licenses/effect.md +21 -0
- package/dist/editor/licenses/floating-ui-core.md +20 -0
- package/dist/editor/licenses/floating-ui-dom.md +20 -0
- package/dist/editor/licenses/floating-ui-react-dom.md +20 -0
- package/dist/editor/licenses/floating-ui-utils.md +20 -0
- package/dist/editor/licenses/hugeicons-core-free-icons.md +21 -0
- package/dist/editor/licenses/hugeicons-react.md +21 -0
- package/dist/editor/licenses/react-dom.md +21 -0
- package/dist/editor/licenses/react.md +21 -0
- package/dist/editor/licenses/scheduler.md +21 -0
- package/dist/editor/licenses/use-sync-external-store.md +21 -0
- package/dist/editor/licenses/zustand.md +21 -0
- package/dist/editor-DfdlKEeu.d.ts +48 -0
- package/dist/{editor-B_2rlC_U.js → editor-DnFOzVJA.js} +14 -15
- package/dist/index.d.ts +3 -27
- package/dist/index.js +1 -1
- package/dist/{project-Ut6wra0r.js → project-DwbOoPDk.js} +117 -374
- package/dist/project.d.ts +192 -2
- package/dist/project.js +2 -2
- package/dist/render.d.ts +1 -1
- package/dist/render.js +2 -2
- package/package.json +4 -4
- package/dist/editor/assets/index-BRnxqVXL.js +0 -34
- package/dist/editor/assets/index-Bv6OXYH5.css +0 -2
- package/dist/project-CRqjs-wV.d.ts +0 -270
package/AGENTS.md
CHANGED
|
@@ -13,8 +13,8 @@ here: they are ordinary Git plus `samva templates publish` from `@samva/cli` (se
|
|
|
13
13
|
|
|
14
14
|
- `@samva/vite` — `samvaEditor()`, the plugin you add to `vite.config.ts` when the defaults do not
|
|
15
15
|
cover your setup. Options are typed by `SamvaEditorPluginOptions`; the README lists them.
|
|
16
|
-
- `@samva/vite/dev` — `startDevServer(
|
|
17
|
-
|
|
16
|
+
- `@samva/vite/dev` — `startDevServer(options)`: a Vite server with no config file,
|
|
17
|
+
`samvaEditor()`, and defaults. It is what `samva templates dev` starts.
|
|
18
18
|
- `@samva/vite/build` — `buildTemplates(options)` and `createTemplateBuildSession(options)` for
|
|
19
19
|
programmatic checks and builds. The `samva` CLI loads this module from your project, not from its
|
|
20
20
|
own bundle.
|
|
@@ -61,13 +61,14 @@ what pins the compiler version your previews, checks, and builds use.
|
|
|
61
61
|
saved elsewhere is not overwritten; reload the entry and retry.
|
|
62
62
|
- **Committing or hand-editing `.samva/`.** `.samva/` holds files this package generates. It is
|
|
63
63
|
gitignored, like `.next/` and `.tanstack/`, and changes inside it never recompile templates.
|
|
64
|
-
`samva:brand` resolves live first, refreshes `.samva/brands/<slug>.json` from every live answer,
|
|
65
|
-
and falls back to that copy, warning when it is used or was older than the live brand. The API
|
|
66
|
-
owns the brand; a project with neither credentials nor a cached copy fails with
|
|
67
|
-
`brand-unavailable`.
|
|
68
64
|
|
|
69
65
|
## Rules
|
|
70
66
|
|
|
67
|
+
- **Brand resolution belongs to the host.** Keep Samva authentication and storage in the CLI so
|
|
68
|
+
standalone authoring stays independent of a Samva account. Pass the host's resolver and brand
|
|
69
|
+
plugin through compilation, preview and rendering together; dropping the plugin changes footer
|
|
70
|
+
and unsubscribe behavior. Brand-resolution and editor-plugin tests enforce this boundary.
|
|
71
|
+
|
|
71
72
|
- **Template entries are `.tsx`.** Discovery ignores every other extension, hidden folders and
|
|
72
73
|
`node_modules`.
|
|
73
74
|
- **Template ids and fixture keys match `TEMPLATE_NAME_PATTERN`** from `@samva/markup/template`,
|
|
@@ -92,5 +93,4 @@ what pins the compiler version your previews, checks, and builds use.
|
|
|
92
93
|
- `samva templates dev`, or `vite` with `samvaEditor()` configured, serves the editor at the
|
|
93
94
|
configured `route`; every template should appear with its fixtures, one document per channel.
|
|
94
95
|
- `exportProject({ root, out })` writes browsable HTML and text for every fixture and a
|
|
95
|
-
`catalog.json` with the asset mapping and findings
|
|
96
|
-
imports `samva:brand` and has no cached copy.
|
|
96
|
+
`catalog.json` with the asset mapping and findings.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,53 @@
|
|
|
1
|
+
## @samva/vite@0.11.1
|
|
2
|
+
|
|
3
|
+
### The bundled editor ships its dependencies' licences
|
|
4
|
+
|
|
5
|
+
`@samva/vite`'s built editor (`dist/editor`) now includes a licence notice under `dist/editor/licenses/`
|
|
6
|
+
for every third-party package bundled into it, such as React, Base UI, Floating UI, zustand, Effect and
|
|
7
|
+
Hugeicons. A package that publishes no licence file gets a notice built from the licence its
|
|
8
|
+
`package.json` declares.
|
|
9
|
+
|
|
10
|
+
## @samva/vite@0.11.0
|
|
11
|
+
|
|
12
|
+
### The local editor draws Hugeicons and the editor's own control styling
|
|
13
|
+
|
|
14
|
+
The editor `samva templates dev` and the Vite plugin serve now draws its icons from the Hugeicons
|
|
15
|
+
free set (Stroke Rounded, MIT), whose licence files ship in `dist/editor/licenses`. Toggles that are
|
|
16
|
+
on and the source panel take the editor's own recessed styling in light and dark mode, matching the
|
|
17
|
+
Samva dashboard.
|
|
18
|
+
|
|
19
|
+
### Breaking: `@samva/markup` reads brand and footer names from a brand plugin
|
|
20
|
+
|
|
21
|
+
Templates do not change: `samva:brand`, `BrandLogo`, `BrandFooter` and the unsubscribe row work as
|
|
22
|
+
before, because Samva's brand plugin is the default.
|
|
23
|
+
|
|
24
|
+
A host that compiles or renders templates can pass its own `BrandPlugin` as `brandPlugin` to
|
|
25
|
+
`compileTemplate`, `transformProject`, `projectBrandSpecifier`, `parseBrandSpecifier`,
|
|
26
|
+
`checkStaticProfile`, `renderIr`, `compileEmail`, `renderBrandFooter`, `renderBrandSample`,
|
|
27
|
+
`brandComponents`, `renderedFooterMarkers` and `withoutUnsubscribeRow`. The plugin names the brand
|
|
28
|
+
import, the attributes that mark the footer and its unsubscribe row, the unsubscribe link's URL
|
|
29
|
+
placeholder, and the attribute that marks that link as untracked.
|
|
30
|
+
|
|
31
|
+
`BrandFooter`'s unsubscribe link now carries `data-samva-no-track` instead of SES's
|
|
32
|
+
`ses:no-track`. A host that delivers mail through SES turns the marker into `ses:no-track` before it
|
|
33
|
+
sends.
|
|
34
|
+
|
|
35
|
+
`@samva/markup/brand` exports `samvaBrandPlugin` and the `BrandPlugin` type in place of
|
|
36
|
+
`FOOTER_ATTRIBUTE`, `UNSUBSCRIBE_ROW_ATTRIBUTE` and `UNSUBSCRIBE_URL_PLACEHOLDER`; read
|
|
37
|
+
`samvaBrandPlugin.footerAttribute`, `.unsubscribeRowAttribute` and `.unsubscribeUrlPlaceholder`.
|
|
38
|
+
`@samva/markup/compiler` no longer exports `BRAND_SPECIFIER`; read `samvaBrandPlugin.specifier`.
|
|
39
|
+
|
|
40
|
+
### Breaking: supply brand resolution to the authoring toolchain
|
|
41
|
+
|
|
42
|
+
`@samva/vite` accepts `brandResolver` and `brandPlugin` on the editor plugin and its dev, project,
|
|
43
|
+
build, render and export APIs. A brand import without a resolver fails with `brand-unavailable`.
|
|
44
|
+
Standalone callers supply a resolver; the package does not read Samva credentials, invoke the
|
|
45
|
+
Samva CLI or load Samva brand snapshots. The `offline` option and Samva snapshot helpers move to
|
|
46
|
+
the CLI.
|
|
47
|
+
|
|
48
|
+
`samva templates dev`, `check`, `build`, `render`, `snapshot` and `export` supply the Samva resolver
|
|
49
|
+
and brand plugin, preserving live lookup, cached snapshots and brand diagnostics.
|
|
50
|
+
|
|
1
51
|
## @samva/vite@0.10.0
|
|
2
52
|
|
|
3
53
|
### Breaking: `@samva/markup` publishes 17 entries in two tiers
|
package/README.md
CHANGED
|
@@ -51,12 +51,16 @@ middleware stack.
|
|
|
51
51
|
|
|
52
52
|
## Options
|
|
53
53
|
|
|
54
|
-
| Option
|
|
55
|
-
|
|
|
56
|
-
| `templatesDir`
|
|
57
|
-
| `projectRoot`
|
|
58
|
-
| `route`
|
|
59
|
-
| `theme`
|
|
54
|
+
| Option | Type | Default | Description |
|
|
55
|
+
| ------------------- | ------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
56
|
+
| `templatesDir` | `string` | `templates/` and `emails/` | The one directory to scan for `.tsx` templates, relative to the project root. Unset scans whichever exist. |
|
|
57
|
+
| `projectRoot` | `string` | the Vite root | The folder holding `theme.css`, shared imports and `.samva/`, relative to the Vite root. Contains `templatesDir`. |
|
|
58
|
+
| `route` | `string` | `"/"` | Absolute editor UI route; API and assets are mounted beneath it. |
|
|
59
|
+
| `theme` | `string \| false` | `"theme.css"` | Project theme file relative to the project root, or `false` to compile without one. |
|
|
60
|
+
| `brandResolver` | `BrandResolver` | unset | Host-owned brand lookup; required when a project imports a brand. |
|
|
61
|
+
| `brandPlugin` | `BrandPlugin` | markup default | Brand import specifier, footer and unsubscribe behavior. |
|
|
62
|
+
| `authenticated` | `boolean` | `false` | Whether the host supplies authenticated editor capabilities. |
|
|
63
|
+
| `editorAffordances` | `EditorAffordances` | unset | Host-owned publishing instructions and authentication text. |
|
|
60
64
|
|
|
61
65
|
For templates in another folder of a monorepo, set `projectRoot` to a folder that contains both the
|
|
62
66
|
templates and the files they import; a templates directory outside the project root is an error.
|
|
@@ -108,8 +112,8 @@ compatibility findings and inbox tests for client-specific proof.
|
|
|
108
112
|
## Theme, check, and publish
|
|
109
113
|
|
|
110
114
|
A root `theme.css` uses Tailwind v4 `@theme` syntax and may `@import` other project `.css` files
|
|
111
|
-
and
|
|
112
|
-
imported stylesheet recompiles every template that reads it.
|
|
115
|
+
and a brand import recognized by the configured brand plugin; any other import is a compile error.
|
|
116
|
+
A change to the theme, a partial, or an imported stylesheet recompiles every template that reads it.
|
|
113
117
|
|
|
114
118
|
`samva templates check` and `buildTemplates()` compile every template, render every declared
|
|
115
119
|
fixture through each channel the template declares, and check the email output against the client
|
|
@@ -124,8 +128,8 @@ const result = await buildTemplates({ root: ".", assetBase: "https://assets.exam
|
|
|
124
128
|
```
|
|
125
129
|
|
|
126
130
|
`buildTemplates(options)` and `createTemplateBuildSession(options)` take `root`, `dir`, `theme`,
|
|
127
|
-
`assetBase` and `
|
|
128
|
-
their bytes are served in delivered messages. `createTemplateBuildSession` also reports file
|
|
131
|
+
`assetBase`, `brandResolver` and `brandPlugin`. Imported email assets require an HTTPS `assetBase`,
|
|
132
|
+
which names where their bytes are served in delivered messages. `createTemplateBuildSession` also reports file
|
|
129
133
|
changes for `check --watch`.
|
|
130
134
|
|
|
131
135
|
`samva templates build --out dist/templates.json` writes the CLI's local artifact. Check writes no
|
|
@@ -161,26 +165,36 @@ await server.close();
|
|
|
161
165
|
`startDevServer` creates a Vite server with `configFile: false` and `samvaEditor()`, which is what
|
|
162
166
|
`samva templates dev` does.
|
|
163
167
|
|
|
164
|
-
##
|
|
168
|
+
## Brand resolution
|
|
165
169
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
`samvaEditor()`, `startDevServer()`, and the project, build, render and export APIs accept
|
|
171
|
+
`brandResolver` and `brandPlugin`. The resolver supplies an `EmailBrand`; the plugin defines the
|
|
172
|
+
brand import, footer and unsubscribe behavior. A project with no brand import runs without a
|
|
173
|
+
resolver or credentials. A brand import without a resolver reports `brand-unavailable`.
|
|
170
174
|
|
|
171
|
-
|
|
172
|
-
for another API), the brand is fetched directly. Without one, the `samva` CLI on `PATH` is asked
|
|
173
|
-
(`samva brands get --json`) and answers with your `samva login` session, which stays in the
|
|
174
|
-
operating-system keyring the CLI owns. A live answer refreshes the cached copy.
|
|
175
|
-
2. **Cached copy.** `.samva/brands/<slug>.json`, written by every live fetch and by
|
|
176
|
-
`samva brands pull [slug]`, with a `brand-offline` warning.
|
|
177
|
-
3. **Neither.** The build fails with `brand-unavailable`, naming both fixes.
|
|
175
|
+
For example, supply a brand from your own configuration:
|
|
178
176
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
177
|
+
```ts
|
|
178
|
+
import { samvaEditor } from "@samva/vite";
|
|
179
|
+
import { samvaBrandPlugin } from "@samva/markup/brand";
|
|
180
|
+
|
|
181
|
+
samvaEditor({
|
|
182
|
+
brandPlugin: samvaBrandPlugin,
|
|
183
|
+
brandResolver: {
|
|
184
|
+
resolve: async () => ({
|
|
185
|
+
ok: true,
|
|
186
|
+
brand: { slug: "local", css: "@theme { --color-primary: #2563eb; }" },
|
|
187
|
+
source: "configuration",
|
|
188
|
+
warnings: [],
|
|
189
|
+
}),
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
`samva templates dev/check/build/render/export` supplies the Samva resolver and brand plugin. These
|
|
195
|
+
commands resolve `samva:brand` from the organization's live brand or a cached
|
|
196
|
+
`.samva/brands/<slug>.json` snapshot. Configure Samva credentials and snapshot behavior through the
|
|
197
|
+
CLI; the standalone Vite plugin does not read them.
|
|
184
198
|
|
|
185
199
|
## The `.samva/` folder
|
|
186
200
|
|
|
@@ -216,8 +230,8 @@ const receipt = await exportProject({ root: ".", out: "dist/email" });
|
|
|
216
230
|
```
|
|
217
231
|
|
|
218
232
|
`root` is the project: its `theme.css` themes the export, as in `buildTemplates()`; `dir` narrows
|
|
219
|
-
the templates directory, `theme` names another file or `false` disables it, and `
|
|
220
|
-
|
|
233
|
+
the templates directory, `theme` names another file or `false` disables it, and `brandResolver` / `brandPlugin`
|
|
234
|
+
configure brand resolution as described above.
|
|
221
235
|
|
|
222
236
|
Export writes `templates/<id>/<fixture>.html` and `.txt`, plus `.sms.txt` and `.whatsapp.json` for
|
|
223
237
|
those channels, content-addressed files under `assets/`, and `catalog.json` with the asset mapping
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { BrandPlugin, EmailBrand } from "@samva/markup/brand";
|
|
2
|
+
import { EmailDiagnostic } from "@samva/markup/diagnostics";
|
|
3
|
+
//#region src/layout.d.ts
|
|
4
|
+
/** Directories scanned for templates when no `dir` is configured, in scan order. */
|
|
5
|
+
declare const DEFAULT_TEMPLATE_DIRS: readonly ["templates", "emails"];
|
|
6
|
+
/** The folder for files this package generates, relative to the project root. Gitignore it. */
|
|
7
|
+
declare const SAMVA_DIR = ".samva";
|
|
8
|
+
/** A project's files by root-relative POSIX path: text as strings, imported assets as bytes. */
|
|
9
|
+
type ProjectFiles = Readonly<Record<string, string | Uint8Array>>;
|
|
10
|
+
/**
|
|
11
|
+
* The absolute directories a project's templates live in. A configured `dir`
|
|
12
|
+
* is the only one scanned; otherwise every default directory that exists. A
|
|
13
|
+
* directory outside the root cannot be compiled, because a project's files are
|
|
14
|
+
* addressed relative to its root, so it is refused rather than half-read.
|
|
15
|
+
*/
|
|
16
|
+
declare const templateDirectories: (root: string, dir?: string | undefined) => Promise<readonly string[]>;
|
|
17
|
+
/** Every `.tsx` file beneath the given directories, as root-relative paths, sorted. */
|
|
18
|
+
declare const discoverEntries: (root: string, dirs: readonly string[]) => Promise<readonly string[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Read the project into the map the compiler consumes: scripts, stylesheets
|
|
21
|
+
* and JSON as text, imported assets as bytes. Hidden folders (`.samva`, `.git`)
|
|
22
|
+
* and `node_modules` are not part of a project.
|
|
23
|
+
*/
|
|
24
|
+
declare const readProjectFiles: (root: string) => Promise<ProjectFiles>;
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/brand.d.ts
|
|
27
|
+
/** A host-resolved brand; a host may attach its content digest. */
|
|
28
|
+
interface ResolvedBrand extends EmailBrand {
|
|
29
|
+
readonly digest?: string | undefined;
|
|
30
|
+
}
|
|
31
|
+
/** A finding emitted by the host that resolves the brand. */
|
|
32
|
+
interface BrandWarning {
|
|
33
|
+
readonly code: string;
|
|
34
|
+
readonly message: string;
|
|
35
|
+
}
|
|
36
|
+
type BrandResolution = {
|
|
37
|
+
readonly ok: true;
|
|
38
|
+
/** `undefined` when the project imports no brand. */
|
|
39
|
+
readonly brand: ResolvedBrand | undefined;
|
|
40
|
+
readonly source: string;
|
|
41
|
+
readonly warnings: readonly BrandWarning[];
|
|
42
|
+
} | {
|
|
43
|
+
readonly ok: false;
|
|
44
|
+
readonly message: string;
|
|
45
|
+
};
|
|
46
|
+
/** The host owns brand storage, authentication and resolution caching. */
|
|
47
|
+
interface BrandResolver {
|
|
48
|
+
readonly resolve: (files: ProjectFiles, themePath: string | undefined) => Promise<BrandResolution>;
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { DEFAULT_TEMPLATE_DIRS as a, discoverEntries as c, ResolvedBrand as i, readProjectFiles as l, BrandResolver as n, ProjectFiles as o, BrandWarning as r, SAMVA_DIR as s, BrandResolution as t, templateDirectories as u };
|
|
52
|
+
//# sourceMappingURL=brand-BkXQMGgY.d.ts.map
|
package/dist/build.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ProjectOptions, TemplateChannel } from "./project.js";
|
|
2
2
|
import { RenderedIrEmail, RenderedIrWhatsApp, TemplateIr } from "@samva/markup/render";
|
|
3
3
|
import { EmailDiagnostic } from "@samva/markup/diagnostics";
|
|
4
4
|
//#region src/build.d.ts
|
package/dist/build.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as renderEmailFixtures, S as renderChannelFixture, b as finding, i as loadProject, n as createProjectSession, s as isDeliverableBase, x as hasErrors, y as emailCompatibility } from "./project-DwbOoPDk.js";
|
|
2
2
|
import markupPackage from "@samva/markup/package.json" with { type: "json" };
|
|
3
3
|
//#region src/build.ts
|
|
4
4
|
/** The compiler a build ran, as a publication records it. */
|
package/dist/dev.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import { n as BrandResolver } from "./brand-BkXQMGgY.js";
|
|
2
|
+
import { t as EditorAffordances } from "./editor-DfdlKEeu.js";
|
|
3
|
+
import { BrandPlugin } from "@samva/markup/brand";
|
|
1
4
|
//#region src/dev.d.ts
|
|
2
5
|
interface DevServerOptions {
|
|
6
|
+
readonly brandResolver?: BrandResolver | undefined;
|
|
7
|
+
readonly brandPlugin?: BrandPlugin | undefined;
|
|
8
|
+
/** Whether the host provides authenticated editor capabilities. */
|
|
9
|
+
readonly authenticated?: boolean | undefined;
|
|
10
|
+
readonly editorAffordances?: EditorAffordances | undefined;
|
|
3
11
|
/** The project root. Default: the working directory. */
|
|
4
12
|
readonly root?: string | undefined;
|
|
5
13
|
/** The templates directory, relative to `root`. Default: `templates/` and `emails/`, whichever exist. */
|
package/dist/dev.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as samvaEditor } from "./editor-
|
|
1
|
+
import { t as samvaEditor } from "./editor-DnFOzVJA.js";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
//#region src/dev.ts
|
|
4
4
|
/** Start the local editor for a template project. */
|
|
@@ -19,7 +19,13 @@ const startDevServer = async (options = {}) => {
|
|
|
19
19
|
...options.host === void 0 ? {} : { host: options.host },
|
|
20
20
|
open: options.open === true
|
|
21
21
|
},
|
|
22
|
-
plugins: [samvaEditor({
|
|
22
|
+
plugins: [samvaEditor({
|
|
23
|
+
templatesDir: options.dir,
|
|
24
|
+
brandResolver: options.brandResolver,
|
|
25
|
+
brandPlugin: options.brandPlugin,
|
|
26
|
+
authenticated: options.authenticated,
|
|
27
|
+
editorAffordances: options.editorAffordances
|
|
28
|
+
})]
|
|
23
29
|
});
|
|
24
30
|
try {
|
|
25
31
|
await server.listen();
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.3 | 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)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--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-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--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-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-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--spacing:.25rem;--container-lg:32rem;--container-2xl:42rem;--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);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--shadow-xs:0 1px 2px 0 #0000000d;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent-email:var(--accent-email);--color-sel-soft:var(--sel-soft);--color-sel-mid:var(--sel-mid);--color-background:var(--background);--color-foreground:var(--foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-border:var(--border);--color-border-subtle:var(--border-subtle);--color-surface-inset:var(--surface-inset);--color-surface-elevated:var(--surface-elevated);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-placeholder:var(--placeholder);--color-status-success:var(--status-success);--color-status-warning:var(--status-warning);--color-status-error:var(--status-error)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.right-0{right:0}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[80\]{z-index:80}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[111\]{z-index:111}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[131\]{z-index:131}.z-\[200\]{z-index:200}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:var(--spacing)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:var(--spacing)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-3\.5{margin-bottom:calc(var(--spacing) * 3.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-\[7px\]{width:7px;height:7px}.size-\[11px\]{width:11px;height:11px}.size-\[13px\]{width:13px;height:13px}.size-\[14px\]{width:14px;height:14px}.size-\[15px\]{width:15px;height:15px}.size-\[16px\]{width:16px;height:16px}.size-full{width:100%;height:100%}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-7\.5{height:calc(var(--spacing) * 7.5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[30px\]{height:30px}.h-\[92px\]{height:92px}.h-\[calc\(100\%-2rem\)\]{height:calc(100% - 2rem)}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-\[85dvh\]{max-height:85dvh}.max-h-\[min\(560px\,70vh\)\]{max-height:min(560px,70vh)}.min-h-0{min-height:0}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-52{min-height:calc(var(--spacing) * 52)}.min-h-full{min-height:100%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-6{width:calc(var(--spacing) * 6)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-\[30px\]{width:30px}.w-\[42px\]{width:42px}.w-\[52px\]{width:52px}.w-\[82px\]{width:82px}.w-\[116px\]{width:116px}.w-\[150px\]{width:150px}.w-\[360px\]{width:360px}.w-\[375px\]{width:375px}.w-\[380px\]{width:380px}.w-\[400px\]{width:400px}.w-\[420px\]{width:420px}.w-\[600px\]{width:600px}.w-\[clamp\(96px\,18vw\,240px\)\]{width:clamp(96px,18vw,240px)}.w-\[min\(840px\,calc\(100vw-32px\)\)\]{width:min(840px,100vw - 32px)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[72px\]{max-width:72px}.max-w-\[92vw\]{max-width:92vw}.max-w-\[170px\]{max-width:170px}.max-w-\[180px\]{max-width:180px}.max-w-\[280px\]{max-width:280px}.max-w-\[420px\]{max-width:420px}.max-w-\[460px\]{max-width:460px}.max-w-\[720px\]{max-width:720px}.max-w-\[1100px\]{max-width:1100px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-\[8ch\]{min-width:8ch}.min-w-\[128px\]{min-width:128px}.min-w-\[var\(--anchor-width\)\]{min-width:var(--anchor-width)}.flex-1{flex:1}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.origin-\[var\(--transform-origin\)\]{transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-3{--tw-translate-x:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}: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)))}: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)))}: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)))}: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)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[5px\]{border-radius:5px}.rounded-\[6px\]{border-radius:6px}.rounded-\[7px\]{border-radius:7px}.rounded-\[9px\]{border-radius:9px}.rounded-\[18px\]{border-radius:18px}.rounded-\[28px\]{border-radius:28px}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[color\:var\(--editor-well-border\)\]{border-color:var(--editor-well-border)}.border-accent-email,.border-accent-email\/40{border-color:var(--color-accent-email)}@supports (color:color-mix(in lab, red, red)){.border-accent-email\/40{border-color:color-mix(in oklab, var(--color-accent-email) 40%, transparent)}}.border-border{border-color:var(--color-border)}.border-border-subtle{border-color:var(--color-border-subtle)}.border-border\/80{border-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--color-border) 80%, transparent)}}.border-status-error\/30{border-color:var(--color-status-error)}@supports (color:color-mix(in lab, red, red)){.border-status-error\/30{border-color:color-mix(in oklab, var(--color-status-error) 30%, transparent)}}.border-status-error\/40{border-color:var(--color-status-error)}@supports (color:color-mix(in lab, red, red)){.border-status-error\/40{border-color:color-mix(in oklab, var(--color-status-error) 40%, transparent)}}.border-status-warning\/45{border-color:var(--color-status-warning)}@supports (color:color-mix(in lab, red, red)){.border-status-warning\/45{border-color:color-mix(in oklab, var(--color-status-warning) 45%, transparent)}}.border-transparent{border-color:#0000}.bg-\[\#e9e2d8\]{background-color:#e9e2d8}.bg-\[var\(--editor-backdrop\,rgb\(0_0_0\/0\.28\)\)\]{background-color:var(--editor-backdrop,#00000047)}.bg-\[var\(--editor-canvas-bg\)\]{background-color:var(--editor-canvas-bg)}.bg-\[var\(--editor-raised-bg\)\]{background-color:var(--editor-raised-bg)}.bg-\[var\(--editor-scrollbar-thumb\)\]{background-color:var(--editor-scrollbar-thumb)}.bg-\[var\(--editor-well-bg\)\]{background-color:var(--editor-well-bg)}.bg-accent-email{background-color:var(--color-accent-email)}.bg-background,.bg-background\/45{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/45{background-color:color-mix(in oklab, var(--color-background) 45%, transparent)}}.bg-background\/92{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/92{background-color:color-mix(in oklab, var(--color-background) 92%, transparent)}}.bg-background\/95{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--color-background) 95%, transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-foreground{background-color:var(--color-foreground)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted\/30{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--color-muted) 30%, transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-sel-soft{background-color:var(--color-sel-soft)}.bg-status-error,.bg-status-error\/5{background-color:var(--color-status-error)}@supports (color:color-mix(in lab, red, red)){.bg-status-error\/5{background-color:color-mix(in oklab, var(--color-status-error) 5%, transparent)}}.bg-status-success\/10{background-color:var(--color-status-success)}@supports (color:color-mix(in lab, red, red)){.bg-status-success\/10{background-color:color-mix(in oklab, var(--color-status-success) 10%, transparent)}}.bg-status-success\/12{background-color:var(--color-status-success)}@supports (color:color-mix(in lab, red, red)){.bg-status-success\/12{background-color:color-mix(in oklab, var(--color-status-success) 12%, transparent)}}.bg-status-warning{background-color:var(--color-status-warning)}.bg-surface-elevated{background-color:var(--color-surface-elevated)}.bg-surface-inset,.bg-surface-inset\/40{background-color:var(--color-surface-inset)}@supports (color:color-mix(in lab, red, red)){.bg-surface-inset\/40{background-color:color-mix(in oklab, var(--color-surface-inset) 40%, transparent)}}.bg-surface-inset\/80{background-color:var(--color-surface-inset)}@supports (color:color-mix(in lab, red, red)){.bg-surface-inset\/80{background-color:color-mix(in oklab, var(--color-surface-inset) 80%, transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.px-\[7px\]{padding-inline:7px}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-\[3px\]{padding-block:3px}.py-px{padding-block:1px}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.82em\]{font-size:.82em}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.04em\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\[0\.06em\]{--tw-tracking:.06em;letter-spacing:.06em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[color\:var\(--editor-raised-fg\)\]{color:var(--editor-raised-fg)}.text-accent-email{color:var(--color-accent-email)}.text-background{color:var(--color-background)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-placeholder{color:var(--color-placeholder)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-status-error{color:var(--color-status-error)}.text-status-success{color:var(--color-status-success)}.text-status-warning{color:var(--color-status-warning)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.opacity-70{opacity:.7}.shadow{--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)}.shadow-\[0_0_0_1px_var\(--accent-email\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--accent-email));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--editor-raised-shadow\)\]{--tw-shadow:var(--editor-raised-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--editor-well-shadow\)\]{--tw-shadow:var(--editor-well-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow-floating\)\]{--tw-shadow:var(--shadow-floating);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow-lg\)\]{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow-md\)\]{--tw-shadow:var(--shadow-md);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow-sm\)\]{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow-xl\)\]{--tw-shadow:var(--shadow-xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--shadow-xs\)\]{--tw-shadow:var(--shadow-xs);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--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)}.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)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px 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)}.ring-1{--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)}.ring-2{--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)}.ring-accent-email\/20{--tw-ring-color:var(--color-accent-email)}@supports (color:color-mix(in lab, red, red)){.ring-accent-email\/20{--tw-ring-color:color-mix(in oklab, var(--color-accent-email) 20%, transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-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,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,box-shadow\]{transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background-color\,border-color\,box-shadow\]{transition-property:color,background-color,border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,scale\,opacity\]{transition-property:transform,scale,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,transform\,box-shadow\]{transition-property:width,transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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))}.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))}.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))}.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))}.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))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-180{--tw-duration:.18s;transition-duration:.18s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[overflow-anchor\:none\]{overflow-anchor:none}.ring-inset{--tw-ring-inset:inset}.placeholder\:text-muted-foreground\/60::placeholder{color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/60::placeholder{color:color-mix(in oklab, var(--color-muted-foreground) 60%, transparent)}}.placeholder\:text-placeholder::placeholder{color:var(--color-placeholder)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{content:var(--tw-content);inset-block:0}.before\:left-1\/2:before{content:var(--tw-content);left:50%}.before\:w-px:before{content:var(--tw-content);width:1px}.before\:-translate-x-1\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:bg-border:before{content:var(--tw-content);background-color:var(--color-border)}.before\:transition-colors:before{content:var(--tw-content);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))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-1\/2:after{content:var(--tw-content);top:50%}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:h-10:after{content:var(--tw-content);height:calc(var(--spacing) * 10)}.after\:w-1:after{content:var(--tw-content);width:var(--spacing)}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:-translate-y-1\/2:after{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.after\:rounded-full:after{content:var(--tw-content);border-radius:2147483647px}.after\:bg-muted-foreground\/35:after{content:var(--tw-content);background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.after\:bg-muted-foreground\/35:after{background-color:color-mix(in oklab, var(--color-muted-foreground) 35%, transparent)}}.after\:opacity-60:after{content:var(--tw-content);opacity:.6}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\:mt-0:first-child{margin-top:0}.read-only\:bg-muted:read-only{background-color:var(--color-muted)}.read-only\:shadow-none:read-only{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.hover\:border-sel-mid:hover{border-color:var(--color-sel-mid)}.hover\:bg-\[var\(--editor-raised-bg-hover\)\]:hover{background-color:var(--editor-raised-bg-hover)}.hover\:bg-\[var\(--editor-scrollbar-thumb-hover\)\]:hover{background-color:var(--editor-scrollbar-thumb-hover)}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-status-error:hover{color:var(--color-status-error)}.hover\:opacity-90:hover{opacity:.9}.hover\:before\:w-0\.5:hover:before{content:var(--tw-content);width:calc(var(--spacing) * .5)}.hover\:before\:bg-accent-email:hover:before,.hover\:after\:bg-accent-email:hover:after{content:var(--tw-content);background-color:var(--color-accent-email)}.hover\:after\:opacity-100:hover:after{content:var(--tw-content);opacity:1}}.focus\:bg-background:focus,.focus-visible\:bg-background:focus-visible{background-color:var(--color-background)}.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)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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)}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:shadow-\[var\(--editor-raised-shadow-pressed\)\]:active{--tw-shadow:var(--editor-raised-shadow-pressed);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.active\:before\:bg-accent-email:active:before{content:var(--tw-content);background-color:var(--color-accent-email)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-surface-inset:disabled{background-color:var(--color-surface-inset)}.disabled\:text-muted-foreground:disabled{color:var(--color-muted-foreground)}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:shadow-none:disabled{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-expanded\:bg-\[var\(--editor-raised-bg-hover\)\][aria-expanded=true]{background-color:var(--editor-raised-bg-hover)}.aria-pressed\:border-\[color\:var\(--editor-chip-border\)\][aria-pressed=true]{border-color:var(--editor-chip-border)}.aria-pressed\:bg-\[var\(--editor-chip-bg\)\][aria-pressed=true]{background-color:var(--editor-chip-bg)}.aria-pressed\:bg-\[var\(--editor-pressed-bg\)\][aria-pressed=true]{background-color:var(--editor-pressed-bg)}.aria-pressed\:text-\[color\:var\(--editor-chip-fg\)\][aria-pressed=true]{color:var(--editor-chip-fg)}.aria-pressed\:shadow-\[var\(--editor-chip-shadow\)\][aria-pressed=true]{--tw-shadow:var(--editor-chip-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-pressed\:shadow-\[var\(--editor-pressed-shadow\)\][aria-pressed=true]{--tw-shadow:var(--editor-pressed-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-active\:border-\[color\:var\(--editor-chip-border\)\][data-active]{border-color:var(--editor-chip-border)}.data-active\:bg-\[var\(--editor-chip-bg\)\][data-active]{background-color:var(--editor-chip-bg)}.data-active\:text-\[color\:var\(--editor-chip-fg\)\][data-active]{color:var(--editor-chip-fg)}.data-active\:shadow-\[var\(--editor-chip-shadow\)\][data-active]{--tw-shadow:var(--editor-chip-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-disabled\:shadow-none[data-disabled]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-highlighted\:bg-muted[data-highlighted]{background-color:var(--color-muted)}.data-popup-open\:bg-\[var\(--editor-raised-bg-hover\)\][data-popup-open]{background-color:var(--editor-raised-bg-hover)}.data-\[ending-style\]\:scale-95[data-ending-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[ending-style\]\:opacity-0[data-ending-style]{opacity:0}.data-\[highlighted\]\:bg-sel-soft[data-highlighted]{background-color:var(--color-sel-soft)}.data-\[highlighted\]\:text-accent-email[data-highlighted]{color:var(--color-accent-email)}.data-\[pressed\]\:border-\[color\:var\(--editor-chip-border\)\][data-pressed]{border-color:var(--editor-chip-border)}.data-\[pressed\]\:bg-\[var\(--editor-chip-bg\)\][data-pressed]{background-color:var(--editor-chip-bg)}.data-\[pressed\]\:text-\[color\:var\(--editor-chip-fg\)\][data-pressed]{color:var(--editor-chip-fg)}.data-\[pressed\]\:shadow-\[var\(--editor-chip-shadow\)\][data-pressed]{--tw-shadow:var(--editor-chip-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[starting-style\]\:scale-95[data-starting-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[starting-style\]\:opacity-0[data-starting-style]{opacity:0}@media (width>=40rem){.sm\:block{display:block}.sm\:inline{display:inline}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}}.dark\:grid:where(.dark,.dark *){display:grid}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:bg-\[\#0b141a\]:where(.dark,.dark *){background-color:#0b141a}.dark\:read-only\:bg-muted\/40:where(.dark,.dark *):read-only{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.dark\:read-only\:bg-muted\/40:where(.dark,.dark *):read-only{background-color:color-mix(in oklab, var(--color-muted) 40%, transparent)}}.\[\&_\[data-channel-button\]\]\:px-1\.5 [data-channel-button]{padding-inline:calc(var(--spacing) * 1.5)}.\[\&_\[data-channel-label\]\]\:hidden [data-channel-label]{display:none}}:root{--accent-email:oklch(62% .21 255);--sel-soft:oklch(62% .21 255/.08);--sel-mid:oklch(62% .21 255/.35);--editor-scrollbar-thumb:oklch(78% .01 286);--editor-scrollbar-thumb-hover:oklch(62% .015 286)}.dark{--sel-soft:oklch(62% .21 255/.16);--editor-scrollbar-thumb:oklch(32% .01 286);--editor-scrollbar-thumb-hover:oklch(42% .012 286)}.samva-editor-shell{--editor-bg:var(--background);--editor-fg:var(--foreground);--editor-surface:var(--card);--editor-surface-elevated:var(--surface-elevated);--editor-surface-inset:var(--surface-inset);--editor-muted:var(--muted);--editor-muted-fg:var(--muted-foreground);--editor-placeholder:var(--placeholder);--editor-border:var(--border);--editor-border-subtle:var(--border-subtle);--editor-hover:var(--muted);--editor-active:var(--accent);--editor-accent:var(--accent-email);--editor-accent-fg:oklch(100% 0 0);--editor-selection-soft:var(--sel-soft);--editor-selection-mid:var(--sel-mid);--editor-focus-ring:var(--ring);--editor-disabled-fg:var(--muted-foreground);--editor-success:var(--status-success);--editor-warning:var(--status-warning);--editor-error:var(--status-error);--editor-info:var(--status-info);--editor-canvas-bg:var(--surface-inset);--editor-canvas-grid:var(--border)}@supports (color:color-mix(in lab, red, red)){.samva-editor-shell{--editor-canvas-grid:color-mix(in oklab, var(--border) 64%, transparent)}}.samva-editor-shell{--editor-canvas-hover:var(--editor-selection-mid);--editor-canvas-selected:var(--editor-accent);--editor-canvas-selected-fg:var(--editor-accent-fg);--editor-canvas-generated:oklch(62% .21 305);--editor-canvas-document-bg:oklch(100% 0 0);--editor-backdrop:oklab(0% none none/.28);--editor-shadow-control:var(--shadow-xs);--editor-shadow-overlay:var(--shadow-lg);--editor-shadow-floating:var(--shadow-floating);--editor-raised-bg:var(--primary);--editor-raised-bg-hover:var(--editor-raised-bg)}@supports (color:color-mix(in lab, red, red)){.samva-editor-shell{--editor-raised-bg-hover:color-mix(in oklab, var(--editor-raised-bg), white 8%)}}.samva-editor-shell{--editor-raised-fg:var(--primary-foreground);--editor-raised-shadow:0 1px 2px 0 oklch(0% 0 0/.2), 0 0 0 1px var(--foreground), inset 0 3px 5px 0 oklch(100% 0 0/.16), inset 0 0 0 1px oklch(100% 0 0/.12), inset 0 -6px 10px 0 oklch(0% 0 0/.2)}@supports (color:color-mix(in lab, red, red)){.samva-editor-shell{--editor-raised-shadow:0 1px 2px 0 oklch(0% 0 0/.2), 0 0 0 1px color-mix(in oklab, var(--foreground) 16%, transparent), inset 0 3px 5px 0 oklch(100% 0 0/.16), inset 0 0 0 1px oklch(100% 0 0/.12), inset 0 -6px 10px 0 oklch(0% 0 0/.2)}}.samva-editor-shell{--editor-raised-shadow-pressed:0 0 0 1px var(--foreground), inset 0 2px 4px 0 oklch(0% 0 0/.35)}@supports (color:color-mix(in lab, red, red)){.samva-editor-shell{--editor-raised-shadow-pressed:0 0 0 1px color-mix(in oklab, var(--foreground) 16%, transparent), inset 0 2px 4px 0 oklch(0% 0 0/.35)}}.samva-editor-shell{--editor-chip-bg:var(--background);--editor-chip-fg:var(--foreground);--editor-chip-border:var(--border);--editor-chip-shadow:var(--shadow-md);--editor-pressed-bg:var(--accent)}@supports (color:color-mix(in lab, red, red)){.samva-editor-shell{--editor-pressed-bg:color-mix(in oklab, var(--accent), black 3%)}}.samva-editor-shell{--editor-pressed-shadow:inset 0 1px 3px 0 oklch(0% 0 0/.12);--editor-well-bg:var(--surface-inset)}@supports (color:color-mix(in lab, red, red)){.samva-editor-shell{--editor-well-bg:color-mix(in oklab, var(--surface-inset) 55%, transparent)}}.samva-editor-shell{--editor-well-border:var(--input);--editor-well-shadow:inset 0 1px 2px 0 oklch(0% 0 0/.05);background-color:var(--editor-bg);color:var(--editor-fg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-size:13px;line-height:1.45}.samva-editor-frame{container:samva-editor/inline-size}.dark .samva-editor-shell{--editor-raised-bg-hover:var(--editor-raised-bg)}@supports (color:color-mix(in lab, red, red)){.dark .samva-editor-shell{--editor-raised-bg-hover:color-mix(in oklab, var(--editor-raised-bg), black 8%)}}.dark .samva-editor-shell{--editor-raised-shadow:0 1px 2px 0 oklch(0% 0 0/.35), 0 0 0 1px oklch(0% 0 0/.4), inset 0 3px 5px 0 oklch(0% 0 0/.1), inset 0 0 0 1px oklch(100% 0 0/.25), inset 0 -6px 10px 0 oklch(100% 0 0/.22);--editor-raised-shadow-pressed:0 0 0 1px oklch(0% 0 0/.4), inset 0 2px 4px 0 oklch(0% 0 0/.25);--editor-pressed-bg:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark .samva-editor-shell{--editor-pressed-bg:color-mix(in oklab, var(--accent), white 12%)}}.dark .samva-editor-shell{--editor-pressed-shadow:inset 0 1px 3px 0 oklch(0% 0 0/.45);--editor-well-bg:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark .samva-editor-shell{--editor-well-bg:color-mix(in oklab, var(--input) 20%, transparent)}}.dark .samva-editor-shell{--editor-well-shadow:inset 0 1px 2px 0 oklch(0% 0 0/.35);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@container samva-editor (width<=1279px){.samva-editor-shell[data-layout=wide] [data-editor-rail=right],.samva-editor-shell[data-layout=wide] [data-editor-resize=right]{display:none}}@container samva-editor (width<=979px){.samva-editor-shell[data-layout=wide] [data-editor-rail=left],.samva-editor-shell[data-layout=wide] [data-editor-resize=left]{display:none}}.samva-inspector-content>div{border:0;border-bottom:1px solid var(--border-subtle);background:0 0;border-radius:0;margin:0;padding-inline:12px}.samva-inspector-content>div:last-child{border-bottom:0}.samva-radius-slider{appearance:none;cursor:ew-resize;background:0 0;height:18px}.samva-radius-slider::-webkit-slider-runnable-track{background:var(--border);border-radius:999px;height:3px}.samva-radius-slider::-webkit-slider-thumb{appearance:none;border:1px solid var(--border);background:var(--foreground);width:12px;height:12px;box-shadow:var(--editor-shadow-control);border-radius:999px;margin-top:-4.5px}.samva-radius-slider::-moz-range-track{background:var(--border);border-radius:999px;height:3px}.samva-radius-slider::-moz-range-thumb{border:1px solid var(--border);background:var(--foreground);width:12px;height:12px;box-shadow:var(--editor-shadow-control);border-radius:999px}.samva-radius-slider:focus-visible{outline:2px solid var(--accent-email)}@supports (color:color-mix(in lab, red, red)){.samva-radius-slider:focus-visible{outline:2px solid color-mix(in oklab, var(--accent-email) 55%, transparent)}}.samva-radius-slider:focus-visible{outline-offset:3px}.samva-radius-slider-overridden::-webkit-slider-thumb{background:var(--accent-email)}.samva-radius-slider-overridden::-moz-range-thumb{background:var(--accent-email)}@container samva-editor (width<=719px){.samva-editor-workspace .samva-editor-scroll{padding-inline:16px;padding-top:16px}.samva-editor-shell button{touch-action:manipulation}}.samva-editor-workspace{background-color:var(--editor-canvas-bg);background-image:linear-gradient(to right, var(--editor-canvas-grid) 1px, transparent 1px), linear-gradient(to bottom, var(--editor-canvas-grid) 1px, transparent 1px);background-position:top;background-size:24px 24px}.dark .samva-editor-workspace{--editor-canvas-grid:var(--editor-border)}@supports (color:color-mix(in lab, red, red)){.dark .samva-editor-workspace{--editor-canvas-grid:color-mix(in oklab, var(--editor-border) 55%, transparent)}}.samva-editor-scroll{color-scheme:inherit;scrollbar-width:thin;scrollbar-color:var(--editor-scrollbar-thumb) transparent}.samva-editor-scroll::-webkit-scrollbar{width:10px;height:10px}.samva-editor-scroll::-webkit-scrollbar-track{background:0 0}.samva-editor-scroll::-webkit-scrollbar-thumb{background-color:var(--editor-scrollbar-thumb);background-clip:padding-box;border:2px solid #0000;border-radius:999px}.samva-editor-scroll::-webkit-scrollbar-thumb:hover{background-color:var(--editor-scrollbar-thumb-hover);background-clip:padding-box}@media (prefers-reduced-motion:reduce){.samva-editor-shell,.samva-editor-shell *,.samva-editor-shell :before,.samva-editor-shell :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--border-subtle:oklch(94% .002 286);--surface-inset:oklch(97.5% .001 286);--surface-elevated:oklch(99.5% 0 0);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--placeholder:oklch(65% .012 285.9);--status-success:oklch(65% .22 155);--status-warning:oklch(75% .18 75);--status-error:oklch(57.7% .245 27.325);--shadow-md:0 2px 4px -1px oklch(0% 0 0/.06), 0 6px 12px -2px oklch(0% 0 0/.08);--shadow-xl:0 12px 24px -6px oklch(0% 0 0/.1), 0 32px 64px -12px oklch(0% 0 0/.16)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(75% .015 286.067);--accent:oklch(27.4% .006 286.033);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--border-subtle:oklch(100% 0 0/.07);--surface-inset:oklch(16% .004 286);--surface-elevated:oklch(18% .005 286);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--placeholder:oklch(68% .012 285.9);--shadow-md:0 2px 4px -1px oklch(0% 0 0/.4), 0 6px 12px -2px oklch(0% 0 0/.45);--shadow-xl:0 12px 24px -6px oklch(0% 0 0/.55), 0 32px 64px -12px oklch(0% 0 0/.7)}html,body,#root{height:100%;margin:0}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{color:var(--foreground);background:var(--background);-webkit-font-smoothing:antialiased;font-family:ui-sans-serif,system-ui,sans-serif;font-size:13px;line-height:1.45;overflow:hidden}@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}@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-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@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-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-content{syntax:"*";inherits:false;initial-value:""}@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}
|