@jjlmoya/utils-babies 1.2.0 → 1.4.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.
Files changed (27) hide show
  1. package/package.json +2 -2
  2. package/src/tool/baby-feeding-calculator/bibliography.astro +8 -4
  3. package/src/tool/baby-feeding-calculator/component.astro +208 -177
  4. package/src/tool/baby-feeding-calculator/style.css +317 -229
  5. package/src/tool/baby-percentile-calculator/bibliography.astro +8 -4
  6. package/src/tool/baby-percentile-calculator/component.astro +98 -240
  7. package/src/tool/baby-percentile-calculator/i18n/en.ts +1 -0
  8. package/src/tool/baby-percentile-calculator/i18n/es.ts +1 -0
  9. package/src/tool/baby-percentile-calculator/i18n/fr.ts +1 -0
  10. package/src/tool/baby-percentile-calculator/index.ts +1 -0
  11. package/src/tool/baby-percentile-calculator/style.css +342 -268
  12. package/src/tool/baby-size-converter/bibliography.astro +8 -4
  13. package/src/tool/baby-size-converter/component.astro +221 -212
  14. package/src/tool/baby-size-converter/style.css +433 -263
  15. package/src/tool/fertile-days-estimator/bibliography.astro +8 -4
  16. package/src/tool/fertile-days-estimator/component.astro +202 -200
  17. package/src/tool/fertile-days-estimator/style.css +408 -270
  18. package/src/tool/pregnancy-calculator/bibliography.astro +8 -4
  19. package/src/tool/pregnancy-calculator/component.astro +50 -8
  20. package/src/tool/pregnancy-calculator/i18n/en.ts +8 -0
  21. package/src/tool/pregnancy-calculator/i18n/es.ts +8 -0
  22. package/src/tool/pregnancy-calculator/i18n/fr.ts +8 -0
  23. package/src/tool/pregnancy-calculator/index.ts +8 -0
  24. package/src/tool/pregnancy-calculator/style.css +351 -134
  25. package/src/tool/vaccination-calendar/bibliography.astro +8 -4
  26. package/src/tool/vaccination-calendar/component.astro +120 -124
  27. package/src/tool/vaccination-calendar/style.css +296 -209
@@ -1,419 +1,557 @@
1
- .fertile-days-estimator {
2
- --fde-bg: #fff;
3
- --fde-bg-step: #fff;
4
- --fde-bg-sidebar: #fdf2f8;
5
- --fde-bg-dark: #18181b;
6
- --fde-text: #111827;
7
- --fde-text-muted: #64748b;
8
- --fde-text-pink: #9d174d;
9
- --fde-border: #e5e7eb;
10
- --fde-border-pink: #fbcfe8;
11
- --fde-shadow: rgba(219, 39, 119, 0.08);
12
- --fde-primary: #db2777;
13
- --fde-primary-dark: #be123c;
14
- --fde-primary-soft: #fdf2f8;
15
- --fde-primary-on: #fff;
16
- --fde-period-bg: #ffe4e6;
17
- --fde-period-text: #be123c;
18
- --fde-fertile-bg: #fdf2f8;
19
- --fde-fertile-text: #db2777;
20
- --fde-calendar-day: #374151;
21
- --fde-calendar-day-bg: #fff;
22
- --fde-legend-bg: #f9fafb;
23
- --fde-legend-text: #4b5563;
24
- --fde-range-accent: #db2777;
25
-
1
+ .fde-container {
26
2
  width: 100%;
27
- color: var(--fde-text);
28
- }
29
-
30
- .theme-dark .fertile-days-estimator {
31
- --fde-bg: #18181b;
32
- --fde-bg-step: #18181b;
33
- --fde-bg-sidebar: #111113;
34
- --fde-bg-dark: #18181b;
35
- --fde-text: #fff;
36
- --fde-text-muted: #9ca3af;
37
- --fde-text-pink: #f472b6;
38
- --fde-border: #27272a;
39
- --fde-border-pink: #27272a;
40
- --fde-shadow: rgba(0, 0, 0, 0.5);
41
- --fde-primary: #f472b6;
42
- --fde-primary-dark: #ec4899;
43
- --fde-primary-soft: #18181b;
44
- --fde-primary-on: #fff;
45
- --fde-period-bg: #ffe4e6;
46
- --fde-period-text: #be123c;
47
- --fde-fertile-bg: #27272a;
48
- --fde-fertile-text: #f472b6;
49
- --fde-calendar-day: #e5e7eb;
50
- --fde-calendar-day-bg: #1e1e21;
51
- --fde-legend-bg: #111113;
52
- --fde-legend-text: #9ca3af;
53
- --fde-range-accent: #f472b6;
54
- }
55
-
56
- .fertile-days-estimator-step-indicator {
3
+ max-width: 1000px;
4
+ margin: 0 auto;
5
+ background: #fff;
6
+ border-radius: 32px;
7
+ box-shadow: 0 25px 70px rgba(0, 0, 0, 0.08);
8
+ display: flex;
9
+ flex-direction: column;
10
+ overflow: hidden;
11
+ color: #111827;
12
+ border: 1px solid #e5e7eb;
13
+ min-height: 600px;
14
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
15
+ }
16
+
17
+ /* Step indicator */
18
+ .fde-step-indicator {
19
+ padding: 1.5rem 2.5rem;
20
+ background: #fdf2f8;
21
+ border-bottom: 1px solid #fbcfe8;
57
22
  display: flex;
58
- gap: 1.5rem;
59
- margin-bottom: 1.5rem;
23
+ justify-content: center;
24
+ gap: 3rem;
60
25
  }
61
26
 
62
- .fertile-days-estimator-step-item {
27
+ .fde-step-item {
63
28
  display: flex;
64
29
  align-items: center;
65
- gap: 0.5rem;
66
- font-size: 0.875rem;
67
- font-weight: 500;
68
- color: var(--fde-text-muted);
69
- opacity: 0.5;
70
- transition: opacity 0.2s;
30
+ gap: 0.75rem;
31
+ font-size: 0.9rem;
32
+ font-weight: 700;
33
+ color: #9d174d;
34
+ opacity: 0.4;
35
+ transition: opacity 0.3s ease;
71
36
  }
72
37
 
73
- .fertile-days-estimator-step-item.active {
74
- color: var(--fde-primary);
38
+ .fde-step-item.fde-step-active {
75
39
  opacity: 1;
76
40
  }
77
41
 
78
- .fertile-days-estimator-step-number {
79
- display: inline-flex;
42
+ .fde-step-number {
43
+ width: 28px;
44
+ height: 28px;
45
+ background: #db2777;
46
+ color: white;
47
+ border-radius: 50%;
48
+ display: flex;
80
49
  align-items: center;
81
50
  justify-content: center;
82
- width: 1.75rem;
83
- height: 1.75rem;
84
- border-radius: 50%;
85
- background: var(--fde-primary-soft);
86
- color: var(--fde-primary);
87
- font-size: 0.8125rem;
88
- font-weight: 700;
89
- border: 2px solid var(--fde-border-pink);
90
- }
91
-
92
- .fertile-days-estimator-step-item.active .fertile-days-estimator-step-number {
93
- background: var(--fde-primary);
94
- color: var(--fde-primary-on);
95
- border-color: var(--fde-primary);
51
+ font-size: 0.75rem;
96
52
  }
97
53
 
98
- .fertile-days-estimator-step-first {
99
- background: var(--fde-bg-step);
100
- border: 1px solid var(--fde-border);
101
- border-radius: 1rem;
102
- padding: 1.5rem;
54
+ /* Step 1 */
55
+ .fde-step-first {
56
+ flex: 1;
103
57
  display: flex;
104
58
  flex-direction: column;
105
- gap: 1rem;
59
+ align-items: center;
60
+ justify-content: center;
61
+ padding: 4rem 2rem;
62
+ text-align: center;
63
+ gap: 3rem;
64
+ background: radial-gradient(circle at top right, #fff1f2, transparent),
65
+ radial-gradient(circle at bottom left, #fdf2f8, transparent);
66
+ transition: opacity 0.4s ease, transform 0.4s ease;
106
67
  }
107
68
 
108
- .fertile-days-estimator-step-first.hidden {
69
+ .fde-step-first.fde-hidden {
109
70
  display: none;
110
71
  }
111
72
 
112
- .fertile-days-estimator-step-title {
113
- font-size: 1.25rem;
114
- font-weight: 700;
115
- color: var(--fde-text);
116
- margin: 0;
73
+ .fde-step-header h2 {
74
+ font-size: 2.5rem;
75
+ font-weight: 950;
76
+ letter-spacing: -0.04em;
77
+ color: #9d174d;
78
+ margin-bottom: 0.75rem;
79
+ line-height: 1;
117
80
  }
118
81
 
119
- .fertile-days-estimator-step-subtitle {
120
- font-size: 0.9375rem;
121
- color: var(--fde-text-muted);
122
- margin: 0;
82
+ .fde-step-header p {
83
+ font-size: 1.15rem;
84
+ color: #64748b;
85
+ max-width: 400px;
86
+ margin: 0 auto;
123
87
  }
124
88
 
125
- .fertile-days-estimator-pulse-hint {
126
- font-size: 0.8125rem;
127
- color: var(--fde-primary);
128
- margin: 0;
129
- font-style: italic;
89
+ /* Calendar card (step 1) */
90
+ .fde-calendar-card {
91
+ max-width: 500px;
92
+ width: 100%;
93
+ background: #fff;
94
+ padding: 2.5rem;
95
+ border-radius: 32px;
96
+ border: 1px solid rgba(251, 207, 232, 0.5);
97
+ box-shadow: 0 30px 60px -12px rgba(219, 39, 119, 0.15),
98
+ 0 18px 36px -18px rgba(0, 0, 0, 0.1);
99
+ transform: translateY(0);
100
+ transition: transform 0.3s ease;
130
101
  }
131
102
 
132
- .fertile-days-estimator-layout {
133
- display: none;
134
- grid-template-columns: 18rem 1fr;
135
- gap: 1.5rem;
136
- margin-top: 1.5rem;
103
+ .fde-calendar-card:hover {
104
+ transform: translateY(-5px);
137
105
  }
138
106
 
139
- .fertile-days-estimator-layout.active {
140
- display: grid;
107
+ /* Pulse hint */
108
+ .fde-pulse-hint {
109
+ font-size: 0.95rem;
110
+ font-weight: 800;
111
+ color: #db2777;
112
+ background: #fdf2f8;
113
+ padding: 0.75rem 1.5rem;
114
+ border-radius: 100px;
115
+ border: 1px solid #fbcfe8;
116
+ animation: fde-pulse 2s infinite;
141
117
  }
142
118
 
143
- @media (max-width: 720px) {
144
- .fertile-days-estimator-layout.active {
145
- grid-template-columns: 1fr;
146
- }
119
+ @keyframes fde-pulse {
120
+ 0% { opacity: 0.4; }
121
+ 50% { opacity: 1; }
122
+ 100% { opacity: 0.4; }
147
123
  }
148
124
 
149
- .fertile-days-estimator-sidebar {
150
- background: var(--fde-bg-sidebar);
151
- border: 1px solid var(--fde-border-pink);
152
- border-radius: 1rem;
153
- padding: 1.25rem;
125
+ /* Step 2 layout */
126
+ .fde-layout {
127
+ display: none;
128
+ grid-template-columns: 350px 1fr;
129
+ flex: 1;
130
+ opacity: 0;
131
+ transition: opacity 0.5s ease;
132
+ }
133
+
134
+ .fde-layout.fde-active {
135
+ display: grid;
136
+ opacity: 1;
137
+ }
138
+
139
+ /* Sidebar */
140
+ .fde-sidebar {
141
+ background: #fdf2f8;
142
+ padding: 2.5rem;
154
143
  display: flex;
155
144
  flex-direction: column;
156
- gap: 1.25rem;
145
+ gap: 2.5rem;
146
+ border-right: 1px solid #fbcfe8;
157
147
  }
158
148
 
159
- .fertile-days-estimator-sidebar-header strong {
160
- display: block;
161
- font-size: 1rem;
162
- font-weight: 700;
163
- color: var(--fde-text-pink);
164
- margin-bottom: 0.25rem;
149
+ .fde-sidebar-header h2 {
150
+ font-size: 1.5rem;
151
+ font-weight: 800;
152
+ color: #9d174d;
153
+ margin: 0 0 0.5rem;
165
154
  }
166
155
 
167
- .fertile-days-estimator-sidebar-header p {
168
- font-size: 0.8125rem;
169
- color: var(--fde-text-muted);
156
+ .fde-sidebar-header p {
157
+ font-size: 0.85rem;
158
+ color: #be123c;
159
+ opacity: 0.8;
170
160
  margin: 0;
171
161
  }
172
162
 
173
- .fertile-days-estimator-input-card {
174
- background: var(--fde-bg);
175
- border: 1px solid var(--fde-border);
176
- border-radius: 0.75rem;
177
- padding: 1rem;
163
+ .fde-input-card {
164
+ background: #fff;
165
+ padding: 1.5rem;
166
+ border-radius: 20px;
167
+ border: 1px solid #fbcfe8;
168
+ box-shadow: 0 4px 15px rgba(219, 39, 119, 0.05);
169
+ }
170
+
171
+ .fde-input-card label {
178
172
  display: flex;
179
- flex-direction: column;
173
+ align-items: center;
180
174
  gap: 0.75rem;
175
+ font-size: 0.9rem;
176
+ font-weight: 700;
177
+ color: #9d174d;
178
+ margin-bottom: 1rem;
181
179
  }
182
180
 
183
- .fertile-days-estimator-range-label {
184
- font-size: 0.8125rem;
185
- font-weight: 600;
186
- color: var(--fde-text-muted);
181
+ .fde-input-card label svg,
182
+ .fde-input-card label [data-icon] {
183
+ width: 1.25rem;
184
+ height: 1.25rem;
187
185
  }
188
186
 
189
- .fertile-days-estimator-range-control {
187
+ .fde-range-control {
190
188
  display: flex;
191
- align-items: center;
192
- gap: 0.75rem;
189
+ flex-direction: column;
190
+ gap: 1rem;
193
191
  }
194
192
 
195
- .fertile-days-estimator-range-input {
196
- flex: 1;
197
- accent-color: var(--fde-range-accent);
193
+ .fde-range-control input[type='range'] {
194
+ width: 100%;
195
+ accent-color: #db2777;
198
196
  cursor: pointer;
199
197
  }
200
198
 
201
- .fertile-days-estimator-range-value {
202
- font-size: 0.875rem;
203
- font-weight: 700;
204
- color: var(--fde-primary);
205
- white-space: nowrap;
199
+ .fde-range-value {
200
+ text-align: center;
201
+ font-size: 2rem;
202
+ font-weight: 800;
203
+ color: #db2777;
206
204
  }
207
205
 
208
- .fertile-days-estimator-results {
206
+ .fde-range-value span {
207
+ font-size: 0.9rem;
208
+ font-weight: 600;
209
+ color: #be123c;
210
+ }
211
+
212
+ /* Results */
213
+ .fde-results {
209
214
  display: flex;
210
215
  flex-direction: column;
211
- gap: 0.875rem;
216
+ gap: 1rem;
212
217
  }
213
218
 
214
- .fertile-days-estimator-stat {
219
+ .fde-stat {
215
220
  display: flex;
216
221
  align-items: center;
217
- gap: 0.75rem;
218
- background: var(--fde-bg);
219
- border: 1px solid var(--fde-border);
220
- border-radius: 0.625rem;
221
- padding: 0.75rem;
222
+ gap: 1rem;
223
+ padding: 1.25rem;
224
+ background: #fff;
225
+ border-radius: 16px;
226
+ border: 1px solid #fce7f3;
222
227
  }
223
228
 
224
- .fertile-days-estimator-stat-dot {
225
- width: 0.875rem;
226
- height: 0.875rem;
227
- border-radius: 50%;
229
+ .fde-stat svg,
230
+ .fde-stat [data-icon] {
231
+ width: 2rem;
232
+ height: 2rem;
233
+ border-radius: 10px;
234
+ padding: 0.4rem;
228
235
  flex-shrink: 0;
229
236
  }
230
237
 
231
- .fertile-days-estimator-stat-dot-ovulation {
232
- background: var(--fde-primary);
238
+ .fde-stat-ovulation svg,
239
+ .fde-stat-ovulation [data-icon] {
240
+ background: #db2777;
241
+ color: #fff;
233
242
  }
234
243
 
235
- .fertile-days-estimator-stat-dot-fertile {
236
- background: var(--fde-fertile-text);
237
- opacity: 0.6;
244
+ .fde-stat-fertile svg,
245
+ .fde-stat-fertile [data-icon] {
246
+ background: #fdf2f8;
247
+ color: #db2777;
248
+ border: 1px solid #f9a8d4;
238
249
  }
239
250
 
240
- .fertile-days-estimator-stat-dot-period {
241
- background: var(--fde-period-text);
251
+ .fde-stat-period svg,
252
+ .fde-stat-period [data-icon] {
253
+ background: #ffe4e6;
254
+ color: #be123c;
255
+ border: 1px solid #fca5a5;
242
256
  }
243
257
 
244
- .fertile-days-estimator-stat-info {
258
+ .fde-stat-info {
245
259
  display: flex;
246
260
  flex-direction: column;
247
- gap: 0.125rem;
248
261
  }
249
262
 
250
- .fertile-days-estimator-stat-label {
263
+ .fde-stat-label {
251
264
  font-size: 0.75rem;
252
- color: var(--fde-text-muted);
253
- font-weight: 500;
265
+ font-weight: 700;
266
+ text-transform: uppercase;
267
+ color: #64748b;
254
268
  }
255
269
 
256
- .fertile-days-estimator-stat-value {
257
- font-size: 0.875rem;
258
- font-weight: 700;
259
- color: var(--fde-text);
270
+ .fde-stat-value {
271
+ font-size: 1.1rem;
272
+ font-weight: 900;
273
+ color: #1e293b;
260
274
  }
261
275
 
262
- .fertile-days-estimator-content {
276
+ /* Main content */
277
+ .fde-main {
278
+ background: #fff;
279
+ padding: 2.5rem;
263
280
  display: flex;
264
281
  flex-direction: column;
265
- gap: 1rem;
282
+ gap: 2rem;
266
283
  }
267
284
 
268
- .fertile-days-estimator-calendar {
269
- background: var(--fde-bg);
270
- border: 1px solid var(--fde-border);
271
- border-radius: 1rem;
272
- padding: 1.25rem;
273
- display: flex;
274
- flex-direction: column;
275
- gap: 1rem;
285
+ .fde-calendar-wrapper {
286
+ background: #fff;
276
287
  }
277
288
 
278
- .fertile-days-estimator-calendar-nav {
289
+ /* Shared calendar nav */
290
+ .fde-cal-nav {
279
291
  display: flex;
280
- align-items: center;
281
292
  justify-content: space-between;
293
+ align-items: center;
294
+ margin-bottom: 2rem;
282
295
  }
283
296
 
284
- .fertile-days-estimator-month-label {
285
- font-size: 0.9375rem;
286
- font-weight: 700;
287
- color: var(--fde-text);
297
+ .fde-cal-nav h3 {
298
+ font-size: 1.5rem;
299
+ font-weight: 900;
300
+ color: #111827;
301
+ margin: 0;
288
302
  text-transform: capitalize;
289
303
  }
290
304
 
291
- .fertile-days-estimator-nav-buttons {
305
+ .fde-nav-buttons {
292
306
  display: flex;
293
- gap: 0.375rem;
307
+ gap: 0.5rem;
294
308
  }
295
309
 
296
- .fertile-days-estimator-nav-btn {
297
- display: inline-flex;
310
+ .fde-nav-btn {
311
+ width: 40px;
312
+ height: 40px;
313
+ border-radius: 10px;
314
+ border: 1px solid #e5e7eb;
315
+ background: #fff;
316
+ display: flex;
298
317
  align-items: center;
299
318
  justify-content: center;
300
- width: 2rem;
301
- height: 2rem;
302
- border-radius: 50%;
303
- background: var(--fde-primary-soft);
304
- color: var(--fde-primary);
305
- border: none;
306
319
  cursor: pointer;
307
- transition: background 0.15s;
320
+ transition: 0.2s all ease;
321
+ color: #374151;
308
322
  }
309
323
 
310
- .fertile-days-estimator-nav-btn:hover {
311
- background: var(--fde-border-pink);
324
+ .fde-nav-btn:hover {
325
+ background: #f3f4f6;
326
+ border-color: #d1d5db;
312
327
  }
313
328
 
314
- .fertile-days-estimator-calendar-grid {
329
+ /* Calendar grid */
330
+ .fde-grid {
315
331
  display: grid;
316
332
  grid-template-columns: repeat(7, 1fr);
317
- gap: 0.25rem;
333
+ gap: 8px;
318
334
  }
319
335
 
320
- .fertile-days-estimator-day-header {
336
+ .fde-day-header {
321
337
  text-align: center;
322
- font-size: 0.75rem;
323
- font-weight: 700;
324
- color: var(--fde-text-muted);
325
- padding: 0.25rem 0;
338
+ font-size: 0.8rem;
339
+ font-weight: 800;
340
+ color: #9ca3af;
341
+ text-transform: uppercase;
342
+ padding-bottom: 1rem;
326
343
  }
327
344
 
328
- .fertile-days-estimator-day {
345
+ .fde-day {
346
+ aspect-ratio: 1;
329
347
  display: flex;
330
348
  align-items: center;
331
349
  justify-content: center;
332
- aspect-ratio: 1;
333
- border-radius: 50%;
334
- font-size: 0.8125rem;
335
- font-weight: 500;
336
- color: var(--fde-calendar-day);
337
- background: transparent;
338
- border: none;
350
+ font-size: 1rem;
351
+ font-weight: 700;
352
+ border-radius: 14px;
353
+ background: #fff;
354
+ color: #374151;
339
355
  cursor: pointer;
340
- transition: background 0.1s, color 0.1s;
356
+ transition: 0.2s all ease;
357
+ border: 1px solid #f3f4f6;
341
358
  }
342
359
 
343
- .fertile-days-estimator-day:hover {
344
- background: var(--fde-primary-soft);
345
- color: var(--fde-primary);
360
+ .fde-day:hover:not(.fde-day-empty) {
361
+ border-color: #db2777;
362
+ background: #fdf2f8;
346
363
  }
347
364
 
348
- .fertile-days-estimator-day-empty {
349
- pointer-events: none;
365
+ .fde-day-empty {
366
+ background: transparent;
367
+ border: none;
368
+ cursor: default;
350
369
  }
351
370
 
352
- .fertile-days-estimator-day-today {
353
- border: 2px solid var(--fde-primary);
354
- color: var(--fde-primary);
371
+ .fde-day-selected {
372
+ background: #be123c;
373
+ color: #fff;
374
+ border: none;
375
+ box-shadow: 0 8px 20px rgba(190, 18, 60, 0.3);
355
376
  }
356
377
 
357
- .fertile-days-estimator-day-selected {
358
- background: var(--fde-period-bg);
359
- color: var(--fde-period-text);
360
- font-weight: 700;
378
+ .fde-day-period {
379
+ background: #ffe4e6;
380
+ color: #be123c;
381
+ border: none;
361
382
  }
362
383
 
363
- .fertile-days-estimator-day-fertile {
364
- background: var(--fde-fertile-bg);
365
- color: var(--fde-fertile-text);
384
+ .fde-day-fertile {
385
+ background: #fdf2f8;
386
+ color: #db2777;
387
+ border: none;
366
388
  }
367
389
 
368
- .fertile-days-estimator-day-ovulation {
369
- background: var(--fde-primary);
370
- color: var(--fde-primary-on);
371
- font-weight: 700;
390
+ .fde-day-ovulation {
391
+ background: #db2777;
392
+ color: #fff;
393
+ box-shadow: 0 8px 20px rgba(219, 39, 119, 0.3);
394
+ border: none;
372
395
  }
373
396
 
374
- .fertile-days-estimator-day-period {
375
- background: var(--fde-period-bg);
376
- color: var(--fde-period-text);
397
+ .fde-day-today {
398
+ border: 2px solid #111827;
377
399
  }
378
400
 
379
- .fertile-days-estimator-legend {
401
+ /* Legend */
402
+ .fde-legend {
380
403
  display: flex;
381
- flex-wrap: wrap;
382
- gap: 0.75rem;
383
- background: var(--fde-legend-bg);
384
- border-radius: 0.75rem;
385
- padding: 0.875rem 1rem;
404
+ justify-content: center;
405
+ gap: 2rem;
406
+ margin-top: 2rem;
407
+ padding: 1.25rem;
408
+ background: #f9fafb;
409
+ border-radius: 20px;
386
410
  }
387
411
 
388
- .fertile-days-estimator-legend-item {
412
+ .fde-legend-item {
389
413
  display: flex;
390
414
  align-items: center;
391
- gap: 0.375rem;
392
- font-size: 0.75rem;
393
- color: var(--fde-legend-text);
415
+ gap: 0.5rem;
416
+ font-size: 0.85rem;
417
+ font-weight: 700;
418
+ color: #4b5563;
394
419
  }
395
420
 
396
- .fertile-days-estimator-legend-dot {
397
- width: 0.75rem;
398
- height: 0.75rem;
399
- border-radius: 50%;
400
- flex-shrink: 0;
421
+ .fde-legend-dot {
422
+ width: 12px;
423
+ height: 12px;
424
+ border-radius: 4px;
425
+ }
426
+
427
+ .fde-dot-period { background: #ffe4e6; }
428
+ .fde-dot-fertile { background: #fdf2f8; }
429
+ .fde-dot-ovulation { background: #db2777; }
430
+ .fde-dot-selected { background: #be123c; }
431
+
432
+ /* Dark mode */
433
+ .dark .fde-container {
434
+ background: #18181b;
435
+ border-color: #27272a;
436
+ box-shadow: 0 25px 70px rgba(0, 0, 0, 0.5);
437
+ color: #fff;
438
+ }
439
+
440
+ .dark .fde-sidebar {
441
+ background: #111113;
442
+ border-right-color: #27272a;
401
443
  }
402
444
 
403
- .fertile-days-estimator-legend-dot-selected {
404
- background: var(--fde-period-bg);
405
- border: 2px solid var(--fde-period-text);
445
+ .dark .fde-main { background: #18181b; }
446
+
447
+ .dark .fde-sidebar-header h2 { color: #f472b6; }
448
+ .dark .fde-sidebar-header p { color: #f9a8d4; }
449
+
450
+ .dark .fde-input-card {
451
+ background: #1e1e21;
452
+ border-color: #27272a;
406
453
  }
407
454
 
408
- .fertile-days-estimator-legend-dot-period {
409
- background: var(--fde-period-bg);
455
+ .dark .fde-stat {
456
+ background: #1e1e21;
457
+ border-color: #27272a;
410
458
  }
411
459
 
412
- .fertile-days-estimator-legend-dot-fertile {
413
- background: var(--fde-fertile-bg);
414
- border: 2px solid var(--fde-fertile-text);
460
+ .dark .fde-stat-value { color: #fff; }
461
+ .dark .fde-cal-nav h3 { color: #fff; }
462
+
463
+ .dark .fde-day {
464
+ background: #1e1e21;
465
+ border-color: #27272a;
466
+ color: #e5e7eb;
467
+ }
468
+
469
+ .dark .fde-day:hover:not(.fde-day-empty) { background: #27272a; }
470
+ .dark .fde-legend { background: #111113; }
471
+ .dark .fde-legend-item { color: #9ca3af; }
472
+
473
+ /* Responsive */
474
+ @media (max-width: 900px) {
475
+ .fde-layout { grid-template-columns: 1fr; }
476
+ .fde-sidebar {
477
+ border-right: none;
478
+ border-bottom: 1px solid #fbcfe8;
479
+ }
415
480
  }
416
481
 
417
- .fertile-days-estimator-legend-dot-ovulation {
418
- background: var(--fde-primary);
482
+ @media (max-width: 768px) {
483
+ .fde-container { border-radius: 1.5rem; }
484
+
485
+ .fde-step-indicator {
486
+ padding: 1rem;
487
+ gap: 1rem;
488
+ flex-wrap: wrap;
489
+ }
490
+
491
+ .fde-step-first {
492
+ padding: 2rem 1rem;
493
+ gap: 1.5rem;
494
+ }
495
+
496
+ .fde-calendar-card {
497
+ padding: 1rem;
498
+ border-radius: 1.5rem;
499
+ }
500
+
501
+ .fde-step-header h2 { font-size: 1.75rem; }
502
+ .fde-step-header p { font-size: 0.95rem; }
503
+
504
+ .fde-sidebar {
505
+ padding: 1.25rem;
506
+ gap: 1.5rem;
507
+ }
508
+
509
+ .fde-sidebar-header h2 { font-size: 1.25rem; }
510
+
511
+ .fde-main {
512
+ padding: 1.25rem;
513
+ gap: 1.25rem;
514
+ }
515
+
516
+ .fde-input-card {
517
+ padding: 1rem;
518
+ border-radius: 1rem;
519
+ }
520
+
521
+ .fde-cal-nav { margin-bottom: 1rem; }
522
+ .fde-cal-nav h3 { font-size: 1.2rem; }
523
+ .fde-nav-btn {
524
+ width: 32px;
525
+ height: 32px;
526
+ }
527
+
528
+ .fde-grid { gap: 4px; }
529
+
530
+ .fde-day-header {
531
+ padding-bottom: 0.5rem;
532
+ font-size: 0.7rem;
533
+ }
534
+
535
+ .fde-day {
536
+ font-size: 0.85rem;
537
+ border-radius: 8px;
538
+ }
539
+
540
+ .fde-legend {
541
+ flex-direction: column;
542
+ gap: 0.75rem;
543
+ padding: 1rem;
544
+ align-items: flex-start;
545
+ border-radius: 1rem;
546
+ }
547
+
548
+ .fde-stat {
549
+ padding: 1rem;
550
+ gap: 0.75rem;
551
+ flex-direction: column;
552
+ text-align: center;
553
+ align-items: center;
554
+ }
555
+
556
+ .fde-stat-info { align-items: center; }
419
557
  }