@hir4ta/mneme 0.22.3 → 0.22.4
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/.claude-plugin/plugin.json +1 -1
- package/README.ja.md +1 -1
- package/README.md +1 -1
- package/dist/lib/db.js +13 -0
- package/dist/public/assets/index-BBhG3dcz.css +1 -0
- package/dist/public/assets/{index-DZyzcWMg.js → index-DSj4axBH.js} +56 -56
- package/dist/public/assets/{react-force-graph-2d-CAP2m3Y0.js → react-force-graph-2d-CC2S0imw.js} +1 -1
- package/dist/public/index.html +2 -2
- package/dist/server.js +1807 -1704
- package/dist/servers/db-server.js +61 -4
- package/package.json +1 -1
- package/servers/db-server.ts +100 -4
- package/skills/resume/SKILL.md +80 -39
- package/skills/save/SKILL.md +34 -1
- package/dist/public/assets/index-g8Lvi94K.css +0 -1
|
@@ -30899,9 +30899,9 @@ async function saveInteractions(claudeSessionId, mnemeSessionId) {
|
|
|
30899
30899
|
}
|
|
30900
30900
|
try {
|
|
30901
30901
|
const deleteStmt = database.prepare(
|
|
30902
|
-
"DELETE FROM interactions WHERE
|
|
30902
|
+
"DELETE FROM interactions WHERE claude_session_id = ?"
|
|
30903
30903
|
);
|
|
30904
|
-
deleteStmt.run(
|
|
30904
|
+
deleteStmt.run(claudeSessionId);
|
|
30905
30905
|
} catch {
|
|
30906
30906
|
}
|
|
30907
30907
|
const insertStmt = database.prepare(`
|
|
@@ -31201,10 +31201,56 @@ server.registerTool(
|
|
|
31201
31201
|
tags: external_exports3.array(external_exports3.string()).optional().describe("Semantic tags for the session"),
|
|
31202
31202
|
sessionType: external_exports3.string().optional().describe(
|
|
31203
31203
|
"Session type (e.g. implementation, research, bugfix, refactor)"
|
|
31204
|
-
)
|
|
31204
|
+
),
|
|
31205
|
+
plan: external_exports3.object({
|
|
31206
|
+
goals: external_exports3.array(external_exports3.string()).optional().describe("Session goals"),
|
|
31207
|
+
tasks: external_exports3.array(external_exports3.string()).optional().describe('Task list (prefix with "[x] " for completed)'),
|
|
31208
|
+
remaining: external_exports3.array(external_exports3.string()).optional().describe("Remaining tasks")
|
|
31209
|
+
}).optional().describe("Session plan with tasks and progress"),
|
|
31210
|
+
discussions: external_exports3.array(
|
|
31211
|
+
external_exports3.object({
|
|
31212
|
+
topic: external_exports3.string().describe("Discussion topic"),
|
|
31213
|
+
decision: external_exports3.string().describe("Final decision"),
|
|
31214
|
+
reasoning: external_exports3.string().optional().describe("Reasoning"),
|
|
31215
|
+
alternatives: external_exports3.array(external_exports3.string()).optional().describe("Considered alternatives")
|
|
31216
|
+
})
|
|
31217
|
+
).optional().describe("Design discussions and decisions made during session"),
|
|
31218
|
+
errors: external_exports3.array(
|
|
31219
|
+
external_exports3.object({
|
|
31220
|
+
error: external_exports3.string().describe("Error message or description"),
|
|
31221
|
+
context: external_exports3.string().optional().describe("Where/when it occurred"),
|
|
31222
|
+
solution: external_exports3.string().optional().describe("How it was resolved"),
|
|
31223
|
+
files: external_exports3.array(external_exports3.string()).optional().describe("Related file paths")
|
|
31224
|
+
})
|
|
31225
|
+
).optional().describe("Errors encountered and their solutions"),
|
|
31226
|
+
handoff: external_exports3.object({
|
|
31227
|
+
stoppedReason: external_exports3.string().optional().describe("Why the session stopped"),
|
|
31228
|
+
notes: external_exports3.array(external_exports3.string()).optional().describe("Important notes for next session"),
|
|
31229
|
+
nextSteps: external_exports3.array(external_exports3.string()).optional().describe("What to do next")
|
|
31230
|
+
}).optional().describe("Handoff context for session continuity"),
|
|
31231
|
+
references: external_exports3.array(
|
|
31232
|
+
external_exports3.object({
|
|
31233
|
+
type: external_exports3.string().optional().describe('Reference type: "doc", "file", "url"'),
|
|
31234
|
+
url: external_exports3.string().optional().describe("URL if external"),
|
|
31235
|
+
path: external_exports3.string().optional().describe("File path if local"),
|
|
31236
|
+
title: external_exports3.string().optional().describe("Title or label"),
|
|
31237
|
+
description: external_exports3.string().optional().describe("Brief description")
|
|
31238
|
+
})
|
|
31239
|
+
).optional().describe("Documents and resources referenced during session")
|
|
31205
31240
|
}
|
|
31206
31241
|
},
|
|
31207
|
-
async ({
|
|
31242
|
+
async ({
|
|
31243
|
+
claudeSessionId,
|
|
31244
|
+
title,
|
|
31245
|
+
summary,
|
|
31246
|
+
tags,
|
|
31247
|
+
sessionType,
|
|
31248
|
+
plan,
|
|
31249
|
+
discussions,
|
|
31250
|
+
errors,
|
|
31251
|
+
handoff,
|
|
31252
|
+
references
|
|
31253
|
+
}) => {
|
|
31208
31254
|
if (!claudeSessionId.trim()) {
|
|
31209
31255
|
return fail("claudeSessionId must not be empty.");
|
|
31210
31256
|
}
|
|
@@ -31226,6 +31272,12 @@ server.registerTool(
|
|
|
31226
31272
|
return null;
|
|
31227
31273
|
};
|
|
31228
31274
|
sessionFile = searchDir(sessionsDir);
|
|
31275
|
+
if (sessionFile) {
|
|
31276
|
+
const existingData = readJsonFile(sessionFile);
|
|
31277
|
+
if (existingData?.sessionId && existingData.sessionId !== claudeSessionId) {
|
|
31278
|
+
sessionFile = null;
|
|
31279
|
+
}
|
|
31280
|
+
}
|
|
31229
31281
|
if (!sessionFile) {
|
|
31230
31282
|
const now = /* @__PURE__ */ new Date();
|
|
31231
31283
|
const yearMonth = path4.join(
|
|
@@ -31264,6 +31316,11 @@ server.registerTool(
|
|
|
31264
31316
|
data.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
31265
31317
|
if (tags) data.tags = tags;
|
|
31266
31318
|
if (sessionType) data.sessionType = sessionType;
|
|
31319
|
+
if (plan) data.plan = plan;
|
|
31320
|
+
if (discussions && discussions.length > 0) data.discussions = discussions;
|
|
31321
|
+
if (errors && errors.length > 0) data.errors = errors;
|
|
31322
|
+
if (handoff) data.handoff = handoff;
|
|
31323
|
+
if (references && references.length > 0) data.references = references;
|
|
31267
31324
|
const transcriptPath = getTranscriptPath(claudeSessionId);
|
|
31268
31325
|
if (transcriptPath) {
|
|
31269
31326
|
try {
|
package/package.json
CHANGED
package/servers/db-server.ts
CHANGED
|
@@ -827,12 +827,12 @@ async function saveInteractions(
|
|
|
827
827
|
};
|
|
828
828
|
}
|
|
829
829
|
|
|
830
|
-
// Delete existing interactions for this session
|
|
830
|
+
// Delete existing interactions for this session (same claude_session_id only)
|
|
831
831
|
try {
|
|
832
832
|
const deleteStmt = database.prepare(
|
|
833
|
-
"DELETE FROM interactions WHERE
|
|
833
|
+
"DELETE FROM interactions WHERE claude_session_id = ?",
|
|
834
834
|
);
|
|
835
|
-
deleteStmt.run(
|
|
835
|
+
deleteStmt.run(claudeSessionId);
|
|
836
836
|
} catch {
|
|
837
837
|
// Ignore delete errors
|
|
838
838
|
}
|
|
@@ -1254,9 +1254,88 @@ server.registerTool(
|
|
|
1254
1254
|
.describe(
|
|
1255
1255
|
"Session type (e.g. implementation, research, bugfix, refactor)",
|
|
1256
1256
|
),
|
|
1257
|
+
plan: z
|
|
1258
|
+
.object({
|
|
1259
|
+
goals: z.array(z.string()).optional().describe("Session goals"),
|
|
1260
|
+
tasks: z
|
|
1261
|
+
.array(z.string())
|
|
1262
|
+
.optional()
|
|
1263
|
+
.describe('Task list (prefix with "[x] " for completed)'),
|
|
1264
|
+
remaining: z.array(z.string()).optional().describe("Remaining tasks"),
|
|
1265
|
+
})
|
|
1266
|
+
.optional()
|
|
1267
|
+
.describe("Session plan with tasks and progress"),
|
|
1268
|
+
discussions: z
|
|
1269
|
+
.array(
|
|
1270
|
+
z.object({
|
|
1271
|
+
topic: z.string().describe("Discussion topic"),
|
|
1272
|
+
decision: z.string().describe("Final decision"),
|
|
1273
|
+
reasoning: z.string().optional().describe("Reasoning"),
|
|
1274
|
+
alternatives: z
|
|
1275
|
+
.array(z.string())
|
|
1276
|
+
.optional()
|
|
1277
|
+
.describe("Considered alternatives"),
|
|
1278
|
+
}),
|
|
1279
|
+
)
|
|
1280
|
+
.optional()
|
|
1281
|
+
.describe("Design discussions and decisions made during session"),
|
|
1282
|
+
errors: z
|
|
1283
|
+
.array(
|
|
1284
|
+
z.object({
|
|
1285
|
+
error: z.string().describe("Error message or description"),
|
|
1286
|
+
context: z.string().optional().describe("Where/when it occurred"),
|
|
1287
|
+
solution: z.string().optional().describe("How it was resolved"),
|
|
1288
|
+
files: z
|
|
1289
|
+
.array(z.string())
|
|
1290
|
+
.optional()
|
|
1291
|
+
.describe("Related file paths"),
|
|
1292
|
+
}),
|
|
1293
|
+
)
|
|
1294
|
+
.optional()
|
|
1295
|
+
.describe("Errors encountered and their solutions"),
|
|
1296
|
+
handoff: z
|
|
1297
|
+
.object({
|
|
1298
|
+
stoppedReason: z
|
|
1299
|
+
.string()
|
|
1300
|
+
.optional()
|
|
1301
|
+
.describe("Why the session stopped"),
|
|
1302
|
+
notes: z
|
|
1303
|
+
.array(z.string())
|
|
1304
|
+
.optional()
|
|
1305
|
+
.describe("Important notes for next session"),
|
|
1306
|
+
nextSteps: z.array(z.string()).optional().describe("What to do next"),
|
|
1307
|
+
})
|
|
1308
|
+
.optional()
|
|
1309
|
+
.describe("Handoff context for session continuity"),
|
|
1310
|
+
references: z
|
|
1311
|
+
.array(
|
|
1312
|
+
z.object({
|
|
1313
|
+
type: z
|
|
1314
|
+
.string()
|
|
1315
|
+
.optional()
|
|
1316
|
+
.describe('Reference type: "doc", "file", "url"'),
|
|
1317
|
+
url: z.string().optional().describe("URL if external"),
|
|
1318
|
+
path: z.string().optional().describe("File path if local"),
|
|
1319
|
+
title: z.string().optional().describe("Title or label"),
|
|
1320
|
+
description: z.string().optional().describe("Brief description"),
|
|
1321
|
+
}),
|
|
1322
|
+
)
|
|
1323
|
+
.optional()
|
|
1324
|
+
.describe("Documents and resources referenced during session"),
|
|
1257
1325
|
},
|
|
1258
1326
|
},
|
|
1259
|
-
async ({
|
|
1327
|
+
async ({
|
|
1328
|
+
claudeSessionId,
|
|
1329
|
+
title,
|
|
1330
|
+
summary,
|
|
1331
|
+
tags,
|
|
1332
|
+
sessionType,
|
|
1333
|
+
plan,
|
|
1334
|
+
discussions,
|
|
1335
|
+
errors,
|
|
1336
|
+
handoff,
|
|
1337
|
+
references,
|
|
1338
|
+
}) => {
|
|
1260
1339
|
if (!claudeSessionId.trim()) {
|
|
1261
1340
|
return fail("claudeSessionId must not be empty.");
|
|
1262
1341
|
}
|
|
@@ -1282,6 +1361,18 @@ server.registerTool(
|
|
|
1282
1361
|
};
|
|
1283
1362
|
sessionFile = searchDir(sessionsDir);
|
|
1284
1363
|
|
|
1364
|
+
// Guard: don't overwrite a session file that belongs to a different Claude session
|
|
1365
|
+
if (sessionFile) {
|
|
1366
|
+
const existingData = readJsonFile<{ sessionId?: string }>(sessionFile);
|
|
1367
|
+
if (
|
|
1368
|
+
existingData?.sessionId &&
|
|
1369
|
+
existingData.sessionId !== claudeSessionId
|
|
1370
|
+
) {
|
|
1371
|
+
// Different Claude session has the same short ID - create a new file instead
|
|
1372
|
+
sessionFile = null;
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1285
1376
|
// Create session file if not found (SessionStart hook may not have run)
|
|
1286
1377
|
if (!sessionFile) {
|
|
1287
1378
|
const now = new Date();
|
|
@@ -1324,6 +1415,11 @@ server.registerTool(
|
|
|
1324
1415
|
data.updatedAt = new Date().toISOString();
|
|
1325
1416
|
if (tags) data.tags = tags;
|
|
1326
1417
|
if (sessionType) data.sessionType = sessionType;
|
|
1418
|
+
if (plan) data.plan = plan;
|
|
1419
|
+
if (discussions && discussions.length > 0) data.discussions = discussions;
|
|
1420
|
+
if (errors && errors.length > 0) data.errors = errors;
|
|
1421
|
+
if (handoff) data.handoff = handoff;
|
|
1422
|
+
if (references && references.length > 0) data.references = references;
|
|
1327
1423
|
|
|
1328
1424
|
// Enrich with transcript metrics/files if available
|
|
1329
1425
|
const transcriptPath = getTranscriptPath(claudeSessionId);
|
package/skills/resume/SKILL.md
CHANGED
|
@@ -132,6 +132,8 @@ Select a session to resume (1-2), or enter ID:
|
|
|
132
132
|
|
|
133
133
|
### Resume View
|
|
134
134
|
|
|
135
|
+
Display structured context in this priority order (most critical for continuity first):
|
|
136
|
+
|
|
135
137
|
```
|
|
136
138
|
Resuming session "JWT authentication implementation"
|
|
137
139
|
|
|
@@ -140,15 +142,20 @@ Session chain: current ← abc123
|
|
|
140
142
|
|
|
141
143
|
---
|
|
142
144
|
|
|
143
|
-
##
|
|
145
|
+
## Handoff (引き継ぎ):
|
|
144
146
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
Stopped: Test creation postponed to next session
|
|
148
|
+
Notes:
|
|
149
|
+
- vitest configured
|
|
150
|
+
- Mock key pair in test/fixtures/
|
|
151
|
+
Next Steps:
|
|
152
|
+
- Create jwt.test.ts
|
|
153
|
+
- Add E2E tests
|
|
149
154
|
|
|
150
|
-
## Plan:
|
|
155
|
+
## Plan (計画と進捗):
|
|
151
156
|
|
|
157
|
+
Goals:
|
|
158
|
+
- Implement JWT-based auth with refresh token support
|
|
152
159
|
Tasks:
|
|
153
160
|
- [x] JWT signing method selection
|
|
154
161
|
- [x] Middleware implementation
|
|
@@ -156,36 +163,39 @@ Session chain: current ← abc123
|
|
|
156
163
|
Remaining:
|
|
157
164
|
- Add tests
|
|
158
165
|
|
|
159
|
-
##
|
|
166
|
+
## Errors (遭遇したエラー):
|
|
160
167
|
|
|
161
|
-
-
|
|
168
|
+
- `secretOrPrivateKey must be asymmetric`
|
|
169
|
+
Context: RS256 signing requires asymmetric key pair
|
|
170
|
+
Solution: Generate RS256 key pair with openssl
|
|
162
171
|
|
|
163
|
-
##
|
|
172
|
+
## Discussions (設計議論):
|
|
164
173
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
174
|
+
- **Signing algorithm**: RS256 (Security considerations for production)
|
|
175
|
+
Alternatives: HS256 (simpler but requires shared secret)
|
|
176
|
+
|
|
177
|
+
## Summary:
|
|
178
|
+
|
|
179
|
+
Title: JWT authentication implementation
|
|
180
|
+
Goal: Implement JWT-based auth with refresh token support
|
|
181
|
+
Outcome: success
|
|
182
|
+
Type: implementation
|
|
172
183
|
|
|
173
|
-
##
|
|
184
|
+
## References:
|
|
174
185
|
|
|
175
|
-
-
|
|
186
|
+
- [RFC 7519 - JSON Web Token](https://tools.ietf.org/html/rfc7519)
|
|
187
|
+
- File: src/middleware/auth.ts
|
|
176
188
|
|
|
177
189
|
---
|
|
178
190
|
|
|
179
|
-
## Interactions
|
|
191
|
+
## Recent Interactions (from SQLite):
|
|
180
192
|
|
|
181
193
|
[int-001] 2026-01-24T10:00:00Z
|
|
182
194
|
User: Implement authentication
|
|
183
|
-
Thinking: JWT would be better for microservices...
|
|
184
195
|
Assistant: Implemented JWT auth with RS256 signing
|
|
185
196
|
|
|
186
197
|
[int-002] 2026-01-24T10:30:00Z
|
|
187
198
|
User: What should be the refresh token expiry?
|
|
188
|
-
Thinking: Balance between security and UX...
|
|
189
199
|
Assistant: Set to 7 days
|
|
190
200
|
|
|
191
201
|
(Note: If this session was created by another user, interactions won't be available - only metadata from JSON)
|
|
@@ -195,6 +205,14 @@ Session chain: current ← abc123
|
|
|
195
205
|
Ready to continue?
|
|
196
206
|
```
|
|
197
207
|
|
|
208
|
+
**Display rules:**
|
|
209
|
+
- Only show sections that have data (skip empty/missing sections)
|
|
210
|
+
- **Handoff first**: most critical for immediate context restoration
|
|
211
|
+
- **Plan second**: shows what's done and what remains
|
|
212
|
+
- **Errors third**: prevents re-encountering solved problems
|
|
213
|
+
- **Discussions fourth**: preserves decision rationale
|
|
214
|
+
- Interactions are supplementary — the structured data above is the primary context
|
|
215
|
+
|
|
198
216
|
## Failure conditions
|
|
199
217
|
|
|
200
218
|
- Target session not found.
|
|
@@ -202,24 +220,47 @@ Ready to continue?
|
|
|
202
220
|
|
|
203
221
|
## Context Injection
|
|
204
222
|
|
|
205
|
-
When resuming, inject context from JSON (metadata) and SQLite (interactions)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
1.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
+
When resuming, inject context from JSON (metadata) and SQLite (interactions).
|
|
224
|
+
**Priority order** (most critical for continuity first):
|
|
225
|
+
|
|
226
|
+
### 1. Handoff (from JSON — critical for continuity)
|
|
227
|
+
- `stoppedReason`: Why the previous session ended
|
|
228
|
+
- `notes`: Important context that must be carried over
|
|
229
|
+
- `nextSteps`: Concrete actions to take next
|
|
230
|
+
- **This is the single most important section for seamless resume.**
|
|
231
|
+
|
|
232
|
+
### 2. Plan (from JSON — shows progress)
|
|
233
|
+
- `goals`: What the session aimed to accomplish
|
|
234
|
+
- `tasks`: What was done (marked `[x]`) and what wasn't
|
|
235
|
+
- `remaining`: Explicitly listed remaining work
|
|
236
|
+
|
|
237
|
+
### 3. Errors (from JSON — prevents re-encountering solved problems)
|
|
238
|
+
- `error`: What went wrong
|
|
239
|
+
- `solution`: How it was resolved
|
|
240
|
+
- `files`: Which files were involved
|
|
241
|
+
|
|
242
|
+
### 4. Discussions (from JSON — preserves decision rationale)
|
|
243
|
+
- `topic` + `decision`: What was decided
|
|
244
|
+
- `reasoning`: Why that choice was made
|
|
245
|
+
- `alternatives`: What was considered but rejected
|
|
246
|
+
- **Critical for avoiding re-discussion of settled decisions.**
|
|
247
|
+
|
|
248
|
+
### 5. Summary (from JSON — high-level context)
|
|
249
|
+
- `title`, `goal`, `outcome`, `description`, `sessionType`
|
|
250
|
+
- `tags`, `files`, `metrics`
|
|
251
|
+
|
|
252
|
+
### 6. References (from JSON — external resources)
|
|
253
|
+
- URLs of official docs, Stack Overflow answers, etc.
|
|
254
|
+
- Local file paths that were important
|
|
255
|
+
|
|
256
|
+
### 7. Interactions (from SQLite — detailed conversation log)
|
|
257
|
+
- Full conversation history with thinking (private, local only)
|
|
258
|
+
- Supplementary to structured data above
|
|
259
|
+
|
|
260
|
+
**Display rules:**
|
|
261
|
+
- Only show sections that have data (skip empty/missing fields)
|
|
262
|
+
- Structured data (1-6) takes priority over raw interactions (7)
|
|
263
|
+
- If structured data is rich, interactions can be summarized or truncated
|
|
223
264
|
|
|
224
265
|
**Privacy Note**: Interactions are stored in project-local SQLite (`.mneme/local.db`) and are private to each developer.
|
|
225
266
|
If you're resuming a session created by another team member, interactions won't be available.
|
package/skills/save/SKILL.md
CHANGED
|
@@ -46,7 +46,13 @@ Always render missing required fields as blocking errors before write.
|
|
|
46
46
|
|
|
47
47
|
3. **Session summary extraction (required MCP)**
|
|
48
48
|
- Extract from the conversation: `title`, `goal`, `outcome`, `description`, `tags`, `sessionType`.
|
|
49
|
-
-
|
|
49
|
+
- Additionally extract **structured context** (auto-compact で失われるデータを保全):
|
|
50
|
+
- `plan`: セッションの目標、タスク一覧(完了は `[x] ` prefix)、残タスク
|
|
51
|
+
- `discussions`: 設計議論(topic, decision, reasoning, alternatives)
|
|
52
|
+
- `errors`: 遭遇したエラーと解決策(error, context, solution, files)
|
|
53
|
+
- `handoff`: 引き継ぎ情報(stoppedReason, notes, nextSteps)
|
|
54
|
+
- `references`: 参照したドキュメントURL、ファイルパス(type, url, path, title, description)
|
|
55
|
+
- **MUST call `mneme_update_session_summary`** MCP tool with all extracted data.
|
|
50
56
|
This writes the summary to `.mneme/sessions/` JSON file, ensuring the session is preserved on SessionEnd.
|
|
51
57
|
- **Then call `mneme_mark_session_committed`** to finalize the commit.
|
|
52
58
|
|
|
@@ -56,6 +62,33 @@ Always render missing required fields as blocking errors before write.
|
|
|
56
62
|
- Do NOT skip this step even for short/research sessions
|
|
57
63
|
</required>
|
|
58
64
|
|
|
65
|
+
### Structured context extraction guide
|
|
66
|
+
|
|
67
|
+
Auto-compact はコンテキストウィンドウの約80%使用時に発動し、古いメッセージを要約で置換します。
|
|
68
|
+
以下の情報は要約で失われやすいため、structured data として明示的に保存します。
|
|
69
|
+
|
|
70
|
+
**plan** — 該当する場合のみ:
|
|
71
|
+
- `goals`: セッション開始時に設定された目標
|
|
72
|
+
- `tasks`: 実行したタスクリスト。完了済みは `[x] タスク名`、未完了は `[ ] タスク名`
|
|
73
|
+
- `remaining`: 次回以降に持ち越すタスク
|
|
74
|
+
|
|
75
|
+
**discussions** — 設計方針の議論があった場合:
|
|
76
|
+
- 「AとBどちらにする?」→「Aにした」のような意思決定を抽出
|
|
77
|
+
- `alternatives` に検討して採用しなかった選択肢を記録
|
|
78
|
+
|
|
79
|
+
**errors** — ビルドエラー、テスト失敗、実行時エラーがあった場合:
|
|
80
|
+
- エラーメッセージ、発生コンテキスト、解決策を記録
|
|
81
|
+
- 同じエラーに再度遭遇しないための知見として保全
|
|
82
|
+
|
|
83
|
+
**handoff** — セッション終了時に必ず:
|
|
84
|
+
- `stoppedReason`: なぜここで止めるか(完了、時間切れ、ブロッカー等)
|
|
85
|
+
- `notes`: 次のセッションで知っておくべき注意点
|
|
86
|
+
- `nextSteps`: 次にやるべき具体的アクション
|
|
87
|
+
|
|
88
|
+
**references** — 外部リソースを参照した場合:
|
|
89
|
+
- WebFetch/WebSearch で確認した公式ドキュメントURL
|
|
90
|
+
- 重要な参照ファイルパス
|
|
91
|
+
|
|
59
92
|
4. **Decision extraction (source)**
|
|
60
93
|
- Persist concrete choices and rationale to `decisions/YYYY/MM/*.json`.
|
|
61
94
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import"https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600&family=Quicksand:wght@400;500;600&display=swap";/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@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-space-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-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-950:oklch(26.2% .051 172.552);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-800:oklch(45% .085 224.283);--color-cyan-950:oklch(30.2% .056 229.695);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--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-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-950:oklch(28.2% .091 267.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-950:oklch(28.3% .141 291.089);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-950:oklch(29.1% .149 302.717);--color-gray-500:oklch(55.1% .027 264.364);--color-stone-50:oklch(98.5% .001 106.423);--color-stone-100:oklch(97% .001 106.424);--color-stone-200:oklch(92.3% .003 48.717);--color-stone-300:oklch(86.9% .005 56.366);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-500:oklch(55.3% .013 58.071);--color-stone-600:oklch(44.4% .011 73.639);--color-stone-700:oklch(37.4% .01 67.558);--color-stone-800:oklch(26.8% .007 34.298);--color-stone-900:oklch(21.6% .006 56.043);--color-stone-950:oklch(14.7% .004 49.25);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--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: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xs:.125rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono)}}@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%;-moz-tab-size:4;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;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]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html,body,#root{height:100%}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-geist-sans);background-image:radial-gradient(900px 420px at 8% -10%,#ffebd499,#0000 65%),radial-gradient(800px 420px at 90% 0,#dbe9ff80,#0000 70%),linear-gradient(#fcf8f1,#f6f1e7);background-image:radial-gradient(900px 420px at 8% -10%,color(xyz 0.83 0.854 0.732 / 0.6),#0000 65%),radial-gradient(800px 420px at 90% 0,color(xyz 0.765 0.805 1.158 / 0.502),#0000 70%),linear-gradient(#fcf8f1,#f6f1e7);background-attachment:fixed}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.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}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.left-0{left:calc(var(--spacing)*0)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.-mx-6{margin-inline:calc(var(--spacing)*-6)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-4{margin-inline:calc(var(--spacing)*4)}.-my-4{margin-block:calc(var(--spacing)*-4)}.my-1{margin-block:calc(var(--spacing)*1)}.my-1\.5{margin-block:calc(var(--spacing)*1.5)}.my-2{margin-block:calc(var(--spacing)*2)}.my-3{margin-block:calc(var(--spacing)*3)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.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)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.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-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-20{height:calc(var(--spacing)*20)}.h-\[180px\]{height:180px}.h-\[200px\]{height:200px}.h-\[calc\(100\%\+32px\)\]{height:calc(100% + 32px)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[80vh\]{max-height:80vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-\[420px\]{min-height:420px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-60{width:calc(var(--spacing)*60)}.w-\[30\%\]{width:30%}.w-\[180px\]{width:180px}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[85\%\]{max-width:85%}.max-w-\[180px\]{max-width:180px}.max-w-\[280px\]{max-width:280px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[300px\]{min-width:300px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing)*0)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}: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-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*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-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*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)))}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) + 8px)}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-r-lg{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-300{border-color:var(--color-amber-300)}.border-blue-200{border-color:var(--color-blue-200)}.border-border,.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/70{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.border-cyan-300{border-color:var(--color-cyan-300)}.border-destructive\/20{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive)50%,transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-purple-200{border-color:var(--color-purple-200)}.border-stone-100{border-color:var(--color-stone-100)}.border-stone-200{border-color:var(--color-stone-200)}.border-stone-300{border-color:var(--color-stone-300)}.border-stone-700\/50{border-color:#44403b80}@supports (color:color-mix(in lab,red,red)){.border-stone-700\/50{border-color:color-mix(in oklab,var(--color-stone-700)50%,transparent)}}.border-transparent{border-color:#0000}.border-violet-300{border-color:var(--color-violet-300)}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-gray-500{border-left-color:var(--color-gray-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-indigo-500{border-left-color:var(--color-indigo-500)}.border-l-orange-500{border-left-color:var(--color-orange-500)}.border-l-purple-500{border-left-color:var(--color-purple-500)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-yellow-500{border-left-color:var(--color-yellow-500)}.bg-\[\#1a1816\]\/60{background-color:#1a181699}.bg-\[\#39414B\]{background-color:#39414b}.bg-\[\#F5F5F0\]{background-color:#f5f5f0}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-foreground{background-color:var(--foreground)}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-secondary,.bg-secondary\/80{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\/80{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.bg-stone-100{background-color:var(--color-stone-100)}.bg-stone-200{background-color:var(--color-stone-200)}.bg-stone-700{background-color:var(--color-stone-700)}.bg-stone-800\/80{background-color:#292524cc}@supports (color:color-mix(in lab,red,red)){.bg-stone-800\/80{background-color:color-mix(in oklab,var(--color-stone-800)80%,transparent)}}.bg-transparent{background-color:#0000}.bg-violet-100{background-color:var(--color-violet-100)}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-\[3px\]{padding:3px}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.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-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-\[70px\]{padding-top:70px}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-6\.5{padding-left:calc(var(--spacing)*6.5)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-geist-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.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-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))}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.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)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#C15F3C\]{color:#c15f3c}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--background)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-700{color:var(--color-cyan-700)}.text-destructive{color:var(--destructive)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground)60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-200{color:var(--color-orange-200)}.text-orange-600{color:var(--color-orange-600)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-stone-100{color:var(--color-stone-100)}.text-stone-200{color:var(--color-stone-200)}.text-stone-300{color:var(--color-stone-300)}.text-stone-400{color:var(--color-stone-400)}.text-stone-500{color:var(--color-stone-500)}.text-stone-600{color:var(--color-stone-600)}.text-stone-700{color:var(--color-stone-700)}.text-stone-800{color:var(--color-stone-800)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:var(--primary)}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--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-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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-\[color\,box-shadow\]{transition-property:color,box-shadow;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-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-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}.group-data-\[orientation\=horizontal\]\/tabs\:h-9:is(:where(.group\/tabs)[data-orientation=horizontal] *){height:calc(var(--spacing)*9)}.group-data-\[orientation\=vertical\]\/tabs\:h-fit:is(:where(.group\/tabs)[data-orientation=vertical] *){height:fit-content}.group-data-\[orientation\=vertical\]\/tabs\:w-full:is(:where(.group\/tabs)[data-orientation=vertical] *){width:100%}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:justify-start:is(:where(.group\/tabs)[data-orientation=vertical] *){justify-content:flex-start}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.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))}.group-data-\[orientation\=horizontal\]\/tabs\:after\:inset-x-0:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);inset-inline:calc(var(--spacing)*0)}.group-data-\[orientation\=horizontal\]\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);bottom:-5px}.group-data-\[orientation\=horizontal\]\/tabs\:after\:h-0\.5:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);height:calc(var(--spacing)*.5)}.group-data-\[orientation\=vertical\]\/tabs\:after\:inset-y-0:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.group-data-\[orientation\=vertical\]\/tabs\:after\:-right-1:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);right:calc(var(--spacing)*-1)}.group-data-\[orientation\=vertical\]\/tabs\:after\:w-0\.5:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);width:calc(var(--spacing)*.5)}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-200:hover{background-color:var(--color-amber-200)}.hover\:bg-destructive\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-muted\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/80:hover{background-color:color-mix(in oklab,var(--muted)80%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary:hover{background-color:var(--secondary)}.hover\:bg-stone-50:hover{background-color:var(--color-stone-50)}.hover\:bg-stone-100:hover{background-color:var(--color-stone-100)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-stone-900:hover{color:var(--color-stone-900)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-1:focus-visible{--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)}.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)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-\[state\=active\]\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *)[data-state=active]{--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)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{--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)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]:after{content:var(--tw-content);opacity:1}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=inactive\]\:hidden[data-state=inactive]{display:none}.data-\[state\=indeterminate\]\:bg-primary[data-state=indeterminate]{background-color:var(--primary)}.data-\[state\=indeterminate\]\:text-primary-foreground[data-state=indeterminate]{color:var(--primary-foreground)}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@media(min-width:40rem){.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[1fr_320px\]{grid-template-columns:1fr 320px}}@media(min-width:80rem){.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}.dark\:border-amber-800:is(.dark *){border-color:var(--color-amber-800)}.dark\:border-blue-800:is(.dark *){border-color:var(--color-blue-800)}.dark\:border-cyan-800:is(.dark *){border-color:var(--color-cyan-800)}.dark\:border-emerald-800:is(.dark *){border-color:var(--color-emerald-800)}.dark\:border-purple-800:is(.dark *){border-color:var(--color-purple-800)}.dark\:border-stone-600:is(.dark *){border-color:var(--color-stone-600)}.dark\:border-stone-700:is(.dark *){border-color:var(--color-stone-700)}.dark\:border-stone-800:is(.dark *){border-color:var(--color-stone-800)}.dark\:border-violet-800:is(.dark *){border-color:var(--color-violet-800)}.dark\:bg-amber-950\/20:is(.dark *){background-color:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:bg-amber-950\/30:is(.dark *){background-color:#4619014d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)30%,transparent)}}.dark\:bg-amber-950\/40:is(.dark *){background-color:#46190166}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)40%,transparent)}}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1624564d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)30%,transparent)}}.dark\:bg-cyan-950\/40:is(.dark *){background-color:#05334566}@supports (color:color-mix(in lab,red,red)){.dark\:bg-cyan-950\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-cyan-950)40%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-emerald-950\/30:is(.dark *){background-color:#002c224d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-950)30%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-purple-950:is(.dark *){background-color:var(--color-purple-950)}.dark\:bg-purple-950\/30:is(.dark *){background-color:#3c03664d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-950)30%,transparent)}}.dark\:bg-stone-600:is(.dark *){background-color:var(--color-stone-600)}.dark\:bg-stone-700:is(.dark *){background-color:var(--color-stone-700)}.dark\:bg-stone-800:is(.dark *){background-color:var(--color-stone-800)}.dark\:bg-stone-900:is(.dark *){background-color:var(--color-stone-900)}.dark\:bg-stone-950:is(.dark *){background-color:var(--color-stone-950)}.dark\:bg-violet-950\/40:is(.dark *){background-color:#2f0d6866}@supports (color:color-mix(in lab,red,red)){.dark\:bg-violet-950\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-violet-950)40%,transparent)}}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-amber-500:is(.dark *){color:var(--color-amber-500)}.dark\:text-blue-200:is(.dark *){color:var(--color-blue-200)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-cyan-400:is(.dark *){color:var(--color-cyan-400)}.dark\:text-emerald-200:is(.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-300:is(.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:is(.dark *){color:var(--color-emerald-400)}.dark\:text-emerald-500:is(.dark *){color:var(--color-emerald-500)}.dark\:text-emerald-600:is(.dark *){color:var(--color-emerald-600)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-purple-200:is(.dark *){color:var(--color-purple-200)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-stone-100:is(.dark *){color:var(--color-stone-100)}.dark\:text-stone-200:is(.dark *){color:var(--color-stone-200)}.dark\:text-stone-300:is(.dark *){color:var(--color-stone-300)}.dark\:text-stone-400:is(.dark *){color:var(--color-stone-400)}.dark\:text-stone-500:is(.dark *){color:var(--color-stone-500)}.dark\:text-violet-400:is(.dark *){color:var(--color-violet-400)}.dark\:text-violet-500:is(.dark *){color:var(--color-violet-500)}@media(hover:hover){.dark\:hover\:bg-amber-900\/50:is(.dark *):hover{background-color:#7b330680}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-amber-900\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-amber-900)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}.dark\:hover\:bg-stone-800:is(.dark *):hover{background-color:var(--color-stone-800)}.dark\:hover\:bg-stone-800\/50:is(.dark *):hover{background-color:#29252480}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-stone-800\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-stone-800)50%,transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}.dark\:hover\:text-stone-100:is(.dark *):hover{color:var(--color-stone-100)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}.\[\&\>code\]\:border-0>code{border-style:var(--tw-border-style);border-width:0}.\[\&\>code\]\:bg-transparent>code{background-color:#0000}.\[\&\>code\]\:p-0>code{padding:calc(var(--spacing)*0)}.\[\&\>code\]\:text-inherit>code{color:inherit}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:bg-stone-600:hover{background-color:var(--color-stone-600)}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}a.\[a\&\]\:hover\:underline:hover{text-decoration-line:underline}a.dark\:\[a\&\]\:hover\:bg-stone-500:is(.dark *):hover{background-color:var(--color-stone-500)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(37% .011 56.366);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0);--font-geist-sans:"Nunito",ui-sans-serif,system-ui,sans-serif;--font-geist-mono:ui-monospace,monospace;--font-display:"Quicksand",ui-sans-serif,system-ui,sans-serif}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}@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-space-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:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|