@jjlmoya/utils-nautical 1.13.0 → 1.14.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.
@@ -416,356 +416,3 @@ const { ui } = Astro.props;
416
416
  loadFromLocal();
417
417
  </script>
418
418
 
419
- <style>
420
- .sail-area-calculator {
421
- --sa-primary: #003b73;
422
- --sa-primary-light: #0055a4;
423
- --sa-secondary: #ef4135;
424
- --sa-radius: 16px;
425
- --n-bg: #fff;
426
- --n-bg-muted: #f1f5f9;
427
- --n-text: #0f172a;
428
- --n-text-muted: #475569;
429
- --n-text-dim: #64748b;
430
- --n-border: #e2e8f0;
431
- --n-shadow: rgba(0, 0, 0, 0.05);
432
- --n-primary: #3b82f6;
433
- --n-primary-on: #fff;
434
- --n-accent: #6366f1;
435
- --n-cyan: #0891b2;
436
- --n-success: #10b981;
437
- --n-warning: #f59e0b;
438
- --n-error: #f43f5e;
439
-
440
- padding: 1rem;
441
- max-width: 1200px;
442
- margin: 0 auto;
443
- }
444
-
445
- :global(.theme-dark) .sail-area-calculator {
446
- --n-bg: #0f172a;
447
- --n-bg-muted: #1e293b;
448
- --n-text: #f8fafc;
449
- --n-text-muted: #94a3b8;
450
- --n-text-dim: #64748b;
451
- --n-border: #334155;
452
- --n-shadow: rgba(0, 0, 0, 0.3);
453
- --n-primary: #60a5fa;
454
- --n-primary-on: #fff;
455
- --n-accent: #818cf8;
456
- --n-cyan: #22d3ee;
457
- --n-success: #34d399;
458
- --n-warning: #fbbf24;
459
- --n-error: #fb7185;
460
- }
461
-
462
- .sa-calculator-wrapper {
463
- background: var(--n-bg);
464
- border: 1px solid var(--n-border);
465
- border-radius: var(--sa-radius);
466
- padding: 1.5rem;
467
- display: flex;
468
- flex-direction: column;
469
- gap: 2rem;
470
- }
471
-
472
- .sa-main-controls {
473
- display: flex;
474
- flex-direction: column;
475
- gap: 1.5rem;
476
- }
477
-
478
- .sa-section-group h3 {
479
- font-size: 0.75rem;
480
- text-transform: uppercase;
481
- letter-spacing: 0.1em;
482
- color: var(--n-text-muted);
483
- margin-bottom: 1rem;
484
- display: flex;
485
- align-items: center;
486
- gap: 0.5rem;
487
- opacity: 0.8;
488
- border-bottom: 1px solid var(--n-border);
489
- padding-bottom: 0.4rem;
490
- }
491
-
492
- .sa-compact-grid {
493
- display: grid;
494
- grid-template-columns: repeat(2, 1fr);
495
- gap: 1rem;
496
- }
497
-
498
- .sa-input-row {
499
- display: flex;
500
- flex-direction: column;
501
- gap: 0.4rem;
502
- }
503
-
504
- .sa-input-row label {
505
- font-size: 0.7rem;
506
- font-weight: 700;
507
- color: var(--n-text-muted);
508
- }
509
-
510
- .sa-elegant-input {
511
- background: var(--n-bg-muted);
512
- border: 1.5px solid var(--n-border);
513
- border-radius: 10px;
514
- padding: 0.7rem 0.9rem;
515
- font-size: 0.95rem;
516
- color: var(--n-text);
517
- font-weight: 600;
518
- width: 100%;
519
- }
520
-
521
- .sa-elegant-input:focus {
522
- border-color: var(--sa-primary-light);
523
- outline: none;
524
- }
525
-
526
- .sa-input-with-unit {
527
- position: relative;
528
- display: flex;
529
- align-items: center;
530
- }
531
-
532
- .sa-unit-tag {
533
- position: absolute;
534
- right: 10px;
535
- font-size: 0.65rem;
536
- font-weight: 900;
537
- color: var(--n-text-muted);
538
- background: var(--n-bg);
539
- border: 1px solid var(--n-border);
540
- padding: 2px 6px;
541
- border-radius: 4px;
542
- }
543
-
544
- .sa-unit-tag select {
545
- color: var(--n-text-muted);
546
- }
547
-
548
- .sa-sidebar-results {
549
- background: var(--n-bg-muted);
550
- padding: 1.5rem;
551
- border-radius: var(--sa-radius);
552
- border: 1px solid var(--n-border);
553
- text-align: center;
554
- }
555
-
556
- .sad-value-large {
557
- font-size: 3.5rem;
558
- font-weight: 950;
559
- letter-spacing: -0.04em;
560
- color: var(--sa-primary);
561
- line-height: 1;
562
- }
563
-
564
- :global(.theme-dark) .sail-area-calculator .sad-value-large {
565
- color: var(--n-accent);
566
- }
567
-
568
- .sad-label {
569
- font-size: 0.75rem;
570
- font-weight: 850;
571
- color: var(--n-text-muted);
572
- text-transform: uppercase;
573
- letter-spacing: 0.15em;
574
- }
575
-
576
- .sa-gauge-track {
577
- height: 4px;
578
- background: var(--n-border);
579
- border-radius: 2px;
580
- margin: 1.5rem 0;
581
- position: relative;
582
- }
583
-
584
- .sa-gauge-indicator {
585
- position: absolute;
586
- top: 50%;
587
- width: 14px;
588
- height: 14px;
589
- background: var(--sa-secondary);
590
- border: 3px solid var(--n-bg-muted);
591
- border-radius: 50%;
592
- transform: translate(-50%, -50%);
593
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
594
- transition: left 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
595
- }
596
-
597
- .sa-verdict-box {
598
- background: var(--n-bg);
599
- padding: 1rem;
600
- border-radius: 12px;
601
- border: 1px solid var(--n-border);
602
- }
603
-
604
- .sa-verdict-box h4 {
605
- font-size: 0.95rem;
606
- margin-bottom: 0.4rem;
607
- color: var(--n-text);
608
- }
609
-
610
- .sa-verdict-box p {
611
- font-size: 0.8rem;
612
- line-height: 1.5;
613
- color: var(--n-text-muted);
614
- }
615
-
616
- .sa-stats-summary {
617
- display: grid;
618
- grid-template-columns: 1fr 1fr;
619
- gap: 1rem;
620
- margin-top: 1.5rem;
621
- padding-top: 1.5rem;
622
- border-top: 1px dashed var(--n-border);
623
- }
624
-
625
- .sa-stat-item span {
626
- font-size: 0.75rem;
627
- color: var(--n-text-muted);
628
- display: block;
629
- }
630
-
631
- .sa-stat-item span:last-child {
632
- font-size: 1.2rem;
633
- font-weight: 900;
634
- color: var(--n-text);
635
- }
636
-
637
- .sa-export-btn-premium {
638
- width: 100%;
639
- margin-top: 1.5rem;
640
- padding: 1rem;
641
- background: var(--sa-primary);
642
- color: var(--n-primary-on);
643
- border: none;
644
- border-radius: 10px;
645
- font-size: 0.75rem;
646
- font-weight: 800;
647
- letter-spacing: 0.05em;
648
- cursor: pointer;
649
- display: flex;
650
- align-items: center;
651
- justify-content: center;
652
- gap: 0.5rem;
653
- }
654
-
655
- .sa-slider-box {
656
- background: var(--n-bg-muted);
657
- padding: 1.5rem;
658
- border-radius: 12px;
659
- border: 1px solid var(--n-border);
660
- }
661
-
662
- .sa-slider-header {
663
- display: flex;
664
- justify-content: space-between;
665
- align-items: center;
666
- margin-bottom: 1.5rem;
667
- }
668
-
669
- .sa-slider-header label {
670
- font-size: 0.85rem;
671
- font-weight: 800;
672
- color: var(--n-text);
673
- }
674
-
675
- .sa-percentage-badge {
676
- background: var(--sa-primary);
677
- color: var(--n-primary-on);
678
- padding: 4px 10px;
679
- border-radius: 20px;
680
- font-size: 0.8rem;
681
- font-weight: 900;
682
- }
683
-
684
- .sa-slider-wrapper {
685
- padding: 0 5px;
686
- }
687
-
688
- .sa-modern-slider {
689
- appearance: none;
690
- width: 100%;
691
- height: 6px;
692
- background: var(--n-border);
693
- border-radius: 10px;
694
- outline: none;
695
- margin: 1rem 0;
696
- }
697
-
698
- .sa-modern-slider::-webkit-slider-thumb {
699
- appearance: none;
700
- width: 24px;
701
- height: 24px;
702
- background: var(--sa-primary);
703
- border: 4px solid var(--n-bg-muted);
704
- border-radius: 50%;
705
- cursor: pointer;
706
- box-shadow: 0 2px 10px rgba(0, 59, 115, 0.2);
707
- transition: transform 0.2s;
708
- }
709
-
710
- .sa-modern-slider::-webkit-slider-thumb:hover {
711
- transform: scale(1.1);
712
- }
713
-
714
- .sa-modern-slider::-moz-range-thumb {
715
- width: 24px;
716
- height: 24px;
717
- background: var(--sa-primary);
718
- border: 4px solid var(--n-bg-muted);
719
- border-radius: 50%;
720
- cursor: pointer;
721
- }
722
-
723
- .sa-modern-slider::-moz-range-track {
724
- height: 6px;
725
- background: var(--n-border);
726
- border-radius: 10px;
727
- }
728
-
729
- .sa-slider-ticks {
730
- display: flex;
731
- justify-content: space-between;
732
- margin-top: 0.5rem;
733
- }
734
-
735
- .sa-slider-ticks span {
736
- font-size: 0.65rem;
737
- font-weight: 700;
738
- color: var(--n-text-muted);
739
- }
740
-
741
- @media (min-width: 1024px) {
742
- .sail-area-calculator {
743
- padding: 2rem;
744
- }
745
-
746
- .sa-calculator-wrapper {
747
- display: grid;
748
- grid-template-columns: 1fr 400px;
749
- gap: 3rem;
750
- padding: 2.5rem;
751
- }
752
-
753
- .sa-compact-grid {
754
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
755
- }
756
-
757
- .sa-main-controls {
758
- gap: 2.5rem;
759
- }
760
-
761
- .sa-sidebar-results {
762
- position: sticky;
763
- top: 2rem;
764
- padding: 2.5rem;
765
- }
766
-
767
- .sad-value-large {
768
- font-size: 5.5rem;
769
- }
770
- }
771
- </style>
@@ -0,0 +1,351 @@
1
+ .sail-area-calculator {
2
+ --sa-primary: #003b73;
3
+ --sa-primary-light: #0055a4;
4
+ --sa-secondary: #ef4135;
5
+ --sa-radius: 16px;
6
+ --n-bg: #fff;
7
+ --n-bg-muted: #f1f5f9;
8
+ --n-text: #0f172a;
9
+ --n-text-muted: #475569;
10
+ --n-text-dim: #64748b;
11
+ --n-border: #e2e8f0;
12
+ --n-shadow: rgba(0, 0, 0, 0.05);
13
+ --n-primary: #3b82f6;
14
+ --n-primary-on: #fff;
15
+ --n-accent: #6366f1;
16
+ --n-cyan: #0891b2;
17
+ --n-success: #10b981;
18
+ --n-warning: #f59e0b;
19
+ --n-error: #f43f5e;
20
+
21
+ padding: 1rem;
22
+ max-width: 1200px;
23
+ margin: 0 auto;
24
+ }
25
+
26
+ :global(.theme-dark) .sail-area-calculator {
27
+ --n-bg: #0f172a;
28
+ --n-bg-muted: #1e293b;
29
+ --n-text: #f8fafc;
30
+ --n-text-muted: #94a3b8;
31
+ --n-text-dim: #64748b;
32
+ --n-border: #334155;
33
+ --n-shadow: rgba(0, 0, 0, 0.3);
34
+ --n-primary: #60a5fa;
35
+ --n-primary-on: #fff;
36
+ --n-accent: #818cf8;
37
+ --n-cyan: #22d3ee;
38
+ --n-success: #34d399;
39
+ --n-warning: #fbbf24;
40
+ --n-error: #fb7185;
41
+ }
42
+
43
+ .sa-calculator-wrapper {
44
+ background: var(--n-bg);
45
+ border: 1px solid var(--n-border);
46
+ border-radius: var(--sa-radius);
47
+ padding: 1.5rem;
48
+ display: flex;
49
+ flex-direction: column;
50
+ gap: 2rem;
51
+ }
52
+
53
+ .sa-main-controls {
54
+ display: flex;
55
+ flex-direction: column;
56
+ gap: 1.5rem;
57
+ }
58
+
59
+ .sa-section-group h3 {
60
+ font-size: 0.75rem;
61
+ text-transform: uppercase;
62
+ letter-spacing: 0.1em;
63
+ color: var(--n-text-muted);
64
+ margin-bottom: 1rem;
65
+ display: flex;
66
+ align-items: center;
67
+ gap: 0.5rem;
68
+ opacity: 0.8;
69
+ border-bottom: 1px solid var(--n-border);
70
+ padding-bottom: 0.4rem;
71
+ }
72
+
73
+ .sa-compact-grid {
74
+ display: grid;
75
+ grid-template-columns: repeat(2, 1fr);
76
+ gap: 1rem;
77
+ }
78
+
79
+ .sa-input-row {
80
+ display: flex;
81
+ flex-direction: column;
82
+ gap: 0.4rem;
83
+ }
84
+
85
+ .sa-input-row label {
86
+ font-size: 0.7rem;
87
+ font-weight: 700;
88
+ color: var(--n-text-muted);
89
+ }
90
+
91
+ .sa-elegant-input {
92
+ background: var(--n-bg-muted);
93
+ border: 1.5px solid var(--n-border);
94
+ border-radius: 10px;
95
+ padding: 0.7rem 0.9rem;
96
+ font-size: 0.95rem;
97
+ color: var(--n-text);
98
+ font-weight: 600;
99
+ width: 100%;
100
+ }
101
+
102
+ .sa-elegant-input:focus {
103
+ border-color: var(--sa-primary-light);
104
+ outline: none;
105
+ }
106
+
107
+ .sa-input-with-unit {
108
+ position: relative;
109
+ display: flex;
110
+ align-items: center;
111
+ }
112
+
113
+ .sa-unit-tag {
114
+ position: absolute;
115
+ right: 10px;
116
+ font-size: 0.65rem;
117
+ font-weight: 900;
118
+ color: var(--n-text-muted);
119
+ background: var(--n-bg);
120
+ border: 1px solid var(--n-border);
121
+ padding: 2px 6px;
122
+ border-radius: 4px;
123
+ }
124
+
125
+ .sa-unit-tag select {
126
+ color: var(--n-text-muted);
127
+ }
128
+
129
+ .sa-sidebar-results {
130
+ background: var(--n-bg-muted);
131
+ padding: 1.5rem;
132
+ border-radius: var(--sa-radius);
133
+ border: 1px solid var(--n-border);
134
+ text-align: center;
135
+ }
136
+
137
+ .sad-value-large {
138
+ font-size: 3.5rem;
139
+ font-weight: 950;
140
+ letter-spacing: -0.04em;
141
+ color: var(--sa-primary);
142
+ line-height: 1;
143
+ }
144
+
145
+ :global(.theme-dark) .sail-area-calculator .sad-value-large {
146
+ color: var(--n-accent);
147
+ }
148
+
149
+ .sad-label {
150
+ font-size: 0.75rem;
151
+ font-weight: 850;
152
+ color: var(--n-text-muted);
153
+ text-transform: uppercase;
154
+ letter-spacing: 0.15em;
155
+ }
156
+
157
+ .sa-gauge-track {
158
+ height: 4px;
159
+ background: var(--n-border);
160
+ border-radius: 2px;
161
+ margin: 1.5rem 0;
162
+ position: relative;
163
+ }
164
+
165
+ .sa-gauge-indicator {
166
+ position: absolute;
167
+ top: 50%;
168
+ width: 14px;
169
+ height: 14px;
170
+ background: var(--sa-secondary);
171
+ border: 3px solid var(--n-bg-muted);
172
+ border-radius: 50%;
173
+ transform: translate(-50%, -50%);
174
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
175
+ transition: left 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
176
+ }
177
+
178
+ .sa-verdict-box {
179
+ background: var(--n-bg);
180
+ padding: 1rem;
181
+ border-radius: 12px;
182
+ border: 1px solid var(--n-border);
183
+ }
184
+
185
+ .sa-verdict-box h4 {
186
+ font-size: 0.95rem;
187
+ margin-bottom: 0.4rem;
188
+ color: var(--n-text);
189
+ }
190
+
191
+ .sa-verdict-box p {
192
+ font-size: 0.8rem;
193
+ line-height: 1.5;
194
+ color: var(--n-text-muted);
195
+ }
196
+
197
+ .sa-stats-summary {
198
+ display: grid;
199
+ grid-template-columns: 1fr 1fr;
200
+ gap: 1rem;
201
+ margin-top: 1.5rem;
202
+ padding-top: 1.5rem;
203
+ border-top: 1px dashed var(--n-border);
204
+ }
205
+
206
+ .sa-stat-item span {
207
+ font-size: 0.75rem;
208
+ color: var(--n-text-muted);
209
+ display: block;
210
+ }
211
+
212
+ .sa-stat-item span:last-child {
213
+ font-size: 1.2rem;
214
+ font-weight: 900;
215
+ color: var(--n-text);
216
+ }
217
+
218
+ .sa-export-btn-premium {
219
+ width: 100%;
220
+ margin-top: 1.5rem;
221
+ padding: 1rem;
222
+ background: var(--sa-primary);
223
+ color: var(--n-primary-on);
224
+ border: none;
225
+ border-radius: 10px;
226
+ font-size: 0.75rem;
227
+ font-weight: 800;
228
+ letter-spacing: 0.05em;
229
+ cursor: pointer;
230
+ display: flex;
231
+ align-items: center;
232
+ justify-content: center;
233
+ gap: 0.5rem;
234
+ }
235
+
236
+ .sa-slider-box {
237
+ background: var(--n-bg-muted);
238
+ padding: 1.5rem;
239
+ border-radius: 12px;
240
+ border: 1px solid var(--n-border);
241
+ }
242
+
243
+ .sa-slider-header {
244
+ display: flex;
245
+ justify-content: space-between;
246
+ align-items: center;
247
+ margin-bottom: 1.5rem;
248
+ }
249
+
250
+ .sa-slider-header label {
251
+ font-size: 0.85rem;
252
+ font-weight: 800;
253
+ color: var(--n-text);
254
+ }
255
+
256
+ .sa-percentage-badge {
257
+ background: var(--sa-primary);
258
+ color: var(--n-primary-on);
259
+ padding: 4px 10px;
260
+ border-radius: 20px;
261
+ font-size: 0.8rem;
262
+ font-weight: 900;
263
+ }
264
+
265
+ .sa-slider-wrapper {
266
+ padding: 0 5px;
267
+ }
268
+
269
+ .sa-modern-slider {
270
+ appearance: none;
271
+ width: 100%;
272
+ height: 6px;
273
+ background: var(--n-border);
274
+ border-radius: 10px;
275
+ outline: none;
276
+ margin: 1rem 0;
277
+ }
278
+
279
+ .sa-modern-slider::-webkit-slider-thumb {
280
+ appearance: none;
281
+ width: 24px;
282
+ height: 24px;
283
+ background: var(--sa-primary);
284
+ border: 4px solid var(--n-bg-muted);
285
+ border-radius: 50%;
286
+ cursor: pointer;
287
+ box-shadow: 0 2px 10px rgba(0, 59, 115, 0.2);
288
+ transition: transform 0.2s;
289
+ }
290
+
291
+ .sa-modern-slider::-webkit-slider-thumb:hover {
292
+ transform: scale(1.1);
293
+ }
294
+
295
+ .sa-modern-slider::-moz-range-thumb {
296
+ width: 24px;
297
+ height: 24px;
298
+ background: var(--sa-primary);
299
+ border: 4px solid var(--n-bg-muted);
300
+ border-radius: 50%;
301
+ cursor: pointer;
302
+ }
303
+
304
+ .sa-modern-slider::-moz-range-track {
305
+ height: 6px;
306
+ background: var(--n-border);
307
+ border-radius: 10px;
308
+ }
309
+
310
+ .sa-slider-ticks {
311
+ display: flex;
312
+ justify-content: space-between;
313
+ margin-top: 0.5rem;
314
+ }
315
+
316
+ .sa-slider-ticks span {
317
+ font-size: 0.65rem;
318
+ font-weight: 700;
319
+ color: var(--n-text-muted);
320
+ }
321
+
322
+ @media (min-width: 1024px) {
323
+ .sail-area-calculator {
324
+ padding: 2rem;
325
+ }
326
+
327
+ .sa-calculator-wrapper {
328
+ display: grid;
329
+ grid-template-columns: 1fr 400px;
330
+ gap: 3rem;
331
+ padding: 2.5rem;
332
+ }
333
+
334
+ .sa-compact-grid {
335
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
336
+ }
337
+
338
+ .sa-main-controls {
339
+ gap: 2.5rem;
340
+ }
341
+
342
+ .sa-sidebar-results {
343
+ position: sticky;
344
+ top: 2rem;
345
+ padding: 2.5rem;
346
+ }
347
+
348
+ .sad-value-large {
349
+ font-size: 5.5rem;
350
+ }
351
+ }