@jjlmoya/utils-alcohol 1.23.0 → 1.25.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,381 @@
1
+ .beer-app {
2
+ width: 100%;
3
+ max-width: 72rem;
4
+ margin: 0 auto;
5
+ padding: 0.5rem;
6
+ }
7
+
8
+ .beer-card {
9
+ background: #fff;
10
+ border: 1px solid #e2e8f0;
11
+ border-radius: 1.25rem;
12
+ overflow: clip;
13
+ box-shadow: 0 4px 20px rgba(0,0,0,0.06);
14
+ color: #1e293b;
15
+ }
16
+ .theme-dark .beer-card {
17
+ background: #0f172a;
18
+ border-color: #1e293b;
19
+ color: #f1f5f9;
20
+ }
21
+
22
+ .beer-grid { display: grid; }
23
+
24
+ @media (min-width: 1024px) {
25
+ .beer-grid {
26
+ grid-template-columns: 1fr 1fr;
27
+ align-items: stretch;
28
+ }
29
+ }
30
+
31
+ .beer-steps-panel {
32
+ display: flex;
33
+ flex-direction: column;
34
+ }
35
+
36
+ .beer-sec {
37
+ padding: 1.25rem 1.5rem;
38
+ border-bottom: 1px solid #e2e8f0;
39
+ }
40
+ .theme-dark .beer-sec { border-color: #1e293b; }
41
+ .beer-sec:last-child { border-bottom: none; }
42
+
43
+ .step-header {
44
+ font-size: 1rem;
45
+ font-weight: 700;
46
+ display: flex;
47
+ align-items: center;
48
+ gap: 0.75rem;
49
+ margin: 0 0 1rem;
50
+ color: #1e293b;
51
+ }
52
+
53
+ .theme-dark .step-header { color: #f1f5f9; }
54
+ .step-number {
55
+ width: 1.75rem;
56
+ height: 1.75rem;
57
+ border-radius: 50%;
58
+ background: #0f172a;
59
+ color: #fff;
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ font-size: 0.75rem;
64
+ flex-shrink: 0;
65
+ }
66
+ .theme-dark .step-number {
67
+ background: #fff;
68
+ color: #0f172a;
69
+ }
70
+
71
+ .selector-grid {
72
+ display: grid;
73
+ grid-template-columns: 1fr 1fr;
74
+ gap: 0.75rem;
75
+ }
76
+
77
+ .selector-card {
78
+ width: 100%;
79
+ text-align: left;
80
+ padding: 1rem;
81
+ border-radius: 0.75rem;
82
+ border: 2px solid #e2e8f0;
83
+ transition: border-color 0.2s;
84
+ position: relative;
85
+ overflow: hidden;
86
+ background: #f8fafc;
87
+ cursor: pointer;
88
+ }
89
+ .theme-dark .selector-card {
90
+ border-color: #1e293b;
91
+ background: #0c1527;
92
+ }
93
+ .selector-card:hover { border-color: #cbd5e1; }
94
+ .theme-dark .selector-card:hover { border-color: #334155; }
95
+
96
+ .selector-content {
97
+ position: relative;
98
+ z-index: 1;
99
+ display: flex;
100
+ flex-direction: column;
101
+ align-items: center;
102
+ gap: 0.5rem;
103
+ }
104
+ .icon-el {
105
+ width: 2rem;
106
+ height: 2rem;
107
+ color: #94a3b8;
108
+ transition: color 0.2s;
109
+ }
110
+ .selector-card:hover .icon-el { color: #f59e0b; }
111
+ .selector-card[data-value="bottle"]:hover .icon-el { color: #10b981; }
112
+ .selector-card[data-value="fridge"]:hover .icon-el { color: #06b6d4; }
113
+ .selector-card[data-value="freezer"]:hover .icon-el { color: #3b82f6; }
114
+
115
+ .selector-label {
116
+ font-weight: 700;
117
+ font-size: 1rem;
118
+ color: #1e293b;
119
+ }
120
+
121
+ .theme-dark .selector-label { color: #f1f5f9; }
122
+
123
+ .selector-sub {
124
+ font-size: 0.7rem;
125
+ color: #64748b;
126
+ font-weight: 500;
127
+ text-transform: uppercase;
128
+ letter-spacing: 0.05em;
129
+ }
130
+
131
+ .theme-dark .selector-sub { color: #94a3b8; }
132
+
133
+ .bg-el {
134
+ position: absolute;
135
+ inset: 0;
136
+ opacity: 0;
137
+ transition: opacity 0.2s;
138
+ background: rgba(245,158,11,0.08);
139
+ }
140
+ .selector-card[data-value="bottle"] .bg-el { background: rgba(16,185,129,0.08); }
141
+ .selector-card[data-value="fridge"] .bg-el { background: rgba(6,182,212,0.08); }
142
+ .selector-card[data-value="freezer"] .bg-el { background: rgba(59,130,246,0.08); }
143
+
144
+ .selector-card.selected[data-value="can"] { border-color: #f59e0b; }
145
+ .selector-card.selected[data-value="bottle"] { border-color: #10b981; }
146
+ .selector-card.selected[data-value="fridge"] { border-color: #06b6d4; }
147
+ .selector-card.selected[data-value="freezer"] { border-color: #3b82f6; }
148
+ .selector-card.selected .bg-el { opacity: 1; }
149
+
150
+ .slider-row { margin-bottom: 1.25rem; }
151
+ .slider-row-last { margin-bottom: 0; }
152
+ .slider-label-row {
153
+ display: flex;
154
+ justify-content: space-between;
155
+ align-items: center;
156
+ margin-bottom: 0.75rem;
157
+ }
158
+ .slider-label {
159
+ font-size: 0.75rem;
160
+ font-weight: 700;
161
+ color: #64748b;
162
+ text-transform: uppercase;
163
+ letter-spacing: 0.1em;
164
+ }
165
+
166
+ .theme-dark .slider-label { color: #94a3b8; }
167
+
168
+ .temp-display {
169
+ font-size: 1rem;
170
+ font-weight: 700;
171
+ background: #f1f5f9;
172
+ color: #1e293b;
173
+ padding: 0.2rem 0.6rem;
174
+ border-radius: 0.4rem;
175
+ }
176
+
177
+ .theme-dark .temp-display {
178
+ background: #1e293b;
179
+ color: #f1f5f9;
180
+ }
181
+
182
+ .slider-custom {
183
+ width: 100%;
184
+ height: 0.5rem;
185
+ border-radius: 0.5rem;
186
+ appearance: none;
187
+ cursor: pointer;
188
+ background: #e2e8f0;
189
+ }
190
+ .theme-dark .slider-custom { background: #334155; }
191
+ .slider-dark { accent-color: #0f172a; }
192
+ .theme-dark .slider-dark { accent-color: #fff; }
193
+ .slider-blue { accent-color: #3b82f6; }
194
+ .slider-custom::-webkit-slider-thumb {
195
+ -webkit-appearance: none;
196
+ height: 20px;
197
+ width: 20px;
198
+ border-radius: 50%;
199
+ background: currentcolor;
200
+ cursor: pointer;
201
+ margin-top: -6px;
202
+ }
203
+ .slider-custom::-webkit-slider-runnable-track {
204
+ width: 100%;
205
+ height: 8px;
206
+ background: transparent;
207
+ border-radius: 4px;
208
+ }
209
+
210
+ .beer-result-panel {
211
+ background: linear-gradient(to bottom right, #eff6ff, #eef2ff);
212
+ color: #1e293b;
213
+ display: flex;
214
+ align-items: stretch;
215
+ min-height: 380px;
216
+ }
217
+
218
+ @media (min-width: 1024px) { .beer-result-panel { border-left: 1px solid #e2e8f0; } }
219
+
220
+ .theme-dark .beer-result-panel {
221
+ background: linear-gradient(to bottom right, #1e293b, #020617);
222
+ color: #fff;
223
+ }
224
+
225
+ @media (min-width: 1024px) { .theme-dark .beer-result-panel { border-left-color: #334155; } }
226
+
227
+ .result-inner {
228
+ width: 100%;
229
+ display: flex;
230
+ flex-direction: column;
231
+ align-items: center;
232
+ justify-content: center;
233
+ text-align: center;
234
+ padding: 2rem;
235
+ position: relative;
236
+ z-index: 1;
237
+ }
238
+
239
+ .empty-state {
240
+ display: flex;
241
+ flex-direction: column;
242
+ align-items: center;
243
+ gap: 1.5rem;
244
+ }
245
+ .empty-icon {
246
+ width: 4rem;
247
+ height: 4rem;
248
+ border-radius: 50%;
249
+ background: #e0e7ff;
250
+ display: flex;
251
+ align-items: center;
252
+ justify-content: center;
253
+ color: #6366f1;
254
+ }
255
+
256
+ .theme-dark .empty-icon {
257
+ background: #1e293b;
258
+ color: #475569;
259
+ }
260
+ .empty-icon-svg {
261
+ width: 2rem;
262
+ height: 2rem;
263
+ }
264
+ .empty-title {
265
+ font-size: 1.25rem;
266
+ font-weight: 700;
267
+ color: #475569;
268
+ margin: 0;
269
+ }
270
+
271
+ .theme-dark .empty-title { color: #64748b; }
272
+
273
+ .empty-desc {
274
+ color: #94a3b8;
275
+ margin: 0;
276
+ font-size: 0.875rem;
277
+ }
278
+
279
+ .theme-dark .empty-desc { color: #475569; }
280
+
281
+ .result-content {
282
+ flex-direction: column;
283
+ align-items: center;
284
+ width: 100%;
285
+ position: relative;
286
+ z-index: 1;
287
+ }
288
+ .result-time-wrap {
289
+ position: relative;
290
+ margin-bottom: 1.5rem;
291
+ }
292
+ .result-glow {
293
+ position: absolute;
294
+ inset: -2rem;
295
+ background: rgba(59,130,246,0.2);
296
+ border-radius: 50%;
297
+ filter: blur(2rem);
298
+ }
299
+ .result-time-num {
300
+ position: relative;
301
+ font-size: 5rem;
302
+ font-weight: 900;
303
+ color: #1e293b;
304
+ letter-spacing: -0.05em;
305
+ line-height: 1;
306
+ }
307
+
308
+ .theme-dark .result-time-num { color: #fff; }
309
+
310
+ .result-time-unit {
311
+ position: absolute;
312
+ right: -1.5rem;
313
+ bottom: 0.75rem;
314
+ font-size: 1.25rem;
315
+ font-weight: 700;
316
+ color: #94a3b8;
317
+ }
318
+
319
+ .result-labels { margin-bottom: 2rem; }
320
+ .result-est-label {
321
+ font-size: 0.75rem;
322
+ font-weight: 700;
323
+ text-transform: uppercase;
324
+ letter-spacing: 0.2em;
325
+ color: #6366f1;
326
+ margin: 0 0 0.5rem;
327
+ }
328
+
329
+ .theme-dark .result-est-label { color: #60a5fa; }
330
+
331
+ .result-finish-time {
332
+ font-size: 1.5rem;
333
+ font-weight: 700;
334
+ color: #1e293b;
335
+ margin: 0;
336
+ }
337
+
338
+ .theme-dark .result-finish-time { color: #fff; }
339
+
340
+ .result-meta-grid {
341
+ display: grid;
342
+ grid-template-columns: 1fr 1fr;
343
+ gap: 0.75rem;
344
+ width: 100%;
345
+ text-align: left;
346
+ }
347
+ .result-meta-item {
348
+ background: rgba(255,255,255,0.7);
349
+ padding: 0.75rem;
350
+ border-radius: 0.5rem;
351
+ border: 1px solid #e2e8f0;
352
+ }
353
+
354
+ .theme-dark .result-meta-item {
355
+ background: rgba(30,41,59,0.5);
356
+ border-color: #334155;
357
+ }
358
+
359
+ .result-meta-label {
360
+ font-size: 0.7rem;
361
+ color: #94a3b8;
362
+ text-transform: uppercase;
363
+ font-weight: 700;
364
+ margin-bottom: 0.25rem;
365
+ }
366
+
367
+ .result-meta-value {
368
+ color: #1e293b;
369
+ font-weight: 700;
370
+ font-size: 0.875rem;
371
+ }
372
+
373
+ .theme-dark .result-meta-value { color: #fff; }
374
+
375
+ .bubbles-layer {
376
+ position: absolute;
377
+ inset: 0;
378
+ overflow: hidden;
379
+ pointer-events: none;
380
+ z-index: 0;
381
+ }