@jjlmoya/utils-finance 1.12.0 → 1.13.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 (26) hide show
  1. package/package.json +5 -3
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/tool/compoundInterest/component.astro +0 -376
  4. package/src/tool/compoundInterest/compound-interest-calculator.css +79 -0
  5. package/src/tool/courtFeeCalculator/component.astro +0 -237
  6. package/src/tool/courtFeeCalculator/spanish-court-fees-calculator.css +235 -0
  7. package/src/tool/debtSnowball/component.astro +0 -636
  8. package/src/tool/debtSnowball/debt-snowball-calculator.css +634 -0
  9. package/src/tool/fireCalculator/component.astro +0 -334
  10. package/src/tool/fireCalculator/four-percent-rule-fire-calculator.css +332 -0
  11. package/src/tool/ibanBicSwiftConverter/component.astro +0 -414
  12. package/src/tool/ibanBicSwiftConverter/iban-to-bic-swift-converter.css +412 -0
  13. package/src/tool/inflation/component.astro +0 -280
  14. package/src/tool/inflation/inflation-calculator-spain.css +278 -0
  15. package/src/tool/lateInterest/component.astro +0 -400
  16. package/src/tool/lateInterest/late-interest-calculator.css +398 -0
  17. package/src/tool/legalInterestRate/component.astro +0 -509
  18. package/src/tool/legalInterestRate/legal-interest-on-money-spain.css +507 -0
  19. package/src/tool/lotteryOptimizer/component.astro +0 -561
  20. package/src/tool/lotteryOptimizer/spain-lottery-optimizer.css +17 -0
  21. package/src/tool/mortgage/component.astro +0 -641
  22. package/src/tool/mortgage/mortgage-calculator.css +639 -0
  23. package/src/tool/percentageCalculator/component.astro +0 -336
  24. package/src/tool/percentageCalculator/percentage-calculator.css +289 -0
  25. package/src/tool/rentIncreaseCalculator/component.astro +0 -372
  26. package/src/tool/rentIncreaseCalculator/rent-increase-calculator.css +370 -0
@@ -0,0 +1,412 @@
1
+ :root {
2
+ --ibs-bg-card: #fff;
3
+ --ibs-border-card: #eef2f6;
4
+ --ibs-shadow-card: 0 4px 6px -1px rgba(0, 0, 0, 0.02), 0 20px 40px -8px rgba(0, 0, 0, 0.05);
5
+ --ibs-header-bg: linear-gradient(90deg, #6366f1, #a855f7);
6
+ --ibs-text-title: #0f172a;
7
+ --ibs-text-secondary: #64748b;
8
+ --ibs-text-primary: #1e293b;
9
+ --ibs-bg-input-section: #f8fafc;
10
+ --ibs-border-input-section: #f1f5f9;
11
+ --ibs-bg-input: #fff;
12
+ --ibs-text-input: #1e293b;
13
+ --ibs-border-input: transparent;
14
+ --ibs-focus-border: #6366f1;
15
+ --ibs-focus-ring: rgba(99, 102, 241, 0.15);
16
+ --ibs-icon-color: #6366f1;
17
+ --ibs-bg-button: #0f172a;
18
+ --ibs-text-button: #fff;
19
+ --ibs-bg-button-hover: #1e293b;
20
+ --ibs-bg-result: #fff;
21
+ --ibs-border-result: #eef2f6;
22
+ --ibs-text-result-value: #0f172a;
23
+ --ibs-text-result-label: #94a3b8;
24
+ --ibs-bg-bank-info: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
25
+ --ibs-border-bank-info: #e2e8f0;
26
+ --ibs-bg-error: #fef2f2;
27
+ --ibs-border-error: #fee2e2;
28
+ --ibs-text-error: #dc2626;
29
+ --ibs-bg-copy-btn: #f1f5f9;
30
+ --ibs-text-copy-btn: #64748b;
31
+ }
32
+
33
+ :global(.theme-dark) {
34
+ --ibs-bg-card: #0f172a;
35
+ --ibs-border-card: rgba(255, 255, 255, 0.05);
36
+ --ibs-text-title: #f8fafc;
37
+ --ibs-text-secondary: #94a3b8;
38
+ --ibs-text-primary: #f8fafc;
39
+ --ibs-bg-input-section: rgba(30, 41, 59, 0.5);
40
+ --ibs-border-input-section: rgba(255, 255, 255, 0.05);
41
+ --ibs-bg-input: #1e293b;
42
+ --ibs-text-input: #f8fafc;
43
+ --ibs-border-input: #334155;
44
+ --ibs-focus-border: #6366f1;
45
+ --ibs-focus-ring: rgba(99, 102, 241, 0.15);
46
+ --ibs-icon-color: #60a5fa;
47
+ --ibs-bg-button: #6366f1;
48
+ --ibs-text-button: #fff;
49
+ --ibs-bg-button-hover: #4f46e5;
50
+ --ibs-bg-result: #1e293b;
51
+ --ibs-border-result: rgba(255, 255, 255, 0.05);
52
+ --ibs-text-result-value: #f8fafc;
53
+ --ibs-text-result-label: #94a3b8;
54
+ --ibs-bg-bank-info: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
55
+ --ibs-border-bank-info: rgba(255, 255, 255, 0.05);
56
+ --ibs-bg-error: rgba(220, 38, 38, 0.1);
57
+ --ibs-border-error: rgba(220, 38, 38, 0.2);
58
+ --ibs-text-error: #fca5a5;
59
+ --ibs-bg-copy-btn: #0f172a;
60
+ --ibs-text-copy-btn: #94a3b8;
61
+ }
62
+
63
+ :global([data-theme='dark']) {
64
+ --ibs-bg-card: #0f172a;
65
+ --ibs-border-card: rgba(255, 255, 255, 0.05);
66
+ --ibs-text-title: #f8fafc;
67
+ --ibs-text-secondary: #94a3b8;
68
+ --ibs-text-primary: #f8fafc;
69
+ --ibs-bg-input-section: rgba(30, 41, 59, 0.5);
70
+ --ibs-border-input-section: rgba(255, 255, 255, 0.05);
71
+ --ibs-bg-input: #1e293b;
72
+ --ibs-text-input: #f8fafc;
73
+ --ibs-border-input: #334155;
74
+ --ibs-focus-border: #6366f1;
75
+ --ibs-focus-ring: rgba(99, 102, 241, 0.15);
76
+ --ibs-icon-color: #60a5fa;
77
+ --ibs-bg-button: #6366f1;
78
+ --ibs-text-button: #fff;
79
+ --ibs-bg-button-hover: #4f46e5;
80
+ --ibs-bg-result: #1e293b;
81
+ --ibs-border-result: rgba(255, 255, 255, 0.05);
82
+ --ibs-text-result-value: #f8fafc;
83
+ --ibs-text-result-label: #94a3b8;
84
+ --ibs-bg-bank-info: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
85
+ --ibs-border-bank-info: rgba(255, 255, 255, 0.05);
86
+ --ibs-bg-error: rgba(220, 38, 38, 0.1);
87
+ --ibs-border-error: rgba(220, 38, 38, 0.2);
88
+ --ibs-text-error: #fca5a5;
89
+ --ibs-bg-copy-btn: #0f172a;
90
+ --ibs-text-copy-btn: #94a3b8;
91
+ }
92
+
93
+ .ibs-container {
94
+ width: 100%;
95
+ max-width: 900px;
96
+ margin: 0 auto;
97
+ perspective: 1000px;
98
+ padding: 2rem 1rem;
99
+ }
100
+
101
+ .ibs-card {
102
+ background: var(--ibs-bg-card);
103
+ border: 1px solid var(--ibs-border-card);
104
+ border-radius: 32px;
105
+ padding: 3rem;
106
+ box-shadow: var(--ibs-shadow-card);
107
+ position: relative;
108
+ overflow: hidden;
109
+ color-scheme: light;
110
+ }
111
+
112
+ :global(.theme-dark) .ibs-card,
113
+ :global([data-theme='dark']) .ibs-card {
114
+ color-scheme: dark;
115
+ }
116
+
117
+ .ibs-card::before {
118
+ content: '';
119
+ position: absolute;
120
+ top: 0;
121
+ left: 0;
122
+ right: 0;
123
+ height: 6px;
124
+ background: var(--ibs-header-bg);
125
+ }
126
+
127
+ .ibs-header {
128
+ text-align: left;
129
+ margin-bottom: 3rem;
130
+ }
131
+
132
+ .ibs-header h3 {
133
+ font-size: 2.25rem;
134
+ font-weight: 950;
135
+ color: var(--ibs-text-title);
136
+ letter-spacing: -0.04em;
137
+ margin-bottom: 0.75rem;
138
+ line-height: 1;
139
+ }
140
+
141
+ .ibs-header p {
142
+ color: var(--ibs-text-secondary);
143
+ font-size: 1.1rem;
144
+ max-width: 500px;
145
+ line-height: 1.6;
146
+ }
147
+
148
+ .ibs-input-section {
149
+ display: flex;
150
+ flex-direction: column;
151
+ gap: 2rem;
152
+ background: var(--ibs-bg-input-section);
153
+ padding: 2rem;
154
+ border-radius: 24px;
155
+ border: 1px solid var(--ibs-border-input-section);
156
+ }
157
+
158
+ .ibs-input-group {
159
+ display: flex;
160
+ flex-direction: column;
161
+ gap: 1rem;
162
+ }
163
+
164
+ .ibs-input-group label {
165
+ font-size: 0.75rem;
166
+ font-weight: 800;
167
+ color: var(--ibs-text-secondary);
168
+ text-transform: uppercase;
169
+ letter-spacing: 0.1em;
170
+ }
171
+
172
+ .ibs-input-wrapper {
173
+ position: relative;
174
+ display: flex;
175
+ align-items: center;
176
+ background: var(--ibs-bg-input);
177
+ border-radius: 20px;
178
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
179
+ border: 2px solid var(--ibs-border-input);
180
+ transition: all 0.3s ease;
181
+ }
182
+
183
+ .ibs-input-wrapper:focus-within {
184
+ border-color: var(--ibs-focus-border);
185
+ box-shadow: 0 0 0 4px var(--ibs-focus-ring);
186
+ }
187
+
188
+ .ibs-input-wrapper input {
189
+ width: 100%;
190
+ padding: 1.5rem;
191
+ border: none;
192
+ background: transparent;
193
+ font-size: 1.5rem;
194
+ font-weight: 800;
195
+ color: var(--ibs-text-input);
196
+ outline: none;
197
+ letter-spacing: 0.02em;
198
+ }
199
+
200
+ .ibs-input-wrapper input::placeholder {
201
+ color: var(--ibs-text-secondary);
202
+ opacity: 0.5;
203
+ }
204
+
205
+ .ibs-input-icon {
206
+ margin-right: 1.5rem;
207
+ font-size: 1.75rem;
208
+ opacity: 0.6;
209
+ flex-shrink: 0;
210
+ }
211
+
212
+ .ibs-btn-convert {
213
+ width: 100%;
214
+ padding: 1.25rem;
215
+ background: var(--ibs-bg-button);
216
+ color: var(--ibs-text-button);
217
+ border: none;
218
+ border-radius: 20px;
219
+ font-size: 1.1rem;
220
+ font-weight: 800;
221
+ cursor: pointer;
222
+ transition: all 0.3s ease;
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ gap: 0.75rem;
227
+ }
228
+
229
+ .ibs-btn-convert:hover {
230
+ background: var(--ibs-bg-button-hover);
231
+ transform: translateY(-2px);
232
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
233
+ }
234
+
235
+ .ibs-results-section {
236
+ margin-top: 3rem;
237
+ display: grid;
238
+ grid-template-columns: repeat(2, 1fr);
239
+ gap: 1.5rem;
240
+ animation: ibs-slide-up 0.5s ease-out;
241
+ }
242
+
243
+ :global(.ibs-results-section.ibs-hidden) {
244
+ display: none;
245
+ }
246
+
247
+ :global(.ibs-error-message.ibs-hidden) {
248
+ display: none;
249
+ }
250
+
251
+ :global(.ibs-btn-copy-success span[data-icon]) {
252
+ background-color: #10b981;
253
+ }
254
+
255
+ @keyframes ibs-slide-up {
256
+ from {
257
+ opacity: 0;
258
+ transform: translateY(20px);
259
+ }
260
+ to {
261
+ opacity: 1;
262
+ transform: translateY(0);
263
+ }
264
+ }
265
+
266
+ .ibs-result-card {
267
+ background: var(--ibs-bg-result);
268
+ border: 1px solid var(--ibs-border-result);
269
+ padding: 1.5rem 2rem;
270
+ border-radius: 24px;
271
+ display: flex;
272
+ flex-direction: column;
273
+ justify-content: center;
274
+ gap: 0.5rem;
275
+ position: relative;
276
+ transition: all 0.3s ease;
277
+ }
278
+
279
+ .ibs-result-card:hover {
280
+ border-color: var(--ibs-border-card);
281
+ box-shadow: 0 12px 24px -10px rgba(0, 0, 0, 0.05);
282
+ }
283
+
284
+ .ibs-result-label {
285
+ font-size: 0.7rem;
286
+ font-weight: 800;
287
+ color: var(--ibs-text-result-label);
288
+ text-transform: uppercase;
289
+ letter-spacing: 0.08em;
290
+ }
291
+
292
+ .ibs-result-value {
293
+ font-size: 1.5rem;
294
+ font-weight: 900;
295
+ color: var(--ibs-text-result-value);
296
+ letter-spacing: -0.02em;
297
+ overflow-wrap: break-word;
298
+ }
299
+
300
+ .ibs-btn-copy-result {
301
+ position: absolute;
302
+ top: 1rem;
303
+ right: 1rem;
304
+ cursor: pointer;
305
+ background: var(--ibs-bg-copy-btn);
306
+ border: none;
307
+ padding: 8px;
308
+ border-radius: 10px;
309
+ color: var(--ibs-text-copy-btn);
310
+ transition: all 0.2s;
311
+ display: flex;
312
+ font-size: 1.2rem;
313
+ }
314
+
315
+ .ibs-btn-copy-result:hover {
316
+ background: var(--ibs-focus-border);
317
+ color: #fff;
318
+ transform: scale(1.1);
319
+ }
320
+
321
+ .ibs-btn-copy-success {
322
+ background: #10b981;
323
+ }
324
+
325
+ .ibs-bank-info {
326
+ grid-column: span 2;
327
+ background: var(--ibs-bg-bank-info);
328
+ padding: 2rem;
329
+ border-radius: 24px;
330
+ display: flex;
331
+ align-items: center;
332
+ gap: 1.5rem;
333
+ border: 1px solid var(--ibs-border-bank-info);
334
+ }
335
+
336
+ .ibs-bank-logo-placeholder {
337
+ width: 64px;
338
+ height: 64px;
339
+ background: var(--ibs-bg-input);
340
+ border-radius: 20px;
341
+ display: flex;
342
+ align-items: center;
343
+ justify-content: center;
344
+ border: 1px solid var(--ibs-border-result);
345
+ font-size: 2rem;
346
+ box-shadow: 0 8px 16px -4px rgba(0, 0, 0, 0.04);
347
+ flex-shrink: 0;
348
+ }
349
+
350
+ .ibs-bank-details {
351
+ flex: 1;
352
+ }
353
+
354
+ .ibs-bank-name-label {
355
+ font-size: 0.75rem;
356
+ font-weight: 800;
357
+ color: var(--ibs-text-secondary);
358
+ text-transform: uppercase;
359
+ margin-bottom: 0.25rem;
360
+ }
361
+
362
+ .ibs-bank-name-value {
363
+ font-size: 1.5rem;
364
+ font-weight: 900;
365
+ color: var(--ibs-text-result-value);
366
+ letter-spacing: -0.03em;
367
+ }
368
+
369
+ .ibs-error-message {
370
+ grid-column: span 2;
371
+ background: var(--ibs-bg-error);
372
+ border: 1px solid var(--ibs-border-error);
373
+ padding: 1.25rem;
374
+ border-radius: 20px;
375
+ color: var(--ibs-text-error);
376
+ font-size: 1rem;
377
+ font-weight: 700;
378
+ display: flex;
379
+ align-items: center;
380
+ gap: 0.75rem;
381
+ }
382
+
383
+ @media (max-width: 768px) {
384
+ .ibs-card {
385
+ padding: 2rem;
386
+ }
387
+
388
+ .ibs-header h3 {
389
+ font-size: 1.75rem;
390
+ }
391
+
392
+ .ibs-input-wrapper input {
393
+ font-size: 1.2rem;
394
+ }
395
+ }
396
+
397
+ @media (max-width: 640px) {
398
+ .ibs-results-section {
399
+ grid-template-columns: 1fr;
400
+ }
401
+
402
+ .ibs-bank-info {
403
+ grid-column: span 1;
404
+ flex-direction: column;
405
+ text-align: center;
406
+ gap: 1rem;
407
+ }
408
+
409
+ .ibs-error-message {
410
+ grid-column: span 1;
411
+ }
412
+ }
@@ -119,283 +119,3 @@ const availableYears = InflationCalculator.getAvailableYears();
119
119
  updateInflation();
120
120
  </script>
121
121
 
122
- <style is:global>
123
- :root {
124
- --inflation-color-primary: #f59e0b;
125
- --inflation-color-primary-dark: #d97706;
126
- --inflation-color-primary-light: #fcd34d;
127
- --inflation-color-primary-extra-light: #fef3c7;
128
- --inflation-color-danger: #ef4444;
129
- --inflation-color-danger-light: #fee2e2;
130
- --inflation-color-text-primary: #1f2937;
131
- --inflation-color-text-secondary: #6b7280;
132
- --inflation-color-text-light: #9ca3af;
133
- --inflation-color-bg-primary: #fff;
134
- --inflation-color-bg-secondary: #f9fafb;
135
- --inflation-color-border: #e5e7eb;
136
- }
137
-
138
- .theme-dark,
139
- [data-theme='dark'] {
140
- --inflation-color-primary: #fbbf24;
141
- --inflation-color-primary-dark: #f59e0b;
142
- --inflation-color-primary-light: #b45309;
143
- --inflation-color-primary-extra-light: #78350f;
144
- --inflation-color-danger: #f87171;
145
- --inflation-color-danger-light: #7f1d1d;
146
- --inflation-color-text-primary: #f3f4f6;
147
- --inflation-color-text-secondary: #d1d5db;
148
- --inflation-color-text-light: #9ca3af;
149
- --inflation-color-bg-primary: #1f2937;
150
- --inflation-color-bg-secondary: #111827;
151
- --inflation-color-border: #374151;
152
- }
153
-
154
- @media (prefers-color-scheme: dark) {
155
- :root {
156
- --inflation-color-primary: #fbbf24;
157
- --inflation-color-primary-dark: #f59e0b;
158
- --inflation-color-primary-light: #b45309;
159
- --inflation-color-primary-extra-light: #78350f;
160
- --inflation-color-danger: #f87171;
161
- --inflation-color-danger-light: #7f1d1d;
162
- --inflation-color-text-primary: #f3f4f6;
163
- --inflation-color-text-secondary: #d1d5db;
164
- --inflation-color-text-light: #9ca3af;
165
- --inflation-color-bg-primary: #1f2937;
166
- --inflation-color-bg-secondary: #111827;
167
- --inflation-color-border: #374151;
168
- }
169
- }
170
-
171
- .inflation-container {
172
- background-color: var(--inflation-color-bg-primary);
173
- border-radius: 1.5rem;
174
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
175
- border: 1px solid var(--inflation-color-border);
176
- overflow: hidden;
177
- }
178
-
179
- .inflation-header {
180
- padding: 1.5rem;
181
- border-bottom: 1px solid var(--inflation-color-border);
182
- background-color: rgba(245, 158, 11, 0.05);
183
- }
184
-
185
- .inflation-header-title-group {
186
- display: flex;
187
- align-items: center;
188
- gap: 0.75rem;
189
- }
190
-
191
- .inflation-header-icon {
192
- width: 2.5rem;
193
- height: 2.5rem;
194
- padding: 0.625rem;
195
- background-color: rgba(245, 158, 11, 0.1);
196
- border-radius: 0.75rem;
197
- color: var(--inflation-color-primary);
198
- flex-shrink: 0;
199
- }
200
-
201
- .inflation-header-icon svg {
202
- width: 100%;
203
- height: 100%;
204
- }
205
-
206
- .inflation-header-title {
207
- font-size: 1.25rem;
208
- font-weight: 700;
209
- color: var(--inflation-color-text-primary);
210
- margin: 0;
211
- }
212
-
213
- .inflation-content {
214
- padding: 2rem;
215
- }
216
-
217
- .inflation-description {
218
- font-size: 0.875rem;
219
- color: var(--inflation-color-text-secondary);
220
- margin: 0 0 2rem;
221
- text-align: center;
222
- }
223
-
224
- .inflation-grid {
225
- display: flex;
226
- flex-direction: column;
227
- gap: 2rem;
228
- margin-bottom: 2rem;
229
- }
230
-
231
- @media (min-width: 768px) {
232
- .inflation-grid {
233
- flex-direction: row;
234
- align-items: center;
235
- gap: 1.5rem;
236
- }
237
- }
238
-
239
- .inflation-panel {
240
- flex: 1;
241
- padding: 2rem;
242
- border-radius: 1.5rem;
243
- border: 2px solid var(--inflation-color-border);
244
- background-color: var(--inflation-color-bg-secondary);
245
- }
246
-
247
- .inflation-panel-left {
248
- border-top: 4px solid var(--inflation-color-border);
249
- }
250
-
251
- .inflation-panel-right {
252
- background-color: rgba(245, 158, 11, 0.05);
253
- border-color: rgba(245, 158, 11, 0.2);
254
- border-top: 4px solid var(--inflation-color-primary);
255
- }
256
-
257
- .inflation-label {
258
- display: block;
259
- font-size: 0.75rem;
260
- font-weight: 700;
261
- color: var(--inflation-color-text-light);
262
- text-transform: uppercase;
263
- letter-spacing: 0.05em;
264
- margin-bottom: 0.75rem;
265
- }
266
-
267
- .inflation-input-wrapper {
268
- position: relative;
269
- display: flex;
270
- align-items: center;
271
- }
272
-
273
- .inflation-input {
274
- width: 100%;
275
- padding: 1rem;
276
- background-color: var(--inflation-color-bg-primary);
277
- border: 2px solid var(--inflation-color-border);
278
- border-radius: 0.75rem;
279
- font-size: 1.875rem;
280
- font-weight: 700;
281
- color: var(--inflation-color-text-primary);
282
- text-align: center;
283
- transition: all 0.2s ease;
284
- }
285
-
286
- .inflation-input:focus {
287
- border-color: var(--inflation-color-primary);
288
- outline: none;
289
- }
290
-
291
- .inflation-currency {
292
- position: absolute;
293
- right: 1rem;
294
- color: var(--inflation-color-text-light);
295
- font-size: 0.875rem;
296
- }
297
-
298
- .inflation-select {
299
- width: 100%;
300
- padding: 0.875rem 1rem;
301
- background-color: var(--inflation-color-bg-primary);
302
- border: 2px solid var(--inflation-color-border);
303
- border-radius: 0.75rem;
304
- font-size: 1.125rem;
305
- font-weight: 700;
306
- color: var(--inflation-color-text-primary);
307
- cursor: pointer;
308
- transition: all 0.2s ease;
309
- }
310
-
311
- .inflation-select:focus {
312
- border-color: var(--inflation-color-primary);
313
- outline: none;
314
- }
315
-
316
- .inflation-select:hover {
317
- border-color: var(--inflation-color-primary);
318
- }
319
-
320
- .inflation-arrow {
321
- display: flex;
322
- align-items: center;
323
- justify-content: center;
324
- color: var(--inflation-color-primary);
325
- flex-shrink: 0;
326
- }
327
-
328
- .inflation-arrow svg {
329
- width: 2rem;
330
- height: 2rem;
331
- }
332
-
333
- @media (max-width: 767px) {
334
- .inflation-arrow {
335
- transform: rotate(90deg);
336
- margin: 1rem 0;
337
- }
338
- }
339
-
340
- .inflation-result-wrapper {
341
- display: flex;
342
- align-items: center;
343
- justify-content: center;
344
- min-height: 100px;
345
- }
346
-
347
- .inflation-result {
348
- font-size: 2.25rem;
349
- font-weight: 700;
350
- color: var(--inflation-color-primary);
351
- text-align: center;
352
- }
353
-
354
- .inflation-year-badge {
355
- text-align: center;
356
- display: inline-block;
357
- width: 100%;
358
- padding: 0.5rem 1rem;
359
- background-color: var(--inflation-color-bg-primary);
360
- border: 1px solid var(--inflation-color-border);
361
- border-radius: 0.75rem;
362
- font-size: 0.875rem;
363
- font-weight: 700;
364
- color: var(--inflation-color-text-secondary);
365
- margin-top: 1rem;
366
- }
367
-
368
- .inflation-stat {
369
- text-align: center;
370
- animation: fade-in-up 0.7s ease 0.15s both;
371
- }
372
-
373
- @keyframes fade-in-up {
374
- from {
375
- opacity: 0;
376
- transform: translateY(1rem);
377
- }
378
- to {
379
- opacity: 1;
380
- transform: translateY(0);
381
- }
382
- }
383
-
384
- .inflation-stat-badge {
385
- display: inline-flex;
386
- align-items: center;
387
- gap: 0.5rem;
388
- padding: 0.75rem 1.5rem;
389
- background-color: var(--inflation-color-danger-light);
390
- color: var(--inflation-color-danger);
391
- border-radius: 1.5rem;
392
- font-weight: 700;
393
- font-size: 1.125rem;
394
- border: 1px solid var(--inflation-color-danger);
395
- }
396
-
397
- .inflation-stat-badge svg {
398
- width: 1.25rem;
399
- height: 1.25rem;
400
- }
401
- </style>