draftify-react 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +284 -280
- package/dist/draftify-react.css +1 -1
- package/dist/draftify-react.es.js +8 -4
- package/dist/draftify-react.umd.js +12 -12
- package/index.d.ts +2 -2
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -1,280 +1,284 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## ⚠️ Important Dependency Notice
|
|
13
|
-
|
|
14
|
-
`draftify-react` **does not work on its own**.
|
|
15
|
-
|
|
16
|
-
It requires the Draftify core engine:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npm install draftify
|
|
20
|
-
npm install draftify-react
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Both packages must be installed.
|
|
24
|
-
`draftify-react` renders and manipulates **Draftify documents**, but it does not define the document model itself.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Features
|
|
29
|
-
|
|
30
|
-
- ✅ Ready-to-use rich editor
|
|
31
|
-
- ✅ Built on top of `draftify`
|
|
32
|
-
- ✅ Precompiled CSS (no Tailwind setup required)
|
|
33
|
-
- ✅ Tailwind v4 compatible
|
|
34
|
-
- ✅ Drag & drop block reordering
|
|
35
|
-
- ✅ Document metadata handling
|
|
36
|
-
- ✅ Preview & editor modes
|
|
37
|
-
- ✅ Clipboard, export & formatting support
|
|
38
|
-
- ✅ Reader component for rendering documents
|
|
39
|
-
- ✅ Zero configuration required to start
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Installation
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
npm install draftify draftify-react
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## ❗ Controlled Editor (Very Important)
|
|
52
|
-
|
|
53
|
-
`draftify-react` is a **controlled editor**.
|
|
54
|
-
|
|
55
|
-
This means:
|
|
56
|
-
|
|
57
|
-
- **You own the document state**
|
|
58
|
-
- The editor **does not store blocks internally**
|
|
59
|
-
- You must declare and manage the blocks array yourself
|
|
60
|
-
|
|
61
|
-
This design is intentional. It allows:
|
|
62
|
-
|
|
63
|
-
- Full control over persistence (database, localStorage, APIs)
|
|
64
|
-
- Multiple views of the same document (editor + reader)
|
|
65
|
-
- Easy integration with frameworks and state managers
|
|
66
|
-
- Predictable, debuggable data flow
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Minimal Usage (Required Pattern)
|
|
71
|
-
|
|
72
|
-
This is the **correct and complete** way to use `draftify-react`.
|
|
73
|
-
|
|
74
|
-
```tsx
|
|
75
|
-
import { useState } from "react";
|
|
76
|
-
import type { DraftifyBlock } from "draftify";
|
|
77
|
-
import DraftifyReact, { Reader } from "draftify-react";
|
|
78
|
-
import "draftify-react/styles.css";
|
|
79
|
-
|
|
80
|
-
export default function App() {
|
|
81
|
-
const [blocksData, modifyBlocks] = useState<DraftifyBlock[]>([]);
|
|
82
|
-
|
|
83
|
-
return (
|
|
84
|
-
<>
|
|
85
|
-
<DraftifyReact blocksData={blocksData} modifyBlocks={modifyBlocks} />
|
|
86
|
-
|
|
87
|
-
{/* Render the same document anywhere */}
|
|
88
|
-
<Reader blocksData={blocksData} />
|
|
89
|
-
</>
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### What’s happening here
|
|
95
|
-
|
|
96
|
-
- `blocksData` holds the Draftify document
|
|
97
|
-
- `modifyBlocks` is passed to the editor
|
|
98
|
-
- The editor updates state via `modifyBlocks`
|
|
99
|
-
- `Reader` consumes the **same data** to render content
|
|
100
|
-
|
|
101
|
-
There is **one source of truth** for your document.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## TypeScript Users (Recommended)
|
|
106
|
-
|
|
107
|
-
Draftify exposes its schema types via the core package.
|
|
108
|
-
|
|
109
|
-
You should always type your state explicitly:
|
|
110
|
-
|
|
111
|
-
```ts
|
|
112
|
-
import type { DraftifyBlock } from "draftify";
|
|
113
|
-
|
|
114
|
-
const [blocksData, modifyBlocks] = useState<DraftifyBlock[]>([]);
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
This ensures:
|
|
118
|
-
|
|
119
|
-
- Full IntelliSense
|
|
120
|
-
- Compile-time validation
|
|
121
|
-
- Safer integration with APIs and storage layers
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Styling (Required)
|
|
126
|
-
|
|
127
|
-
`draftify-react` ships with **precompiled CSS**.
|
|
128
|
-
|
|
129
|
-
You must import it **once** in your app:
|
|
130
|
-
|
|
131
|
-
```css
|
|
132
|
-
@import "draftify-react/styles.css";
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
or in JavaScript:
|
|
136
|
-
|
|
137
|
-
```ts
|
|
138
|
-
import "draftify-react/styles.css";
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Tailwind v4 Users
|
|
142
|
-
|
|
143
|
-
No configuration required.
|
|
144
|
-
All Draftify styles are already compiled and scoped.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Reader Component
|
|
149
|
-
|
|
150
|
-
`draftify-react` exports a `Reader` component for rendering documents without editing.
|
|
151
|
-
|
|
152
|
-
```tsx
|
|
153
|
-
import { Reader } from "draftify-react";
|
|
154
|
-
|
|
155
|
-
<Reader blocksData={blocksData} />;
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
Use cases:
|
|
159
|
-
|
|
160
|
-
- Read-only previews
|
|
161
|
-
- Blog posts
|
|
162
|
-
- Exported documents
|
|
163
|
-
- Public-facing content
|
|
164
|
-
|
|
165
|
-
The `Reader` component **never mutates data**.
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Hooks API (Advanced)
|
|
170
|
-
|
|
171
|
-
### `useDraftifyReact`
|
|
172
|
-
|
|
173
|
-
```ts
|
|
174
|
-
import { useDraftifyReact } from "draftify-react";
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
This hook powers the editor internally and exposes:
|
|
178
|
-
|
|
179
|
-
- Document state helpers
|
|
180
|
-
- Block creation & modification functions
|
|
181
|
-
- Drag & drop handlers
|
|
182
|
-
- View and animation state
|
|
183
|
-
|
|
184
|
-
This is intended for:
|
|
185
|
-
|
|
186
|
-
- Custom editors
|
|
187
|
-
- Headless integrations
|
|
188
|
-
- Advanced UI wrappers
|
|
189
|
-
|
|
190
|
-
Most users **do not need this hook**.
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## Collaboration Between Packages
|
|
195
|
-
|
|
196
|
-
Draftify is intentionally split into two layers:
|
|
197
|
-
|
|
198
|
-
### `draftify`
|
|
199
|
-
|
|
200
|
-
- Schema definitions
|
|
201
|
-
- Block types
|
|
202
|
-
- Validation
|
|
203
|
-
- Normalization
|
|
204
|
-
- Clipboard & export helpers
|
|
205
|
-
- Framework-agnostic logic
|
|
206
|
-
|
|
207
|
-
### `draftify-react`
|
|
208
|
-
|
|
209
|
-
- React components
|
|
210
|
-
- UI interactions
|
|
211
|
-
- Animations
|
|
212
|
-
- Styling
|
|
213
|
-
- Editor and Reader views
|
|
214
|
-
|
|
215
|
-
Because of this separation:
|
|
216
|
-
|
|
217
|
-
- `draftify` can be used in **any framework**
|
|
218
|
-
- `draftify-react` can evolve independently
|
|
219
|
-
- You can build alternative UIs without rewriting logic
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## Project Structure
|
|
224
|
-
|
|
225
|
-
```
|
|
226
|
-
draftify-react/
|
|
227
|
-
├─ dist/
|
|
228
|
-
│ ├─ draftify-react.es.js
|
|
229
|
-
│ ├─ draftify-react.umd.js
|
|
230
|
-
│ └─ draftify-react.css
|
|
231
|
-
│
|
|
232
|
-
├─ index.d.ts
|
|
233
|
-
├─ package.json
|
|
234
|
-
└─ README.md
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
Only runtime-required files are shipped.
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## Exports
|
|
242
|
-
|
|
243
|
-
```ts
|
|
244
|
-
import DraftifyReact from "draftify-react";
|
|
245
|
-
import { Reader, useDraftifyReact } from "draftify-react";
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
Styles:
|
|
249
|
-
|
|
250
|
-
```css
|
|
251
|
-
@import "draftify-react/styles.css";
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## When to Use `draftify-react`
|
|
257
|
-
|
|
258
|
-
Use this package if you want:
|
|
259
|
-
|
|
260
|
-
- A complete editor UI
|
|
261
|
-
- Fast React integration
|
|
262
|
-
- Full control over document state
|
|
263
|
-
- A clean abstraction over Draftify internals
|
|
264
|
-
|
|
265
|
-
If you want to build your own editor UI or use Draftify outside React, use `draftify` directly.
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## Compatibility
|
|
270
|
-
|
|
271
|
-
- React ≥ 18
|
|
272
|
-
- TypeScript supported
|
|
273
|
-
- Tailwind v4 supported
|
|
274
|
-
- ESM & UMD builds included
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## License
|
|
279
|
-
|
|
280
|
-
MIT © 2025 Draftify Team
|
|
1
|
+
[](https://www.npmjs.com/package/draftify-react)
|
|
2
|
+
# Draftify React ✨
|
|
3
|
+
|
|
4
|
+
**A ready-to-use React editor built on top of Draftify**
|
|
5
|
+
|
|
6
|
+
`draftify-react` is a **fully styled, production-ready React editor** powered by the `draftify` core engine. It provides an out-of-the-box editing experience while preserving the structured, schema-driven philosophy of Draftify.
|
|
7
|
+
|
|
8
|
+
This package focuses purely on **UI and interaction**.
|
|
9
|
+
All document logic, schemas, validation, and export utilities live in `draftify`.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
## ⚠️ Important Dependency Notice
|
|
13
|
+
|
|
14
|
+
`draftify-react` **does not work on its own**.
|
|
15
|
+
|
|
16
|
+
It requires the Draftify core engine:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install draftify
|
|
20
|
+
npm install draftify-react
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Both packages must be installed.
|
|
24
|
+
`draftify-react` renders and manipulates **Draftify documents**, but it does not define the document model itself.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Features
|
|
29
|
+
|
|
30
|
+
- ✅ Ready-to-use rich editor
|
|
31
|
+
- ✅ Built on top of `draftify`
|
|
32
|
+
- ✅ Precompiled CSS (no Tailwind setup required)
|
|
33
|
+
- ✅ Tailwind v4 compatible
|
|
34
|
+
- ✅ Drag & drop block reordering
|
|
35
|
+
- ✅ Document metadata handling
|
|
36
|
+
- ✅ Preview & editor modes
|
|
37
|
+
- ✅ Clipboard, export & formatting support
|
|
38
|
+
- ✅ Reader component for rendering documents
|
|
39
|
+
- ✅ Zero configuration required to start
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install draftify draftify-react
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## ❗ Controlled Editor (Very Important)
|
|
52
|
+
|
|
53
|
+
`draftify-react` is a **controlled editor**.
|
|
54
|
+
|
|
55
|
+
This means:
|
|
56
|
+
|
|
57
|
+
- **You own the document state**
|
|
58
|
+
- The editor **does not store blocks internally**
|
|
59
|
+
- You must declare and manage the blocks array yourself
|
|
60
|
+
|
|
61
|
+
This design is intentional. It allows:
|
|
62
|
+
|
|
63
|
+
- Full control over persistence (database, localStorage, APIs)
|
|
64
|
+
- Multiple views of the same document (editor + reader)
|
|
65
|
+
- Easy integration with frameworks and state managers
|
|
66
|
+
- Predictable, debuggable data flow
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Minimal Usage (Required Pattern)
|
|
71
|
+
|
|
72
|
+
This is the **correct and complete** way to use `draftify-react`.
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
import { useState } from "react";
|
|
76
|
+
import type { DraftifyBlock } from "draftify";
|
|
77
|
+
import DraftifyReact, { Reader } from "draftify-react";
|
|
78
|
+
import "draftify-react/styles.css";
|
|
79
|
+
|
|
80
|
+
export default function App() {
|
|
81
|
+
const [blocksData, modifyBlocks] = useState<DraftifyBlock[]>([]);
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<>
|
|
85
|
+
<DraftifyReact blocksData={blocksData} modifyBlocks={modifyBlocks} />
|
|
86
|
+
|
|
87
|
+
{/* Render the same document anywhere */}
|
|
88
|
+
<Reader blocksData={blocksData} />
|
|
89
|
+
</>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### What’s happening here
|
|
95
|
+
|
|
96
|
+
- `blocksData` holds the Draftify document
|
|
97
|
+
- `modifyBlocks` is passed to the editor
|
|
98
|
+
- The editor updates state via `modifyBlocks`
|
|
99
|
+
- `Reader` consumes the **same data** to render content
|
|
100
|
+
|
|
101
|
+
There is **one source of truth** for your document.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## TypeScript Users (Recommended)
|
|
106
|
+
|
|
107
|
+
Draftify exposes its schema types via the core package.
|
|
108
|
+
|
|
109
|
+
You should always type your state explicitly:
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
import type { DraftifyBlock } from "draftify";
|
|
113
|
+
|
|
114
|
+
const [blocksData, modifyBlocks] = useState<DraftifyBlock[]>([]);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
This ensures:
|
|
118
|
+
|
|
119
|
+
- Full IntelliSense
|
|
120
|
+
- Compile-time validation
|
|
121
|
+
- Safer integration with APIs and storage layers
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Styling (Required)
|
|
126
|
+
|
|
127
|
+
`draftify-react` ships with **precompiled CSS**.
|
|
128
|
+
|
|
129
|
+
You must import it **once** in your app:
|
|
130
|
+
|
|
131
|
+
```css
|
|
132
|
+
@import "draftify-react/styles.css";
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
or in JavaScript:
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import "draftify-react/styles.css";
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Tailwind v4 Users
|
|
142
|
+
|
|
143
|
+
No configuration required.
|
|
144
|
+
All Draftify styles are already compiled and scoped.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Reader Component
|
|
149
|
+
|
|
150
|
+
`draftify-react` exports a `Reader` component for rendering documents without editing.
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
import { Reader } from "draftify-react";
|
|
154
|
+
|
|
155
|
+
<Reader blocksData={blocksData} />;
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Use cases:
|
|
159
|
+
|
|
160
|
+
- Read-only previews
|
|
161
|
+
- Blog posts
|
|
162
|
+
- Exported documents
|
|
163
|
+
- Public-facing content
|
|
164
|
+
|
|
165
|
+
The `Reader` component **never mutates data**.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Hooks API (Advanced)
|
|
170
|
+
|
|
171
|
+
### `useDraftifyReact`
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
import { useDraftifyReact } from "draftify-react";
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
This hook powers the editor internally and exposes:
|
|
178
|
+
|
|
179
|
+
- Document state helpers
|
|
180
|
+
- Block creation & modification functions
|
|
181
|
+
- Drag & drop handlers
|
|
182
|
+
- View and animation state
|
|
183
|
+
|
|
184
|
+
This is intended for:
|
|
185
|
+
|
|
186
|
+
- Custom editors
|
|
187
|
+
- Headless integrations
|
|
188
|
+
- Advanced UI wrappers
|
|
189
|
+
|
|
190
|
+
Most users **do not need this hook**.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Collaboration Between Packages
|
|
195
|
+
|
|
196
|
+
Draftify is intentionally split into two layers:
|
|
197
|
+
|
|
198
|
+
### `draftify`
|
|
199
|
+
|
|
200
|
+
- Schema definitions
|
|
201
|
+
- Block types
|
|
202
|
+
- Validation
|
|
203
|
+
- Normalization
|
|
204
|
+
- Clipboard & export helpers
|
|
205
|
+
- Framework-agnostic logic
|
|
206
|
+
|
|
207
|
+
### `draftify-react`
|
|
208
|
+
|
|
209
|
+
- React components
|
|
210
|
+
- UI interactions
|
|
211
|
+
- Animations
|
|
212
|
+
- Styling
|
|
213
|
+
- Editor and Reader views
|
|
214
|
+
|
|
215
|
+
Because of this separation:
|
|
216
|
+
|
|
217
|
+
- `draftify` can be used in **any framework**
|
|
218
|
+
- `draftify-react` can evolve independently
|
|
219
|
+
- You can build alternative UIs without rewriting logic
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Project Structure
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
draftify-react/
|
|
227
|
+
├─ dist/
|
|
228
|
+
│ ├─ draftify-react.es.js
|
|
229
|
+
│ ├─ draftify-react.umd.js
|
|
230
|
+
│ └─ draftify-react.css
|
|
231
|
+
│
|
|
232
|
+
├─ index.d.ts
|
|
233
|
+
├─ package.json
|
|
234
|
+
└─ README.md
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Only runtime-required files are shipped.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Exports
|
|
242
|
+
|
|
243
|
+
```ts
|
|
244
|
+
import DraftifyReact from "draftify-react";
|
|
245
|
+
import { Reader, useDraftifyReact } from "draftify-react";
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Styles:
|
|
249
|
+
|
|
250
|
+
```css
|
|
251
|
+
@import "draftify-react/styles.css";
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## When to Use `draftify-react`
|
|
257
|
+
|
|
258
|
+
Use this package if you want:
|
|
259
|
+
|
|
260
|
+
- A complete editor UI
|
|
261
|
+
- Fast React integration
|
|
262
|
+
- Full control over document state
|
|
263
|
+
- A clean abstraction over Draftify internals
|
|
264
|
+
|
|
265
|
+
If you want to build your own editor UI or use Draftify outside React, use `draftify` directly.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Compatibility
|
|
270
|
+
|
|
271
|
+
- React ≥ 18
|
|
272
|
+
- TypeScript supported
|
|
273
|
+
- Tailwind v4 supported
|
|
274
|
+
- ESM & UMD builds included
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## License
|
|
279
|
+
|
|
280
|
+
MIT © 2025 Draftify Team
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
Bernard Kuria Mechatronics Engineer • Developer • Creator of E-NEXUS, DigiSign, and Draftify 📍 Nyeri, Kenya 🌐 https://bernard-webfolio.web.app
|
package/dist/draftify-react.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.1.18 | 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-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-font-weight:initial;--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-leading:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,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-red-500:oklch(63.7% .237 25.331);--color-green-400:oklch(79.2% .209 151.711);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--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);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-xl:.75rem;--radius-2xl:1rem;--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);--draftify-theme-color:#3b82f6;--hovered-draftify-theme-color:#1e40af}}@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,ui-sans-serif,system-ui,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;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{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{.doc-metadata-prompt{z-index:10;--tw-translate-x:calc(calc(1/2*100%)*-1);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);background-color:var(--color-white);padding:calc(var(--spacing)*5);--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);position:absolute;top:50%;left:50%}.draftify-container{height:fit-content;min-height:calc(var(--spacing)*112.5);gap:calc(var(--spacing)*5);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);background-color:var(--color-white);width:100%;padding:calc(var(--spacing)*2);flex-direction:column;display:flex;position:relative}@media (min-width:48rem){.draftify-container{gap:calc(var(--spacing)*2.5);padding:calc(var(--spacing)*5)}}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0\.5{bottom:calc(var(--spacing)*.5)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.-z-1{z-index:calc(1*-1)}.z-10{z-index:10}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-2\.5{margin-bottom:calc(var(--spacing)*2.5)}.block-container{align-items:center;gap:calc(var(--spacing)*1.25);border-radius:var(--radius-md);padding:calc(var(--spacing)*1.25);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}.output-area{gap:calc(var(--spacing)*2.5);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);padding:calc(var(--spacing)*3);display:grid}@media (min-width:48rem){.output-area{padding:calc(var(--spacing)*5)}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.media{object-fit:cover;width:100%;height:100%}.paragraph{--tw-outline-style:none;outline-style:none;width:100%;height:fit-content}.h-1{height:calc(var(--spacing)*1)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6\.25{height:calc(var(--spacing)*6.25)}.h-15{height:calc(var(--spacing)*15)}.h-30{height:calc(var(--spacing)*30)}.h-32{height:calc(var(--spacing)*32)}.h-50{height:calc(var(--spacing)*50)}.h-68\.75{height:calc(var(--spacing)*68.75)}.h-\[40px\]{height:40px}.h-full{height:100%}.h-px{height:1px}.quote{border-left-style:var(--tw-border-style);width:100%;padding-left:calc(var(--spacing)*2);--tw-outline-style:none;border-left-width:4px;outline-style:none;font-size:18px;font-style:italic}.code{background-color:var(--color-black);width:100%;padding:calc(var(--spacing)*2);font-family:var(--font-mono);white-space:pre-wrap;color:var(--color-white)}.heading{width:100%;font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-outline-style:none;outline-style:none}.link{width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--hovered-draftify-theme-color);--tw-outline-style:none;outline-style:none}.subheading{--tw-font-weight:var(--font-weight-semibold);width:100%;font-size:20px;font-weight:var(--font-weight-semibold);--tw-outline-style:none;outline-style:none}.w-1{width:calc(var(--spacing)*1)}.w-3{width:calc(var(--spacing)*3)}.w-7\.5{width:calc(var(--spacing)*7.5)}.w-15{width:calc(var(--spacing)*15)}.w-25{width:calc(var(--spacing)*25)}.w-30{width:calc(var(--spacing)*30)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-\[15px\]{width:15px}.w-\[40px\]{width:40px}.w-full{width:100%}.w-px{width:1px}.editor-area{border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);flex:1;padding:2.5px 0}@media (min-width:48rem){.editor-area{padding:calc(var(--spacing)*5)}}.flex-1{flex:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-\[40px\]{--tw-translate-x:calc(40px*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-0\.5{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[10px\]{--tw-translate-y:10px;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-\[5px\]{gap:5px}.gap-\[10px\]{gap:10px}.gap-y-\[3px\]{row-gap:3px}.self-center{align-self:center}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[5px\]{border-radius:5px}.rounded-\[10px\]{border-radius:10px}.rounded-\[50\%\]{border-radius:50%}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-tl-\[5px\]{border-top-left-radius:5px}.rounded-bl-\[5px\]{border-bottom-left-radius:5px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--draftify-theme-color\){border-color:var(--draftify-theme-color)}.border-blue-200{border-color:var(--color-blue-200)}.border-gray-600{border-color:var(--color-gray-600)}.bg-\(--draftify-theme-color\){background-color:var(--draftify-theme-color)}.bg-\(--hovered-draftify-theme-color\){background-color:var(--hovered-draftify-theme-color)}.bg-\[\#232323\]{background-color:#232323}.bg-black{background-color:var(--color-black)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-white{background-color:var(--color-white)}.logo-text{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.logo-text{--tw-gradient-position:to bottom right in oklab}}.logo-text{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:var(--color-blue-800);--tw-gradient-to:var(--color-purple-500);--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));color:#0000;-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pb-6\.25{padding-bottom:calc(var(--spacing)*6.25)}.pl-5{padding-left:calc(var(--spacing)*5)}.text-center{text-align:center}.list{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-outline-style:none;outline-style:none}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[20px\]{font-size:20px}.leading-2{--tw-leading:calc(var(--spacing)*2);line-height:calc(var(--spacing)*2)}.leading-none{--tw-leading:1;line-height:1}.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-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-\(--draftify-theme-color\){color:var(--draftify-theme-color)}.text-\(--grey-secondary\){color:var(--grey-secondary)}.text-\(--hovered-draftify-theme-color\){color:var(--hovered-draftify-theme-color)}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-400{color:var(--color-green-400)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.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))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:bg-black:is(:where(.group):hover *){background-color:var(--color-black)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:border-black:hover{border-color:var(--color-black)}.hover\:bg-\(--draftify-theme-color\):hover{background-color:var(--draftify-theme-color)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-gray-400:hover{background-color:var(--color-gray-400)}.hover\:font-semibold:hover{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-white:hover{color:var(--color-white)}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:flex{display:flex}.md\:h-10{height:calc(var(--spacing)*10)}.md\:gap-\[10px\]{gap:10px}}}@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-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-font-weight{syntax:"*";inherits:false}@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-leading{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
|
|
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-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-font-weight:initial;--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-leading:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,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-red-500:oklch(63.7% .237 25.331);--color-green-400:oklch(79.2% .209 151.711);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--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);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-xl:.75rem;--radius-2xl:1rem;--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);--draftify-theme-color:#3b82f6;--hovered-draftify-theme-color:#1e40af}}@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,ui-sans-serif,system-ui,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;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{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{.doc-metadata-prompt{z-index:10;--tw-translate-x:calc(calc(1/2*100%)*-1);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);background-color:var(--color-white);padding:calc(var(--spacing)*5);--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);position:absolute;top:50%;left:50%}.draftify-container{height:fit-content;min-height:calc(var(--spacing)*112.5);gap:calc(var(--spacing)*5);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);background-color:var(--color-white);width:100%;padding:calc(var(--spacing)*2);flex-direction:column;display:flex;position:relative}@media (min-width:48rem){.draftify-container{gap:calc(var(--spacing)*2.5);padding:calc(var(--spacing)*5)}}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0\.5{bottom:calc(var(--spacing)*.5)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.-z-1{z-index:calc(1*-1)}.z-10{z-index:10}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-2\.5{margin-bottom:calc(var(--spacing)*2.5)}.block-container{align-items:center;gap:calc(var(--spacing)*1.25);border-radius:var(--radius-md);padding:calc(var(--spacing)*1.25);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}.output-area{gap:calc(var(--spacing)*2.5);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);padding:calc(var(--spacing)*3);display:grid}@media (min-width:48rem){.output-area{padding:calc(var(--spacing)*5)}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.media{object-fit:cover;width:100%;height:100%}.paragraph{--tw-outline-style:none;outline-style:none;width:100%;height:fit-content}.h-1{height:calc(var(--spacing)*1)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6\.25{height:calc(var(--spacing)*6.25)}.h-10{height:calc(var(--spacing)*10)}.h-15{height:calc(var(--spacing)*15)}.h-30{height:calc(var(--spacing)*30)}.h-32{height:calc(var(--spacing)*32)}.h-50{height:calc(var(--spacing)*50)}.h-68\.75{height:calc(var(--spacing)*68.75)}.h-full{height:100%}.h-px{height:1px}.quote{border-left-style:var(--tw-border-style);width:100%;padding-left:calc(var(--spacing)*2);--tw-outline-style:none;border-left-width:4px;outline-style:none;font-size:18px;font-style:italic}.code{background-color:var(--color-black);width:100%;padding:calc(var(--spacing)*2);font-family:var(--font-mono);white-space:pre-wrap;color:var(--color-white)}.heading{width:100%;font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-outline-style:none;outline-style:none}.link{width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--hovered-draftify-theme-color);--tw-outline-style:none;outline-style:none}.subheading{--tw-font-weight:var(--font-weight-semibold);width:100%;font-size:20px;font-weight:var(--font-weight-semibold);--tw-outline-style:none;outline-style:none}.w-1{width:calc(var(--spacing)*1)}.w-3{width:calc(var(--spacing)*3)}.w-3\.75{width:calc(var(--spacing)*3.75)}.w-7\.5{width:calc(var(--spacing)*7.5)}.w-15{width:calc(var(--spacing)*15)}.w-25{width:calc(var(--spacing)*25)}.w-30{width:calc(var(--spacing)*30)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-\[40px\]{width:40px}.w-full{width:100%}.w-px{width:1px}.editor-area{border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--draftify-theme-color);flex:1;padding:2.5px 0}@media (min-width:48rem){.editor-area{padding:calc(var(--spacing)*5)}}.flex-1{flex:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-\[40px\]{--tw-translate-x:calc(40px*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-0\.5{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[10px\]{--tw-translate-y:10px;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.25{gap:calc(var(--spacing)*1.25)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-y-0\.75{row-gap:calc(var(--spacing)*.75)}.self-center{align-self:center}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[5px\]{border-radius:5px}.rounded-\[10px\]{border-radius:10px}.rounded-\[50\%\]{border-radius:50%}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-tl-\[5px\]{border-top-left-radius:5px}.rounded-bl-\[5px\]{border-bottom-left-radius:5px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--draftify-theme-color\){border-color:var(--draftify-theme-color)}.border-blue-200{border-color:var(--color-blue-200)}.border-gray-600{border-color:var(--color-gray-600)}.bg-\(--draftify-theme-color\){background-color:var(--draftify-theme-color)}.bg-\(--hovered-draftify-theme-color\){background-color:var(--hovered-draftify-theme-color)}.bg-\[\#232323\]{background-color:#232323}.bg-black{background-color:var(--color-black)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-white{background-color:var(--color-white)}.logo-text{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.logo-text{--tw-gradient-position:to bottom right in oklab}}.logo-text{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:var(--color-blue-800);--tw-gradient-to:var(--color-purple-500);--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));color:#0000;-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pb-6\.25{padding-bottom:calc(var(--spacing)*6.25)}.pl-5{padding-left:calc(var(--spacing)*5)}.text-center{text-align:center}.list{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-outline-style:none;outline-style:none}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[20px\]{font-size:20px}.leading-2{--tw-leading:calc(var(--spacing)*2);line-height:calc(var(--spacing)*2)}.leading-none{--tw-leading:1;line-height:1}.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-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-\(--draftify-theme-color\){color:var(--draftify-theme-color)}.text-\(--grey-secondary\){color:var(--grey-secondary)}.text-\(--hovered-draftify-theme-color\){color:var(--hovered-draftify-theme-color)}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-400{color:var(--color-green-400)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.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))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:bg-black:is(:where(.group):hover *){background-color:var(--color-black)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:border-black:hover{border-color:var(--color-black)}.hover\:bg-\(--draftify-theme-color\):hover{background-color:var(--draftify-theme-color)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-gray-400:hover{background-color:var(--color-gray-400)}.hover\:font-semibold:hover{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-white:hover{color:var(--color-white)}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:flex{display:flex}.md\:h-10{height:calc(var(--spacing)*10)}.md\:gap-2\.5{gap:calc(var(--spacing)*2.5)}}}@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-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-font-weight{syntax:"*";inherits:false}@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-leading{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
|