@jjlmoya/utils-nature 1.10.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,336 @@
1
+ .rh-wrap {
2
+ --rh-bg: #fff;
3
+ --rh-bg-inputs: #f8fafc;
4
+ --rh-border: #e2e8f0;
5
+ --rh-text: #1e293b;
6
+ --rh-text-muted: #64748b;
7
+ --rh-accent: #06b6d4;
8
+ --rh-accent-dark: #0891b2;
9
+ --rh-result-bg: linear-gradient(135deg, #06b6d4, #2563eb);
10
+ --rh-info-bg: #f0f9ff;
11
+ --rh-info-border: #bae6fd;
12
+ --rh-info-text: #0369a1;
13
+
14
+ display: block;
15
+ max-width: 72rem;
16
+ margin: 0 auto;
17
+ padding: 1rem;
18
+ user-select: none;
19
+ }
20
+
21
+ :global(.theme-dark) .rh-wrap {
22
+ --rh-bg: #0f172a;
23
+ --rh-bg-inputs: #1e293b;
24
+ --rh-border: #334155;
25
+ --rh-text: #f1f5f9;
26
+ --rh-text-muted: #94a3b8;
27
+ --rh-info-bg: rgba(3, 105, 161, 0.1);
28
+ --rh-info-border: #0369a1;
29
+ --rh-info-text: #7dd3fc;
30
+ }
31
+
32
+ .rh-container {
33
+ display: grid;
34
+ grid-template-columns: 1fr;
35
+ background: var(--rh-bg);
36
+ border-radius: 2rem;
37
+ overflow: hidden;
38
+ border: 1px solid var(--rh-border);
39
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
40
+ }
41
+
42
+ @media (min-width: 1024px) {
43
+ .rh-container {
44
+ grid-template-columns: 1fr 1fr;
45
+ }
46
+ }
47
+
48
+ .rh-inputs {
49
+ padding: 2.5rem;
50
+ background: var(--rh-bg-inputs);
51
+ }
52
+
53
+ .rh-section-head {
54
+ font-size: 1.25rem;
55
+ font-weight: 800;
56
+ color: var(--rh-text);
57
+ display: flex;
58
+ align-items: center;
59
+ gap: 0.75rem;
60
+ margin-bottom: 2rem;
61
+ text-transform: uppercase;
62
+ letter-spacing: 0.05em;
63
+ }
64
+
65
+ .rh-step-badge {
66
+ width: 2.25rem;
67
+ height: 2.25rem;
68
+ background: var(--rh-text);
69
+ color: var(--rh-bg);
70
+ border-radius: 50%;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ font-size: 1rem;
75
+ font-weight: 900;
76
+ }
77
+
78
+ .rh-field-group {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 1.5rem;
82
+ margin-bottom: 2rem;
83
+ }
84
+
85
+ .rh-field {
86
+ display: flex;
87
+ flex-direction: column;
88
+ gap: 0.5rem;
89
+ }
90
+
91
+ .rh-label {
92
+ font-size: 0.75rem;
93
+ font-weight: 700;
94
+ text-transform: uppercase;
95
+ color: var(--rh-text-muted);
96
+ letter-spacing: 0.05em;
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 0.5rem;
100
+ }
101
+
102
+ .rh-label-icon {
103
+ font-size: 1.25rem;
104
+ color: var(--rh-accent);
105
+ }
106
+
107
+ .rh-input-wrap, .rh-select-wrap {
108
+ position: relative;
109
+ }
110
+
111
+ .rh-input, .rh-select {
112
+ width: 100%;
113
+ background: var(--rh-bg);
114
+ border: 2px solid var(--rh-border);
115
+ border-radius: 1rem;
116
+ padding: 0.875rem 1rem;
117
+ font-size: 1.5rem;
118
+ font-weight: 700;
119
+ color: var(--rh-text);
120
+ transition: border-color 0.2s;
121
+ outline: none;
122
+ }
123
+
124
+ .rh-select {
125
+ font-size: 1.125rem;
126
+ cursor: pointer;
127
+ appearance: none;
128
+ }
129
+
130
+ .rh-input:focus, .rh-select:focus {
131
+ border-color: var(--rh-accent);
132
+ }
133
+
134
+ .rh-input-suffix {
135
+ position: absolute;
136
+ right: 1.25rem;
137
+ top: 50%;
138
+ transform: translateY(-50%);
139
+ font-weight: 700;
140
+ color: var(--rh-text-muted);
141
+ pointer-events: none;
142
+ }
143
+
144
+ .rh-field-help {
145
+ font-size: 0.75rem;
146
+ font-style: italic;
147
+ color: var(--rh-text-muted);
148
+ }
149
+
150
+ .rh-select-arrow {
151
+ position: absolute;
152
+ right: 1.25rem;
153
+ top: 50%;
154
+ transform: translateY(-50%);
155
+ font-size: 1.5rem;
156
+ color: var(--rh-text-muted);
157
+ pointer-events: none;
158
+ }
159
+
160
+ .rh-info-card {
161
+ background: var(--rh-info-bg);
162
+ border: 1px solid var(--rh-info-border);
163
+ border-radius: 1.25rem;
164
+ padding: 1.25rem;
165
+ display: flex;
166
+ gap: 1rem;
167
+ align-items: center;
168
+ }
169
+
170
+ .rh-info-icon-box {
171
+ background: var(--rh-info-border);
172
+ color: var(--rh-info-text);
173
+ padding: 0.75rem;
174
+ border-radius: 0.75rem;
175
+ display: flex;
176
+ }
177
+
178
+ .rh-info-icon {
179
+ font-size: 1.5rem;
180
+ }
181
+
182
+ .rh-info-title {
183
+ margin: 0;
184
+ font-weight: 800;
185
+ color: var(--rh-info-text);
186
+ font-size: 0.875rem;
187
+ }
188
+
189
+ .rh-info-text {
190
+ margin: 0.25rem 0 0;
191
+ font-size: 0.75rem;
192
+ color: var(--rh-info-text);
193
+ opacity: 0.9;
194
+ }
195
+
196
+ .rh-results {
197
+ background: var(--rh-result-bg);
198
+ padding: 2.5rem;
199
+ color: #fff;
200
+ display: flex;
201
+ flex-direction: column;
202
+ justify-content: space-between;
203
+ position: relative;
204
+ overflow: hidden;
205
+ }
206
+
207
+ .rh-result-main {
208
+ position: relative;
209
+ z-index: 10;
210
+ }
211
+
212
+ .rh-result-label {
213
+ font-size: 0.875rem;
214
+ font-weight: 700;
215
+ text-transform: uppercase;
216
+ letter-spacing: 0.1em;
217
+ color: rgba(255, 255, 255, 0.8);
218
+ margin: 0 0 0.5rem;
219
+ }
220
+
221
+ .rh-result-value-box {
222
+ display: flex;
223
+ align-items: baseline;
224
+ gap: 0.5rem;
225
+ }
226
+
227
+ .rh-result-big {
228
+ font-size: 5rem;
229
+ font-weight: 900;
230
+ letter-spacing: -0.05em;
231
+ line-height: 1;
232
+ }
233
+
234
+ .rh-result-unit {
235
+ font-size: 1.5rem;
236
+ font-weight: 700;
237
+ color: rgba(255, 255, 255, 0.8);
238
+ }
239
+
240
+ .rh-equivalencies {
241
+ position: relative;
242
+ z-index: 10;
243
+ margin-top: 2rem;
244
+ }
245
+
246
+ .rh-equiv-title {
247
+ font-size: 1rem;
248
+ font-weight: 800;
249
+ margin: 0 0 1.25rem;
250
+ padding-bottom: 0.75rem;
251
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
252
+ }
253
+
254
+ .rh-equiv-grid {
255
+ display: flex;
256
+ flex-direction: column;
257
+ gap: 1rem;
258
+ }
259
+
260
+ .rh-equiv-card {
261
+ background: rgba(255, 255, 255, 0.1);
262
+ backdrop-filter: blur(8px);
263
+ border: 1px solid rgba(255, 255, 255, 0.2);
264
+ border-radius: 1rem;
265
+ padding: 1rem;
266
+ display: flex;
267
+ align-items: center;
268
+ gap: 1rem;
269
+ }
270
+
271
+ .rh-equiv-icon {
272
+ font-size: 2rem;
273
+ color: rgba(255, 255, 255, 0.9);
274
+ }
275
+
276
+ .rh-equiv-info {
277
+ display: flex;
278
+ flex-direction: column;
279
+ }
280
+
281
+ .rh-equiv-val {
282
+ font-size: 1.5rem;
283
+ font-weight: 800;
284
+ line-height: 1;
285
+ }
286
+
287
+ .rh-equiv-label {
288
+ font-size: 0.65rem;
289
+ text-transform: uppercase;
290
+ font-weight: 700;
291
+ margin-top: 0.25rem;
292
+ color: rgba(255, 255, 255, 0.7);
293
+ }
294
+
295
+ .rh-bg-icon {
296
+ position: absolute;
297
+ bottom: -2rem;
298
+ right: -2rem;
299
+ font-size: 15rem;
300
+ opacity: 0.1;
301
+ pointer-events: none;
302
+ z-index: 1;
303
+ }
304
+
305
+ .rh-liquid-container {
306
+ position: absolute;
307
+ inset: 0;
308
+ z-index: 0;
309
+ pointer-events: none;
310
+ }
311
+
312
+ .rh-liquid-fill {
313
+ position: absolute;
314
+ bottom: 0;
315
+ left: 0;
316
+ width: 100%;
317
+ background: rgba(255, 255, 255, 0.1);
318
+ transition: height 1s ease-in-out;
319
+ height: 0;
320
+ }
321
+
322
+ .rh-liquid-wave {
323
+ position: absolute;
324
+ top: -0.5rem;
325
+ left: 0;
326
+ width: 100%;
327
+ height: 1rem;
328
+ background: rgba(255, 255, 255, 0.15);
329
+ transform: skewY(1deg);
330
+ animation: rh-wave 3s infinite alternate ease-in-out;
331
+ }
332
+
333
+ @keyframes rh-wave {
334
+ from { transform: skewY(1deg); }
335
+ to { transform: skewY(-1deg); }
336
+ }