@jjlmoya/utils-finance 1.30.0 → 1.31.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 (211) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/fr.ts +159 -159
  3. package/src/category/i18n/ru.ts +158 -158
  4. package/src/category/index.ts +39 -38
  5. package/src/category/seo.astro +1 -1
  6. package/src/components/PreviewNavSidebar.astro +1 -1
  7. package/src/components/PreviewToolbar.astro +1 -1
  8. package/src/data.ts +1 -1
  9. package/src/entries.ts +4 -1
  10. package/src/env.d.ts +1 -1
  11. package/src/index.ts +1 -0
  12. package/src/layouts/PreviewLayout.astro +113 -113
  13. package/src/pages/index.astro +1 -1
  14. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  15. package/src/tests/faq_count.test.ts +1 -1
  16. package/src/tests/locale_completeness.test.ts +2 -2
  17. package/src/tests/mocks/astro_mock.js +1 -1
  18. package/src/tests/no_h1_in_components.test.ts +1 -1
  19. package/src/tests/script_density.test.ts +94 -94
  20. package/src/tests/seo_length.test.ts +23 -23
  21. package/src/tests/seo_translation_completeness.test.ts +69 -0
  22. package/src/tests/seo_wellformed_export.test.ts +65 -0
  23. package/src/tests/tool_validation.test.ts +17 -17
  24. package/src/tool/compoundInterest/compound-interest-calculator.css +236 -236
  25. package/src/tool/compoundInterest/entry.ts +32 -32
  26. package/src/tool/compoundInterest/i18n/de.ts +195 -195
  27. package/src/tool/compoundInterest/i18n/fr.ts +195 -195
  28. package/src/tool/compoundInterest/i18n/it.ts +195 -195
  29. package/src/tool/compoundInterest/i18n/pl.ts +194 -194
  30. package/src/tool/compoundInterest/i18n/ru.ts +195 -195
  31. package/src/tool/compoundInterest/i18n/tr.ts +195 -195
  32. package/src/tool/compoundInterest/i18n/zh.ts +189 -189
  33. package/src/tool/compoundInterest/seo.astro +15 -15
  34. package/src/tool/courtFeeCalculator/i18n/it.ts +158 -158
  35. package/src/tool/courtFeeCalculator/i18n/ru.ts +158 -158
  36. package/src/tool/courtFeeCalculator/i18n/tr.ts +158 -158
  37. package/src/tool/courtFeeCalculator/seo.astro +15 -15
  38. package/src/tool/courtFeeCalculator/spanish-court-fees-calculator.css +197 -197
  39. package/src/tool/debtSnowball/bibliography.ts +12 -12
  40. package/src/tool/debtSnowball/i18n/de.ts +16 -16
  41. package/src/tool/debtSnowball/i18n/id.ts +16 -16
  42. package/src/tool/debtSnowball/i18n/it.ts +168 -168
  43. package/src/tool/debtSnowball/i18n/nl.ts +16 -16
  44. package/src/tool/debtSnowball/i18n/pl.ts +168 -168
  45. package/src/tool/debtSnowball/i18n/pt.ts +1 -1
  46. package/src/tool/debtSnowball/i18n/ru.ts +1 -1
  47. package/src/tool/debtSnowball/i18n/sv.ts +22 -29
  48. package/src/tool/debtSnowball/i18n/tr.ts +168 -168
  49. package/src/tool/debtSnowball/i18n/zh.ts +168 -168
  50. package/src/tool/debtSnowball/seo.astro +15 -15
  51. package/src/tool/dividendYield/bibliography.astro +14 -0
  52. package/src/tool/dividendYield/bibliography.ts +12 -0
  53. package/src/tool/dividendYield/component.astro +83 -0
  54. package/src/tool/dividendYield/controller.ts +85 -0
  55. package/src/tool/dividendYield/dividend-yield-calculator.css +352 -0
  56. package/src/tool/dividendYield/dom-views.ts +58 -0
  57. package/src/tool/dividendYield/entry.ts +29 -0
  58. package/src/tool/dividendYield/evaluator.ts +16 -0
  59. package/src/tool/dividendYield/i18n/de.ts +53 -0
  60. package/src/tool/dividendYield/i18n/en.ts +138 -0
  61. package/src/tool/dividendYield/i18n/es.ts +49 -0
  62. package/src/tool/dividendYield/i18n/fr.ts +49 -0
  63. package/src/tool/dividendYield/i18n/id.ts +49 -0
  64. package/src/tool/dividendYield/i18n/it.ts +49 -0
  65. package/src/tool/dividendYield/i18n/ja.ts +49 -0
  66. package/src/tool/dividendYield/i18n/ko.ts +25 -0
  67. package/src/tool/dividendYield/i18n/nl.ts +25 -0
  68. package/src/tool/dividendYield/i18n/pl.ts +25 -0
  69. package/src/tool/dividendYield/i18n/pt.ts +25 -0
  70. package/src/tool/dividendYield/i18n/ru.ts +25 -0
  71. package/src/tool/dividendYield/i18n/sv.ts +25 -0
  72. package/src/tool/dividendYield/i18n/tr.ts +25 -0
  73. package/src/tool/dividendYield/i18n/zh.ts +25 -0
  74. package/src/tool/dividendYield/index.ts +11 -0
  75. package/src/tool/dividendYield/logic.test.ts +73 -0
  76. package/src/tool/dividendYield/logic.ts +55 -0
  77. package/src/tool/dividendYield/seo.astro +14 -0
  78. package/src/tool/dividendYield/storage.ts +24 -0
  79. package/src/tool/dividendYield/ui.ts +33 -0
  80. package/src/tool/financialFreedom/financial-freedom-calculator.css +311 -311
  81. package/src/tool/financialFreedom/i18n/en.ts +182 -182
  82. package/src/tool/financialFreedom/i18n/fr.ts +128 -128
  83. package/src/tool/financialFreedom/i18n/id.ts +24 -7
  84. package/src/tool/financialFreedom/i18n/it.ts +24 -7
  85. package/src/tool/financialFreedom/i18n/ja.ts +1 -1
  86. package/src/tool/financialFreedom/i18n/nl.ts +24 -7
  87. package/src/tool/financialFreedom/i18n/pl.ts +24 -7
  88. package/src/tool/financialFreedom/i18n/pt.ts +24 -7
  89. package/src/tool/financialFreedom/i18n/ru.ts +128 -128
  90. package/src/tool/financialFreedom/i18n/sv.ts +1 -1
  91. package/src/tool/financialFreedom/i18n/tr.ts +2 -2
  92. package/src/tool/financialFreedom/i18n/zh.ts +128 -128
  93. package/src/tool/fireCalculator/i18n/it.ts +241 -241
  94. package/src/tool/fireCalculator/i18n/ru.ts +241 -241
  95. package/src/tool/fireCalculator/i18n/tr.ts +241 -241
  96. package/src/tool/fireCalculator/i18n/zh.ts +241 -241
  97. package/src/tool/fireCalculator/seo.astro +15 -15
  98. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +151 -151
  99. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +118 -118
  100. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +118 -118
  101. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +118 -118
  102. package/src/tool/ibanBicSwiftConverter/iban-to-bic-swift-converter.css +366 -366
  103. package/src/tool/ibanBicSwiftConverter/seo.astro +15 -15
  104. package/src/tool/inflation/bibliography.ts +20 -20
  105. package/src/tool/inflation/entry.ts +32 -32
  106. package/src/tool/inflation/i18n/de.ts +284 -284
  107. package/src/tool/inflation/i18n/fr.ts +284 -284
  108. package/src/tool/inflation/i18n/it.ts +284 -284
  109. package/src/tool/inflation/i18n/nl.ts +284 -284
  110. package/src/tool/inflation/i18n/pl.ts +284 -284
  111. package/src/tool/inflation/i18n/pt.ts +284 -284
  112. package/src/tool/inflation/i18n/ru.ts +284 -284
  113. package/src/tool/inflation/i18n/sv.ts +284 -284
  114. package/src/tool/inflation/i18n/tr.ts +284 -284
  115. package/src/tool/inflation/i18n/zh.ts +284 -284
  116. package/src/tool/inflation/seo.astro +15 -15
  117. package/src/tool/lateInterest/bibliography.ts +16 -16
  118. package/src/tool/lateInterest/entry.ts +32 -32
  119. package/src/tool/lateInterest/i18n/de.ts +213 -213
  120. package/src/tool/lateInterest/i18n/es.ts +213 -213
  121. package/src/tool/lateInterest/i18n/it.ts +213 -213
  122. package/src/tool/lateInterest/i18n/nl.ts +213 -213
  123. package/src/tool/lateInterest/i18n/pl.ts +213 -213
  124. package/src/tool/lateInterest/i18n/pt.ts +213 -213
  125. package/src/tool/lateInterest/i18n/ru.ts +213 -213
  126. package/src/tool/lateInterest/i18n/sv.ts +213 -213
  127. package/src/tool/lateInterest/i18n/tr.ts +213 -213
  128. package/src/tool/lateInterest/i18n/zh.ts +213 -213
  129. package/src/tool/lateInterest/seo.astro +15 -15
  130. package/src/tool/legalInterestRate/i18n/it.ts +129 -129
  131. package/src/tool/legalInterestRate/i18n/ru.ts +129 -129
  132. package/src/tool/legalInterestRate/i18n/tr.ts +128 -121
  133. package/src/tool/legalInterestRate/i18n/zh.ts +11 -4
  134. package/src/tool/legalInterestRate/seo.astro +15 -15
  135. package/src/tool/lotteryOptimizer/i18n/it.ts +163 -163
  136. package/src/tool/lotteryOptimizer/i18n/pl.ts +163 -163
  137. package/src/tool/lotteryOptimizer/i18n/ru.ts +163 -163
  138. package/src/tool/lotteryOptimizer/i18n/tr.ts +163 -163
  139. package/src/tool/lotteryOptimizer/i18n/zh.ts +162 -155
  140. package/src/tool/lotteryOptimizer/seo.astro +15 -15
  141. package/src/tool/mortgage/bibliography.ts +20 -20
  142. package/src/tool/mortgage/entry.ts +32 -32
  143. package/src/tool/mortgage/i18n/de.ts +210 -210
  144. package/src/tool/mortgage/i18n/es.ts +210 -210
  145. package/src/tool/mortgage/i18n/fr.ts +210 -210
  146. package/src/tool/mortgage/i18n/id.ts +210 -210
  147. package/src/tool/mortgage/i18n/it.ts +210 -210
  148. package/src/tool/mortgage/i18n/nl.ts +210 -210
  149. package/src/tool/mortgage/i18n/pl.ts +210 -210
  150. package/src/tool/mortgage/i18n/ru.ts +210 -210
  151. package/src/tool/mortgage/i18n/tr.ts +210 -210
  152. package/src/tool/mortgage/i18n/zh.ts +210 -210
  153. package/src/tool/mortgage/mortgage-calculator.css +595 -595
  154. package/src/tool/mortgage/seo.astro +15 -15
  155. package/src/tool/percentageCalculator/bibliography.ts +16 -16
  156. package/src/tool/percentageCalculator/entry.ts +32 -32
  157. package/src/tool/percentageCalculator/i18n/de.ts +220 -220
  158. package/src/tool/percentageCalculator/i18n/en.ts +220 -220
  159. package/src/tool/percentageCalculator/i18n/es.ts +220 -220
  160. package/src/tool/percentageCalculator/i18n/fr.ts +220 -220
  161. package/src/tool/percentageCalculator/i18n/it.ts +220 -220
  162. package/src/tool/percentageCalculator/i18n/pl.ts +220 -220
  163. package/src/tool/percentageCalculator/i18n/ru.ts +220 -220
  164. package/src/tool/percentageCalculator/i18n/tr.ts +220 -220
  165. package/src/tool/percentageCalculator/i18n/zh.ts +220 -220
  166. package/src/tool/percentageCalculator/seo.astro +15 -15
  167. package/src/tool/profitability/i18n/de.ts +24 -7
  168. package/src/tool/profitability/i18n/fr.ts +121 -104
  169. package/src/tool/profitability/i18n/id.ts +2 -2
  170. package/src/tool/profitability/i18n/it.ts +24 -7
  171. package/src/tool/profitability/i18n/ja.ts +1 -1
  172. package/src/tool/profitability/i18n/nl.ts +24 -7
  173. package/src/tool/profitability/i18n/pl.ts +1 -1
  174. package/src/tool/profitability/i18n/pt.ts +24 -7
  175. package/src/tool/profitability/i18n/ru.ts +118 -118
  176. package/src/tool/profitability/i18n/sv.ts +1 -1
  177. package/src/tool/profitability/i18n/tr.ts +1 -1
  178. package/src/tool/profitability/i18n/zh.ts +118 -118
  179. package/src/tool/profitability/profitability-calculator.css +229 -229
  180. package/src/tool/rentIncreaseCalculator/i18n/it.ts +125 -125
  181. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +125 -125
  182. package/src/tool/rentIncreaseCalculator/rent-increase-calculator.css +326 -326
  183. package/src/tool/rentIncreaseCalculator/seo.astro +15 -15
  184. package/src/tool/revolvingCardCalculator/i18n/de.ts +38 -20
  185. package/src/tool/revolvingCardCalculator/i18n/es.ts +19 -18
  186. package/src/tool/revolvingCardCalculator/i18n/fr.ts +32 -28
  187. package/src/tool/revolvingCardCalculator/i18n/id.ts +18 -18
  188. package/src/tool/revolvingCardCalculator/i18n/it.ts +18 -18
  189. package/src/tool/revolvingCardCalculator/i18n/ja.ts +2 -2
  190. package/src/tool/revolvingCardCalculator/i18n/ko.ts +2 -2
  191. package/src/tool/revolvingCardCalculator/i18n/nl.ts +22 -19
  192. package/src/tool/revolvingCardCalculator/i18n/pl.ts +2 -2
  193. package/src/tool/revolvingCardCalculator/i18n/pt.ts +2 -2
  194. package/src/tool/revolvingCardCalculator/i18n/ru.ts +2 -2
  195. package/src/tool/revolvingCardCalculator/i18n/sv.ts +2 -2
  196. package/src/tool/revolvingCardCalculator/i18n/tr.ts +2 -2
  197. package/src/tool/revolvingCardCalculator/i18n/zh.ts +6 -6
  198. package/src/tool/salaryEmployerCost/i18n/de.ts +10 -10
  199. package/src/tool/salaryEmployerCost/i18n/fr.ts +9 -9
  200. package/src/tool/salaryEmployerCost/i18n/id.ts +9 -9
  201. package/src/tool/salaryEmployerCost/i18n/it.ts +9 -9
  202. package/src/tool/salaryEmployerCost/i18n/ja.ts +1 -1
  203. package/src/tool/salaryEmployerCost/i18n/ko.ts +1 -1
  204. package/src/tool/salaryEmployerCost/i18n/nl.ts +2 -2
  205. package/src/tool/salaryEmployerCost/i18n/pl.ts +2 -2
  206. package/src/tool/salaryEmployerCost/i18n/pt.ts +2 -2
  207. package/src/tool/salaryEmployerCost/i18n/ru.ts +2 -2
  208. package/src/tool/salaryEmployerCost/i18n/sv.ts +2 -2
  209. package/src/tool/salaryEmployerCost/i18n/tr.ts +2 -2
  210. package/src/tool/salaryEmployerCost/i18n/zh.ts +2 -2
  211. package/src/tools.ts +2 -1
@@ -1,98 +1,98 @@
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
- .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
- [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;
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
+ .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
+ [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
96
  margin: 0 auto;
97
97
  perspective: 1000px;
98
98
  padding: 2rem 1rem;
@@ -105,106 +105,106 @@
105
105
  .ibs-container *::after {
106
106
  box-sizing: border-box;
107
107
  }
108
-
109
- .ibs-card {
110
- background: var(--ibs-bg-card);
111
- border: 1px solid var(--ibs-border-card);
112
- border-radius: 32px;
113
- padding: 3rem;
114
- box-shadow: var(--ibs-shadow-card);
108
+
109
+ .ibs-card {
110
+ background: var(--ibs-bg-card);
111
+ border: 1px solid var(--ibs-border-card);
112
+ border-radius: 32px;
113
+ padding: 3rem;
114
+ box-shadow: var(--ibs-shadow-card);
115
115
  position: relative;
116
116
  overflow: hidden;
117
117
  color-scheme: light;
118
118
  min-width: 0;
119
119
  }
120
-
121
- .theme-dark .ibs-card,
122
- [data-theme='dark'] .ibs-card {
123
- color-scheme: dark;
124
- }
125
-
126
- .ibs-card::before {
127
- content: '';
128
- position: absolute;
129
- top: 0;
130
- left: 0;
131
- right: 0;
132
- height: 6px;
133
- background: var(--ibs-header-bg);
134
- }
135
-
136
- .ibs-header {
137
- text-align: left;
138
- margin-bottom: 3rem;
139
- }
140
-
141
- .ibs-header h3 {
142
- font-size: 2.25rem;
143
- font-weight: 950;
144
- color: var(--ibs-text-title);
145
- letter-spacing: -0.04em;
146
- margin-bottom: 0.75rem;
147
- line-height: 1;
148
- }
149
-
150
- .ibs-header p {
151
- color: var(--ibs-text-secondary);
152
- font-size: 1.1rem;
153
- max-width: 500px;
154
- line-height: 1.6;
155
- }
156
-
157
- .ibs-input-section {
158
- display: flex;
159
- flex-direction: column;
160
- gap: 2rem;
161
- background: var(--ibs-bg-input-section);
162
- padding: 2rem;
120
+
121
+ .theme-dark .ibs-card,
122
+ [data-theme='dark'] .ibs-card {
123
+ color-scheme: dark;
124
+ }
125
+
126
+ .ibs-card::before {
127
+ content: '';
128
+ position: absolute;
129
+ top: 0;
130
+ left: 0;
131
+ right: 0;
132
+ height: 6px;
133
+ background: var(--ibs-header-bg);
134
+ }
135
+
136
+ .ibs-header {
137
+ text-align: left;
138
+ margin-bottom: 3rem;
139
+ }
140
+
141
+ .ibs-header h3 {
142
+ font-size: 2.25rem;
143
+ font-weight: 950;
144
+ color: var(--ibs-text-title);
145
+ letter-spacing: -0.04em;
146
+ margin-bottom: 0.75rem;
147
+ line-height: 1;
148
+ }
149
+
150
+ .ibs-header p {
151
+ color: var(--ibs-text-secondary);
152
+ font-size: 1.1rem;
153
+ max-width: 500px;
154
+ line-height: 1.6;
155
+ }
156
+
157
+ .ibs-input-section {
158
+ display: flex;
159
+ flex-direction: column;
160
+ gap: 2rem;
161
+ background: var(--ibs-bg-input-section);
162
+ padding: 2rem;
163
163
  border-radius: 24px;
164
164
  border: 1px solid var(--ibs-border-input-section);
165
165
  min-width: 0;
166
166
  }
167
-
168
- .ibs-input-group {
169
- display: flex;
170
- flex-direction: column;
171
- gap: 1rem;
172
- }
173
-
174
- .ibs-input-group label {
175
- font-size: 0.75rem;
176
- font-weight: 800;
177
- color: var(--ibs-text-secondary);
178
- text-transform: uppercase;
179
- letter-spacing: 0.1em;
180
- }
181
-
167
+
168
+ .ibs-input-group {
169
+ display: flex;
170
+ flex-direction: column;
171
+ gap: 1rem;
172
+ }
173
+
174
+ .ibs-input-group label {
175
+ font-size: 0.75rem;
176
+ font-weight: 800;
177
+ color: var(--ibs-text-secondary);
178
+ text-transform: uppercase;
179
+ letter-spacing: 0.1em;
180
+ }
181
+
182
182
  .ibs-input-wrapper {
183
- position: relative;
184
- display: flex;
185
- align-items: center;
186
- background: var(--ibs-bg-input);
187
- border-radius: 20px;
188
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
183
+ position: relative;
184
+ display: flex;
185
+ align-items: center;
186
+ background: var(--ibs-bg-input);
187
+ border-radius: 20px;
188
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
189
189
  border: 2px solid var(--ibs-border-input);
190
190
  transition: all 0.3s ease;
191
191
  min-width: 0;
192
192
  width: 100%;
193
193
  }
194
-
195
- .ibs-input-wrapper:focus-within {
196
- border-color: var(--ibs-focus-border);
197
- box-shadow: 0 0 0 4px var(--ibs-focus-ring);
198
- }
199
-
194
+
195
+ .ibs-input-wrapper:focus-within {
196
+ border-color: var(--ibs-focus-border);
197
+ box-shadow: 0 0 0 4px var(--ibs-focus-ring);
198
+ }
199
+
200
200
  .ibs-input-wrapper input {
201
201
  width: 100%;
202
- padding: 1.5rem;
203
- border: none;
204
- background: transparent;
205
- font-size: 1.5rem;
206
- font-weight: 800;
207
- color: var(--ibs-text-input);
202
+ padding: 1.5rem;
203
+ border: none;
204
+ background: transparent;
205
+ font-size: 1.5rem;
206
+ font-weight: 800;
207
+ color: var(--ibs-text-input);
208
208
  outline: none;
209
209
  letter-spacing: 0.02em;
210
210
  min-width: 0;
@@ -212,194 +212,194 @@
212
212
  text-overflow: clip;
213
213
  white-space: nowrap;
214
214
  }
215
-
216
- .ibs-input-wrapper input::placeholder {
217
- color: var(--ibs-text-secondary);
218
- opacity: 0.5;
219
- }
220
-
221
- .ibs-input-icon {
222
- margin-right: 1.5rem;
223
- font-size: 1.75rem;
224
- opacity: 0.6;
225
- flex-shrink: 0;
226
- }
227
-
228
- .ibs-btn-convert {
229
- width: 100%;
230
- padding: 1.25rem;
231
- background: var(--ibs-bg-button);
232
- color: var(--ibs-text-button);
233
- border: none;
234
- border-radius: 20px;
235
- font-size: 1.1rem;
236
- font-weight: 800;
237
- cursor: pointer;
238
- transition: all 0.3s ease;
239
- display: flex;
240
- align-items: center;
241
- justify-content: center;
242
- gap: 0.75rem;
243
- }
244
-
245
- .ibs-btn-convert:hover {
246
- background: var(--ibs-bg-button-hover);
247
- transform: translateY(-2px);
248
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
249
- }
250
-
251
- .ibs-results-section {
252
- margin-top: 3rem;
253
- display: grid;
254
- grid-template-columns: repeat(2, 1fr);
255
- gap: 1.5rem;
256
- animation: ibs-slide-up 0.5s ease-out;
257
- }
258
-
259
- .ibs-results-section.ibs-hidden {
260
- display: none;
261
- }
262
-
263
- .ibs-error-message.ibs-hidden {
264
- display: none;
265
- }
266
-
267
- .ibs-btn-copy-success span[data-icon] {
268
- background-color: #10b981;
269
- }
270
-
271
- @keyframes ibs-slide-up {
272
- from {
273
- opacity: 0;
274
- transform: translateY(20px);
275
- }
276
- to {
277
- opacity: 1;
278
- transform: translateY(0);
279
- }
280
- }
281
-
282
- .ibs-result-card {
283
- background: var(--ibs-bg-result);
284
- border: 1px solid var(--ibs-border-result);
285
- padding: 1.5rem 2rem;
286
- border-radius: 24px;
287
- display: flex;
288
- flex-direction: column;
289
- justify-content: center;
290
- gap: 0.5rem;
215
+
216
+ .ibs-input-wrapper input::placeholder {
217
+ color: var(--ibs-text-secondary);
218
+ opacity: 0.5;
219
+ }
220
+
221
+ .ibs-input-icon {
222
+ margin-right: 1.5rem;
223
+ font-size: 1.75rem;
224
+ opacity: 0.6;
225
+ flex-shrink: 0;
226
+ }
227
+
228
+ .ibs-btn-convert {
229
+ width: 100%;
230
+ padding: 1.25rem;
231
+ background: var(--ibs-bg-button);
232
+ color: var(--ibs-text-button);
233
+ border: none;
234
+ border-radius: 20px;
235
+ font-size: 1.1rem;
236
+ font-weight: 800;
237
+ cursor: pointer;
238
+ transition: all 0.3s ease;
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ gap: 0.75rem;
243
+ }
244
+
245
+ .ibs-btn-convert:hover {
246
+ background: var(--ibs-bg-button-hover);
247
+ transform: translateY(-2px);
248
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
249
+ }
250
+
251
+ .ibs-results-section {
252
+ margin-top: 3rem;
253
+ display: grid;
254
+ grid-template-columns: repeat(2, 1fr);
255
+ gap: 1.5rem;
256
+ animation: ibs-slide-up 0.5s ease-out;
257
+ }
258
+
259
+ .ibs-results-section.ibs-hidden {
260
+ display: none;
261
+ }
262
+
263
+ .ibs-error-message.ibs-hidden {
264
+ display: none;
265
+ }
266
+
267
+ .ibs-btn-copy-success span[data-icon] {
268
+ background-color: #10b981;
269
+ }
270
+
271
+ @keyframes ibs-slide-up {
272
+ from {
273
+ opacity: 0;
274
+ transform: translateY(20px);
275
+ }
276
+ to {
277
+ opacity: 1;
278
+ transform: translateY(0);
279
+ }
280
+ }
281
+
282
+ .ibs-result-card {
283
+ background: var(--ibs-bg-result);
284
+ border: 1px solid var(--ibs-border-result);
285
+ padding: 1.5rem 2rem;
286
+ border-radius: 24px;
287
+ display: flex;
288
+ flex-direction: column;
289
+ justify-content: center;
290
+ gap: 0.5rem;
291
291
  position: relative;
292
292
  transition: all 0.3s ease;
293
293
  min-width: 0;
294
294
  }
295
-
296
- .ibs-result-card:hover {
297
- border-color: var(--ibs-border-card);
298
- box-shadow: 0 12px 24px -10px rgba(0, 0, 0, 0.05);
299
- }
300
-
301
- .ibs-result-label {
302
- font-size: 0.7rem;
303
- font-weight: 800;
304
- color: var(--ibs-text-result-label);
305
- text-transform: uppercase;
306
- letter-spacing: 0.08em;
307
- }
308
-
309
- .ibs-result-value {
310
- font-size: 1.5rem;
311
- font-weight: 900;
295
+
296
+ .ibs-result-card:hover {
297
+ border-color: var(--ibs-border-card);
298
+ box-shadow: 0 12px 24px -10px rgba(0, 0, 0, 0.05);
299
+ }
300
+
301
+ .ibs-result-label {
302
+ font-size: 0.7rem;
303
+ font-weight: 800;
304
+ color: var(--ibs-text-result-label);
305
+ text-transform: uppercase;
306
+ letter-spacing: 0.08em;
307
+ }
308
+
309
+ .ibs-result-value {
310
+ font-size: 1.5rem;
311
+ font-weight: 900;
312
312
  color: var(--ibs-text-result-value);
313
313
  letter-spacing: -0.02em;
314
314
  overflow-wrap: anywhere;
315
315
  padding-right: 2.75rem;
316
316
  }
317
-
318
- .ibs-btn-copy-result {
319
- position: absolute;
320
- top: 1rem;
321
- right: 1rem;
322
- cursor: pointer;
323
- background: var(--ibs-bg-copy-btn);
324
- border: none;
325
- padding: 8px;
326
- border-radius: 10px;
327
- color: var(--ibs-text-copy-btn);
328
- transition: all 0.2s;
329
- display: flex;
330
- font-size: 1.2rem;
331
- }
332
-
333
- .ibs-btn-copy-result:hover {
334
- background: var(--ibs-focus-border);
335
- color: #fff;
336
- transform: scale(1.1);
337
- }
338
-
339
- .ibs-btn-copy-success {
340
- background: #10b981;
341
- }
342
-
343
- .ibs-bank-info {
344
- grid-column: span 2;
345
- background: var(--ibs-bg-bank-info);
346
- padding: 2rem;
347
- border-radius: 24px;
348
- display: flex;
349
- align-items: center;
350
- gap: 1.5rem;
351
- border: 1px solid var(--ibs-border-bank-info);
352
- }
353
-
354
- .ibs-bank-logo-placeholder {
355
- width: 64px;
356
- height: 64px;
357
- background: var(--ibs-bg-input);
358
- border-radius: 20px;
359
- display: flex;
360
- align-items: center;
361
- justify-content: center;
362
- border: 1px solid var(--ibs-border-result);
363
- font-size: 2rem;
364
- box-shadow: 0 8px 16px -4px rgba(0, 0, 0, 0.04);
365
- flex-shrink: 0;
366
- }
367
-
317
+
318
+ .ibs-btn-copy-result {
319
+ position: absolute;
320
+ top: 1rem;
321
+ right: 1rem;
322
+ cursor: pointer;
323
+ background: var(--ibs-bg-copy-btn);
324
+ border: none;
325
+ padding: 8px;
326
+ border-radius: 10px;
327
+ color: var(--ibs-text-copy-btn);
328
+ transition: all 0.2s;
329
+ display: flex;
330
+ font-size: 1.2rem;
331
+ }
332
+
333
+ .ibs-btn-copy-result:hover {
334
+ background: var(--ibs-focus-border);
335
+ color: #fff;
336
+ transform: scale(1.1);
337
+ }
338
+
339
+ .ibs-btn-copy-success {
340
+ background: #10b981;
341
+ }
342
+
343
+ .ibs-bank-info {
344
+ grid-column: span 2;
345
+ background: var(--ibs-bg-bank-info);
346
+ padding: 2rem;
347
+ border-radius: 24px;
348
+ display: flex;
349
+ align-items: center;
350
+ gap: 1.5rem;
351
+ border: 1px solid var(--ibs-border-bank-info);
352
+ }
353
+
354
+ .ibs-bank-logo-placeholder {
355
+ width: 64px;
356
+ height: 64px;
357
+ background: var(--ibs-bg-input);
358
+ border-radius: 20px;
359
+ display: flex;
360
+ align-items: center;
361
+ justify-content: center;
362
+ border: 1px solid var(--ibs-border-result);
363
+ font-size: 2rem;
364
+ box-shadow: 0 8px 16px -4px rgba(0, 0, 0, 0.04);
365
+ flex-shrink: 0;
366
+ }
367
+
368
368
  .ibs-bank-details {
369
369
  flex: 1;
370
370
  min-width: 0;
371
371
  }
372
-
373
- .ibs-bank-name-label {
374
- font-size: 0.75rem;
375
- font-weight: 800;
376
- color: var(--ibs-text-secondary);
377
- text-transform: uppercase;
378
- margin-bottom: 0.25rem;
379
- }
380
-
381
- .ibs-bank-name-value {
382
- font-size: 1.5rem;
372
+
373
+ .ibs-bank-name-label {
374
+ font-size: 0.75rem;
375
+ font-weight: 800;
376
+ color: var(--ibs-text-secondary);
377
+ text-transform: uppercase;
378
+ margin-bottom: 0.25rem;
379
+ }
380
+
381
+ .ibs-bank-name-value {
382
+ font-size: 1.5rem;
383
383
  font-weight: 900;
384
384
  color: var(--ibs-text-result-value);
385
385
  letter-spacing: -0.03em;
386
386
  overflow-wrap: anywhere;
387
387
  }
388
-
389
- .ibs-error-message {
390
- grid-column: span 2;
391
- background: var(--ibs-bg-error);
392
- border: 1px solid var(--ibs-border-error);
393
- padding: 1.25rem;
394
- border-radius: 20px;
395
- color: var(--ibs-text-error);
396
- font-size: 1rem;
397
- font-weight: 700;
398
- display: flex;
399
- align-items: center;
400
- gap: 0.75rem;
401
- }
402
-
388
+
389
+ .ibs-error-message {
390
+ grid-column: span 2;
391
+ background: var(--ibs-bg-error);
392
+ border: 1px solid var(--ibs-border-error);
393
+ padding: 1.25rem;
394
+ border-radius: 20px;
395
+ color: var(--ibs-text-error);
396
+ font-size: 1rem;
397
+ font-weight: 700;
398
+ display: flex;
399
+ align-items: center;
400
+ gap: 0.75rem;
401
+ }
402
+
403
403
  @media (max-width: 768px) {
404
404
  .ibs-container {
405
405
  padding: 1rem 0;
@@ -409,11 +409,11 @@
409
409
  border-radius: 20px;
410
410
  padding: 1.25rem;
411
411
  }
412
-
413
- .ibs-header h3 {
414
- font-size: 1.75rem;
415
- }
416
-
412
+
413
+ .ibs-header h3 {
414
+ font-size: 1.75rem;
415
+ }
416
+
417
417
  .ibs-input-wrapper input {
418
418
  font-size: 1.2rem;
419
419
  }
@@ -432,19 +432,19 @@
432
432
  padding: 1.25rem;
433
433
  }
434
434
  }
435
-
436
- @media (max-width: 640px) {
437
- .ibs-results-section {
438
- grid-template-columns: 1fr;
439
- }
440
-
441
- .ibs-bank-info {
442
- grid-column: span 1;
443
- flex-direction: column;
444
- text-align: center;
445
- gap: 1rem;
446
- }
447
-
435
+
436
+ @media (max-width: 640px) {
437
+ .ibs-results-section {
438
+ grid-template-columns: 1fr;
439
+ }
440
+
441
+ .ibs-bank-info {
442
+ grid-column: span 1;
443
+ flex-direction: column;
444
+ text-align: center;
445
+ gap: 1rem;
446
+ }
447
+
448
448
  .ibs-error-message {
449
449
  grid-column: span 1;
450
450
  }