@jjlmoya/utils-chrono 1.22.0 → 1.24.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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/layouts/PreviewLayout.astro +1 -1
  3. package/src/tests/diacritics_density.test.ts +118 -0
  4. package/src/tests/inverted_punctuation.test.ts +84 -0
  5. package/src/tests/script_density.test.ts +94 -0
  6. package/src/tool/gear-train-explorer/client.ts +13 -12
  7. package/src/tool/gear-train-explorer/component.astro +1 -1
  8. package/src/tool/gear-train-explorer/gear-train-explorer.css +49 -24
  9. package/src/tool/mainspring-finder/i18n/es.ts +6 -6
  10. package/src/tool/mainspring-finder/i18n/it.ts +1 -1
  11. package/src/tool/power-reserve-estimator/client.ts +13 -12
  12. package/src/tool/power-reserve-estimator/component.astro +1 -1
  13. package/src/tool/power-reserve-estimator/power-reserve-estimator.css +69 -53
  14. package/src/tool/quartz-battery-health/client.ts +20 -20
  15. package/src/tool/quartz-battery-health/component.astro +1 -1
  16. package/src/tool/quartz-battery-health/i18n/es.ts +1 -1
  17. package/src/tool/quartz-battery-health/i18n/fr.ts +1 -1
  18. package/src/tool/quartz-battery-health/i18n/pt.ts +1 -1
  19. package/src/tool/quartz-battery-health/quartz-battery-health.css +77 -59
  20. package/src/tool/sidereal-time-tracker/component.astro +1 -1
  21. package/src/tool/sidereal-time-tracker/sidereal-time-tracker.css +60 -1
  22. package/src/tool/tachymeter-calculator/i18n/es.ts +6 -6
  23. package/src/tool/tachymeter-calculator/i18n/fr.ts +1 -1
  24. package/src/tool/tachymeter-calculator/i18n/it.ts +1 -1
  25. package/src/tool/tachymeter-calculator/i18n/pl.ts +1 -1
  26. package/src/tool/tachymeter-calculator/i18n/pt.ts +1 -1
  27. package/src/tool/tachymeter-calculator/i18n/tr.ts +1 -1
  28. package/src/tool/telemeter-calculator/component.astro +1 -1
  29. package/src/tool/telemeter-calculator/i18n/es.ts +1 -1
  30. package/src/tool/telemeter-calculator/telemeter-calculator.css +51 -6
  31. package/src/tool/watch-savings-planner/i18n/es.ts +2 -2
  32. package/src/tool/watch-savings-planner/i18n/pl.ts +1 -1
  33. package/src/tool/wrist-presence-calculator/client.ts +1 -1
  34. package/src/tool/wrist-presence-calculator/component.astro +3 -3
  35. package/src/tool/wrist-presence-calculator/wrist-presence-calculator.css +30 -8
@@ -1,4 +1,4 @@
1
- .tool-main-card {
1
+ .quartz-battery-card {
2
2
  background: var(--bg-surface);
3
3
  border: 1px solid var(--border-color);
4
4
  border-radius: 1.25rem;
@@ -13,7 +13,7 @@
13
13
  overflow: hidden;
14
14
  }
15
15
 
16
- .battery-panel {
16
+ .quartz-battery-card .battery-panel {
17
17
  display: flex;
18
18
  flex-direction: column;
19
19
  gap: 1.5rem;
@@ -21,13 +21,13 @@
21
21
  z-index: 1;
22
22
  }
23
23
 
24
- .panel-section {
24
+ .quartz-battery-card .panel-section {
25
25
  display: flex;
26
26
  flex-direction: column;
27
27
  gap: 0.625rem;
28
28
  }
29
29
 
30
- .section-label {
30
+ .quartz-battery-card .section-label {
31
31
  font-size: 0.85rem;
32
32
  font-weight: 600;
33
33
  color: var(--text-dimmed);
@@ -38,7 +38,7 @@
38
38
  gap: 0.3rem;
39
39
  }
40
40
 
41
- .label-optional {
41
+ .quartz-battery-card .label-optional {
42
42
  font-size: 0.75rem;
43
43
  color: var(--text-dimmed);
44
44
  opacity: 0.65;
@@ -48,7 +48,7 @@
48
48
  margin-left: 0.25rem;
49
49
  }
50
50
 
51
- .battery-select {
51
+ .quartz-battery-card .battery-select {
52
52
  width: 100%;
53
53
  padding: 0.75rem 0.875rem;
54
54
  background: var(--bg-page);
@@ -65,31 +65,31 @@
65
65
  padding-right: 2rem;
66
66
  }
67
67
 
68
- .battery-select:focus {
68
+ .quartz-battery-card .battery-select:focus {
69
69
  outline: none;
70
70
  border-color: var(--accent);
71
71
  }
72
72
 
73
- .input-row {
73
+ .quartz-battery-card .input-row {
74
74
  display: flex;
75
75
  gap: 0.75rem;
76
76
  align-items: flex-end;
77
77
  }
78
78
 
79
- .input-group {
79
+ .quartz-battery-card .input-group {
80
80
  flex: 1;
81
81
  display: flex;
82
82
  flex-direction: column;
83
83
  gap: 0.4rem;
84
84
  }
85
85
 
86
- .input-label {
86
+ .quartz-battery-card .input-label {
87
87
  font-size: 0.85rem;
88
88
  color: var(--text-dimmed);
89
89
  font-weight: 600;
90
90
  }
91
91
 
92
- .stepper-wrap {
92
+ .quartz-battery-card .stepper-wrap {
93
93
  display: flex;
94
94
  align-items: center;
95
95
  background: var(--bg-page);
@@ -99,11 +99,11 @@
99
99
  transition: border-color 0.2s;
100
100
  }
101
101
 
102
- .stepper-wrap:focus-within {
102
+ .quartz-battery-card .stepper-wrap:focus-within {
103
103
  border-color: var(--accent);
104
104
  }
105
105
 
106
- .stepper-input {
106
+ .quartz-battery-card .stepper-input {
107
107
  width: 100%;
108
108
  padding: 0.65rem 0.35rem;
109
109
  border: none;
@@ -116,17 +116,17 @@
116
116
  -moz-appearance: textfield;
117
117
  }
118
118
 
119
- .stepper-input::-webkit-inner-spin-button,
120
- .stepper-input::-webkit-outer-spin-button {
119
+ .quartz-battery-card .stepper-input::-webkit-inner-spin-button,
120
+ .quartz-battery-card .stepper-input::-webkit-outer-spin-button {
121
121
  -webkit-appearance: none;
122
122
  margin: 0;
123
123
  }
124
124
 
125
- .stepper-input:focus {
125
+ .quartz-battery-card .stepper-input:focus {
126
126
  outline: none;
127
127
  }
128
128
 
129
- .stepper-btn {
129
+ .quartz-battery-card .stepper-btn {
130
130
  display: flex;
131
131
  align-items: center;
132
132
  justify-content: center;
@@ -142,17 +142,17 @@
142
142
  user-select: none;
143
143
  }
144
144
 
145
- .stepper-btn:hover {
145
+ .quartz-battery-card .stepper-btn:hover {
146
146
  background: var(--bg-page);
147
147
  color: var(--accent);
148
148
  }
149
149
 
150
- .stepper-btn:active {
150
+ .quartz-battery-card .stepper-btn:active {
151
151
  background: var(--border-base);
152
152
  transform: scale(0.95);
153
153
  }
154
154
 
155
- .date-input {
155
+ .quartz-battery-card .date-input {
156
156
  width: 100%;
157
157
  padding: 0.75rem 0.875rem;
158
158
  background: var(--bg-page);
@@ -163,18 +163,18 @@
163
163
  transition: border-color 0.2s;
164
164
  }
165
165
 
166
- .date-input:focus {
166
+ .quartz-battery-card .date-input:focus {
167
167
  outline: none;
168
168
  border-color: var(--accent);
169
169
  }
170
170
 
171
- .date-hint {
171
+ .quartz-battery-card .date-hint {
172
172
  font-size: 0.8rem;
173
173
  color: var(--text-dimmed);
174
174
  opacity: 0.7;
175
175
  }
176
176
 
177
- .calc-btn {
177
+ .quartz-battery-card .calc-btn {
178
178
  display: flex;
179
179
  align-items: center;
180
180
  justify-content: center;
@@ -192,17 +192,17 @@
192
192
  box-shadow: 0 2px 12px rgba(99, 102, 241, 0.25);
193
193
  }
194
194
 
195
- .calc-btn:hover {
195
+ .quartz-battery-card .calc-btn:hover {
196
196
  opacity: 0.9;
197
197
  transform: translateY(-1px);
198
198
  box-shadow: 0 4px 16px rgba(99, 102, 241, 0.35);
199
199
  }
200
200
 
201
- .calc-btn:active {
201
+ .quartz-battery-card .calc-btn:active {
202
202
  transform: scale(0.97);
203
203
  }
204
204
 
205
- .result-card {
205
+ .quartz-battery-card .result-card {
206
206
  background: var(--bg-page);
207
207
  border: 1px solid var(--border-base);
208
208
  border-radius: 1rem;
@@ -213,7 +213,7 @@
213
213
  animation: fade-slide-in 0.3s ease;
214
214
  }
215
215
 
216
- .result-header {
216
+ .quartz-battery-card .result-header {
217
217
  display: flex;
218
218
  align-items: center;
219
219
  gap: 0.5rem;
@@ -222,12 +222,12 @@
222
222
  font-weight: 700;
223
223
  }
224
224
 
225
- .life-stats {
225
+ .quartz-battery-card .life-stats {
226
226
  display: flex;
227
227
  gap: 0.5rem;
228
228
  }
229
229
 
230
- .life-stat {
230
+ .quartz-battery-card .life-stat {
231
231
  flex: 1;
232
232
  display: flex;
233
233
  flex-direction: column;
@@ -235,14 +235,14 @@
235
235
  gap: 0.25rem;
236
236
  }
237
237
 
238
- .stat-value {
238
+ .quartz-battery-card .stat-value {
239
239
  font-size: 1.5rem;
240
240
  font-weight: 800;
241
241
  color: var(--text-base);
242
242
  letter-spacing: -0.02em;
243
243
  }
244
244
 
245
- .stat-label {
245
+ .quartz-battery-card .stat-label {
246
246
  font-size: 0.75rem;
247
247
  font-weight: 600;
248
248
  color: var(--text-dimmed);
@@ -251,13 +251,13 @@
251
251
  text-align: center;
252
252
  }
253
253
 
254
- .gauge-wrap {
254
+ .quartz-battery-card .gauge-wrap {
255
255
  display: flex;
256
256
  flex-direction: column;
257
257
  gap: 0.25rem;
258
258
  }
259
259
 
260
- .gauge-track {
260
+ .quartz-battery-card .gauge-track {
261
261
  width: 100%;
262
262
  height: 14px;
263
263
  background: var(--border-base);
@@ -265,44 +265,44 @@
265
265
  overflow: hidden;
266
266
  }
267
267
 
268
- .gauge-fill {
268
+ .quartz-battery-card .gauge-fill {
269
269
  height: 100%;
270
270
  border-radius: 6px;
271
271
  transition: width 0.6s ease, background 0.6s ease;
272
272
  }
273
273
 
274
- .gauge-marks {
274
+ .quartz-battery-card .gauge-marks {
275
275
  display: flex;
276
276
  justify-content: space-between;
277
277
  padding: 0 0.1rem;
278
278
  }
279
279
 
280
- .gauge-mark {
280
+ .quartz-battery-card .gauge-mark {
281
281
  font-size: 0.7rem;
282
282
  font-weight: 700;
283
283
  color: var(--text-base);
284
284
  opacity: 0.4;
285
285
  }
286
286
 
287
- .gauge-mark.gauge-danger {
287
+ .quartz-battery-card .gauge-mark.gauge-danger {
288
288
  color: var(--color-danger, #ef4444);
289
289
  opacity: 0.9;
290
290
  font-weight: 800;
291
291
  }
292
292
 
293
- .gauge-mark.gauge-warning {
293
+ .quartz-battery-card .gauge-mark.gauge-warning {
294
294
  color: var(--color-warning, #f59e0b);
295
295
  opacity: 0.85;
296
296
  font-weight: 800;
297
297
  }
298
298
 
299
- .gauge-mark.gauge-ok {
299
+ .quartz-battery-card .gauge-mark.gauge-ok {
300
300
  color: var(--color-success, #22c55e);
301
301
  opacity: 0.85;
302
302
  font-weight: 800;
303
303
  }
304
304
 
305
- .health-row {
305
+ .quartz-battery-card .health-row {
306
306
  display: flex;
307
307
  align-items: center;
308
308
  justify-content: space-between;
@@ -312,13 +312,13 @@
312
312
  border-radius: 0.75rem;
313
313
  }
314
314
 
315
- .health-label {
315
+ .quartz-battery-card .health-label {
316
316
  font-size: 0.9rem;
317
317
  font-weight: 600;
318
318
  color: var(--text-dimmed);
319
319
  }
320
320
 
321
- .health-badge {
321
+ .quartz-battery-card .health-badge {
322
322
  font-size: 0.85rem;
323
323
  font-weight: 700;
324
324
  color: var(--text-on-primary, #fff);
@@ -327,7 +327,7 @@
327
327
  background: var(--color-success, #22c55e);
328
328
  }
329
329
 
330
- .change-date-row {
330
+ .quartz-battery-card .change-date-row {
331
331
  display: flex;
332
332
  align-items: center;
333
333
  justify-content: space-between;
@@ -337,26 +337,26 @@
337
337
  border-radius: 0.75rem;
338
338
  }
339
339
 
340
- .change-date-label {
340
+ .quartz-battery-card .change-date-label {
341
341
  font-size: 0.9rem;
342
342
  font-weight: 600;
343
343
  color: var(--text-dimmed);
344
344
  }
345
345
 
346
- .change-date-value {
346
+ .quartz-battery-card .change-date-value {
347
347
  font-size: 1rem;
348
348
  font-weight: 700;
349
349
  color: var(--text-base);
350
350
  }
351
351
 
352
- .change-date-hint {
352
+ .quartz-battery-card .change-date-hint {
353
353
  font-size: 0.85rem;
354
354
  color: var(--text-dimmed);
355
355
  opacity: 0.7;
356
356
  text-align: center;
357
357
  }
358
358
 
359
- .steps-section {
359
+ .quartz-battery-card .steps-section {
360
360
  display: flex;
361
361
  flex-direction: column;
362
362
  gap: 0.75rem;
@@ -366,13 +366,13 @@
366
366
  border: 1px solid var(--border-base);
367
367
  }
368
368
 
369
- .step-row {
369
+ .quartz-battery-card .step-row {
370
370
  display: flex;
371
371
  align-items: center;
372
372
  gap: 0.875rem;
373
373
  }
374
374
 
375
- .step-marker {
375
+ .quartz-battery-card .step-marker {
376
376
  width: 1.5rem;
377
377
  height: 1.5rem;
378
378
  border-radius: 50%;
@@ -386,14 +386,14 @@
386
386
  flex-shrink: 0;
387
387
  }
388
388
 
389
- .step-text {
389
+ .quartz-battery-card .step-text {
390
390
  font-size: 0.9rem;
391
391
  color: var(--text-base);
392
392
  line-height: 1.45;
393
393
  opacity: 0.85;
394
394
  }
395
395
 
396
- .tip-row {
396
+ .quartz-battery-card .tip-row {
397
397
  display: flex;
398
398
  gap: 0.625rem;
399
399
  padding: 0.875rem 1.125rem;
@@ -402,13 +402,13 @@
402
402
  border: 1px solid var(--border-base);
403
403
  }
404
404
 
405
- .tip-icon {
405
+ .quartz-battery-card .tip-icon {
406
406
  flex-shrink: 0;
407
407
  margin-top: 0.1rem;
408
408
  color: var(--accent);
409
409
  }
410
410
 
411
- .tip-text {
411
+ .quartz-battery-card .tip-text {
412
412
  font-size: 0.9rem;
413
413
  color: var(--text-base);
414
414
  line-height: 1.5;
@@ -427,21 +427,39 @@
427
427
  }
428
428
 
429
429
  @media (max-width: 520px) {
430
- .tool-main-card {
430
+ .quartz-battery-card {
431
431
  padding: 1.25rem;
432
432
  gap: 1.5rem;
433
+ max-width: 100%;
434
+ border-radius: 0.875rem;
433
435
  }
434
436
 
435
- .input-row {
437
+ .quartz-battery-card .input-row {
436
438
  flex-direction: column;
437
439
  gap: 0.5rem;
440
+ align-items: stretch;
438
441
  }
439
442
 
440
- .life-stats {
441
- flex-wrap: wrap;
443
+ .quartz-battery-card .life-stats {
444
+ display: grid;
445
+ grid-template-columns: 1fr;
442
446
  }
443
447
 
444
- .life-stat {
445
- min-width: 30%;
448
+ .quartz-battery-card .life-stat {
449
+ min-width: 0;
450
+ padding: 0.5rem;
451
+ border-radius: 0.75rem;
452
+ background: var(--bg-surface);
453
+ }
454
+
455
+ .quartz-battery-card .health-row,
456
+ .quartz-battery-card .change-date-row {
457
+ align-items: flex-start;
458
+ flex-direction: column;
459
+ }
460
+
461
+ .quartz-battery-card .stat-value,
462
+ .quartz-battery-card .change-date-value {
463
+ overflow-wrap: anywhere;
446
464
  }
447
465
  }
@@ -8,7 +8,7 @@ interface Props {
8
8
  const { ui } = Astro.props;
9
9
  ---
10
10
 
11
- <div class="tool-main-card" data-ui={JSON.stringify(ui)}>
11
+ <div class="sidereal-time-shell" data-ui={JSON.stringify(ui)}>
12
12
  <SiderealPanel labels={ui} />
13
13
  </div>
14
14
 
@@ -24,13 +24,15 @@
24
24
  max-width: 1200px;
25
25
  margin: 0 auto;
26
26
  border: 1px solid var(--sid-border);
27
+ box-sizing: border-box;
28
+ overflow: hidden;
27
29
  }
28
30
 
29
31
 
30
32
 
31
33
  .sid-grid {
32
34
  display: grid;
33
- grid-template-columns: 1.2fr 1fr;
35
+ grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
34
36
  gap: 2.5rem;
35
37
  margin-top: 1.5rem;
36
38
  }
@@ -65,11 +67,13 @@
65
67
  align-items: center;
66
68
  position: relative;
67
69
  padding: 2rem;
70
+ min-width: 0;
68
71
  }
69
72
 
70
73
  .sid-svg-clock {
71
74
  width: 100%;
72
75
  max-width: 420px;
76
+ min-width: 0;
73
77
  height: auto;
74
78
  filter: drop-shadow(0 8px 16px rgba(0, 0, 0, 0.3));
75
79
  }
@@ -96,6 +100,7 @@
96
100
  display: flex;
97
101
  flex-direction: column;
98
102
  gap: 1.5rem;
103
+ min-width: 0;
99
104
  }
100
105
 
101
106
  .sid-card-panel {
@@ -111,6 +116,8 @@
111
116
  align-items: center;
112
117
  padding: 0.75rem 0;
113
118
  border-bottom: 1px solid var(--sid-border);
119
+ gap: 1rem;
120
+ min-width: 0;
114
121
  }
115
122
 
116
123
 
@@ -122,6 +129,7 @@
122
129
  .sid-readout-label {
123
130
  font-size: 0.95rem;
124
131
  color: var(--sid-text-muted);
132
+ min-width: 0;
125
133
  }
126
134
 
127
135
  .sid-readout-value {
@@ -129,6 +137,8 @@
129
137
  font-weight: 600;
130
138
  font-variant-numeric: tabular-nums;
131
139
  color: var(--sid-text);
140
+ overflow-wrap: anywhere;
141
+ text-align: right;
132
142
  }
133
143
 
134
144
  .sid-readout-value.sid-gold-text {
@@ -200,10 +210,12 @@
200
210
  .sid-speed-btn-row {
201
211
  display: flex;
202
212
  gap: 0.5rem;
213
+ min-width: 0;
203
214
  }
204
215
 
205
216
  .sid-speed-btn-row button {
206
217
  flex: 1;
218
+ min-width: 0;
207
219
  }
208
220
 
209
221
  .sid-tip-box {
@@ -255,3 +267,50 @@
255
267
  background: color-mix(in srgb, var(--sid-gold) 10%, transparent);
256
268
  transform: scale(1.1);
257
269
  }
270
+
271
+ @media (max-width: 520px) {
272
+ .sid-card {
273
+ padding: 1rem;
274
+ border-radius: 0.875rem;
275
+ max-width: 100%;
276
+ }
277
+
278
+ .sid-grid {
279
+ gap: 1rem;
280
+ margin-top: 0;
281
+ }
282
+
283
+ .sid-dial-container {
284
+ padding: 0.25rem;
285
+ }
286
+
287
+ .sid-svg-clock {
288
+ max-width: min(100%, 320px);
289
+ }
290
+
291
+ .sid-card-panel {
292
+ padding: 1rem;
293
+ border-radius: 0.875rem;
294
+ }
295
+
296
+ .sid-readout-row {
297
+ align-items: flex-start;
298
+ flex-direction: column;
299
+ gap: 0.25rem;
300
+ }
301
+
302
+ .sid-readout-value {
303
+ width: 100%;
304
+ text-align: left;
305
+ font-size: 1rem;
306
+ }
307
+
308
+ .sid-speed-btn-row {
309
+ flex-wrap: wrap;
310
+ }
311
+
312
+ .sid-btn-toggle {
313
+ padding: 0.5rem 0.65rem;
314
+ font-size: 0.8rem;
315
+ }
316
+ }
@@ -5,7 +5,7 @@ import { bibliography } from '../bibliography';
5
5
  export const content: ToolLocaleContent<TachymeterCalculatorUI> = {
6
6
  slug: 'calculadora-taquimetrica',
7
7
  title: 'Calculadora Taquimetrica: Velocidad desde tiempo transcurrido',
8
- description: 'Calcula la velocidad a partir del tiempo transcurrido usando la formula del taquimetro. Funciona con cualquier cronografo que tenga una escala taquimetrica en el bisel.',
8
+ description: 'Calcula la velocidad a partir del tiempo transcurrido usando la fórmula del taquímetro. Funciona con cualquier cronógrafo que tenga una escala taquimétrica en el bisel.',
9
9
  ui: {
10
10
  title: 'Calculadora Taquimetrica',
11
11
  timeLabel: 'Tiempo Transcurrido (segundos)',
@@ -56,23 +56,23 @@ export const content: ToolLocaleContent<TachymeterCalculatorUI> = {
56
56
  ],
57
57
  faq: [
58
58
  {
59
- question: 'Como se usa un bisel taquimetrico en mi reloj?',
59
+ question: '¿Como se usa un bisel taquimetrico en mi reloj?',
60
60
  answer: 'Pon en marcha el cronografo en un punto de referencia (p. ej., un hito de carretera). Detenlo despues de exactamente 1 km (o 1 milla). La manecilla de segundos apunta a la velocidad en la escala del bisel. Por ejemplo, si tardaste 36 segundos en recorrer 1 km, la manecilla apunta a 100, lo que significa 100 km/h.',
61
61
  },
62
62
  {
63
- question: 'Que pasa si mi tiempo transcurrido es mas rapido de lo que el bisel puede leer?',
63
+ question: '¿Que pasa si mi tiempo transcurrido es mas rapido de lo que el bisel puede leer?',
64
64
  answer: 'Algunos taquimetros solo llegan hasta 400 o 500. Si recorres 1 km en menos de 9 segundos, usa una distancia base mayor. Recorre 2 km y divide la lectura del bisel entre 2, o recorre 3 km y divide entre 3.',
65
65
  },
66
66
  {
67
- question: 'Que pasa si mi tiempo transcurrido es mas lento de lo que el bisel puede leer?',
67
+ question: '¿Que pasa si mi tiempo transcurrido es mas lento de lo que el bisel puede leer?',
68
68
  answer: 'Usa una distancia base mas corta. Por ejemplo, si tardas 90 segundos en recorrer 1 km, recorre 0.5 km en su lugar. Lee el bisel y multiplica por 2. La escala taquimetrica estandar cubre tiempos de aproximadamente 7 a 60 segundos.',
69
69
  },
70
70
  {
71
- question: 'Puedo usar un taquimetro para algo mas que la velocidad?',
71
+ question: '¿Puedo usar un taquimetro para algo mas que la velocidad?',
72
72
  answer: 'Si. El taquimetro mide cualquier tasa por hora. Por ejemplo, mide cuanto tiempo se tarda en completar una tarea y la escala muestra cuantas puedes hacer por hora. En fabricacion, una tarea de 30 segundos significa 120 unidades por hora.',
73
73
  },
74
74
  {
75
- question: 'Todos los taquimetros usan la misma escala?',
75
+ question: '¿Todos los taquimetros usan la misma escala?',
76
76
  answer: 'La mayoria usa la escala logaritmica estandar basada en la formula 3.600 ÷ segundos. Sin embargo, algunos relojes antiguos o marcas pueden tener variaciones. La escala fisica tambien puede estar limitada por el minutero y las marcas del bisel.',
77
77
  },
78
78
  ],
@@ -5,7 +5,7 @@ import { bibliography } from '../bibliography';
5
5
  export const content: ToolLocaleContent<TachymeterCalculatorUI> = {
6
6
  slug: 'calculateur-tachymetre',
7
7
  title: 'Calculateur Tachymetre: Vitesse depuis le temps ecoule',
8
- description: 'Calculez la vitesse a partir du temps ecoule en utilisant la formule du tachymetre. Fonctionne avec tout chronographe possedant une echelle tachymetrique sur la lunette.',
8
+ description: 'Calculez la vitesse à partir du temps écoulé en utilisant la formule du tachymètre. Fonctionne avec tout chronographe possédant une échelle tachymétrique sur la lunette.',
9
9
  ui: {
10
10
  title: 'Calculateur Tachymetre',
11
11
  timeLabel: 'Temps Ecoule (secondes)',
@@ -5,7 +5,7 @@ import { bibliography } from '../bibliography';
5
5
  export const content: ToolLocaleContent<TachymeterCalculatorUI> = {
6
6
  slug: 'calcolatore-tachimetro',
7
7
  title: 'Calcolatore Tachimetro: Velocita dal tempo trascorso',
8
- description: 'Calcola la velocita dal tempo trascorso usando la formula del tachimetro. Funziona con qualsiasi cronografo dotato di scala tachimetrica sulla lunetta.',
8
+ description: 'Calcola la velocità dal tempo trascorso usando la formula del tachimetro. Funziona con qualsiasi cronografo dotato di scala tachimetrica sulla lunetta; è utile anche per più misure.',
9
9
  ui: {
10
10
  title: 'Calcolatore Tachimetro',
11
11
  timeLabel: 'Tempo Trascorso (secondi)',
@@ -5,7 +5,7 @@ import { bibliography } from '../bibliography';
5
5
  export const content: ToolLocaleContent<TachymeterCalculatorUI> = {
6
6
  slug: 'kalkulator-tachymetru',
7
7
  title: 'Kalkulator Tachymetru: Predkosc z czasu pomiaru',
8
- description: 'Oblicz predkosc z czasu pomiaru za pomoca wzoru tachymetrycznego. Dziala z kazdym chronografem wyposazonym w skale tachymetryczna na bezelu.',
8
+ description: 'Oblicz prędkość z czasu pomiaru za pomocą wzoru tachymetrycznego. Działa z każdym chronografem wyposażonym w skalę tachymetryczną na bezelu.',
9
9
  ui: {
10
10
  title: 'Kalkulator Tachymetru',
11
11
  timeLabel: 'Czas pomiaru (sekundy)',
@@ -5,7 +5,7 @@ import { bibliography } from '../bibliography';
5
5
  export const content: ToolLocaleContent<TachymeterCalculatorUI> = {
6
6
  slug: 'calculadora-taquimetrica-ptbr',
7
7
  title: 'Calculadora Taquimetrica: Velocidade a partir do tempo decorrido',
8
- description: 'Calcule a velocidade a partir do tempo decorrido usando a formula do taquimetro. Funciona com qualquer cronografo que tenha uma escala taquimetrica no bisel.',
8
+ description: 'Calcule a velocidade a partir do tempo decorrido usando a fórmula do taquímetro. Funciona com qualquer cronógrafo que tenha uma escala taquimétrica no bisel.',
9
9
  ui: {
10
10
  title: 'Calculadora Taquimetrica',
11
11
  timeLabel: 'Tempo Decorrido (segundos)',
@@ -5,7 +5,7 @@ import { bibliography } from '../bibliography';
5
5
  export const content: ToolLocaleContent<TachymeterCalculatorUI> = {
6
6
  slug: 'takimetre-hesaplayici',
7
7
  title: 'Takimetre Hesaplayici: Gecen Sureden Hiz Hesaplama',
8
- description: 'Takimetre formulunu kullanarak gecen sureden hiz hesaplayin. Takimetre bezel olcegine sahip herhangi bir kronograf saatle calisir.',
8
+ description: 'Takimetre formülünü kullanarak geçen süreden hız hesaplayın. Takimetre bezel ölçeğine sahip herhangi bir kronograf saatle çalışır.',
9
9
  ui: {
10
10
  title: 'Takimetre Hesaplayici',
11
11
  timeLabel: 'Gecen Sure (saniye)',
@@ -8,7 +8,7 @@ interface Props {
8
8
  const { ui } = Astro.props;
9
9
  ---
10
10
 
11
- <div class="tool-main-card" data-ui={JSON.stringify(ui)}>
11
+ <div class="telemeter-shell" data-ui={JSON.stringify(ui)}>
12
12
  <TelemeterPanel labels={ui} />
13
13
  </div>
14
14
 
@@ -66,7 +66,7 @@ export const content: ToolLocaleContent<TelemeterCalculatorUI> = {
66
66
  distanceResult: 'Distancia Medida',
67
67
  elapsedTime: 'Tiempo Transcurrido',
68
68
  historyTitle: 'Historial de Mediciones',
69
- noHistory: '¡No hay mediciones aún. Inicia un cálculo arriba!',
69
+ noHistory: '¡No hay mediciones aún. ¡Inicia un cálculo arriba!',
70
70
  sec: 's',
71
71
  km: 'km',
72
72
  m: 'm',