@drunkcoding/agents-and-skills 0.0.12 → 0.0.14
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/marketplace.json +9 -6
- package/README.md +1 -1
- package/package.json +1 -1
- package/plugins/html-effectiveness/.claude-plugin/plugin.json +1 -1
- package/plugins/html-effectiveness/README.md +9 -4
- package/plugins/html-effectiveness/agents/report-builder.md +4 -0
- package/plugins/html-effectiveness/assets/base.css +40 -20
- package/plugins/html-effectiveness/docs/template-gallery.md +28 -0
- package/plugins/html-effectiveness/scripts/_tmp.js +37 -0
- package/plugins/html-effectiveness/scripts/catalog.js +47 -0
- package/plugins/html-effectiveness/scripts/extract.js +104 -0
- package/plugins/html-effectiveness/scripts/render.js +2 -2
- package/plugins/html-effectiveness/skills/html-effectiveness/SKILL.md +4 -4
- package/plugins/html-effectiveness/templates/01-exploration-code-approaches.html.tmpl +400 -0
- package/plugins/html-effectiveness/templates/02-exploration-visual-designs.html.tmpl +456 -0
- package/plugins/html-effectiveness/templates/03-code-review-pr.html.tmpl +581 -0
- package/plugins/html-effectiveness/templates/04-code-understanding.html.tmpl +443 -0
- package/plugins/html-effectiveness/templates/05-design-system.html.tmpl +578 -0
- package/plugins/html-effectiveness/templates/06-component-variants.html.tmpl +557 -0
- package/plugins/html-effectiveness/templates/07-prototype-animation.html.tmpl +417 -0
- package/plugins/html-effectiveness/templates/08-prototype-interaction.html.tmpl +363 -0
- package/plugins/html-effectiveness/templates/09-slide-deck.html.tmpl +535 -0
- package/plugins/html-effectiveness/templates/10-svg-illustrations.html.tmpl +444 -0
- package/plugins/html-effectiveness/templates/11-status-report.html.tmpl +152 -0
- package/plugins/html-effectiveness/templates/12-incident-report.html.tmpl +547 -0
- package/plugins/html-effectiveness/templates/13-flowchart-diagram.html.tmpl +361 -0
- package/plugins/html-effectiveness/templates/14-research-feature-explainer.html.tmpl +348 -0
- package/plugins/html-effectiveness/templates/15-research-concept-explainer.html.tmpl +334 -0
- package/plugins/html-effectiveness/templates/16-implementation-plan.html.tmpl +657 -0
- package/plugins/html-effectiveness/templates/17-pr-writeup.html.tmpl +553 -0
- package/plugins/html-effectiveness/templates/18-editor-triage-board.html.tmpl +541 -0
- package/plugins/html-effectiveness/templates/19-editor-feature-flags.html.tmpl +627 -0
- package/plugins/html-effectiveness/templates/20-editor-prompt-tuner.html.tmpl +687 -0
- package/plugins/html-effectiveness/templates/manifest.json +436 -2
- package/plugins/html-effectiveness/tests/_tmp.test.js +58 -0
- package/plugins/html-effectiveness/tests/fixtures/01-exploration-code-approaches.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/02-exploration-visual-designs.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/03-code-review-pr.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/04-code-understanding.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/05-design-system.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/06-component-variants.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/07-prototype-animation.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/08-prototype-interaction.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/09-slide-deck.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/10-svg-illustrations.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/11-status-report.data.json +37 -0
- package/plugins/html-effectiveness/tests/fixtures/12-incident-report.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/13-flowchart-diagram.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/14-research-feature-explainer.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/15-research-concept-explainer.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/16-implementation-plan.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/17-pr-writeup.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/18-editor-triage-board.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/19-editor-feature-flags.data.json +3 -0
- package/plugins/html-effectiveness/tests/fixtures/20-editor-prompt-tuner.data.json +3 -0
- package/plugins/html-effectiveness/tests/manifest.test.js +61 -0
- package/plugins/plugin-validator/.claude-plugin/plugin.json +1 -1
- package/plugins/plugin-validator/skills/validate-agents/SKILL.md +2 -2
- package/plugins/plugin-validator/skills/validate-commands/SKILL.md +2 -2
- package/plugins/plugin-validator/skills/validate-hooks/SKILL.md +57 -18
- package/plugins/team-superpower/.claude-plugin/plugin.json +7 -39
- package/plugins/team-superpower/README.md +73 -19
- package/plugins/team-superpower/agents/backend-developer.md +33 -0
- package/plugins/team-superpower/agents/designer.md +5 -1
- package/plugins/team-superpower/agents/frontend-developer.md +33 -0
- package/plugins/team-superpower/agents/planner.md +31 -11
- package/plugins/team-superpower/agents/qa-engineer.md +30 -0
- package/plugins/team-superpower/agents/reviewer.md +37 -21
- package/plugins/team-superpower/agents/security-engineer.md +30 -0
- package/plugins/team-superpower/agents/software-architect.md +30 -0
- package/plugins/team-superpower/assets/ESCALATION.md +19 -5
- package/plugins/team-superpower/assets/SESSION_README.md +31 -11
- package/plugins/team-superpower/commands/team-feature-resume.md +40 -5
- package/plugins/team-superpower/commands/team-feature.md +148 -22
- package/plugins/team-superpower/hooks/hooks.json +0 -3
- package/plugins/tech-graph/.claude-plugin/plugin.json +1 -1
- package/plugins/tech-graph/agents/tech-graph.md +8 -0
- package/plugins/team-superpower/agents/implementer.md +0 -46
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
template: 02-exploration-visual-designs
|
|
3
|
+
upstream: 02-exploration-visual-designs.html
|
|
4
|
+
slots:
|
|
5
|
+
title: string # replaces first <h1> innerHTML
|
|
6
|
+
-->
|
|
7
|
+
<div class="toolbar">
|
|
8
|
+
<div class="title">Acme · design exploration</div>
|
|
9
|
+
<div class="field">
|
|
10
|
+
<span>Background:</span>
|
|
11
|
+
<div class="seg" id="bg-seg">
|
|
12
|
+
<label><input type="radio" name="bg" value="light" checked><span>Light</span></label>
|
|
13
|
+
<label><input type="radio" name="bg" value="dark"><span>Dark</span></label>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="page">
|
|
19
|
+
|
|
20
|
+
<header class="page-head">
|
|
21
|
+
<div class="eyebrow">Exploration · Empty states</div>
|
|
22
|
+
<h1>{{title}}</h1>
|
|
23
|
+
<div class="prompt-box">
|
|
24
|
+
<span class="label">Prompt</span>
|
|
25
|
+
Explore four visual directions for our empty-state component. Render each
|
|
26
|
+
live so we can compare tone, density, and how well they hold up on light
|
|
27
|
+
and dark surfaces.
|
|
28
|
+
</div>
|
|
29
|
+
</header>
|
|
30
|
+
|
|
31
|
+
<section class="board">
|
|
32
|
+
|
|
33
|
+
<!-- ================= A — Minimal ================= -->
|
|
34
|
+
<article class="artboard">
|
|
35
|
+
<span class="tag">A — Minimal</span>
|
|
36
|
+
<div class="stage">
|
|
37
|
+
<div class="es-a">
|
|
38
|
+
<h3>No tasks yet</h3>
|
|
39
|
+
<p>When you create a task it will show up here.</p>
|
|
40
|
+
<span class="btn">New task</span>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<p class="rationale">
|
|
44
|
+
Pure typography, single quiet action. Reads as calm and confident;
|
|
45
|
+
assumes the surrounding UI already carries enough personality.
|
|
46
|
+
</p>
|
|
47
|
+
</article>
|
|
48
|
+
|
|
49
|
+
<!-- ================= B — Illustrated ================= -->
|
|
50
|
+
<article class="artboard">
|
|
51
|
+
<span class="tag">B — Illustrated</span>
|
|
52
|
+
<div class="stage">
|
|
53
|
+
<div class="es-b">
|
|
54
|
+
<svg width="120" height="90" viewBox="0 0 120 90" aria-hidden="true">
|
|
55
|
+
<rect x="14" y="20" width="72" height="54" rx="8"
|
|
56
|
+
fill="var(--panel)" stroke="var(--line)" stroke-width="1.5"/>
|
|
57
|
+
<rect x="34" y="10" width="72" height="54" rx="8"
|
|
58
|
+
fill="var(--oat)"/>
|
|
59
|
+
<line x1="46" y1="26" x2="92" y2="26"
|
|
60
|
+
stroke="var(--slate)" stroke-width="2" stroke-linecap="round"/>
|
|
61
|
+
<line x1="46" y1="38" x2="80" y2="38"
|
|
62
|
+
stroke="var(--slate)" stroke-width="2" stroke-linecap="round" opacity="0.5"/>
|
|
63
|
+
<circle cx="98" cy="60" r="12" fill="var(--clay)"/>
|
|
64
|
+
<path d="M98 55 v10 M93 60 h10"
|
|
65
|
+
stroke="white" stroke-width="2" stroke-linecap="round"/>
|
|
66
|
+
</svg>
|
|
67
|
+
<h3>Start your first list</h3>
|
|
68
|
+
<p>Group related work and watch progress roll up automatically.</p>
|
|
69
|
+
<span class="btn">Create a task</span>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<p class="rationale">
|
|
73
|
+
A small geometric spot illustration anchors the eye and explains the
|
|
74
|
+
object model (lists contain tasks) without a wall of copy.
|
|
75
|
+
</p>
|
|
76
|
+
</article>
|
|
77
|
+
|
|
78
|
+
<!-- ================= C — Playful ================= -->
|
|
79
|
+
<article class="artboard">
|
|
80
|
+
<span class="tag">C — Playful</span>
|
|
81
|
+
<div class="stage">
|
|
82
|
+
<div class="es-c">
|
|
83
|
+
<div class="float">
|
|
84
|
+
<div class="card"></div>
|
|
85
|
+
<div class="card"></div>
|
|
86
|
+
<div class="card"></div>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="shadow"></div>
|
|
89
|
+
<h3>Nothing on your plate</h3>
|
|
90
|
+
<p>Enjoy the quiet, or add something to get moving.</p>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
<p class="rationale">
|
|
94
|
+
A gently bobbing stack adds life to an otherwise static screen. Motion
|
|
95
|
+
is subtle enough to loop indefinitely without drawing complaints.
|
|
96
|
+
</p>
|
|
97
|
+
</article>
|
|
98
|
+
|
|
99
|
+
<!-- ================= D — Instructional ================= -->
|
|
100
|
+
<article class="artboard">
|
|
101
|
+
<span class="tag">D — Instructional</span>
|
|
102
|
+
<div class="stage">
|
|
103
|
+
<div class="es-d">
|
|
104
|
+
<h3>Set up this project</h3>
|
|
105
|
+
<ol>
|
|
106
|
+
<li>
|
|
107
|
+
Create your first task
|
|
108
|
+
<span>Give it a name and an owner.</span>
|
|
109
|
+
</li>
|
|
110
|
+
<li>
|
|
111
|
+
Add a due date
|
|
112
|
+
<span>Acme will surface it on the timeline.</span>
|
|
113
|
+
</li>
|
|
114
|
+
<li>
|
|
115
|
+
Invite a teammate
|
|
116
|
+
<span>Shared projects stay in sync automatically.</span>
|
|
117
|
+
</li>
|
|
118
|
+
</ol>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
<p class="rationale">
|
|
122
|
+
Treats the empty state as onboarding. Higher density, but every line is
|
|
123
|
+
actionable — best when the user is new to the product, not just the view.
|
|
124
|
+
</p>
|
|
125
|
+
</article>
|
|
126
|
+
|
|
127
|
+
</section>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<style>
|
|
131
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
132
|
+
/* ---------- sticky toolbar ---------- */
|
|
133
|
+
|
|
134
|
+
.toolbar {
|
|
135
|
+
position: sticky;
|
|
136
|
+
top: 0;
|
|
137
|
+
z-index: 10;
|
|
138
|
+
background: var(--ivory);
|
|
139
|
+
border-bottom: 1.5px solid var(--gray-300);
|
|
140
|
+
padding: 14px 32px;
|
|
141
|
+
display: flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
gap: 18px;
|
|
144
|
+
font-size: 13px;
|
|
145
|
+
}
|
|
146
|
+
.toolbar .title {
|
|
147
|
+
font-family: var(--mono);
|
|
148
|
+
font-size: 12px;
|
|
149
|
+
letter-spacing: 0.04em;
|
|
150
|
+
color: var(--gray-500);
|
|
151
|
+
margin-right: auto;
|
|
152
|
+
}
|
|
153
|
+
.toolbar .field {
|
|
154
|
+
display: flex;
|
|
155
|
+
align-items: center;
|
|
156
|
+
gap: 10px;
|
|
157
|
+
}
|
|
158
|
+
.toolbar .field > span {
|
|
159
|
+
color: var(--gray-700);
|
|
160
|
+
font-weight: 500;
|
|
161
|
+
}
|
|
162
|
+
.seg {
|
|
163
|
+
display: inline-flex;
|
|
164
|
+
border: 1.5px solid var(--gray-300);
|
|
165
|
+
border-radius: 8px;
|
|
166
|
+
overflow: hidden;
|
|
167
|
+
background: var(--white);
|
|
168
|
+
}
|
|
169
|
+
.seg label {
|
|
170
|
+
padding: 6px 14px;
|
|
171
|
+
cursor: pointer;
|
|
172
|
+
font-size: 13px;
|
|
173
|
+
color: var(--gray-700);
|
|
174
|
+
user-select: none;
|
|
175
|
+
}
|
|
176
|
+
.seg label + label {
|
|
177
|
+
border-left: 1.5px solid var(--gray-300);
|
|
178
|
+
}
|
|
179
|
+
.seg input { display: none; }
|
|
180
|
+
.seg input:checked + span {
|
|
181
|
+
color: var(--slate);
|
|
182
|
+
font-weight: 600;
|
|
183
|
+
}
|
|
184
|
+
.seg label:has(input:checked) {
|
|
185
|
+
background: var(--oat);
|
|
186
|
+
}
|
|
187
|
+
/* ---------- page header ---------- */
|
|
188
|
+
|
|
189
|
+
.page {
|
|
190
|
+
max-width: 1240px;
|
|
191
|
+
margin: 0 auto;
|
|
192
|
+
padding: 48px 32px 0;
|
|
193
|
+
}
|
|
194
|
+
header.page-head {
|
|
195
|
+
max-width: 720px;
|
|
196
|
+
margin-bottom: 40px;
|
|
197
|
+
}
|
|
198
|
+
.eyebrow {
|
|
199
|
+
font-size: 12px;
|
|
200
|
+
letter-spacing: 0.08em;
|
|
201
|
+
text-transform: uppercase;
|
|
202
|
+
color: var(--gray-500);
|
|
203
|
+
margin-bottom: 12px;
|
|
204
|
+
}
|
|
205
|
+
h1 {
|
|
206
|
+
font-family: var(--serif);
|
|
207
|
+
font-weight: 500;
|
|
208
|
+
font-size: 38px;
|
|
209
|
+
line-height: 1.15;
|
|
210
|
+
color: var(--slate);
|
|
211
|
+
margin-bottom: 18px;
|
|
212
|
+
letter-spacing: -0.01em;
|
|
213
|
+
}
|
|
214
|
+
.prompt-box {
|
|
215
|
+
background: var(--gray-150);
|
|
216
|
+
border: 1.5px solid var(--gray-300);
|
|
217
|
+
border-radius: 12px;
|
|
218
|
+
padding: 16px 20px;
|
|
219
|
+
font-size: 14.5px;
|
|
220
|
+
}
|
|
221
|
+
.prompt-box .label {
|
|
222
|
+
font-family: var(--mono);
|
|
223
|
+
font-size: 11px;
|
|
224
|
+
text-transform: uppercase;
|
|
225
|
+
letter-spacing: 0.06em;
|
|
226
|
+
color: var(--gray-500);
|
|
227
|
+
display: block;
|
|
228
|
+
margin-bottom: 6px;
|
|
229
|
+
}
|
|
230
|
+
/* ---------- artboard grid ---------- */
|
|
231
|
+
|
|
232
|
+
.board {
|
|
233
|
+
display: grid;
|
|
234
|
+
grid-template-columns: 1fr 1fr;
|
|
235
|
+
gap: 32px;
|
|
236
|
+
}
|
|
237
|
+
@media (max-width: 960px) {
|
|
238
|
+
.board { grid-template-columns: 1fr; }
|
|
239
|
+
}
|
|
240
|
+
.artboard {
|
|
241
|
+
background: var(--white);
|
|
242
|
+
border: 1.5px solid var(--gray-300);
|
|
243
|
+
border-radius: 12px;
|
|
244
|
+
padding: 20px;
|
|
245
|
+
position: relative;
|
|
246
|
+
}
|
|
247
|
+
.tag {
|
|
248
|
+
position: absolute;
|
|
249
|
+
top: 14px;
|
|
250
|
+
left: 14px;
|
|
251
|
+
font-family: var(--mono);
|
|
252
|
+
font-size: 11px;
|
|
253
|
+
letter-spacing: 0.02em;
|
|
254
|
+
background: var(--oat);
|
|
255
|
+
color: var(--slate);
|
|
256
|
+
padding: 4px 10px;
|
|
257
|
+
border-radius: 8px;
|
|
258
|
+
z-index: 2;
|
|
259
|
+
}
|
|
260
|
+
.stage {
|
|
261
|
+
height: 280px;
|
|
262
|
+
border-radius: 8px;
|
|
263
|
+
border: 1.5px solid var(--gray-300);
|
|
264
|
+
background: var(--ivory);
|
|
265
|
+
display: flex;
|
|
266
|
+
align-items: center;
|
|
267
|
+
justify-content: center;
|
|
268
|
+
padding: 24px;
|
|
269
|
+
transition: background 0.15s, border-color 0.15s;
|
|
270
|
+
overflow: hidden;
|
|
271
|
+
}
|
|
272
|
+
.stage.dark {
|
|
273
|
+
background: var(--slate);
|
|
274
|
+
border-color: var(--slate);
|
|
275
|
+
}
|
|
276
|
+
.rationale {
|
|
277
|
+
margin-top: 16px;
|
|
278
|
+
font-size: 13px;
|
|
279
|
+
color: var(--gray-500);
|
|
280
|
+
line-height: 1.5;
|
|
281
|
+
}
|
|
282
|
+
/* =========================================================
|
|
283
|
+
Empty-state variants — each scoped under .es-*
|
|
284
|
+
Theme tokens flip when .stage.dark is present.
|
|
285
|
+
========================================================= */
|
|
286
|
+
|
|
287
|
+
.stage { --fg: var(--slate); --muted: var(--gray-500); --line: var(--gray-300); --panel: var(--white); }
|
|
288
|
+
.stage.dark { --fg: #F0EEE6; --muted: #9C9A93; --line: #3D3D3A; --panel: #1F1E1B; }
|
|
289
|
+
/* ---- A · Minimal ---- */
|
|
290
|
+
|
|
291
|
+
.es-a {
|
|
292
|
+
text-align: center;
|
|
293
|
+
max-width: 300px;
|
|
294
|
+
}
|
|
295
|
+
.es-a h3 {
|
|
296
|
+
font-family: var(--serif);
|
|
297
|
+
font-weight: 500;
|
|
298
|
+
font-size: 19px;
|
|
299
|
+
color: var(--fg);
|
|
300
|
+
margin-bottom: 6px;
|
|
301
|
+
}
|
|
302
|
+
.es-a p {
|
|
303
|
+
font-size: 13px;
|
|
304
|
+
color: var(--muted);
|
|
305
|
+
margin-bottom: 18px;
|
|
306
|
+
}
|
|
307
|
+
.es-a .btn {
|
|
308
|
+
display: inline-block;
|
|
309
|
+
font-size: 13px;
|
|
310
|
+
color: var(--fg);
|
|
311
|
+
border: 1.5px solid var(--line);
|
|
312
|
+
border-radius: 8px;
|
|
313
|
+
padding: 8px 16px;
|
|
314
|
+
background: transparent;
|
|
315
|
+
}
|
|
316
|
+
/* ---- B · Illustrated ---- */
|
|
317
|
+
|
|
318
|
+
.es-b {
|
|
319
|
+
text-align: center;
|
|
320
|
+
max-width: 320px;
|
|
321
|
+
}
|
|
322
|
+
.es-b svg {
|
|
323
|
+
display: block;
|
|
324
|
+
margin: 0 auto 18px;
|
|
325
|
+
}
|
|
326
|
+
.es-b h3 {
|
|
327
|
+
font-family: var(--serif);
|
|
328
|
+
font-weight: 500;
|
|
329
|
+
font-size: 19px;
|
|
330
|
+
color: var(--fg);
|
|
331
|
+
margin-bottom: 6px;
|
|
332
|
+
}
|
|
333
|
+
.es-b p {
|
|
334
|
+
font-size: 13px;
|
|
335
|
+
color: var(--muted);
|
|
336
|
+
margin-bottom: 16px;
|
|
337
|
+
}
|
|
338
|
+
.es-b .btn {
|
|
339
|
+
display: inline-block;
|
|
340
|
+
font-size: 13px;
|
|
341
|
+
font-weight: 500;
|
|
342
|
+
color: var(--white);
|
|
343
|
+
background: var(--clay);
|
|
344
|
+
border-radius: 8px;
|
|
345
|
+
padding: 8px 16px;
|
|
346
|
+
}
|
|
347
|
+
.stage.dark .es-b .btn { color: var(--slate); background: var(--oat); }
|
|
348
|
+
/* ---- C · Playful ---- */
|
|
349
|
+
|
|
350
|
+
.es-c {
|
|
351
|
+
text-align: center;
|
|
352
|
+
max-width: 300px;
|
|
353
|
+
}
|
|
354
|
+
.es-c .float {
|
|
355
|
+
width: 56px;
|
|
356
|
+
height: 56px;
|
|
357
|
+
margin: 0 auto 20px;
|
|
358
|
+
position: relative;
|
|
359
|
+
animation: bob 3.2s ease-in-out infinite;
|
|
360
|
+
}
|
|
361
|
+
.es-c .float .card {
|
|
362
|
+
position: absolute;
|
|
363
|
+
inset: 0;
|
|
364
|
+
border-radius: 10px;
|
|
365
|
+
background: var(--panel);
|
|
366
|
+
border: 1.5px solid var(--line);
|
|
367
|
+
}
|
|
368
|
+
.es-c .float .card:nth-child(1) { transform: rotate(-8deg) translate(-6px, 4px); opacity: 0.5; }
|
|
369
|
+
.es-c .float .card:nth-child(2) { transform: rotate( 6deg) translate( 6px, 2px); opacity: 0.75; }
|
|
370
|
+
.es-c .float .card:nth-child(3) { background: var(--oat); border-color: var(--oat); }
|
|
371
|
+
.stage.dark .es-c .float .card:nth-child(3) { background: var(--clay); border-color: var(--clay); }
|
|
372
|
+
.es-c .shadow {
|
|
373
|
+
width: 44px;
|
|
374
|
+
height: 8px;
|
|
375
|
+
margin: -8px auto 22px;
|
|
376
|
+
border-radius: 50%;
|
|
377
|
+
background: rgba(0,0,0,0.12);
|
|
378
|
+
filter: blur(2px);
|
|
379
|
+
animation: shadow 3.2s ease-in-out infinite;
|
|
380
|
+
}
|
|
381
|
+
.stage.dark .es-c .shadow { background: rgba(0,0,0,0.5); }
|
|
382
|
+
.es-c h3 {
|
|
383
|
+
font-family: var(--serif);
|
|
384
|
+
font-weight: 500;
|
|
385
|
+
font-size: 19px;
|
|
386
|
+
color: var(--fg);
|
|
387
|
+
margin-bottom: 6px;
|
|
388
|
+
}
|
|
389
|
+
.es-c p {
|
|
390
|
+
font-size: 13px;
|
|
391
|
+
color: var(--muted);
|
|
392
|
+
}
|
|
393
|
+
@keyframes bob {
|
|
394
|
+
0%, 100% { transform: translateY(0); }
|
|
395
|
+
50% { transform: translateY(-10px); }
|
|
396
|
+
}
|
|
397
|
+
@keyframes shadow {
|
|
398
|
+
0%, 100% { transform: scaleX(1); opacity: 0.9; }
|
|
399
|
+
50% { transform: scaleX(0.8); opacity: 0.5; }
|
|
400
|
+
}
|
|
401
|
+
/* ---- D · Instructional ---- */
|
|
402
|
+
|
|
403
|
+
.es-d {
|
|
404
|
+
width: 100%;
|
|
405
|
+
max-width: 360px;
|
|
406
|
+
}
|
|
407
|
+
.es-d h3 {
|
|
408
|
+
font-family: var(--serif);
|
|
409
|
+
font-weight: 500;
|
|
410
|
+
font-size: 18px;
|
|
411
|
+
color: var(--fg);
|
|
412
|
+
margin-bottom: 14px;
|
|
413
|
+
}
|
|
414
|
+
.es-d ol {
|
|
415
|
+
list-style: none;
|
|
416
|
+
counter-reset: step;
|
|
417
|
+
display: flex;
|
|
418
|
+
flex-direction: column;
|
|
419
|
+
gap: 10px;
|
|
420
|
+
}
|
|
421
|
+
.es-d li {
|
|
422
|
+
counter-increment: step;
|
|
423
|
+
display: flex;
|
|
424
|
+
align-items: flex-start;
|
|
425
|
+
gap: 12px;
|
|
426
|
+
background: var(--panel);
|
|
427
|
+
border: 1.5px solid var(--line);
|
|
428
|
+
border-radius: 8px;
|
|
429
|
+
padding: 10px 14px;
|
|
430
|
+
font-size: 13px;
|
|
431
|
+
color: var(--fg);
|
|
432
|
+
}
|
|
433
|
+
.es-d li::before {
|
|
434
|
+
content: counter(step);
|
|
435
|
+
font-family: var(--mono);
|
|
436
|
+
font-size: 11px;
|
|
437
|
+
flex: 0 0 20px;
|
|
438
|
+
height: 20px;
|
|
439
|
+
border-radius: 50%;
|
|
440
|
+
background: var(--oat);
|
|
441
|
+
color: var(--slate);
|
|
442
|
+
display: inline-flex;
|
|
443
|
+
align-items: center;
|
|
444
|
+
justify-content: center;
|
|
445
|
+
margin-top: 1px;
|
|
446
|
+
}
|
|
447
|
+
.es-d li span { color: var(--muted); display: block; font-size: 12px; margin-top: 2px; }
|
|
448
|
+
</style>
|
|
449
|
+
|
|
450
|
+
<script>
|
|
451
|
+
const stages = document.querySelectorAll('.stage');
|
|
452
|
+
document.getElementById('bg-seg').addEventListener('change', (e) => {
|
|
453
|
+
const dark = e.target.value === 'dark';
|
|
454
|
+
stages.forEach((s) => s.classList.toggle('dark', dark));
|
|
455
|
+
});
|
|
456
|
+
</script>
|