@jjlmoya/utils-babies 1.5.0 → 1.7.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 (115) hide show
  1. package/package.json +67 -66
  2. package/src/category/i18n/de.ts +48 -0
  3. package/src/category/i18n/en.ts +10 -10
  4. package/src/category/i18n/fr.ts +10 -10
  5. package/src/category/i18n/id.ts +48 -0
  6. package/src/category/i18n/it.ts +48 -0
  7. package/src/category/i18n/ja.ts +48 -0
  8. package/src/category/i18n/ko.ts +48 -0
  9. package/src/category/i18n/nl.ts +48 -0
  10. package/src/category/i18n/pl.ts +48 -0
  11. package/src/category/i18n/pt.ts +48 -0
  12. package/src/category/i18n/ru.ts +48 -0
  13. package/src/category/i18n/sv.ts +48 -0
  14. package/src/category/i18n/tr.ts +48 -0
  15. package/src/category/i18n/zh.ts +48 -0
  16. package/src/category/index.ts +13 -1
  17. package/src/tests/faq_count.test.ts +1 -1
  18. package/src/tests/i18n_coverage.test.ts +36 -0
  19. package/src/tests/locale_completeness.test.ts +1 -1
  20. package/src/tests/schemas_fulfillment.test.ts +23 -0
  21. package/src/tests/seo_length.test.ts +1 -2
  22. package/src/tests/title_quality.test.ts +55 -0
  23. package/src/tool/baby-feeding-calculator/component.astro +40 -40
  24. package/src/tool/baby-feeding-calculator/i18n/de.ts +162 -0
  25. package/src/tool/baby-feeding-calculator/i18n/id.ts +162 -0
  26. package/src/tool/baby-feeding-calculator/i18n/it.ts +162 -0
  27. package/src/tool/baby-feeding-calculator/i18n/ja.ts +162 -0
  28. package/src/tool/baby-feeding-calculator/i18n/ko.ts +162 -0
  29. package/src/tool/baby-feeding-calculator/i18n/nl.ts +162 -0
  30. package/src/tool/baby-feeding-calculator/i18n/pl.ts +162 -0
  31. package/src/tool/baby-feeding-calculator/i18n/pt.ts +162 -0
  32. package/src/tool/baby-feeding-calculator/i18n/ru.ts +162 -0
  33. package/src/tool/baby-feeding-calculator/i18n/sv.ts +162 -0
  34. package/src/tool/baby-feeding-calculator/i18n/tr.ts +162 -0
  35. package/src/tool/baby-feeding-calculator/i18n/zh.ts +162 -0
  36. package/src/tool/baby-feeding-calculator/index.ts +12 -0
  37. package/src/tool/baby-percentile-calculator/component.astro +38 -38
  38. package/src/tool/baby-percentile-calculator/i18n/de.ts +245 -0
  39. package/src/tool/baby-percentile-calculator/i18n/id.ts +245 -0
  40. package/src/tool/baby-percentile-calculator/i18n/it.ts +245 -0
  41. package/src/tool/baby-percentile-calculator/i18n/ja.ts +245 -0
  42. package/src/tool/baby-percentile-calculator/i18n/ko.ts +245 -0
  43. package/src/tool/baby-percentile-calculator/i18n/nl.ts +245 -0
  44. package/src/tool/baby-percentile-calculator/i18n/pl.ts +245 -0
  45. package/src/tool/baby-percentile-calculator/i18n/pt.ts +245 -0
  46. package/src/tool/baby-percentile-calculator/i18n/ru.ts +245 -0
  47. package/src/tool/baby-percentile-calculator/i18n/sv.ts +245 -0
  48. package/src/tool/baby-percentile-calculator/i18n/tr.ts +245 -0
  49. package/src/tool/baby-percentile-calculator/i18n/zh.ts +245 -0
  50. package/src/tool/baby-percentile-calculator/index.ts +12 -0
  51. package/src/tool/baby-size-converter/component.astro +42 -42
  52. package/src/tool/baby-size-converter/i18n/de.ts +203 -0
  53. package/src/tool/baby-size-converter/i18n/fr.ts +1 -1
  54. package/src/tool/baby-size-converter/i18n/id.ts +203 -0
  55. package/src/tool/baby-size-converter/i18n/it.ts +203 -0
  56. package/src/tool/baby-size-converter/i18n/ja.ts +203 -0
  57. package/src/tool/baby-size-converter/i18n/ko.ts +203 -0
  58. package/src/tool/baby-size-converter/i18n/nl.ts +203 -0
  59. package/src/tool/baby-size-converter/i18n/pl.ts +203 -0
  60. package/src/tool/baby-size-converter/i18n/pt.ts +203 -0
  61. package/src/tool/baby-size-converter/i18n/ru.ts +203 -0
  62. package/src/tool/baby-size-converter/i18n/sv.ts +203 -0
  63. package/src/tool/baby-size-converter/i18n/tr.ts +203 -0
  64. package/src/tool/baby-size-converter/i18n/zh.ts +203 -0
  65. package/src/tool/baby-size-converter/index.ts +12 -0
  66. package/src/tool/fertile-days-estimator/component.astro +14 -9
  67. package/src/tool/fertile-days-estimator/i18n/de.ts +262 -0
  68. package/src/tool/fertile-days-estimator/i18n/id.ts +262 -0
  69. package/src/tool/fertile-days-estimator/i18n/it.ts +262 -0
  70. package/src/tool/fertile-days-estimator/i18n/ja.ts +262 -0
  71. package/src/tool/fertile-days-estimator/i18n/ko.ts +262 -0
  72. package/src/tool/fertile-days-estimator/i18n/nl.ts +262 -0
  73. package/src/tool/fertile-days-estimator/i18n/pl.ts +262 -0
  74. package/src/tool/fertile-days-estimator/i18n/pt.ts +262 -0
  75. package/src/tool/fertile-days-estimator/i18n/ru.ts +262 -0
  76. package/src/tool/fertile-days-estimator/i18n/sv.ts +262 -0
  77. package/src/tool/fertile-days-estimator/i18n/tr.ts +262 -0
  78. package/src/tool/fertile-days-estimator/i18n/zh.ts +262 -0
  79. package/src/tool/fertile-days-estimator/index.ts +12 -0
  80. package/src/tool/pregnancy-calculator/component.astro +55 -48
  81. package/src/tool/pregnancy-calculator/i18n/de.ts +467 -0
  82. package/src/tool/pregnancy-calculator/i18n/en.ts +140 -0
  83. package/src/tool/pregnancy-calculator/i18n/es.ts +143 -3
  84. package/src/tool/pregnancy-calculator/i18n/fr.ts +143 -3
  85. package/src/tool/pregnancy-calculator/i18n/id.ts +467 -0
  86. package/src/tool/pregnancy-calculator/i18n/it.ts +467 -0
  87. package/src/tool/pregnancy-calculator/i18n/ja.ts +467 -0
  88. package/src/tool/pregnancy-calculator/i18n/ko.ts +467 -0
  89. package/src/tool/pregnancy-calculator/i18n/nl.ts +467 -0
  90. package/src/tool/pregnancy-calculator/i18n/pl.ts +467 -0
  91. package/src/tool/pregnancy-calculator/i18n/pt.ts +467 -0
  92. package/src/tool/pregnancy-calculator/i18n/ru.ts +467 -0
  93. package/src/tool/pregnancy-calculator/i18n/sv.ts +467 -0
  94. package/src/tool/pregnancy-calculator/i18n/tr.ts +467 -0
  95. package/src/tool/pregnancy-calculator/i18n/zh.ts +467 -0
  96. package/src/tool/pregnancy-calculator/index.ts +37 -1
  97. package/src/tool/pregnancy-calculator/milestones.ts +2 -146
  98. package/src/tool/vaccination-calendar/component.astro +26 -24
  99. package/src/tool/vaccination-calendar/i18n/de.ts +194 -0
  100. package/src/tool/vaccination-calendar/i18n/en.ts +20 -0
  101. package/src/tool/vaccination-calendar/i18n/es.ts +20 -0
  102. package/src/tool/vaccination-calendar/i18n/fr.ts +99 -75
  103. package/src/tool/vaccination-calendar/i18n/id.ts +194 -0
  104. package/src/tool/vaccination-calendar/i18n/it.ts +194 -0
  105. package/src/tool/vaccination-calendar/i18n/ja.ts +194 -0
  106. package/src/tool/vaccination-calendar/i18n/ko.ts +194 -0
  107. package/src/tool/vaccination-calendar/i18n/nl.ts +194 -0
  108. package/src/tool/vaccination-calendar/i18n/pl.ts +194 -0
  109. package/src/tool/vaccination-calendar/i18n/pt.ts +194 -0
  110. package/src/tool/vaccination-calendar/i18n/ru.ts +194 -0
  111. package/src/tool/vaccination-calendar/i18n/sv.ts +194 -0
  112. package/src/tool/vaccination-calendar/i18n/tr.ts +194 -0
  113. package/src/tool/vaccination-calendar/i18n/zh.ts +194 -0
  114. package/src/tool/vaccination-calendar/index.ts +33 -1
  115. package/src/tool/vaccination-calendar/logic.ts +39 -13
@@ -0,0 +1,245 @@
1
+ import type { BabyPercentileCalculatorLocaleContent } from '../index';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+
4
+ const slug = 'baby-growth-percentile-calculator';
5
+ const title = 'WHO婴儿成长曲线(百分位)计算器';
6
+ const description = '根据世卫组织(WHO)成长标准(0-5岁)计算宝宝的体重、身长和BMI百分位数。';
7
+ const faq = [
8
+ {
9
+ question: '50百分位是什么意思?',
10
+ answer: '50百分位表示宝宝正处于中位数,即同年龄、同性别的宝宝中,有一半比这个数值重(或高),另一半比这个数值轻(或矮)。这并不代表理想值,而是分布的中心值。',
11
+ },
12
+ {
13
+ question: '百分位偏低预示着有问题吗?',
14
+ answer: '不一定。如果长期保持稳定,较低的百分位(如P10)也可能是完全正常的。重要的是成长的趋势,而非单一的数值。请务必咨询您的儿科医生。',
15
+ },
16
+ {
17
+ question: '这个计算器使用什么成长图表?',
18
+ answer: '本计算器采用世界卫生组织(WHO)针对0至5岁儿童的成长标准,该标准基于多中心生长参考研究(MGRS)。',
19
+ },
20
+ {
21
+ question: '婴儿的BMI是什么?',
22
+ answer: '婴儿的体质指数(BMI)是体重与身长平方的比值。婴儿的BMI百分位与成人不同,必须通过针对每个年龄段和性别的特定图表进行评估。',
23
+ },
24
+ {
25
+ question: '我应该多频繁地为宝宝测量?',
26
+ answer: '在最初的几个月里,儿科医生通常会在每次就诊时检查生长情况。在家里,您可以每月记录一次体重和身长,以观察成长趋势。',
27
+ },
28
+ ];
29
+ const howTo = [
30
+ {
31
+ name: '选择宝宝性别',
32
+ text: '选择男孩或女孩以应用相应的WHO图表。',
33
+ },
34
+ {
35
+ name: '输入年龄',
36
+ text: '使用滑块或箭头指定年龄(月数,0-60个月)。',
37
+ },
38
+ {
39
+ name: '输入体重和身长',
40
+ text: '输入体重(公斤)和身长(厘米)。',
41
+ },
42
+ {
43
+ name: '查看百分位',
44
+ text: '系统将根据WHO图表自动计算体重、身长和BMI百分位。',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faq.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowTo> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howTo.map((step) => ({
64
+ '@type': 'HowToStep',
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<WithContext<SoftwareApplication>> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilitiesApplication',
76
+ operatingSystem: 'Web',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'zh',
79
+ };
80
+
81
+ export const content: BabyPercentileCalculatorLocaleContent = {
82
+ slug,
83
+ title,
84
+ description,
85
+ ui: {
86
+ labelMeasurements: '测量数据',
87
+ labelSex: '宝宝性别',
88
+ sexBoy: '男孩',
89
+ sexGirl: '女孩',
90
+ unitMonths: '仅月数',
91
+ unitYearsMonths: '岁 + 月',
92
+ labelWeight: '体重 (kg)',
93
+ labelHeight: '身长 (cm)',
94
+ btnAddHistory: '添加到我的记录',
95
+ btnClearHistory: '清除数据',
96
+ labelDashboard: '成长看板',
97
+ labelWeight2: '体重',
98
+ labelHeight2: '身长',
99
+ labelBMI: 'BMI',
100
+ labelCalculating: '计算中...',
101
+ disclaimer: '百分位数仅是一种统计工具。请务必咨询您的儿科医生以解读结果。',
102
+ labelLowRange: '低范围',
103
+ labelLowNormal: '偏低',
104
+ labelNormal: '正常',
105
+ labelHighNormal: '偏高',
106
+ labelHighRange: '高范围',
107
+ alertOutOfRange: '数值超出P3-P97范围。请咨询您的儿科医生。',
108
+ labelMonths: '个月',
109
+ labelYears: '岁',
110
+ faqTitle: '常见问题',
111
+ bibliographyTitle: '参考文献',
112
+ },
113
+ seo: [
114
+ {
115
+ type: 'title',
116
+ text: 'WHO成长曲线计算器:解读宝宝成长的指南',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'summary',
121
+ title: '解读宝宝百分位数的5个关键点',
122
+ items: [
123
+ '单一的百分位数不能定义宝宝的健康状况:重要的是长期的成长趋势。',
124
+ '处于P3到P97之间的百分位数被认为在统计学正常范围内。',
125
+ '婴儿的BMI遵循其独特的曲线,不应与成人的参考值进行比较。',
126
+ 'WHO成长曲线基于在理想条件下生长的婴儿,包括最初几个月的纯母乳喂养。',
127
+ '务必与您的儿科医生分享成长记录,以获得专业的临床评估。',
128
+ ],
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: '如何正确测量宝宝',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ items: [
138
+ '尽可能在不穿衣服的情况下、使用同一台体重秤称重。',
139
+ '24个月前,请在仰卧位测量身长。',
140
+ '2岁以后,请在站立位测量身高。',
141
+ '为了保证准确性,请在每天的同一时间进行测量。',
142
+ ],
143
+ },
144
+ {
145
+ type: 'tip',
146
+ html: '百分位数低于P3并不一定意味着健康问题。最重要的是观察成长曲线是否在较长时间内保持稳定的趋势。',
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: '百分位数的解读',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'table',
155
+ headers: ['百分位', '解读', '建议操作'],
156
+ rows: [
157
+ ['P97或更高', '高范围', '在下次就诊时咨询儿科医生'],
158
+ ['P85至P97', '偏高', '常规随访'],
159
+ ['P15至P85', '正常', '无需特殊操作'],
160
+ ['P3至P15', '偏低', '常规随访'],
161
+ ['P3或更低', '低范围', '咨询儿科医生'],
162
+ ],
163
+ },
164
+ {
165
+ type: 'title',
166
+ text: 'WHO曲线 vs Orbegozo曲线',
167
+ level: 3,
168
+ },
169
+ {
170
+ type: 'comparative',
171
+ columns: 2,
172
+ items: [
173
+ {
174
+ title: 'WHO曲线',
175
+ description: '基于6个国家在理想条件下生长的婴儿的国际标准。',
176
+ points: [
177
+ '经过验证的国际标准',
178
+ '基于6个国家及理想生长条件',
179
+ '更新及时且具有学术支撑',
180
+ '可能无法反映当地的遗传差异',
181
+ ],
182
+ },
183
+ {
184
+ title: 'Orbegozo曲线',
185
+ description: '针对西班牙人口调整的曲线,在过去几十年中被广泛使用。',
186
+ points: [
187
+ '针对西班牙人口优化',
188
+ '曾被西班牙广泛采用',
189
+ '基于较旧的参考人群',
190
+ '国际化程度较低',
191
+ ],
192
+ },
193
+ ],
194
+ },
195
+ {
196
+ type: 'stats',
197
+ columns: 3,
198
+ items: [
199
+ { value: 'WHO 0-5岁', label: '参考标准' },
200
+ { value: '趋势曲线', label: '核心变量' },
201
+ { value: 'LMS参数', label: '技术精度' },
202
+ ],
203
+ },
204
+ {
205
+ type: 'glossary',
206
+ items: [
207
+ {
208
+ term: 'Z评分 (Z-Score)',
209
+ definition: '一个数值偏离参考人群平均值的标准差次数。Z评分为0等同于第50百分位数。',
210
+ },
211
+ {
212
+ term: '协调性 (Harmony)',
213
+ definition: '体重与身长之间的比例。即使宝宝的体重百分位较低,但如果身长也以同样的比例偏低,则可视为“协调”。',
214
+ },
215
+ {
216
+ term: '人体测量学 (Antropometry)',
217
+ definition: '用于评估生长和营养状况的一系列身体测量指标(体重、身长、头围、BMI)。',
218
+ },
219
+ {
220
+ term: 'LMS参数',
221
+ definition: 'WHO用于构建百分位表并将测量值转换为Z评分的统计方法(L=Box-Cox变换,M=中位数,S=变异系数)。',
222
+ },
223
+ ],
224
+ },
225
+ ],
226
+ faqTitle: "常见问题",
227
+ faq,
228
+ bibliographyTitle: "参考文献",
229
+ bibliography: [
230
+ {
231
+ name: 'WHO Child Growth Standards: Methods and development',
232
+ url: 'https://www.who.int/publications/i/item/924154693X',
233
+ },
234
+ {
235
+ name: 'WHO Child Growth Standards: Length/height-for-age, weight-for-age, weight-for-length, weight-for-height and body mass index-for-age',
236
+ url: 'https://www.who.int/tools/child-growth-standards/standards',
237
+ },
238
+ {
239
+ name: 'Comparison of the WHO Child Growth Standards and the CDC 2000 Growth Charts - de Onis M et al.',
240
+ url: 'https://doi.org/10.1093/jn/137.1.144S',
241
+ },
242
+ ],
243
+ howTo,
244
+ schemas: [faqSchema as any, howToSchema as any, appSchema as any],
245
+ };
@@ -41,7 +41,19 @@ export const babyPercentileCalculator: BabiesToolEntry<BabyPercentileCalculatorU
41
41
  i18n: {
42
42
  es: () => import('./i18n/es').then((m) => m.content),
43
43
  en: () => import('./i18n/en').then((m) => m.content),
44
+ de: () => import('./i18n/de').then((m) => m.content),
44
45
  fr: () => import('./i18n/fr').then((m) => m.content),
46
+ it: () => import('./i18n/it').then((m) => m.content),
47
+ pt: () => import('./i18n/pt').then((m) => m.content),
48
+ nl: () => import('./i18n/nl').then((m) => m.content),
49
+ pl: () => import('./i18n/pl').then((m) => m.content),
50
+ ru: () => import('./i18n/ru').then((m) => m.content),
51
+ tr: () => import('./i18n/tr').then((m) => m.content),
52
+ sv: () => import('./i18n/sv').then((m) => m.content),
53
+ id: () => import('./i18n/id').then((m) => m.content),
54
+ ja: () => import('./i18n/ja').then((m) => m.content),
55
+ ko: () => import('./i18n/ko').then((m) => m.content),
56
+ zh: () => import('./i18n/zh').then((m) => m.content),
45
57
  },
46
58
  };
47
59
 
@@ -297,7 +297,7 @@ const brands = brandsData.brands;
297
297
  </script>
298
298
 
299
299
  <style>
300
- .bsc-card {
300
+ :global(.bsc-card) {
301
301
  max-width: 900px;
302
302
  margin: 0 auto;
303
303
  background: #fff;
@@ -307,7 +307,7 @@ const brands = brandsData.brands;
307
307
  box-shadow: 0 10px 40px -10px rgba(0, 0, 0, 0.05);
308
308
  }
309
309
 
310
- :global(.theme-dark) .bsc-card {
310
+ :global(.theme-dark .bsc-card) {
311
311
  background: #0f172a;
312
312
  border-color: #1e293b;
313
313
  box-shadow: none;
@@ -334,11 +334,11 @@ const brands = brandsData.brands;
334
334
  position: relative;
335
335
  }
336
336
 
337
- :global(.theme-dark) .bsc-left {
337
+ :global(.theme-dark .bsc-left) {
338
338
  border-right-color: #1e293b;
339
339
  }
340
340
 
341
- :global(.theme-dark) .bsc-right {
341
+ :global(.theme-dark .bsc-right) {
342
342
  background: rgba(30, 41, 59, 0.15);
343
343
  }
344
344
 
@@ -354,7 +354,7 @@ const brands = brandsData.brands;
354
354
  margin-bottom: 0.5rem;
355
355
  }
356
356
 
357
- .bsc-section-marker::before {
357
+ :global(.bsc-section-marker::before) {
358
358
  content: "";
359
359
  width: 16px;
360
360
  height: 2px;
@@ -373,7 +373,7 @@ const brands = brandsData.brands;
373
373
  width: 100%;
374
374
  }
375
375
 
376
- .bsc-select-box select {
376
+ :global(.bsc-select-box select) {
377
377
  width: 100%;
378
378
  appearance: none;
379
379
  -webkit-appearance: none;
@@ -389,13 +389,13 @@ const brands = brandsData.brands;
389
389
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
390
390
  }
391
391
 
392
- :global(.theme-dark) .bsc-select-box select {
392
+ :global(.theme-dark .bsc-select-box select) {
393
393
  background: #1e293b;
394
394
  border-color: #334155;
395
395
  color: #f1f5f9;
396
396
  }
397
397
 
398
- .bsc-select-box::after {
398
+ :global(.bsc-select-box::after) {
399
399
  content: "";
400
400
  position: absolute;
401
401
  right: 1.25rem;
@@ -417,11 +417,11 @@ const brands = brandsData.brands;
417
417
  width: fit-content;
418
418
  }
419
419
 
420
- :global(.theme-dark) .bsc-unit-nav {
420
+ :global(.theme-dark .bsc-unit-nav) {
421
421
  background: #0f172a;
422
422
  }
423
423
 
424
- .bsc-unit-tab {
424
+ :global(.bsc-unit-tab) {
425
425
  padding: 0.4rem 1.1rem;
426
426
  border-radius: 100px;
427
427
  border: none;
@@ -432,13 +432,13 @@ const brands = brandsData.brands;
432
432
  cursor: pointer;
433
433
  }
434
434
 
435
- .bsc-unit-active {
435
+ :global(.bsc-unit-active) {
436
436
  background: #fff;
437
437
  color: #6366f1;
438
438
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
439
439
  }
440
440
 
441
- :global(.theme-dark) .bsc-unit-active {
441
+ :global(.theme-dark .bsc-unit-active) {
442
442
  background: #1e293b;
443
443
  color: #818cf8;
444
444
  }
@@ -466,12 +466,12 @@ const brands = brandsData.brands;
466
466
  gap: 1rem;
467
467
  }
468
468
 
469
- :global(.theme-dark) .bsc-stepper-box {
469
+ :global(.theme-dark .bsc-stepper-box) {
470
470
  background: #0f172a;
471
471
  border-color: #1e293b;
472
472
  }
473
473
 
474
- .bsc-btn-step {
474
+ :global(.bsc-btn-step) {
475
475
  width: 44px;
476
476
  height: 44px;
477
477
  border: none;
@@ -487,7 +487,7 @@ const brands = brandsData.brands;
487
487
  justify-content: center;
488
488
  }
489
489
 
490
- :global(.theme-dark) .bsc-btn-step {
490
+ :global(.theme-dark .bsc-btn-step) {
491
491
  background: #1e293b;
492
492
  color: #fff;
493
493
  border: 1px solid #334155;
@@ -507,7 +507,7 @@ const brands = brandsData.brands;
507
507
  line-height: 1;
508
508
  }
509
509
 
510
- :global(.theme-dark) .bsc-val-big {
510
+ :global(.theme-dark .bsc-val-big) {
511
511
  color: #f1f5f9;
512
512
  }
513
513
 
@@ -519,7 +519,7 @@ const brands = brandsData.brands;
519
519
  margin-top: 2px;
520
520
  }
521
521
 
522
- .bsc-slider {
522
+ :global(.bsc-slider) {
523
523
  width: 100%;
524
524
  appearance: none;
525
525
  -webkit-appearance: none;
@@ -529,7 +529,7 @@ const brands = brandsData.brands;
529
529
  margin-top: 4px;
530
530
  }
531
531
 
532
- .bsc-slider::-webkit-slider-thumb {
532
+ :global(.bsc-slider::-webkit-slider-thumb) {
533
533
  -webkit-appearance: none;
534
534
  width: 18px;
535
535
  height: 18px;
@@ -548,11 +548,11 @@ const brands = brandsData.brands;
548
548
  border-radius: 16px;
549
549
  }
550
550
 
551
- :global(.theme-dark) .bsc-age-rack {
551
+ :global(.theme-dark .bsc-age-rack) {
552
552
  background: #0f172a;
553
553
  }
554
554
 
555
- .bsc-age-tile {
555
+ :global(.bsc-age-tile) {
556
556
  padding: 1rem 0.25rem;
557
557
  border: none;
558
558
  background: transparent;
@@ -564,14 +564,14 @@ const brands = brandsData.brands;
564
564
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
565
565
  }
566
566
 
567
- .bsc-age-active {
567
+ :global(.bsc-age-active) {
568
568
  background: #fff;
569
569
  color: #4f46e5;
570
570
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.15);
571
571
  transform: translateY(-1px);
572
572
  }
573
573
 
574
- :global(.theme-dark) .bsc-age-active {
574
+ :global(.theme-dark .bsc-age-active) {
575
575
  background: #1e293b;
576
576
  color: #818cf8;
577
577
  }
@@ -594,7 +594,7 @@ const brands = brandsData.brands;
594
594
  margin: 0.25rem 0 0.75rem;
595
595
  }
596
596
 
597
- :global(.theme-dark) .bsc-res-size-main {
597
+ :global(.theme-dark .bsc-res-size-main) {
598
598
  color: #f1f5f9;
599
599
  }
600
600
 
@@ -663,7 +663,7 @@ const brands = brandsData.brands;
663
663
  border-bottom: 2px solid #f8fafc;
664
664
  }
665
665
 
666
- :global(.theme-dark) .bsc-eq-head-row {
666
+ :global(.theme-dark .bsc-eq-head-row) {
667
667
  border-bottom-color: #1e293b;
668
668
  }
669
669
 
@@ -681,7 +681,7 @@ const brands = brandsData.brands;
681
681
  width: 100%;
682
682
  }
683
683
 
684
- .bsc-eq-data-row {
684
+ :global(.bsc-eq-data-row) {
685
685
  display: flex;
686
686
  justify-content: space-between;
687
687
  align-items: center;
@@ -689,31 +689,31 @@ const brands = brandsData.brands;
689
689
  border-bottom: 1px solid rgba(241, 245, 249, 0.4);
690
690
  }
691
691
 
692
- :global(.theme-dark) .bsc-eq-data-row {
692
+ :global(.theme-dark .bsc-eq-data-row) {
693
693
  border-bottom-color: rgba(30, 41, 59, 0.5);
694
694
  }
695
695
 
696
- .bsc-eq-data-row:last-child {
696
+ :global(.bsc-eq-data-row:last-child) {
697
697
  border-bottom: none;
698
698
  }
699
699
 
700
- .bsc-eq-brand-v {
700
+ :global(.bsc-eq-brand-v) {
701
701
  display: flex;
702
702
  flex-direction: column;
703
703
  gap: 0;
704
704
  }
705
705
 
706
- .bsc-eq-brand-name {
706
+ :global(.bsc-eq-brand-name) {
707
707
  font-size: 0.95rem;
708
708
  font-weight: 900;
709
709
  color: #1e293b;
710
710
  }
711
711
 
712
- :global(.theme-dark) .bsc-eq-brand-name {
712
+ :global(.theme-dark .bsc-eq-brand-name) {
713
713
  color: #f1f5f9;
714
714
  }
715
715
 
716
- .bsc-eq-fit-v {
716
+ :global(.bsc-eq-fit-v) {
717
717
  font-size: 0.525rem;
718
718
  font-weight: 900;
719
719
  text-transform: uppercase;
@@ -721,21 +721,21 @@ const brands = brandsData.brands;
721
721
  letter-spacing: 0.02em;
722
722
  }
723
723
 
724
- .bsc-eq-fit-large {
724
+ :global(.bsc-eq-fit-large) {
725
725
  color: #10b981;
726
726
  }
727
727
 
728
- .bsc-eq-fit-small {
728
+ :global(.bsc-eq-fit-small) {
729
729
  color: #f43f5e;
730
730
  }
731
731
 
732
- .bsc-eq-size-v {
732
+ :global(.bsc-eq-size-v) {
733
733
  font-size: 1.25rem;
734
734
  font-weight: 950;
735
735
  color: #4f46e5;
736
736
  }
737
737
 
738
- :global(.theme-dark) .bsc-eq-size-v {
738
+ :global(.theme-dark .bsc-eq-size-v) {
739
739
  color: #818cf8;
740
740
  }
741
741
 
@@ -745,7 +745,7 @@ const brands = brandsData.brands;
745
745
  border-top: 1px dashed #e2e8f0;
746
746
  }
747
747
 
748
- :global(.theme-dark) .bsc-clothes-meta {
748
+ :global(.theme-dark .bsc-clothes-meta) {
749
749
  border-top-color: #334155;
750
750
  }
751
751
 
@@ -769,7 +769,7 @@ const brands = brandsData.brands;
769
769
  text-align: center;
770
770
  }
771
771
 
772
- .bsc-meta-cell label {
772
+ :global(.bsc-meta-cell label) {
773
773
  font-size: 0.55rem;
774
774
  font-weight: 950;
775
775
  color: #94a3b8;
@@ -777,13 +777,13 @@ const brands = brandsData.brands;
777
777
  margin-bottom: 2px;
778
778
  }
779
779
 
780
- .bsc-meta-cell span {
780
+ :global(.bsc-meta-cell span) {
781
781
  font-size: 1.1rem;
782
782
  font-weight: 950;
783
783
  color: #1e293b;
784
784
  }
785
785
 
786
- :global(.theme-dark) .bsc-meta-cell span {
786
+ :global(.theme-dark .bsc-meta-cell span) {
787
787
  color: #f1f5f9;
788
788
  }
789
789
 
@@ -809,21 +809,21 @@ const brands = brandsData.brands;
809
809
  gap: 0.4rem;
810
810
  }
811
811
 
812
- .bsc-footer-text h5 {
812
+ :global(.bsc-footer-text h5) {
813
813
  font-size: 1rem;
814
814
  font-weight: 950;
815
815
  color: #fff;
816
816
  margin: 0;
817
817
  }
818
818
 
819
- .bsc-footer-text p {
819
+ :global(.bsc-footer-text p) {
820
820
  font-size: 0.85rem;
821
821
  color: #94a3b8;
822
822
  line-height: 1.6;
823
823
  margin: 0;
824
824
  }
825
825
 
826
- .bsc-footer-text strong {
826
+ :global(.bsc-footer-text strong) {
827
827
  color: #6366f1;
828
828
  }
829
829