@jjlmoya/utils-nature 1.11.0 → 1.12.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,468 @@
1
+ .sc-wrap {
2
+ --sc-bg: #fff;
3
+ --sc-bg-params: #fff;
4
+ --sc-bg-speed: #f4f4f5;
5
+ --sc-border: #e4e4e7;
6
+ --sc-text: #18181b;
7
+ --sc-text-muted: #71717a;
8
+ --sc-accent: #059669;
9
+ --sc-accent-light: #d1fae5;
10
+ --sc-result-from: #059669;
11
+ --sc-result-to: #0d9488;
12
+ --sc-badge-bg: #000;
13
+ --sc-badge-text: #fff;
14
+ --sc-amber-bg: #fffbeb;
15
+ --sc-amber-border: #fde68a;
16
+ --sc-amber-text: #d97706;
17
+ --sc-range-track: #e4e4e7;
18
+
19
+ display: block;
20
+ max-width: 72rem;
21
+ margin: 0 auto;
22
+ padding: 1rem;
23
+ user-select: none;
24
+ }
25
+
26
+ :global(.theme-dark) .sc-wrap {
27
+ --sc-bg: #18181b;
28
+ --sc-bg-params: #18181b;
29
+ --sc-bg-speed: #27272a;
30
+ --sc-border: #3f3f46;
31
+ --sc-text: #fff;
32
+ --sc-text-muted: #a1a1aa;
33
+ --sc-badge-bg: #fff;
34
+ --sc-badge-text: #000;
35
+ --sc-amber-bg: rgba(120,53,15,0.1);
36
+ --sc-amber-border: #92400e;
37
+ --sc-amber-text: #fbbf24;
38
+ --sc-range-track: #3f3f46;
39
+ }
40
+
41
+ .sc-section {
42
+ margin-bottom: 3rem;
43
+ }
44
+
45
+ .sc-section-head {
46
+ font-size: 1.125rem;
47
+ font-weight: 700;
48
+ color: var(--sc-text);
49
+ display: flex;
50
+ align-items: center;
51
+ gap: 0.5rem;
52
+ margin-bottom: 1.5rem;
53
+ }
54
+
55
+ .sc-step-badge {
56
+ width: 2rem;
57
+ height: 2rem;
58
+ border-radius: 9999px;
59
+ background: var(--sc-badge-bg);
60
+ color: var(--sc-badge-text);
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ font-size: 0.875rem;
65
+ font-weight: 700;
66
+ flex-shrink: 0;
67
+ }
68
+
69
+ .sc-crop-grid {
70
+ display: grid;
71
+ grid-template-columns: repeat(2, 1fr);
72
+ gap: 0.75rem;
73
+ }
74
+
75
+ @media (min-width: 768px) {
76
+ .sc-crop-grid {
77
+ grid-template-columns: repeat(4, 1fr);
78
+ }
79
+ }
80
+
81
+ @media (min-width: 1024px) {
82
+ .sc-crop-grid {
83
+ grid-template-columns: repeat(7, 1fr);
84
+ }
85
+ }
86
+
87
+ .crop-btn {
88
+ position: relative;
89
+ display: flex;
90
+ flex-direction: column;
91
+ align-items: center;
92
+ padding: 0.75rem;
93
+ border-radius: 1rem;
94
+ background: var(--sc-bg);
95
+ border: 2px solid transparent;
96
+ cursor: pointer;
97
+ box-shadow: 0 1px 3px rgba(0,0,0,0.08);
98
+ transition: border-color 0.15s, box-shadow 0.15s;
99
+ }
100
+
101
+ .crop-btn:hover {
102
+ border-color: var(--sc-border);
103
+ box-shadow: 0 4px 8px rgba(0,0,0,0.1);
104
+ }
105
+
106
+ .sc-crop-icon {
107
+ width: 3rem;
108
+ height: 3rem;
109
+ border-radius: 9999px;
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ margin-bottom: 0.75rem;
114
+ transition: filter 0.15s;
115
+ }
116
+
117
+ .sc-crop-glyph {
118
+ font-size: 1.5rem;
119
+ display: block;
120
+ }
121
+
122
+ .sc-crop-name {
123
+ font-size: 0.75rem;
124
+ font-weight: 700;
125
+ color: var(--sc-text);
126
+ text-align: center;
127
+ line-height: 1.2;
128
+ }
129
+
130
+ .sc-crop-note {
131
+ font-size: 0.625rem;
132
+ color: var(--sc-text-muted);
133
+ text-align: center;
134
+ margin-top: 0.25rem;
135
+ line-height: 1.2;
136
+ }
137
+
138
+ .sc-selection-ring {
139
+ position: absolute;
140
+ inset: 0;
141
+ border-radius: 1rem;
142
+ border: 2px solid transparent;
143
+ opacity: 0;
144
+ transform: scale(0.95);
145
+ transition: opacity 0.15s, transform 0.15s;
146
+ pointer-events: none;
147
+ }
148
+
149
+ :global(.crop-btn.active) .sc-selection-ring {
150
+ opacity: 1;
151
+ transform: scale(1);
152
+ border-width: 3px;
153
+ border-color: #10b981;
154
+ }
155
+
156
+ .sc-dashboard {
157
+ display: grid;
158
+ gap: 2rem;
159
+ transition: opacity 0.5s;
160
+ }
161
+
162
+ @media (min-width: 1024px) {
163
+ .sc-dashboard {
164
+ grid-template-columns: 1fr 2fr;
165
+ }
166
+ }
167
+
168
+ .sc-dashboard[data-disabled] {
169
+ opacity: 0.5;
170
+ pointer-events: none;
171
+ }
172
+
173
+ .sc-params-col,
174
+ .sc-analysis-col {
175
+ display: flex;
176
+ flex-direction: column;
177
+ gap: 1.5rem;
178
+ }
179
+
180
+ .sc-params-card {
181
+ background: var(--sc-bg-params);
182
+ padding: 1.5rem;
183
+ border-radius: 1.5rem;
184
+ box-shadow: 0 4px 20px rgba(0,0,0,0.08);
185
+ border: 1px solid var(--sc-border);
186
+ display: flex;
187
+ flex-direction: column;
188
+ gap: 2rem;
189
+ }
190
+
191
+ .sc-slider-group {
192
+ display: flex;
193
+ flex-direction: column;
194
+ gap: 0.5rem;
195
+ }
196
+
197
+ .sc-slider-label {
198
+ display: flex;
199
+ justify-content: space-between;
200
+ font-size: 0.75rem;
201
+ font-weight: 700;
202
+ color: var(--sc-text-muted);
203
+ text-transform: uppercase;
204
+ letter-spacing: 0.05em;
205
+ }
206
+
207
+ .sc-label-unit {
208
+ color: var(--sc-accent);
209
+ }
210
+
211
+ .sc-label-unit-speed {
212
+ color: #3b82f6;
213
+ }
214
+
215
+ .sc-slider-row {
216
+ display: flex;
217
+ align-items: center;
218
+ gap: 1rem;
219
+ }
220
+
221
+ .sc-range {
222
+ flex: 1;
223
+ height: 0.5rem;
224
+ background: var(--sc-range-track);
225
+ border-radius: 9999px;
226
+ appearance: none;
227
+ cursor: pointer;
228
+ accent-color: var(--sc-text);
229
+ }
230
+
231
+ .sc-range-val {
232
+ width: 6rem;
233
+ text-align: right;
234
+ font-weight: 900;
235
+ font-size: 1.25rem;
236
+ color: var(--sc-text);
237
+ font-variant-numeric: tabular-nums;
238
+ }
239
+
240
+ .sc-speed-group {
241
+ display: flex;
242
+ flex-direction: column;
243
+ gap: 1rem;
244
+ }
245
+
246
+ .sc-speed-bar {
247
+ display: flex;
248
+ justify-content: space-between;
249
+ gap: 0.25rem;
250
+ padding: 0.5rem;
251
+ background: var(--sc-bg-speed);
252
+ border-radius: 1rem;
253
+ }
254
+
255
+ .speed-btn {
256
+ flex: 1;
257
+ padding: 0.75rem 0;
258
+ border-radius: 0.75rem;
259
+ font-size: 0.875rem;
260
+ font-weight: 700;
261
+ color: var(--sc-text-muted);
262
+ background: transparent;
263
+ border: none;
264
+ cursor: pointer;
265
+ transition: background 0.15s, color 0.15s, box-shadow 0.15s;
266
+ }
267
+
268
+ .speed-btn:hover {
269
+ background: var(--sc-bg);
270
+ color: var(--sc-text);
271
+ }
272
+
273
+ :global(.speed-btn.active) {
274
+ background-color: #059669;
275
+ color: #fff;
276
+ box-shadow: 0 4px 6px -1px rgba(5,150,105,0.4);
277
+ }
278
+
279
+ .sc-result-card {
280
+ background: linear-gradient(to top right, var(--sc-result-from), var(--sc-result-to));
281
+ color: #fff;
282
+ padding: 2rem;
283
+ border-radius: 2rem;
284
+ box-shadow: 0 20px 40px rgba(5,150,105,0.25);
285
+ display: grid;
286
+ gap: 2rem;
287
+ }
288
+
289
+ @media (min-width: 768px) {
290
+ .sc-result-card {
291
+ grid-template-columns: 1fr 1fr;
292
+ align-items: center;
293
+ }
294
+ }
295
+
296
+ .sc-result-label {
297
+ font-size: 0.7rem;
298
+ font-weight: 700;
299
+ text-transform: uppercase;
300
+ letter-spacing: 0.15em;
301
+ color: rgba(255,255,255,0.75);
302
+ margin-bottom: 0.25rem;
303
+ }
304
+
305
+ .sc-result-value-row {
306
+ display: flex;
307
+ align-items: baseline;
308
+ gap: 0.5rem;
309
+ }
310
+
311
+ .sc-result-big {
312
+ font-size: 5rem;
313
+ font-weight: 900;
314
+ letter-spacing: -0.04em;
315
+ line-height: 1;
316
+ }
317
+
318
+ .sc-result-unit {
319
+ font-size: 1.75rem;
320
+ font-weight: 700;
321
+ color: rgba(255,255,255,0.75);
322
+ }
323
+
324
+ .sc-result-desc {
325
+ margin-top: 1rem;
326
+ font-size: 0.875rem;
327
+ font-weight: 500;
328
+ color: rgba(255,255,255,0.8);
329
+ }
330
+
331
+ .sc-hz-card {
332
+ background: rgba(255,255,255,0.1);
333
+ border-radius: 1.5rem;
334
+ padding: 1.5rem;
335
+ border: 1px solid rgba(255,255,255,0.1);
336
+ }
337
+
338
+ .sc-hz-header {
339
+ display: flex;
340
+ align-items: center;
341
+ gap: 0.75rem;
342
+ margin-bottom: 1rem;
343
+ }
344
+
345
+ .sc-hz-icon {
346
+ font-size: 1.5rem;
347
+ color: rgba(255,255,255,0.75);
348
+ }
349
+
350
+ .sc-hz-title {
351
+ font-weight: 700;
352
+ text-transform: uppercase;
353
+ font-size: 0.75rem;
354
+ letter-spacing: 0.08em;
355
+ color: #fff;
356
+ }
357
+
358
+ .sc-hz-track {
359
+ position: relative;
360
+ height: 1rem;
361
+ background: rgba(0,0,0,0.2);
362
+ border-radius: 9999px;
363
+ margin-bottom: 0.5rem;
364
+ overflow: hidden;
365
+ }
366
+
367
+ .sc-hz-bar {
368
+ height: 100%;
369
+ background: #fff;
370
+ border-radius: 9999px;
371
+ width: 0;
372
+ transition: width 0.3s;
373
+ }
374
+
375
+ :global(.sc-hz-bar[data-state="volumetric"]) {
376
+ background: #3b82f6;
377
+ box-shadow: 0 0 10px rgba(59,130,246,0.5);
378
+ }
379
+
380
+ :global(.sc-hz-bar[data-state="optimal"]) {
381
+ background: #34d399;
382
+ box-shadow: 0 0 10px rgba(52,211,153,0.5);
383
+ }
384
+
385
+ :global(.sc-hz-bar[data-state="high"]) {
386
+ background: #facc15;
387
+ box-shadow: 0 0 10px rgba(250,204,21,0.5);
388
+ }
389
+
390
+ :global(.sc-hz-bar[data-state="limit"]) {
391
+ background: #ef4444;
392
+ box-shadow: 0 0 10px rgba(239,68,68,0.5);
393
+ }
394
+
395
+ .sc-hz-footer {
396
+ display: flex;
397
+ justify-content: space-between;
398
+ font-size: 0.75rem;
399
+ font-weight: 700;
400
+ color: rgba(255,255,255,0.75);
401
+ }
402
+
403
+ .sc-hz-val {
404
+ color: rgba(255,255,255,0.75);
405
+ }
406
+
407
+ :global(.sc-hz-val[data-state="volumetric"]) { color: #bfdbfe; }
408
+ :global(.sc-hz-val[data-state="optimal"]) { color: #6ee7b7; }
409
+ :global(.sc-hz-val[data-state="high"]) { color: #fef08a; }
410
+ :global(.sc-hz-val[data-state="limit"]) { color: #fca5a5; }
411
+
412
+ .sc-hz-status {
413
+ color: rgba(255,255,255,0.75);
414
+ }
415
+
416
+ .sc-metrics-grid {
417
+ display: grid;
418
+ grid-template-columns: repeat(2, 1fr);
419
+ gap: 1rem;
420
+ }
421
+
422
+ @media (min-width: 768px) {
423
+ .sc-metrics-grid {
424
+ grid-template-columns: repeat(4, 1fr);
425
+ }
426
+ }
427
+
428
+ .sc-metric-card {
429
+ background: var(--sc-bg);
430
+ padding: 1.25rem;
431
+ border-radius: 1.5rem;
432
+ border: 1px solid var(--sc-border);
433
+ box-shadow: 0 1px 3px rgba(0,0,0,0.06);
434
+ text-align: center;
435
+ display: flex;
436
+ flex-direction: column;
437
+ align-items: center;
438
+ gap: 0.25rem;
439
+ }
440
+
441
+ .sc-metric-card-amber {
442
+ background: var(--sc-amber-bg);
443
+ border-color: var(--sc-amber-border);
444
+ }
445
+
446
+ .sc-metric-val {
447
+ display: block;
448
+ font-size: 1.75rem;
449
+ font-weight: 900;
450
+ color: var(--sc-text);
451
+ font-variant-numeric: tabular-nums;
452
+ }
453
+
454
+ .sc-metric-val-amber {
455
+ color: var(--sc-amber-text);
456
+ }
457
+
458
+ .sc-metric-label {
459
+ font-size: 0.625rem;
460
+ text-transform: uppercase;
461
+ font-weight: 700;
462
+ color: var(--sc-text-muted);
463
+ }
464
+
465
+ .sc-metric-label-amber {
466
+ color: var(--sc-amber-text);
467
+ opacity: 0.7;
468
+ }