@jjlmoya/utils-science 1.17.0 → 1.18.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,455 @@
1
+ :root {
2
+ --colony-primary: #14b8a6;
3
+ --colony-secondary: #a855f7;
4
+ --colony-accent: #64748b;
5
+ --colony-danger: #ef4444;
6
+ --colony-danger-dark: #dc2626;
7
+ --colony-danger-light: #fca5a5;
8
+ --colony-bg-light: #f8fafc;
9
+ --colony-bg-dark: #0f172a;
10
+ --colony-bg-card: #fff;
11
+ --colony-bg-modal: rgba(255, 255, 255, 0.9);
12
+ --colony-border-light: #e2e8f0;
13
+ --colony-border-dark: #1e293b;
14
+ --colony-text-primary: #1e293b;
15
+ --colony-text-secondary: #64748b;
16
+ --colony-text-light: #f1f5f9;
17
+ }
18
+
19
+ :global(.theme-dark) {
20
+ --colony-bg-light: #0f172a;
21
+ --colony-bg-card: #1e293b;
22
+ --colony-bg-modal: rgba(30, 41, 59, 0.9);
23
+ --colony-border-light: #334155;
24
+ --colony-text-primary: #f1f5f9;
25
+ --colony-text-secondary: #cbd5e1;
26
+ }
27
+
28
+ .colony-container {
29
+ width: 100%;
30
+ max-width: 100%;
31
+ margin: 0 auto;
32
+ }
33
+
34
+ .colony-main-card {
35
+ width: 100%;
36
+ background: var(--colony-bg-card);
37
+ border-radius: 1.5rem;
38
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
39
+ overflow: hidden;
40
+ border: 1px solid var(--colony-border-light);
41
+ transition: all 0.2s ease;
42
+ animation: colony-fade-in 0.3s ease-in-out;
43
+ }
44
+
45
+ .colony-grid {
46
+ display: grid;
47
+ grid-template-columns: 1fr;
48
+ gap: 0;
49
+ }
50
+
51
+ @media (min-width: 1024px) {
52
+ .colony-grid {
53
+ grid-template-columns: 2fr 1fr;
54
+ }
55
+ }
56
+
57
+ .colony-canvas-section {
58
+ padding: 1.5rem;
59
+ background: var(--colony-bg-light);
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ min-height: 400px;
64
+ }
65
+
66
+ @media (min-width: 768px) {
67
+ .colony-canvas-section {
68
+ padding: 2.5rem;
69
+ }
70
+ }
71
+
72
+ .colony-canvas-wrapper {
73
+ position: relative;
74
+ width: 100%;
75
+ aspect-ratio: 1;
76
+ max-width: 500px;
77
+ }
78
+
79
+ .colony-hidden {
80
+ display: none;
81
+ }
82
+
83
+ .colony-upload-prompt {
84
+ width: 100%;
85
+ height: 100%;
86
+ border-radius: 100%;
87
+ border: 4px dashed var(--colony-border-light);
88
+ background: var(--colony-bg-card);
89
+ cursor: pointer;
90
+ display: flex;
91
+ flex-direction: column;
92
+ align-items: center;
93
+ justify-content: center;
94
+ gap: 1rem;
95
+ transition: all 0.3s ease;
96
+ padding: 2rem;
97
+ }
98
+
99
+ .colony-upload-prompt:hover {
100
+ border-color: var(--colony-primary);
101
+ background: var(--colony-bg-light);
102
+ }
103
+
104
+ .colony-upload-icon {
105
+ font-size: 3rem;
106
+ color: var(--colony-text-secondary);
107
+ }
108
+
109
+ .colony-upload-text {
110
+ text-align: center;
111
+ padding: 0 1.5rem;
112
+ }
113
+
114
+ .colony-upload-title {
115
+ font-size: 1.25rem;
116
+ font-weight: 700;
117
+ color: var(--colony-text-primary);
118
+ margin-bottom: 0.5rem;
119
+ }
120
+
121
+ .colony-upload-subtitle {
122
+ font-size: 0.875rem;
123
+ color: var(--colony-text-secondary);
124
+ }
125
+
126
+ .colony-petri-canvas {
127
+ position: absolute;
128
+ inset: 0;
129
+ width: 100%;
130
+ height: 100%;
131
+ border-radius: 100%;
132
+ border: 4px solid var(--colony-border-light);
133
+ cursor: crosshair;
134
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
135
+ }
136
+
137
+ .colony-mode-indicator {
138
+ position: absolute;
139
+ top: 1rem;
140
+ left: 1rem;
141
+ background: var(--colony-bg-modal);
142
+ padding: 0.75rem;
143
+ border-radius: 0.5rem;
144
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
145
+ backdrop-filter: blur(4px);
146
+ }
147
+
148
+ .colony-mode-label {
149
+ font-size: 0.75rem;
150
+ font-weight: 700;
151
+ color: var(--colony-text-secondary);
152
+ text-transform: uppercase;
153
+ letter-spacing: 0.05em;
154
+ margin-bottom: 0.25rem;
155
+ }
156
+
157
+ .colony-mode-value {
158
+ font-size: 1.125rem;
159
+ font-weight: 900;
160
+ letter-spacing: 0.025em;
161
+ }
162
+
163
+ .colony-mode-a {
164
+ color: var(--colony-primary);
165
+ }
166
+
167
+ .colony-mode-b {
168
+ color: var(--colony-secondary);
169
+ }
170
+
171
+ .colony-control-panel {
172
+ padding: 1.5rem;
173
+ border-left: 1px solid var(--colony-border-light);
174
+ display: flex;
175
+ flex-direction: column;
176
+ gap: 1.5rem;
177
+ background: var(--colony-bg-card);
178
+ }
179
+
180
+ @media (min-width: 768px) {
181
+ .colony-control-panel {
182
+ padding: 2rem;
183
+ }
184
+ }
185
+
186
+ @media (max-width: 1023px) {
187
+ .colony-control-panel {
188
+ border-left: none;
189
+ border-top: 1px solid var(--colony-border-light);
190
+ }
191
+ }
192
+
193
+ .colony-control-section {
194
+ display: flex;
195
+ flex-direction: column;
196
+ gap: 1rem;
197
+ }
198
+
199
+ .colony-button-section {
200
+ gap: 0.75rem;
201
+ }
202
+
203
+ .colony-control-title {
204
+ font-size: 0.875rem;
205
+ font-weight: 700;
206
+ text-transform: uppercase;
207
+ letter-spacing: 0.05em;
208
+ color: var(--colony-text-secondary);
209
+ }
210
+
211
+ .colony-button-grid {
212
+ display: grid;
213
+ grid-template-columns: 1fr 1fr;
214
+ gap: 0.75rem;
215
+ }
216
+
217
+ .colony-mode-btn {
218
+ padding: 0.75rem 1rem;
219
+ border-radius: 0.75rem;
220
+ border: 2px solid var(--colony-border-light);
221
+ background: var(--colony-bg-light);
222
+ color: var(--colony-text-secondary);
223
+ font-weight: 700;
224
+ font-size: 0.875rem;
225
+ cursor: pointer;
226
+ display: flex;
227
+ align-items: center;
228
+ justify-content: center;
229
+ gap: 0.5rem;
230
+ transition: all 0.2s ease;
231
+ }
232
+
233
+ .colony-mode-btn:hover {
234
+ transform: scale(1.05);
235
+ }
236
+
237
+ .colony-mode-btn-active {
238
+ border-color: var(--colony-primary);
239
+ background: color-mix(in srgb, var(--colony-primary) 10%, white);
240
+ color: var(--colony-primary);
241
+ }
242
+
243
+ :global(.theme-dark) .colony-mode-btn-active {
244
+ background: color-mix(in srgb, var(--colony-primary) 15%, var(--colony-bg-light));
245
+ }
246
+
247
+ .colony-color-dot {
248
+ width: 1rem;
249
+ height: 1rem;
250
+ border-radius: 50%;
251
+ display: inline-block;
252
+ }
253
+
254
+ .colony-color-a {
255
+ background: var(--colony-primary);
256
+ }
257
+
258
+ .colony-color-b {
259
+ background: var(--colony-secondary);
260
+ }
261
+
262
+ .colony-count-grid {
263
+ display: grid;
264
+ grid-template-columns: 1fr 1fr;
265
+ gap: 1rem;
266
+ }
267
+
268
+ .colony-count-box {
269
+ padding: 1rem;
270
+ border-radius: 1rem;
271
+ border: 1px solid var(--colony-border-light);
272
+ transition: all 0.2s ease;
273
+ }
274
+
275
+ .colony-count-box-a {
276
+ background: color-mix(in srgb, var(--colony-primary) 5%, var(--colony-bg-card));
277
+ border-color: color-mix(in srgb, var(--colony-primary) 20%, var(--colony-border-light));
278
+ }
279
+
280
+ .colony-count-box-b {
281
+ background: color-mix(in srgb, var(--colony-secondary) 5%, var(--colony-bg-card));
282
+ border-color: color-mix(in srgb, var(--colony-secondary) 20%, var(--colony-border-light));
283
+ }
284
+
285
+ .colony-count-label {
286
+ font-size: 0.75rem;
287
+ font-weight: 700;
288
+ text-transform: uppercase;
289
+ letter-spacing: 0.05em;
290
+ margin-bottom: 0.25rem;
291
+ }
292
+
293
+ .colony-count-label-a {
294
+ color: var(--colony-primary);
295
+ }
296
+
297
+ .colony-count-label-b {
298
+ color: var(--colony-secondary);
299
+ }
300
+
301
+ .colony-count-value {
302
+ font-size: 2.25rem;
303
+ font-weight: 900;
304
+ letter-spacing: 0.025em;
305
+ color: var(--colony-text-primary);
306
+ }
307
+
308
+ .colony-count-total {
309
+ background: var(--colony-bg-light);
310
+ padding: 1rem;
311
+ border-radius: 1rem;
312
+ border: 1px solid var(--colony-border-light);
313
+ grid-column: 1 / -1;
314
+ }
315
+
316
+ .colony-count-label-total {
317
+ font-size: 0.75rem;
318
+ font-weight: 700;
319
+ text-transform: uppercase;
320
+ letter-spacing: 0.05em;
321
+ color: var(--colony-text-secondary);
322
+ margin-bottom: 0.25rem;
323
+ }
324
+
325
+ .colony-count-value-total {
326
+ font-size: 3rem;
327
+ font-weight: 900;
328
+ letter-spacing: 0.025em;
329
+ color: var(--colony-text-primary);
330
+ }
331
+
332
+ .colony-divider {
333
+ height: 1px;
334
+ background: var(--colony-border-light);
335
+ }
336
+
337
+ .colony-action-btn {
338
+ width: 100%;
339
+ padding: 0.75rem 1rem;
340
+ border-radius: 0.75rem;
341
+ border: 2px solid transparent;
342
+ font-weight: 700;
343
+ font-size: 0.875rem;
344
+ cursor: pointer;
345
+ display: flex;
346
+ align-items: center;
347
+ justify-content: center;
348
+ gap: 0.5rem;
349
+ transition: all 0.2s ease;
350
+ }
351
+
352
+ .colony-undo-btn {
353
+ background: var(--colony-bg-light);
354
+ border-color: var(--colony-border-light);
355
+ color: var(--colony-text-primary);
356
+ }
357
+
358
+ .colony-undo-btn:hover {
359
+ background: var(--colony-bg-light);
360
+ border-color: var(--colony-accent);
361
+ }
362
+
363
+ .colony-clear-btn {
364
+ background: color-mix(in srgb, var(--colony-danger) 5%, var(--colony-bg-card));
365
+ border-color: color-mix(in srgb, var(--colony-danger) 20%, var(--colony-border-light));
366
+ color: var(--colony-danger-dark);
367
+ }
368
+
369
+ .colony-clear-btn:hover {
370
+ background: color-mix(in srgb, var(--colony-danger) 10%, var(--colony-bg-card));
371
+ border-color: color-mix(in srgb, var(--colony-danger) 40%, var(--colony-border-light));
372
+ }
373
+
374
+ :global(.theme-dark) .colony-clear-btn {
375
+ color: var(--colony-danger-light);
376
+ }
377
+
378
+ .colony-btn-icon {
379
+ font-size: 1.25rem;
380
+ }
381
+
382
+ .colony-info-text {
383
+ font-size: 0.875rem;
384
+ color: var(--colony-text-secondary);
385
+ display: flex;
386
+ flex-direction: column;
387
+ gap: 0.5rem;
388
+ padding-top: 0.5rem;
389
+ }
390
+
391
+ .colony-info-text p {
392
+ margin: 0;
393
+ display: flex;
394
+ align-items: center;
395
+ gap: 0.5rem;
396
+ }
397
+
398
+ .colony-info-icon {
399
+ font-size: 1rem;
400
+ flex-shrink: 0;
401
+ }
402
+
403
+ @media (max-width: 768px) {
404
+ .colony-canvas-section {
405
+ min-height: 300px;
406
+ padding: 1rem;
407
+ }
408
+
409
+ .colony-canvas-wrapper {
410
+ max-width: 100%;
411
+ }
412
+
413
+ .colony-control-panel {
414
+ padding: 1rem;
415
+ }
416
+
417
+ .colony-upload-title {
418
+ font-size: 1rem;
419
+ }
420
+
421
+ .colony-upload-subtitle {
422
+ font-size: 0.75rem;
423
+ }
424
+
425
+ .colony-mode-btn {
426
+ padding: 0.625rem 0.75rem;
427
+ font-size: 0.75rem;
428
+ }
429
+
430
+ .colony-count-value {
431
+ font-size: 1.875rem;
432
+ }
433
+
434
+ .colony-count-value-total {
435
+ font-size: 2.25rem;
436
+ }
437
+
438
+ .colony-action-btn {
439
+ padding: 0.625rem;
440
+ font-size: 0.75rem;
441
+ }
442
+
443
+ .colony-info-text {
444
+ font-size: 0.75rem;
445
+ }
446
+ }
447
+
448
+ @keyframes colony-fade-in {
449
+ from {
450
+ opacity: 0;
451
+ }
452
+ to {
453
+ opacity: 1;
454
+ }
455
+ }