@clawlabz/clawskin 1.0.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.
@@ -0,0 +1,379 @@
1
+ /* ═══════════════════════════════════════════════════
2
+ ClawSkin App — Product Page Styles
3
+ ═══════════════════════════════════════════════════ */
4
+
5
+ @import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;600;700&display=swap');
6
+
7
+ :root {
8
+ --bg-primary: #0a0a1a;
9
+ --bg-secondary: #12122a;
10
+ --bg-card: #1a1a35;
11
+ --text-primary: #e0e0f0;
12
+ --text-secondary: #8888aa;
13
+ --accent-cyan: #00f0ff;
14
+ --accent-purple: #b44aff;
15
+ --accent-pink: #ff44aa;
16
+ --accent-green: #00ff88;
17
+ --accent-red: #ff4466;
18
+ --accent-yellow: #ffcc00;
19
+ --border: rgba(255,255,255,0.08);
20
+ --glow-cyan: 0 0 20px rgba(0,240,255,0.3);
21
+ }
22
+
23
+ * { margin: 0; padding: 0; box-sizing: border-box; }
24
+ body {
25
+ background: var(--bg-primary);
26
+ color: var(--text-primary);
27
+ font-family: 'Outfit', sans-serif;
28
+ min-height: 100vh;
29
+ display: flex;
30
+ flex-direction: column;
31
+ }
32
+
33
+ /* ═══ App Layout ═══ */
34
+ .app-wrapper {
35
+ max-width: 960px;
36
+ margin: 0 auto;
37
+ padding: 1.5rem;
38
+ width: 100%;
39
+ flex: 1;
40
+ }
41
+
42
+ .app-header {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: space-between;
46
+ margin-bottom: 1.5rem;
47
+ }
48
+
49
+ .app-logo {
50
+ font-family: 'Press Start 2P', monospace;
51
+ font-size: 1.1rem;
52
+ background: linear-gradient(135deg, var(--accent-cyan), var(--accent-purple));
53
+ -webkit-background-clip: text;
54
+ -webkit-text-fill-color: transparent;
55
+ background-clip: text;
56
+ }
57
+
58
+ .app-nav {
59
+ display: flex;
60
+ gap: 0.75rem;
61
+ align-items: center;
62
+ }
63
+
64
+ .app-nav a {
65
+ color: var(--text-secondary);
66
+ text-decoration: none;
67
+ font-size: 0.85rem;
68
+ transition: color 0.2s;
69
+ }
70
+ .app-nav a:hover { color: var(--accent-cyan); }
71
+
72
+ /* ═══ Mode Badge ═══ */
73
+ .mode-badge {
74
+ font-family: 'Space Mono', monospace;
75
+ font-size: 0.7rem;
76
+ padding: 3px 10px;
77
+ border-radius: 100px;
78
+ display: inline-block;
79
+ }
80
+ .mode-live {
81
+ background: rgba(0,255,136,0.1);
82
+ border: 1px solid rgba(0,255,136,0.3);
83
+ color: var(--accent-green);
84
+ }
85
+ .mode-demo {
86
+ background: rgba(180,74,255,0.1);
87
+ border: 1px solid rgba(180,74,255,0.3);
88
+ color: var(--accent-purple);
89
+ }
90
+
91
+ /* ═══ Main Stage ═══ */
92
+ .app-stage {
93
+ display: grid;
94
+ grid-template-columns: 1fr;
95
+ gap: 1.5rem;
96
+ }
97
+
98
+ .stage-canvas-area {
99
+ position: relative;
100
+ border-radius: 16px;
101
+ overflow: hidden;
102
+ border: 2px solid var(--border);
103
+ box-shadow: var(--glow-cyan), inset 0 0 60px rgba(0,0,0,0.5);
104
+ background: var(--bg-secondary);
105
+ }
106
+
107
+ .app-canvas {
108
+ display: block;
109
+ width: 100%;
110
+ max-width: 640px;
111
+ margin: 0 auto;
112
+ image-rendering: pixelated;
113
+ image-rendering: crisp-edges;
114
+ }
115
+
116
+ .stage-status {
117
+ position: absolute;
118
+ bottom: 10px;
119
+ left: 14px;
120
+ font-family: 'Press Start 2P', monospace;
121
+ font-size: 8px;
122
+ color: var(--accent-green);
123
+ background: rgba(0,0,0,0.6);
124
+ padding: 4px 8px;
125
+ border-radius: 4px;
126
+ }
127
+
128
+ .stage-mode {
129
+ position: absolute;
130
+ top: 10px;
131
+ right: 14px;
132
+ }
133
+
134
+ /* ═══ Controls ═══ */
135
+ .app-controls {
136
+ display: flex;
137
+ gap: 0.5rem;
138
+ flex-wrap: wrap;
139
+ justify-content: center;
140
+ margin-top: 1rem;
141
+ }
142
+
143
+ .ctrl-btn {
144
+ padding: 0.5rem 1rem;
145
+ border: 1px solid var(--border);
146
+ border-radius: 8px;
147
+ background: var(--bg-card);
148
+ color: var(--text-primary);
149
+ font-family: 'Space Mono', monospace;
150
+ font-size: 0.8rem;
151
+ cursor: pointer;
152
+ transition: all 0.2s;
153
+ }
154
+ .ctrl-btn:hover { border-color: var(--accent-cyan); box-shadow: var(--glow-cyan); }
155
+ .ctrl-btn.active { border-color: var(--accent-cyan); background: rgba(0,240,255,0.1); color: var(--accent-cyan); }
156
+
157
+ .scene-btn {
158
+ padding: 0.4rem 0.8rem;
159
+ border: 1px solid var(--border);
160
+ border-radius: 6px;
161
+ background: var(--bg-card);
162
+ color: var(--text-primary);
163
+ font-size: 0.75rem;
164
+ cursor: pointer;
165
+ transition: all 0.2s;
166
+ font-family: 'Space Mono', monospace;
167
+ }
168
+ .scene-btn:hover { border-color: var(--accent-purple); }
169
+ .scene-btn.active { border-color: var(--accent-purple); background: rgba(180,74,255,0.1); color: var(--accent-purple); }
170
+
171
+ /* ═══ Connection Panel ═══ */
172
+ .conn-panel {
173
+ background: var(--bg-card);
174
+ border: 1px solid var(--border);
175
+ border-radius: 12px;
176
+ overflow: hidden;
177
+ margin-bottom: 1rem;
178
+ }
179
+
180
+ .conn-status-bar {
181
+ display: flex;
182
+ align-items: center;
183
+ justify-content: space-between;
184
+ padding: 0.7rem 1rem;
185
+ cursor: pointer;
186
+ transition: background 0.2s;
187
+ }
188
+ .conn-status-bar:hover { background: rgba(255,255,255,0.02); }
189
+
190
+ .conn-status-left {
191
+ display: flex;
192
+ align-items: center;
193
+ gap: 0.5rem;
194
+ }
195
+
196
+ .conn-dot {
197
+ width: 8px; height: 8px;
198
+ border-radius: 50%;
199
+ flex-shrink: 0;
200
+ }
201
+ .dot-connected { background: var(--accent-green); box-shadow: 0 0 6px var(--accent-green); }
202
+ .dot-connecting { background: var(--accent-yellow); animation: pulse 1s infinite; }
203
+ .dot-error { background: var(--accent-red); }
204
+ .dot-disconnected { background: var(--text-secondary); }
205
+
206
+ @keyframes pulse {
207
+ 0%, 100% { opacity: 1; }
208
+ 50% { opacity: 0.4; }
209
+ }
210
+
211
+ .conn-status-text {
212
+ font-family: 'Space Mono', monospace;
213
+ font-size: 0.8rem;
214
+ color: var(--text-primary);
215
+ }
216
+
217
+ .conn-toggle {
218
+ font-size: 0.7rem;
219
+ color: var(--text-secondary);
220
+ }
221
+
222
+ .conn-form {
223
+ padding: 0 1rem 1rem;
224
+ border-top: 1px solid var(--border);
225
+ }
226
+
227
+ .conn-field {
228
+ margin-top: 0.75rem;
229
+ }
230
+
231
+ .conn-field label {
232
+ display: block;
233
+ font-family: 'Space Mono', monospace;
234
+ font-size: 0.7rem;
235
+ color: var(--text-secondary);
236
+ margin-bottom: 0.3rem;
237
+ }
238
+
239
+ .conn-optional { opacity: 0.6; }
240
+
241
+ .conn-field input[type="text"],
242
+ .conn-field input[type="password"] {
243
+ width: 100%;
244
+ padding: 0.5rem 0.7rem;
245
+ background: var(--bg-secondary);
246
+ border: 1px solid var(--border);
247
+ border-radius: 6px;
248
+ color: var(--text-primary);
249
+ font-family: 'Space Mono', monospace;
250
+ font-size: 0.8rem;
251
+ outline: none;
252
+ transition: border-color 0.2s;
253
+ }
254
+ .conn-field input:focus { border-color: var(--accent-cyan); }
255
+ .conn-field input:disabled { opacity: 0.5; }
256
+
257
+ .conn-hint {
258
+ font-size: 0.65rem;
259
+ color: var(--text-secondary);
260
+ margin-top: 0.25rem;
261
+ opacity: 0.7;
262
+ }
263
+ .conn-hint code {
264
+ background: rgba(0,240,255,0.08);
265
+ padding: 1px 4px;
266
+ border-radius: 3px;
267
+ font-size: 0.6rem;
268
+ }
269
+
270
+ .conn-actions {
271
+ margin-top: 1rem;
272
+ display: flex;
273
+ align-items: center;
274
+ gap: 1rem;
275
+ }
276
+
277
+ .conn-btn {
278
+ padding: 0.5rem 1.2rem;
279
+ border-radius: 6px;
280
+ font-family: 'Space Mono', monospace;
281
+ font-size: 0.8rem;
282
+ cursor: pointer;
283
+ border: 1px solid;
284
+ transition: all 0.2s;
285
+ }
286
+ .conn-btn:disabled { opacity: 0.5; cursor: not-allowed; }
287
+ .conn-btn-connect {
288
+ background: rgba(0,240,255,0.1);
289
+ border-color: var(--accent-cyan);
290
+ color: var(--accent-cyan);
291
+ }
292
+ .conn-btn-connect:hover:not(:disabled) { background: rgba(0,240,255,0.2); }
293
+ .conn-btn-disconnect {
294
+ background: rgba(255,68,102,0.1);
295
+ border-color: var(--accent-red);
296
+ color: var(--accent-red);
297
+ }
298
+ .conn-btn-disconnect:hover { background: rgba(255,68,102,0.2); }
299
+
300
+ .conn-auto-label {
301
+ font-size: 0.75rem;
302
+ color: var(--text-secondary);
303
+ display: flex;
304
+ align-items: center;
305
+ gap: 0.3rem;
306
+ cursor: pointer;
307
+ }
308
+
309
+ /* ═══ Side Panel (Character Editor) ═══ */
310
+ .app-sidebar {
311
+ display: grid;
312
+ grid-template-columns: 1fr 1fr;
313
+ gap: 1rem;
314
+ }
315
+
316
+ /* ═══ Editor Panel (reuse from style.css) ═══ */
317
+ .editor-panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; max-height: 70vh; overflow-y: auto; }
318
+ .editor-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem; background: rgba(0,240,255,0.05); border-bottom: 1px solid var(--border); font-family: 'Press Start 2P', monospace; font-size: 0.65rem; color: var(--accent-cyan); }
319
+ .editor-close { background: none; border: none; color: var(--text-secondary); font-size: 1.2rem; cursor: pointer; }
320
+ .editor-body { padding: 1rem; }
321
+ .editor-row { margin-bottom: 0.75rem; }
322
+ .editor-row label { display: block; font-family: 'Space Mono', monospace; font-size: 0.7rem; color: var(--text-secondary); margin-bottom: 0.3rem; }
323
+ .color-swatches { display: flex; gap: 5px; flex-wrap: wrap; }
324
+ .swatch { width: 26px; height: 26px; border-radius: 5px; border: 2px solid transparent; cursor: pointer; transition: all 0.15s; }
325
+ .swatch:hover { transform: scale(1.15); }
326
+ .swatch.active { border-color: var(--accent-cyan); box-shadow: var(--glow-cyan); }
327
+ .btn-group { display: flex; gap: 3px; flex-wrap: wrap; }
328
+ .ed-btn { padding: 3px 7px; border: 1px solid var(--border); border-radius: 4px; background: var(--bg-secondary); color: var(--text-secondary); font-size: 0.65rem; font-family: 'Space Mono', monospace; cursor: pointer; }
329
+ .ed-btn:hover { border-color: var(--accent-purple); color: var(--text-primary); }
330
+ .ed-btn.active { border-color: var(--accent-cyan); background: rgba(0,240,255,0.1); color: var(--accent-cyan); }
331
+ .editor-actions { display: flex; gap: 6px; margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px solid var(--border); }
332
+ .ed-action-btn { flex: 1; padding: 0.4rem; border: 1px solid var(--border); border-radius: 5px; background: var(--bg-secondary); color: var(--text-primary); font-size: 0.7rem; cursor: pointer; }
333
+ .ed-action-btn:hover { border-color: var(--accent-green); }
334
+ .editor-toast { position: fixed; bottom: -50px; left: 50%; transform: translateX(-50%); padding: 0.5rem 1rem; background: var(--bg-card); border: 1px solid var(--accent-green); border-radius: 8px; color: var(--accent-green); font-family: 'Space Mono', monospace; font-size: 0.75rem; transition: bottom 0.3s ease; z-index: 1000; }
335
+ .editor-toast.show { bottom: 24px; }
336
+
337
+ /* ═══ Footer ═══ */
338
+ .app-footer {
339
+ text-align: center;
340
+ padding: 2rem 1rem;
341
+ border-top: 1px solid var(--border);
342
+ color: var(--text-secondary);
343
+ font-size: 0.75rem;
344
+ }
345
+ .app-footer a { color: var(--accent-cyan); text-decoration: none; }
346
+
347
+ /* ═══ Responsive ═══ */
348
+ @media (max-width: 768px) {
349
+ .app-sidebar { grid-template-columns: 1fr; }
350
+ .app-controls { flex-direction: column; align-items: stretch; }
351
+ .conn-actions { flex-direction: column; }
352
+ }
353
+
354
+ /* ═══ Scrollbar ═══ */
355
+ ::-webkit-scrollbar { width: 5px; }
356
+ ::-webkit-scrollbar-track { background: var(--bg-primary); }
357
+ ::-webkit-scrollbar-thumb { background: var(--bg-card); border-radius: 3px; }
358
+
359
+ /* ═══ Agent List (multi-agent badges) ═══ */
360
+ .stage-agents {
361
+ position: absolute;
362
+ top: 10px;
363
+ left: 14px;
364
+ display: flex;
365
+ gap: 6px;
366
+ flex-wrap: wrap;
367
+ max-width: 70%;
368
+ }
369
+
370
+ .agent-badge {
371
+ font-family: 'Space Mono', monospace;
372
+ font-size: 0.6rem;
373
+ padding: 2px 8px;
374
+ background: rgba(0,0,0,0.6);
375
+ border: 1px solid rgba(255,255,255,0.1);
376
+ border-radius: 100px;
377
+ color: var(--text-primary);
378
+ white-space: nowrap;
379
+ }