sc-research 1.0.13 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +225 -64
- package/dist/web/assets/index-Bo0b_RP8.css +1 -0
- package/dist/web/assets/{index-sZb3bzqd.js → index-DhbLI1q5.js} +16 -16
- package/dist/web/icon.svg +3 -0
- package/dist/web/index.html +4 -4
- package/dist/web/mocks/classified_controversy.json +122 -0
- package/dist/web/mocks/classified_discovery.json +151 -0
- package/dist/web/mocks/classified_rank.json +160 -0
- package/dist/web/mocks/classified_sentiment.json +52 -0
- package/dist/web/mocks/classified_trend.json +175 -0
- package/package.json +2 -1
- package/templates/base/commands/controversy.md +8 -20
- package/templates/base/commands/deep-research.md +8 -19
- package/templates/base/commands/discovery.md +10 -22
- package/templates/base/commands/quick.md +6 -7
- package/templates/base/commands/rank.md +8 -19
- package/templates/base/commands/research.md +12 -6
- package/templates/base/commands/sentiment.md +8 -20
- package/templates/base/commands/trend.md +8 -19
- package/templates/base/commands/visualize.md +7 -7
- package/templates/base/skills/social_media_controversy.md +53 -23
- package/templates/base/skills/social_media_discovery.md +55 -43
- package/templates/base/skills/social_media_fetch.md +81 -49
- package/templates/base/skills/social_media_rank.md +49 -20
- package/templates/base/skills/social_media_schema.md +105 -19
- package/templates/base/skills/social_media_sentiment.md +59 -23
- package/templates/base/skills/social_media_trend.md +60 -20
- package/templates/base/skills/using_social_media_research.md +92 -74
- package/dist/web/assets/index-FB2oq23H.css +0 -1
- package/dist/web/vite.svg +0 -11
|
@@ -1,36 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: social_media_sentiment
|
|
3
|
-
description:
|
|
3
|
+
description: Analysis-only worker. Reads existing raw Reddit/X data and generates `classified_sentiment.json` with strict `SentimentData` output. Use for sentiment, mood, or positive-vs-negative analysis requests.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Social Media Sentiment Skill
|
|
7
7
|
|
|
8
|
-
This worker measures community tone and produces evidence-backed sentiment output for the dashboard.
|
|
8
|
+
This worker measures community tone and produces evidence-backed sentiment output for the dashboard. It performs **analysis only** — fetching is handled by the orchestrator via `social_media_fetch`.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Prerequisites
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
The following files must already exist (produced by `social_media_fetch`):
|
|
13
13
|
|
|
14
|
-
- `reddit_data.json`
|
|
15
|
-
- `x_data.json`
|
|
14
|
+
- `reddit_data.json` and/or `x_data.json`
|
|
16
15
|
|
|
17
|
-
At least one valid source file must
|
|
18
|
-
|
|
19
|
-
## Command Execution Flow
|
|
20
|
-
|
|
21
|
-
Use this sequence for sentiment analysis:
|
|
22
|
-
|
|
23
|
-
1. Fetch or refresh raw data (outside this worker):
|
|
24
|
-
|
|
25
|
-
- `sc-research research:deep "TOPIC"`
|
|
26
|
-
- Optional filters: `--source=reddit|x|both --from=YYYY-MM-DD --to=YYYY-MM-DD`
|
|
27
|
-
|
|
28
|
-
2. Run this `social_media_sentiment` worker to generate `classified_sentiment.json`.
|
|
29
|
-
3. Optional visualization:
|
|
30
|
-
|
|
31
|
-
- `sc-research visualize`
|
|
32
|
-
|
|
33
|
-
If raw files are missing, stale, or mismatched for the requested topic/date range, run step 1 first.
|
|
16
|
+
At least one valid source file must be present. If both are missing, **stop and report failure** — do not attempt to fetch data.
|
|
34
17
|
|
|
35
18
|
## Step 1: Preflight Validation
|
|
36
19
|
|
|
@@ -93,6 +76,59 @@ Save result to:
|
|
|
93
76
|
|
|
94
77
|
- `classified_sentiment.json`
|
|
95
78
|
|
|
79
|
+
## Output Type Contract
|
|
80
|
+
|
|
81
|
+
Your output MUST match this exact shape. The dashboard detects sentiment data by checking for `distribution` (object) + `by_source` (object). Missing either field = broken tab.
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"topic": "iPhone 16 Pro reviews",
|
|
86
|
+
"overall_mood": "Positive",
|
|
87
|
+
"distribution": {
|
|
88
|
+
"very_positive": 15,
|
|
89
|
+
"positive": 38,
|
|
90
|
+
"mixed": 22,
|
|
91
|
+
"negative": 8
|
|
92
|
+
},
|
|
93
|
+
"by_source": {
|
|
94
|
+
"reddit": {
|
|
95
|
+
"very_positive": 10,
|
|
96
|
+
"positive": 25,
|
|
97
|
+
"mixed": 15,
|
|
98
|
+
"negative": 5
|
|
99
|
+
},
|
|
100
|
+
"x": {
|
|
101
|
+
"very_positive": 5,
|
|
102
|
+
"positive": 13,
|
|
103
|
+
"mixed": 7,
|
|
104
|
+
"negative": 3
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"product_sentiments": [
|
|
108
|
+
{
|
|
109
|
+
"name": "iPhone 16 Pro",
|
|
110
|
+
"overall": "Positive",
|
|
111
|
+
"reddit_sentiment": "Positive",
|
|
112
|
+
"x_sentiment": "Mixed",
|
|
113
|
+
"evidence_quotes": [
|
|
114
|
+
{
|
|
115
|
+
"text": "Camera upgrade alone makes it worth it",
|
|
116
|
+
"author": "u/tech_reviewer",
|
|
117
|
+
"link": "https://reddit.com/r/iphone/comments/xyz789",
|
|
118
|
+
"sentiment": "Very Positive"
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Enum Rules for Sentiment
|
|
127
|
+
|
|
128
|
+
- ALL sentiment labels: **Title Case** — `"Very Positive"`, `"Positive"`, `"Mixed"`, `"Negative"`. NEVER use `"positive"` or `"neutral"`.
|
|
129
|
+
- `distribution` keys: **snake_case** — `very_positive`, `positive`, `mixed`, `negative`. NEVER use `veryPositive` or `Very Positive` as keys.
|
|
130
|
+
- `by_source` keys: **lowercase** — `reddit`, `x`. NEVER use `Reddit` or `X`.
|
|
131
|
+
|
|
96
132
|
## Final Validation Checklist
|
|
97
133
|
|
|
98
134
|
- JSON parse succeeds.
|
|
@@ -1,33 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: social_media_trend
|
|
3
|
-
description:
|
|
3
|
+
description: Analysis-only worker. Reads existing raw Reddit/X data and generates `classified_trend.json` with strict `TrendData` output. Use for timeline, growth/decline, and discussion-peak analysis requests.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Social Media Trend Skill
|
|
7
7
|
|
|
8
|
-
This worker converts raw discussion timestamps into a trend timeline with key moments.
|
|
8
|
+
This worker converts raw discussion timestamps into a trend timeline with key moments. It performs **analysis only** — fetching is handled by the orchestrator via `social_media_fetch`.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Prerequisites
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
The following files must already exist (produced by `social_media_fetch`):
|
|
13
13
|
|
|
14
|
-
- `reddit_data.json`
|
|
15
|
-
- `x_data.json`
|
|
14
|
+
- `reddit_data.json` and/or `x_data.json`
|
|
16
15
|
|
|
17
|
-
At least one valid source file must
|
|
18
|
-
|
|
19
|
-
## Command Execution Flow
|
|
20
|
-
|
|
21
|
-
Use this sequence for trend analysis:
|
|
22
|
-
|
|
23
|
-
1. Fetch or refresh raw data (outside this worker):
|
|
24
|
-
- `sc-research research:deep "TOPIC"`
|
|
25
|
-
- Optional filters: `--source=reddit|x|both --from=YYYY-MM-DD --to=YYYY-MM-DD`
|
|
26
|
-
2. Run this `social_media_trend` worker to generate `classified_trend.json`.
|
|
27
|
-
3. Optional visualization:
|
|
28
|
-
- `sc-research visualize`
|
|
29
|
-
|
|
30
|
-
If raw files are missing, stale, or mismatched for the requested topic/date range, run step 1 first.
|
|
16
|
+
At least one valid source file must be present. If both are missing, **stop and report failure** — do not attempt to fetch data.
|
|
31
17
|
|
|
32
18
|
## Step 1: Preflight and Date Parsing
|
|
33
19
|
|
|
@@ -84,6 +70,60 @@ Read `../social_media_schema/SKILL.md` and output strict `TrendData` JSON to:
|
|
|
84
70
|
|
|
85
71
|
- `classified_trend.json`
|
|
86
72
|
|
|
73
|
+
## Output Type Contract
|
|
74
|
+
|
|
75
|
+
Your output MUST match this exact shape. The dashboard detects trend data by checking for `date_range` (object) + `timeline` (array). Missing either field = broken tab.
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"topic": "AI coding assistants",
|
|
80
|
+
"date_range": {
|
|
81
|
+
"from": "2025-01-01",
|
|
82
|
+
"to": "2025-01-31"
|
|
83
|
+
},
|
|
84
|
+
"granularity": "day",
|
|
85
|
+
"timeline": [
|
|
86
|
+
{
|
|
87
|
+
"period": "2025-01-01",
|
|
88
|
+
"post_count": 12,
|
|
89
|
+
"total_engagement": 3400,
|
|
90
|
+
"reddit_posts": 8,
|
|
91
|
+
"x_posts": 4
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"period": "2025-01-02",
|
|
95
|
+
"post_count": 7,
|
|
96
|
+
"total_engagement": 1850,
|
|
97
|
+
"reddit_posts": 5,
|
|
98
|
+
"x_posts": 2
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"key_moments": [
|
|
102
|
+
{
|
|
103
|
+
"date": "2025-01-15",
|
|
104
|
+
"event": "Major product update announcement drove spike in discussion",
|
|
105
|
+
"significance": "high",
|
|
106
|
+
"url": "https://reddit.com/r/programming/comments/def456"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Period Format Rules
|
|
113
|
+
|
|
114
|
+
The `period` field in each timeline entry MUST match the selected granularity:
|
|
115
|
+
|
|
116
|
+
| Granularity | Period Format | Example |
|
|
117
|
+
| ----------- | ------------- | -------------- |
|
|
118
|
+
| `"day"` | `YYYY-MM-DD` | `"2025-01-15"` |
|
|
119
|
+
| `"week"` | `YYYY-Www` | `"2025-W03"` |
|
|
120
|
+
| `"month"` | `YYYY-MM` | `"2025-01"` |
|
|
121
|
+
|
|
122
|
+
### Enum Rules for Trend
|
|
123
|
+
|
|
124
|
+
- `significance` on KeyMoment: **lowercase** — `"high"`, `"medium"`, `"low"`. NEVER use `"High"`, `"Medium"`, `"Low"`.
|
|
125
|
+
- All numeric fields (`post_count`, `total_engagement`, `reddit_posts`, `x_posts`) must be numbers, NEVER strings or null.
|
|
126
|
+
|
|
87
127
|
## Final Validation Checklist
|
|
88
128
|
|
|
89
129
|
- JSON parse succeeds.
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: using_social_media_research
|
|
3
|
-
description: This skill should be used when the user asks what people on Reddit/X think about a topic, including requests like "best/top recommendation", "compare options", "sentiment", "trend over time", "controversy/debate", "what is trending", "quick summary", or "full analysis". It acts as the entrypoint router and
|
|
3
|
+
description: This skill should be used when the user asks what people on Reddit/X think about a topic, including requests like "best/top recommendation", "compare options", "sentiment", "trend over time", "controversy/debate", "what is trending", "quick summary", or "full analysis". It acts as the entrypoint router and delegates to the correct fetch and worker skills.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Using Social Media Research (Orchestrator)
|
|
7
7
|
|
|
8
|
-
This skill is the
|
|
8
|
+
This skill is the **single entrypoint** for the entire research pipeline.
|
|
9
|
+
|
|
10
|
+
## Pipeline Flow (always follow this order)
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
User Question
|
|
14
|
+
→ Step 1: Resolve Intent (pick the right worker)
|
|
15
|
+
→ Step 2: Fetch Data (delegate to social_media_fetch)
|
|
16
|
+
→ Step 3: Classify (delegate to the chosen worker skill)
|
|
17
|
+
→ Step 4: Present Results
|
|
18
|
+
→ Step 5: Visualize (optional — run sc-research visualize)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**No other skill or command should run fetch commands directly.** Only this orchestrator decides when and how to fetch.
|
|
9
22
|
|
|
10
23
|
## Auto-Trigger Cues
|
|
11
24
|
|
|
12
|
-
|
|
25
|
+
Activate this skill when the user's request maps to social-media research intent:
|
|
13
26
|
|
|
14
27
|
- "What do people think about X?"
|
|
15
28
|
- "Best X according to Reddit?"
|
|
@@ -18,111 +31,116 @@ Treat this as the entrypoint skill when user requests map to social-media resear
|
|
|
18
31
|
- "Is X trending recently?"
|
|
19
32
|
- "What are people debating about X?"
|
|
20
33
|
- "Give me a quick social media summary"
|
|
34
|
+
- "Full analysis of X"
|
|
21
35
|
|
|
22
|
-
## Core
|
|
23
|
-
|
|
24
|
-
- For analysis intents, run exactly one worker by default.
|
|
25
|
-
- Run multiple workers only when the user explicitly asks for multi-view output (for example: "full analysis", "all views", "run everything").
|
|
26
|
-
- Use deep fetch for every worker analysis.
|
|
27
|
-
- Use quick fetch for explicit quick-answer requests.
|
|
28
|
-
- If intent is still ambiguous after routing rules, use rank as the default overview route.
|
|
29
|
-
- Reuse existing raw data only if it still matches topic, source, and date range; otherwise refetch.
|
|
30
|
-
|
|
31
|
-
## Command Execution Summary
|
|
36
|
+
## Core Contract
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
- Run exactly **one** worker by default.
|
|
39
|
+
- Run **multiple** workers only when the user explicitly asks for multi-view output ("full analysis", "all views", "run everything").
|
|
40
|
+
- Always use **deep** fetch for worker analysis routes.
|
|
41
|
+
- Use **quick** fetch only for explicit quick-answer requests.
|
|
42
|
+
- If intent is ambiguous after all routing rules, default to **quick-answer mode** (direct text response, no classified file).
|
|
43
|
+
- **Delegate all fetching to `social_media_fetch`** — never run `sc-research research` commands directly from this skill or any worker.
|
|
34
44
|
|
|
35
|
-
|
|
36
|
-
- `sc-research research:deep "TOPIC" [--source=...] [--from=YYYY-MM-DD --to=YYYY-MM-DD]`
|
|
37
|
-
- then run the selected worker skill to produce the matching `classified_*.json`.
|
|
38
|
-
- Discovery route:
|
|
39
|
-
- Broad weekly feed: `sc-research research:deep "DISCOVERY_WEEKLY" --mode=discovery [--source=...] [--from=... --to=...]`
|
|
40
|
-
- Topic-focused: `sc-research research:deep "TOPIC" --mode=discovery [--source=...] [--from=... --to=...]`
|
|
41
|
-
- then run `social_media_discovery`.
|
|
42
|
-
- Quick answer route:
|
|
43
|
-
- `sc-research research "TOPIC" --source=reddit [--from=... --to=...]`
|
|
44
|
-
- then synthesize a short text answer (no classified file).
|
|
45
|
-
- Optional dashboard view after any classified output:
|
|
46
|
-
- `sc-research visualize`
|
|
45
|
+
---
|
|
47
46
|
|
|
48
47
|
## Step 1: Resolve Intent (Strict Precedence)
|
|
49
48
|
|
|
50
|
-
Apply rules top-to-bottom
|
|
49
|
+
Apply rules top-to-bottom. First match wins.
|
|
51
50
|
|
|
52
51
|
1. **Explicit multi-analysis request**
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
4. `social_media_controversy`
|
|
58
|
-
- Include `social_media_discovery` only if the user also asks for emerging/viral topic discovery.
|
|
52
|
+
- Trigger: "full analysis", "all views", "run everything", or equivalent.
|
|
53
|
+
- Run all four workers in order: `social_media_rank` → `social_media_sentiment` → `social_media_trend` → `social_media_controversy`.
|
|
54
|
+
- Include `social_media_discovery` only if user also asks about emerging/viral topics.
|
|
55
|
+
|
|
59
56
|
2. **Explicit template request**
|
|
60
|
-
-
|
|
57
|
+
- Trigger: user names a specific analysis ("sentiment", "trend", "controversy", "discovery", "rank").
|
|
58
|
+
- Route directly to that single worker.
|
|
59
|
+
|
|
61
60
|
3. **Explicit quick-answer request**
|
|
62
|
-
-
|
|
61
|
+
- Trigger: "quick answer", "short summary", "brief".
|
|
62
|
+
- Use quick-answer mode (no classified file, direct text response).
|
|
63
|
+
|
|
63
64
|
4. **Inferred strongest intent**
|
|
64
|
-
- Map by primary question
|
|
65
|
-
5. **Fallback**
|
|
65
|
+
- Map by primary question keywords (see table below).
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
5. **Fallback**
|
|
68
|
+
- Default to **quick-answer mode** — synthesize a 3–5 sentence answer directly from the raw data. Do not produce a `classified_*.json` file.
|
|
68
69
|
|
|
69
|
-
|
|
70
|
+
### Intent → Worker Mapping
|
|
70
71
|
|
|
71
|
-
| Route |
|
|
72
|
+
| Route | Trigger phrases | Worker skill | Output file |
|
|
72
73
|
| ------------ | ------------------------------------------------- | -------------------------- | ----------------------------- |
|
|
73
74
|
| Rank | best, top, compare, recommendation, which one | `social_media_rank` | `classified_rank.json` |
|
|
74
75
|
| Sentiment | feel, sentiment, opinion, positive/negative | `social_media_sentiment` | `classified_sentiment.json` |
|
|
75
76
|
| Trend | timeline, over time, peak, growth, decline | `social_media_trend` | `classified_trend.json` |
|
|
76
77
|
| Controversy | debate, divisive, disagreement, polarizing, vs | `social_media_controversy` | `classified_controversy.json` |
|
|
77
78
|
| Discovery | trending topics, viral, discover themes, clusters | `social_media_discovery` | `classified_discovery.json` |
|
|
78
|
-
| Quick Answer | quick answer, short summary, brief | none
|
|
79
|
+
| Quick Answer | quick answer, short summary, brief | _(none)_ | direct text answer |
|
|
80
|
+
|
|
81
|
+
### Source Preference Detection
|
|
82
|
+
|
|
83
|
+
| User wording | Source value |
|
|
84
|
+
| ------------------------------------- | ------------------------------------------------------- |
|
|
85
|
+
| "on Reddit", "subreddit", "Redditors" | `reddit` |
|
|
86
|
+
| "on X", "on Twitter", "tweets" | `x` |
|
|
87
|
+
| no explicit source | _(omit — runtime uses all sources with valid API keys)_ |
|
|
88
|
+
|
|
89
|
+
## Step 2: Fetch Data (delegate to `social_media_fetch`)
|
|
90
|
+
|
|
91
|
+
Read the `social_media_fetch` skill and follow its instructions to fetch raw data. Provide it with:
|
|
92
|
+
|
|
93
|
+
- **topic**: the user's topic string
|
|
94
|
+
- **depth**: `deep` for all worker routes, `quick` for quick-answer route
|
|
95
|
+
- **mode**: `discovery` for the discovery route, `research` for all others
|
|
96
|
+
- **source**: from source preference above (omit if not specified)
|
|
97
|
+
- **date range**: `from`/`to` if user provided dates
|
|
98
|
+
|
|
99
|
+
The fetch skill handles data freshness checks, CLI execution, and output validation. Do not duplicate that logic here.
|
|
100
|
+
|
|
101
|
+
After fetch completes, confirm that at least one raw data file (`reddit_data.json` / `x_data.json`) exists and is valid before proceeding.
|
|
102
|
+
|
|
103
|
+
## Step 3: Classify (delegate to worker skill)
|
|
79
104
|
|
|
80
|
-
|
|
105
|
+
Based on the route chosen in Step 1:
|
|
81
106
|
|
|
82
|
-
|
|
107
|
+
- **Single route**: Read the selected worker skill's instructions (e.g., `social_media_rank`) and follow them to produce the matching `classified_*.json` file.
|
|
108
|
+
- **Multi-route** (full analysis): Read and execute each worker skill in order. Each worker reads existing raw data and writes its own output file independently.
|
|
109
|
+
- **Quick answer**: Synthesize a 3–5 sentence answer directly from the raw data. Do not produce any `classified_*.json` file.
|
|
83
110
|
|
|
84
|
-
|
|
85
|
-
| ------------------------------------- | ----------------------------------------------------------------------------- |
|
|
86
|
-
| "on Reddit", "subreddit", "Redditors" | `--source=reddit` |
|
|
87
|
-
| "on X", "on Twitter", "tweets" | `--source=x` |
|
|
88
|
-
| no explicit source | no source flag (runtime uses all enabled sources based on available API keys) |
|
|
111
|
+
### CRITICAL: Schema Enforcement
|
|
89
112
|
|
|
90
|
-
|
|
113
|
+
Before writing ANY `classified_*.json` file, you MUST:
|
|
91
114
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
- Broad weekly feed: `sc-research research:deep "DISCOVERY_WEEKLY" --mode=discovery [--source=...] [--from=... --to=...]`
|
|
96
|
-
- Topic-focused: `sc-research research:deep "TOPIC" --mode=discovery [--source=...] [--from=... --to=...]`
|
|
97
|
-
- **Quick answer route:**
|
|
98
|
-
- `sc-research research "TOPIC" --source=reddit [--from=... --to=...]`
|
|
115
|
+
1. Read `social_media_schema` skill — it is the **single source of truth** for JSON shapes.
|
|
116
|
+
2. Each worker skill contains an **Output Type Contract** section with a concrete JSON example — match it exactly.
|
|
117
|
+
3. Use ONLY the enum values listed in the schema. Wrong casing = broken dashboard.
|
|
99
118
|
|
|
100
|
-
|
|
119
|
+
The dashboard auto-detects each classified type by checking for specific field signatures. If required fields are missing or misnamed, the dashboard will **not show that tab at all**.
|
|
101
120
|
|
|
102
|
-
|
|
121
|
+
## Step 4: Present Results
|
|
103
122
|
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
123
|
+
- Confirm the expected `classified_*.json` file(s) exist and are parseable.
|
|
124
|
+
- Present results matching what was requested:
|
|
125
|
+
- Single-route → single output summary
|
|
126
|
+
- Multi-route → sectioned summary per route
|
|
127
|
+
- Quick answer → 3–5 sentence direct text
|
|
108
128
|
|
|
109
|
-
|
|
129
|
+
## Step 5: Visualize (optional)
|
|
110
130
|
|
|
111
|
-
|
|
131
|
+
Suggest running `sc-research visualize` to view results in the web dashboard. The visualize command:
|
|
112
132
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
- Multi-route request -> sectioned summary per route
|
|
118
|
-
- Quick answer -> 3-5 sentence direct answer, no classified output required
|
|
133
|
+
1. Reads all `classified_*.json` files in the working directory.
|
|
134
|
+
2. Validates each against the expected schema.
|
|
135
|
+
3. Merges them into a single `data.json` for the dashboard.
|
|
136
|
+
4. Opens the dashboard at `localhost:5173`.
|
|
119
137
|
|
|
120
|
-
##
|
|
138
|
+
## Safety Rules
|
|
121
139
|
|
|
122
|
-
- If a request mixes intents without explicit multi-analysis wording,
|
|
123
|
-
- Never fabricate
|
|
140
|
+
- If a request mixes intents without explicit multi-analysis wording, pick the single strongest route and state what was chosen.
|
|
141
|
+
- Never fabricate output files or data.
|
|
124
142
|
- Never silently switch from deep to quick fetch for worker routes.
|
|
125
|
-
-
|
|
143
|
+
- Each `classified_*.json` file is independent — producing one never requires producing another.
|
|
126
144
|
|
|
127
145
|
## File Map
|
|
128
146
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-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-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-duration:initial;--tw-divide-x-reverse:0}}}@layer theme{:root,:host{--font-sans:"Inter",sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--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-red-700:oklch(50.5% .213 27.518);--color-red-900:oklch(39.6% .141 25.723);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-300:oklch(83.7% .128 66.29);--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-orange-700:oklch(55.3% .195 38.402);--color-orange-900:oklch(40.8% .123 38.172);--color-orange-950:oklch(26.6% .079 36.259);--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-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--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-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--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-700:oklch(50.8% .118 165.612);--color-emerald-900:oklch(37.8% .077 168.94);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--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-900:oklch(37.9% .146 265.522);--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-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-5xl:64rem;--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-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-lg:.5rem;--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)}}@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;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{.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.left-2{left:calc(var(--spacing)*2)}.z-10{z-index:10}.col-span-2{grid-column:span 2/span 2}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.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-8{margin-bottom:calc(var(--spacing)*8)}.ml-1{margin-left:calc(var(--spacing)*1)}.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}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-6{min-width:calc(var(--spacing)*6)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.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}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}: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-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.gap-y-2{row-gap:calc(var(--spacing)*2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-zinc-100>:not(:last-child)){border-color:var(--color-zinc-100)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.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-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-\[3px\]{border-left-style:var(--tw-border-style);border-left-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-500{border-color:var(--color-blue-500)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-green-200{border-color:var(--color-green-200)}.border-purple-200{border-color:var(--color-purple-200)}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-transparent{border-color:#0000}.border-zinc-100{border-color:var(--color-zinc-100)}.border-zinc-200{border-color:var(--color-zinc-200)}.border-l-green-400{border-left-color:var(--color-green-400)}.border-l-red-400{border-left-color:var(--color-red-400)}.border-l-zinc-300{border-left-color:var(--color-zinc-300)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-black\/5{background-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.bg-black\/5{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-100\/50{background-color:#ffedd580}@supports (color:color-mix(in lab,red,red)){.bg-orange-100\/50{background-color:color-mix(in oklab,var(--color-orange-100)50%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-50\/30{background-color:#fafafa4d}@supports (color:color-mix(in lab,red,red)){.bg-zinc-50\/30{background-color:color-mix(in oklab,var(--color-zinc-50)30%,transparent)}}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-200{background-color:var(--color-zinc-200)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-amber-50{--tw-gradient-from:var(--color-amber-50);--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))}.to-orange-50{--tw-gradient-to:var(--color-orange-50);--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))}.fill-zinc-700{fill:var(--color-zinc-700)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1\.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\.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-8{padding-block:calc(var(--spacing)*8)}.py-20{padding-block:calc(var(--spacing)*20)}.py-24{padding-block:calc(var(--spacing)*24)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pl-6{padding-left:calc(var(--spacing)*6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.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))}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.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-black{color:var(--color-black)}.text-blue-400{color:var(--color-blue-400)}.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-emerald-700{color:var(--color-emerald-700)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-orange-500{color:var(--color-orange-500)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-purple-700{color:var(--color-purple-700)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-800{color:var(--color-zinc-800)}.text-zinc-900{color:var(--color-zinc-900)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.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-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-blue-200{--tw-shadow-color:oklch(88.2% .059 254.128)}@supports (color:color-mix(in lab,red,red)){.shadow-blue-200{--tw-shadow-color:color-mix(in oklab,var(--color-blue-200)var(--tw-shadow-alpha),transparent)}}.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))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.group-open\:hidden:is(:where(.group):is([open],:popover-open,:open) *){display:none}.group-open\:inline:is(:where(.group):is([open],:popover-open,:open) *){display:inline}@media(hover:hover){.group-hover\:text-blue-600:is(:where(.group):hover *){color:var(--color-blue-600)}.hover\:border-zinc-200:hover{border-color:var(--color-zinc-200)}.hover\:border-zinc-300:hover{border-color:var(--color-zinc-300)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-zinc-50:hover{background-color:var(--color-zinc-50)}.hover\:bg-zinc-50\/50:hover{background-color:#fafafa80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-zinc-50\/50:hover{background-color:color-mix(in oklab,var(--color-zinc-50)50%,transparent)}}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:text-zinc-700:hover{color:var(--color-zinc-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:inline{display:inline}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-8{grid-column:span 8/span 8}.md\:block{display:block}.md\:grid{display:grid}.md\:hidden{display:none}.md\:inline{display:inline}.md\:w-auto{width:auto}.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\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:calc(var(--spacing)*6)}.md\:gap-y-0{row-gap:calc(var(--spacing)*0)}:where(.md\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.md\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px*var(--tw-divide-y-reverse));border-bottom-width:calc(0px*calc(1 - var(--tw-divide-y-reverse)))}.md\:text-center{text-align:center}}:where(.dark\:divide-zinc-800:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-zinc-800)}.dark\:border-amber-900\/30:where(.dark,.dark *){border-color:#7b33064d}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-900\/30:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-900)30%,transparent)}}.dark\:border-amber-900\/50:where(.dark,.dark *){border-color:#7b330680}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-900)50%,transparent)}}.dark\:border-blue-500:where(.dark,.dark *){border-color:var(--color-blue-500)}.dark\:border-blue-900\/50:where(.dark,.dark *){border-color:#1c398e80}@supports (color:color-mix(in lab,red,red)){.dark\:border-blue-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-blue-900)50%,transparent)}}.dark\:border-emerald-900\/50:where(.dark,.dark *){border-color:#004e3b80}@supports (color:color-mix(in lab,red,red)){.dark\:border-emerald-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-emerald-900)50%,transparent)}}.dark\:border-green-900\/50:where(.dark,.dark *){border-color:#0d542b80}@supports (color:color-mix(in lab,red,red)){.dark\:border-green-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-green-900)50%,transparent)}}.dark\:border-purple-900\/50:where(.dark,.dark *){border-color:#59168b80}@supports (color:color-mix(in lab,red,red)){.dark\:border-purple-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-purple-900)50%,transparent)}}.dark\:border-red-900\/20:where(.dark,.dark *){border-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-900\/20:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:border-red-900\/50:where(.dark,.dark *){border-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-red-900)50%,transparent)}}.dark\:border-zinc-700:where(.dark,.dark *){border-color:var(--color-zinc-700)}.dark\:border-zinc-800:where(.dark,.dark *){border-color:var(--color-zinc-800)}.dark\:border-l-zinc-600:where(.dark,.dark *){border-left-color:var(--color-zinc-600)}.dark\:bg-amber-900\/20:where(.dark,.dark *){background-color:#7b330633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-900)20%,transparent)}}.dark\:bg-amber-900\/30:where(.dark,.dark *){background-color:#7b33064d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-900)30%,transparent)}}.dark\:bg-blue-900\/20:where(.dark,.dark *){background-color:#1c398e33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-blue-900)20%,transparent)}}.dark\:bg-blue-900\/30:where(.dark,.dark *){background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:bg-emerald-900\/20:where(.dark,.dark *){background-color:#004e3b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-emerald-900)20%,transparent)}}.dark\:bg-green-900\/20:where(.dark,.dark *){background-color:#0d542b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-green-900)20%,transparent)}}.dark\:bg-green-900\/30:where(.dark,.dark *){background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-green-900)30%,transparent)}}.dark\:bg-orange-900\/30:where(.dark,.dark *){background-color:#7e2a0c4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-orange-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-orange-900)30%,transparent)}}.dark\:bg-orange-950\/30:where(.dark,.dark *){background-color:#4413064d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-orange-950\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-orange-950)30%,transparent)}}.dark\:bg-purple-900\/20:where(.dark,.dark *){background-color:#59168b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-purple-900)20%,transparent)}}.dark\:bg-red-900\/10:where(.dark,.dark *){background-color:#82181a1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900)10%,transparent)}}.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-red-900\/30:where(.dark,.dark *){background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900)30%,transparent)}}.dark\:bg-white\/10:where(.dark,.dark *){background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-white\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:bg-zinc-700:where(.dark,.dark *){background-color:var(--color-zinc-700)}.dark\:bg-zinc-700\/50:where(.dark,.dark *){background-color:#3f3f4680}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-700\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-700)50%,transparent)}}.dark\:bg-zinc-800:where(.dark,.dark *){background-color:var(--color-zinc-800)}.dark\:bg-zinc-800\/30:where(.dark,.dark *){background-color:#27272a4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-800\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-800)30%,transparent)}}.dark\:bg-zinc-800\/50:where(.dark,.dark *){background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-800\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.dark\:bg-zinc-800\/60:where(.dark,.dark *){background-color:#27272a99}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-800)60%,transparent)}}.dark\:bg-zinc-900:where(.dark,.dark *){background-color:var(--color-zinc-900)}.dark\:bg-zinc-900\/30:where(.dark,.dark *){background-color:#18181b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-900)30%,transparent)}}.dark\:bg-zinc-900\/40:where(.dark,.dark *){background-color:#18181b66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-900\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-900)40%,transparent)}}.dark\:bg-zinc-950:where(.dark,.dark *){background-color:var(--color-zinc-950)}.dark\:bg-zinc-950\/30:where(.dark,.dark *){background-color:#09090b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-zinc-950\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-zinc-950)30%,transparent)}}.dark\:from-amber-950\/20:where(.dark,.dark *){--tw-gradient-from:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:from-amber-950\/20:where(.dark,.dark *){--tw-gradient-from:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:from-amber-950\/20:where(.dark,.dark *){--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))}.dark\:to-orange-950\/20:where(.dark,.dark *){--tw-gradient-to:#44130633}@supports (color:color-mix(in lab,red,red)){.dark\:to-orange-950\/20:where(.dark,.dark *){--tw-gradient-to:color-mix(in oklab,var(--color-orange-950)20%,transparent)}}.dark\:to-orange-950\/20:where(.dark,.dark *){--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))}.dark\:fill-zinc-200:where(.dark,.dark *){fill:var(--color-zinc-200)}.dark\:text-amber-200:where(.dark,.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:where(.dark,.dark *){color:var(--color-blue-400)}.dark\:text-blue-500:where(.dark,.dark *){color:var(--color-blue-500)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-green-300:where(.dark,.dark *){color:var(--color-green-300)}.dark\:text-green-400:where(.dark,.dark *){color:var(--color-green-400)}.dark\:text-orange-300:where(.dark,.dark *){color:var(--color-orange-300)}.dark\:text-orange-400:where(.dark,.dark *){color:var(--color-orange-400)}.dark\:text-purple-300:where(.dark,.dark *){color:var(--color-purple-300)}.dark\:text-red-300:where(.dark,.dark *){color:var(--color-red-300)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-zinc-100:where(.dark,.dark *){color:var(--color-zinc-100)}.dark\:text-zinc-200:where(.dark,.dark *){color:var(--color-zinc-200)}.dark\:text-zinc-300:where(.dark,.dark *){color:var(--color-zinc-300)}.dark\:text-zinc-400:where(.dark,.dark *){color:var(--color-zinc-400)}.dark\:text-zinc-500:where(.dark,.dark *){color:var(--color-zinc-500)}.dark\:text-zinc-600:where(.dark,.dark *){color:var(--color-zinc-600)}.dark\:shadow-blue-900\/20:where(.dark,.dark *){--tw-shadow-color:#1c398e33}@supports (color:color-mix(in lab,red,red)){.dark\:shadow-blue-900\/20:where(.dark,.dark *){--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-blue-900)20%,transparent)var(--tw-shadow-alpha),transparent)}}@media(hover:hover){.dark\:group-hover\:text-blue-400:where(.dark,.dark *):is(:where(.group):hover *){color:var(--color-blue-400)}.dark\:hover\:border-zinc-600:where(.dark,.dark *):hover{border-color:var(--color-zinc-600)}.dark\:hover\:border-zinc-700:where(.dark,.dark *):hover{border-color:var(--color-zinc-700)}.dark\:hover\:bg-zinc-700:where(.dark,.dark *):hover{background-color:var(--color-zinc-700)}.dark\:hover\:bg-zinc-800:where(.dark,.dark *):hover{background-color:var(--color-zinc-800)}.dark\:hover\:bg-zinc-800\/50:where(.dark,.dark *):hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-zinc-800\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.dark\:hover\:text-zinc-200:where(.dark,.dark *):hover{color:var(--color-zinc-200)}.dark\:hover\:text-zinc-300:where(.dark,.dark *):hover{color:var(--color-zinc-300)}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-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-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-duration{syntax:"*";inherits:false}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}
|
package/dist/web/vite.svg
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410 404" role="img" aria-label="Vite logo placeholder">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient id="grad1" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
-
<stop offset="0%" stop-color="#41d1ff"/>
|
|
5
|
-
<stop offset="50%" stop-color="#bd34fe"/>
|
|
6
|
-
<stop offset="100%" stop-color="#ffa800"/>
|
|
7
|
-
</linearGradient>
|
|
8
|
-
</defs>
|
|
9
|
-
<path fill="#1e293b" d="M399.9 59.6L215.4 389.5c-5.6 10.2-20.3 10.2-25.9 0L10.1 59.6C3.9 48.7 12 35 24.9 35h360.2c13 0 21 13.7 14.8 24.6z"/>
|
|
10
|
-
<path fill="url(#grad1)" d="M284 80L205 270 126 80h50l29 88 29-88z"/>
|
|
11
|
-
</svg>
|