@jjlmoya/utils-drones 1.4.0 → 1.6.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.
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  const { ui } = Astro.props;
3
3
  import { Icon } from "astro-icon/components";
4
- import "./AntennaLengthCalculator.css";
5
4
 
6
5
  const presets = [
7
6
  { label: ui.presetFpv, val: 5800 },
@@ -214,26 +213,35 @@ const materials = [
214
213
  }
215
214
  }
216
215
 
217
- function calculate() {
218
- const freq = parseFloat(freqInput.value);
219
- const vf = parseFloat(vfInput.value);
220
- const waveType = getWaveType();
221
-
222
- if (!freq || freq <= 0) return;
216
+ function validateInputs() {
217
+ if (!freqInput || !(freqInput as HTMLInputElement).value || !vfInput) return null;
218
+ const freq = parseFloat((freqInput as HTMLInputElement).value);
219
+ const vf = parseFloat((vfInput as HTMLSelectElement).value);
220
+ return freq > 0 ? { freq, vf } : null;
221
+ }
223
222
 
223
+ function calculateLengths(freq, vf, waveType) {
224
224
  const lambda = 300000 / freq;
225
225
  const totalPhysicalLambda = lambda * vf;
226
-
227
226
  const totalLen = waveType === 'half' ? totalPhysicalLambda / 2 : totalPhysicalLambda / 4;
228
227
  const branchLen = waveType === 'half' ? totalLen / 2 : totalLen;
228
+ return { totalLen, branchLen };
229
+ }
229
230
 
230
- updateLayerVisibility(waveType);
231
- updateVisuals(waveType, waveType === 'half' ? branchLen : totalLen);
232
-
231
+ function displayLengths(totalLen, branchLen) {
233
232
  if (elements.total) elements.total.textContent = Math.round(totalLen).toString();
234
233
  if (elements.branch) elements.branch.textContent = Math.round(branchLen).toString();
234
+ }
235
235
 
236
- updateHarmonics(freq);
236
+ function calculate() {
237
+ const inputs = validateInputs();
238
+ if (!inputs) return;
239
+ const waveType = getWaveType();
240
+ const { totalLen, branchLen } = calculateLengths(inputs.freq, inputs.vf, waveType);
241
+ updateLayerVisibility(waveType);
242
+ updateVisuals(waveType, waveType === 'half' ? branchLen : totalLen);
243
+ displayLengths(totalLen, branchLen);
244
+ updateHarmonics(inputs.freq);
237
245
  }
238
246
 
239
247
  function setArmAttributes(x, isLeft) {
@@ -319,42 +327,761 @@ const materials = [
319
327
  </script>
320
328
 
321
329
  <style>
322
- .custom-select-premium {
323
- width: 100%;
324
- padding: 1.1rem 3rem 1.1rem 1.25rem;
325
- background: white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%23f59e0b' d='M7.41 8.58L12 13.17l4.59-4.59L18 10l-6 6l-6-6l1.41-1.42Z'/%3E%3C/svg%3E") no-repeat right 1rem center;
326
- border: 2px solid rgba(0,0,0,0.05);
327
- border-radius: 18px;
328
- font-weight: 700;
329
- font-size: 0.95rem;
330
- cursor: pointer;
331
- outline: none;
332
- appearance: none;
333
- -webkit-appearance: none;
334
- transition: all 0.3s ease;
335
- box-shadow: 0 2px 5px rgba(0,0,0,0.02);
330
+ .antenna-calculator-ui {
331
+ --antenna-primary: #f59e0b;
332
+ --antenna-primary-rgb: 245, 158, 11;
333
+ --antenna-accent: #fbbf24;
334
+ --antenna-bg: #fff;
335
+ --antenna-bg-muted: #f5f5f5;
336
+ --antenna-bg-surface: #eee;
337
+ --antenna-bg-overlay: #f0f0f0;
338
+ --antenna-text: #1a1a1a;
339
+ --antenna-text-muted: #666;
340
+ --antenna-text-dim: #999;
341
+ --antenna-border: #d0d0d0;
342
+ --antenna-border-light: #e8e8e8;
343
+ --antenna-shadow: rgba(0, 0, 0, 0.08);
344
+ --antenna-input-bg: #fff;
345
+
346
+ width: 100%;
347
+ max-width: 1300px;
348
+ margin: 0 auto;
349
+ padding: 2.5rem 1.5rem;
350
+ }
351
+
352
+ :global([data-theme="dark"]) .antenna-calculator-ui,
353
+ :global(.theme-dark) .antenna-calculator-ui {
354
+ --antenna-bg: #1a1a1a;
355
+ --antenna-bg-muted: #2d2d2d;
356
+ --antenna-bg-surface: #3a3a3a;
357
+ --antenna-bg-overlay: #292929;
358
+ --antenna-text: #f5f5f5;
359
+ --antenna-text-muted: #b0b0b0;
360
+ --antenna-text-dim: #888;
361
+ --antenna-border: #4a4a4a;
362
+ --antenna-border-light: #525252;
363
+ --antenna-shadow: rgba(0, 0, 0, 0.3);
364
+ --antenna-input-bg: #2d2d2d;
365
+ }
366
+
367
+ .antenna-calculator-ui .tech-mega-card {
368
+ background: var(--antenna-bg);
369
+ backdrop-filter: blur(24px) saturate(180%);
370
+ -webkit-backdrop-filter: blur(24px) saturate(180%);
371
+ border: 1px solid var(--antenna-border);
372
+ border-radius: 40px;
373
+ box-shadow: 0 40px 100px -20px var(--antenna-shadow);
374
+ overflow: hidden;
375
+ position: relative;
376
+ }
377
+
378
+ .antenna-calculator-ui .tech-mega-card::before {
379
+ content: '';
380
+ position: absolute;
381
+ top: 0;
382
+ left: 0;
383
+ right: 0;
384
+ height: 6px;
385
+ background: linear-gradient(90deg, #f59e0b, #fbbf24, #f59e0b);
386
+ background-size: 200% 100%;
387
+ animation: gradient-shift 4s linear infinite;
388
+ z-index: 10;
389
+ }
390
+
391
+ @keyframes gradient-shift {
392
+ 0% { background-position: 0% 50%; }
393
+ 100% { background-position: 200% 50%; }
394
+ }
395
+
396
+ .antenna-calculator-ui .card-grid {
397
+ display: grid;
398
+ grid-template-columns: 380px 1fr;
399
+ min-height: 500px;
400
+ width: 100%;
401
+ }
402
+
403
+ .antenna-calculator-ui .config-sidebar {
404
+ padding: 3.5rem 3rem;
405
+ background: var(--antenna-bg-overlay);
406
+ border-right: 1px solid var(--antenna-border-light);
407
+ display: flex;
408
+ flex-direction: column;
409
+ gap: 2.5rem;
410
+ }
411
+
412
+ :global([data-theme="dark"]) .antenna-calculator-ui .config-sidebar,
413
+ :global(.theme-dark) .antenna-calculator-ui .config-sidebar {
414
+ background: var(--antenna-bg-overlay);
415
+ border-right-color: var(--antenna-border-light);
416
+ }
417
+
418
+ .antenna-calculator-ui .main-display {
419
+ padding: 3rem;
420
+ display: flex;
421
+ flex-direction: column;
422
+ gap: 2rem;
423
+ position: relative;
424
+ overflow: hidden;
425
+ min-width: 0;
426
+ background: var(--antenna-bg);
427
+ }
428
+
429
+ :global([data-theme="dark"]) .antenna-calculator-ui .main-display,
430
+ :global(.theme-dark) .antenna-calculator-ui .main-display {
431
+ background: var(--antenna-bg);
432
+ }
433
+
434
+ .antenna-calculator-ui .section-title {
435
+ display: flex;
436
+ align-items: center;
437
+ gap: 0.75rem;
438
+ margin-bottom: 1.5rem;
439
+ }
440
+
441
+ .antenna-calculator-ui .section-title [data-icon] {
442
+ width: 20px;
443
+ height: 20px;
444
+ color: var(--antenna-primary);
445
+ }
446
+
447
+ .antenna-calculator-ui .section-title h2 {
448
+ font-size: 0.75rem;
449
+ font-weight: 800;
450
+ text-transform: uppercase;
451
+ letter-spacing: 0.15em;
452
+ color: var(--antenna-text-muted);
453
+ margin: 0;
454
+ }
455
+
456
+ .antenna-calculator-ui .input-group {
457
+ display: flex;
458
+ flex-direction: column;
459
+ gap: 0.75rem;
460
+ max-width: 100%;
461
+ }
462
+
463
+ .antenna-calculator-ui .input-with-unit {
464
+ position: relative;
465
+ display: flex;
466
+ align-items: center;
467
+ }
468
+
469
+ .antenna-calculator-ui .input-with-unit input {
470
+ width: 100%;
471
+ padding: 1.25rem 1.5rem;
472
+ background: var(--antenna-input-bg);
473
+ color: var(--antenna-text);
474
+ border: 2px solid var(--antenna-border-light);
475
+ border-radius: 20px;
476
+ font-size: 1.5rem;
477
+ font-weight: 800;
478
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
479
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.02);
480
+ }
481
+
482
+ :global([data-theme="dark"]) .antenna-calculator-ui .input-with-unit input,
483
+ :global(.theme-dark) .antenna-calculator-ui .input-with-unit input {
484
+ background: var(--antenna-input-bg);
485
+ border-color: var(--antenna-border);
486
+ color: var(--antenna-text);
487
+ }
488
+
489
+ .antenna-calculator-ui .input-with-unit input:focus {
490
+ outline: none;
491
+ border-color: var(--antenna-primary);
492
+ box-shadow: 0 0 0 5px rgba(var(--antenna-primary-rgb), 0.15);
493
+ transform: translateY(-2px);
494
+ }
495
+
496
+ .antenna-calculator-ui .unit {
497
+ position: absolute;
498
+ right: 1.5rem;
499
+ font-weight: 800;
500
+ color: var(--antenna-primary);
501
+ font-size: 0.9rem;
502
+ pointer-events: none;
503
+ opacity: 0.7;
504
+ }
505
+
506
+ .antenna-calculator-ui .custom-range {
507
+ width: 100%;
508
+ height: 3px;
509
+ margin-top: 0.5rem;
510
+ margin-bottom: 0;
511
+ border-radius: 2px;
512
+ background: var(--antenna-border);
513
+ accent-color: var(--antenna-primary);
514
+ cursor: pointer;
515
+ -webkit-appearance: none;
516
+ appearance: none;
517
+ padding: 0;
518
+ }
519
+
520
+ .antenna-calculator-ui .custom-range::-webkit-slider-thumb {
521
+ -webkit-appearance: none;
522
+ appearance: none;
523
+ width: 12px;
524
+ height: 12px;
525
+ background: var(--antenna-primary);
526
+ border: 2px solid var(--antenna-bg);
527
+ border-radius: 50%;
528
+ cursor: pointer;
529
+ pointer-events: auto;
530
+ }
531
+
532
+ .antenna-calculator-ui select,
533
+ .antenna-calculator-ui select option {
534
+ background: var(--antenna-input-bg);
535
+ color: var(--antenna-text);
536
+ padding: 0.75rem;
537
+ border: 1px solid var(--antenna-border);
538
+ border-radius: 12px;
539
+ font-weight: 600;
540
+ }
541
+
542
+ :global([data-theme="dark"]) .antenna-calculator-ui select,
543
+ :global(.theme-dark) .antenna-calculator-ui select {
544
+ background: var(--antenna-bg-surface);
545
+ color: var(--antenna-text);
546
+ border-color: var(--antenna-border);
547
+ }
548
+
549
+ :global([data-theme="dark"]) .antenna-calculator-ui select option,
550
+ :global(.theme-dark) .antenna-calculator-ui select option {
551
+ background: var(--antenna-bg-surface);
552
+ color: var(--antenna-text);
553
+ }
554
+
555
+ .antenna-calculator-ui .preset-grid {
556
+ display: grid;
557
+ grid-template-columns: repeat(2, 1fr);
558
+ gap: 0.75rem;
559
+ }
560
+
561
+ .antenna-calculator-ui .preset-btn {
562
+ padding: 0.85rem;
563
+ background: var(--antenna-input-bg);
564
+ color: var(--antenna-text);
565
+ border: 1px solid var(--antenna-border-light);
566
+ border-radius: 14px;
567
+ font-size: 0.8rem;
568
+ font-weight: 700;
569
+ cursor: pointer;
570
+ transition: all 0.3s ease;
571
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.02);
572
+ }
573
+
574
+ :global([data-theme="dark"]) .antenna-calculator-ui .preset-btn,
575
+ :global(.theme-dark) .antenna-calculator-ui .preset-btn {
576
+ background: var(--antenna-bg-surface);
577
+ border-color: var(--antenna-border);
578
+ color: var(--antenna-text);
579
+ }
580
+
581
+ .antenna-calculator-ui .preset-btn:hover {
582
+ background: #fffbeb;
583
+ border-color: var(--antenna-primary);
584
+ color: var(--antenna-primary);
585
+ transform: translateY(-2px);
586
+ box-shadow: 0 10px 20px rgba(var(--antenna-primary-rgb), 0.1);
587
+ }
588
+
589
+ :global([data-theme="dark"]) .antenna-calculator-ui .preset-btn:hover,
590
+ :global(.theme-dark) .antenna-calculator-ui .preset-btn:hover {
591
+ background: var(--antenna-bg-muted);
592
+ border-color: var(--antenna-primary);
593
+ color: var(--antenna-primary);
594
+ }
595
+
596
+ .antenna-calculator-ui .type-selector {
597
+ display: grid;
598
+ grid-template-columns: 1fr 1fr;
599
+ gap: 1rem;
600
+ }
601
+
602
+ .antenna-calculator-ui .radio-card input {
603
+ display: none;
604
+ }
605
+
606
+ .antenna-calculator-ui .radio-card {
607
+ position: relative;
608
+ }
609
+
610
+ .antenna-calculator-ui .radio-content {
611
+ display: flex;
612
+ flex-direction: column;
613
+ align-items: center;
614
+ gap: 0.75rem;
615
+ padding: 1.25rem;
616
+ background: var(--antenna-input-bg);
617
+ color: var(--antenna-text);
618
+ border: 2px solid transparent;
619
+ border-radius: 20px;
620
+ cursor: pointer;
621
+ transition: all 0.4s ease;
622
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
623
+ }
624
+
625
+ :global([data-theme="dark"]) .antenna-calculator-ui .radio-content,
626
+ :global(.theme-dark) .antenna-calculator-ui .radio-content {
627
+ background: var(--antenna-bg-surface);
628
+ color: var(--antenna-text);
629
+ }
630
+
631
+ .antenna-calculator-ui .radio-card input:checked + .radio-content,
632
+ .antenna-calculator-ui .radio-card.active .radio-content {
633
+ border-color: var(--antenna-primary);
634
+ background: linear-gradient(135deg, #fffbeb, #fef3c7);
635
+ color: var(--antenna-text);
636
+ box-shadow: 0 15px 35px rgba(var(--antenna-primary-rgb), 0.15);
637
+ transform: scale(1.02);
638
+ }
639
+
640
+ :global([data-theme="dark"]) .antenna-calculator-ui .radio-card input:checked + .radio-content,
641
+ :global(.theme-dark) .antenna-calculator-ui .radio-card input:checked + .radio-content {
642
+ background: linear-gradient(135deg, rgba(58, 58, 58, 0.8), rgba(245, 158, 11, 0.1));
643
+ color: var(--antenna-text);
644
+ }
645
+
646
+ .antenna-calculator-ui .radio-content [data-icon] {
647
+ width: 28px;
648
+ height: 28px;
649
+ color: var(--antenna-text-dim);
650
+ transition: all 0.3s ease;
651
+ }
652
+
653
+ .antenna-calculator-ui .radio-card input:checked + .radio-content [data-icon],
654
+ .antenna-calculator-ui .radio-card.active .radio-content [data-icon] {
655
+ color: var(--antenna-primary);
656
+ transform: rotate(360deg);
657
+ }
658
+
659
+ .antenna-calculator-ui .radio-content span {
660
+ font-size: 0.85rem;
661
+ font-weight: 800;
662
+ color: var(--antenna-text);
663
+ }
664
+
665
+ .antenna-calculator-ui .results-hero {
666
+ display: grid;
667
+ grid-template-columns: 1fr 1fr;
668
+ gap: 2rem;
669
+ }
670
+
671
+ .antenna-calculator-ui .mega-result {
672
+ padding: 3rem;
673
+ border-radius: 32px;
674
+ position: relative;
675
+ overflow: hidden;
676
+ display: flex;
677
+ flex-direction: column;
678
+ justify-content: center;
679
+ transition: all 0.5s ease;
680
+ color: white;
681
+ }
682
+
683
+ .antenna-calculator-ui .mega-result.gold {
684
+ background: linear-gradient(135deg, #f59e0b, #d97706);
685
+ box-shadow: 0 30px 60px rgba(217, 119, 6, 0.3);
686
+ }
687
+
688
+ .antenna-calculator-ui .mega-result.glass {
689
+ background: var(--antenna-bg-overlay);
690
+ border: 1px solid var(--antenna-border-light);
691
+ color: var(--antenna-text);
692
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.04);
693
+ }
694
+
695
+ :global([data-theme="dark"]) .antenna-calculator-ui .mega-result.glass,
696
+ :global(.theme-dark) .antenna-calculator-ui .mega-result.glass {
697
+ background: var(--antenna-bg-surface);
698
+ border-color: var(--antenna-border);
699
+ color: var(--antenna-text);
700
+ }
701
+
702
+ .antenna-calculator-ui .result-label {
703
+ font-size: 0.9rem;
704
+ font-weight: 800;
705
+ text-transform: uppercase;
706
+ letter-spacing: 0.1em;
707
+ margin-bottom: 0.5rem;
708
+ opacity: 0.8;
709
+ }
710
+
711
+ .antenna-calculator-ui .result-value {
712
+ display: flex;
713
+ align-items: baseline;
714
+ gap: 0.5rem;
715
+ }
716
+
717
+ .antenna-calculator-ui .result-value .number {
718
+ font-size: 4rem;
719
+ font-weight: 950;
720
+ line-height: 1;
721
+ font-variant-numeric: tabular-nums;
722
+ }
723
+
724
+ .antenna-calculator-ui .result-value .unit {
725
+ font-size: 1.25rem;
726
+ font-weight: 800;
727
+ opacity: 0.7;
728
+ position: static;
729
+ }
730
+
731
+ .antenna-calculator-ui .visualizer-stage {
732
+ flex: 1;
733
+ background: radial-gradient(circle at center, rgba(255,255,255,0.5), transparent);
734
+ border-radius: 32px;
735
+ border: 2px solid var(--antenna-border-light);
736
+ position: relative;
737
+ display: flex;
738
+ align-items: center;
739
+ justify-content: center;
740
+ overflow: hidden;
741
+ }
742
+
743
+ :global([data-theme="dark"]) .antenna-calculator-ui .visualizer-stage,
744
+ :global(.theme-dark) .antenna-calculator-ui .visualizer-stage {
745
+ background: radial-gradient(circle at center, rgba(255,255,255,0.03), transparent);
746
+ border-color: var(--antenna-border);
747
+ }
748
+
749
+ .antenna-calculator-ui #antenna-svg {
750
+ width: 90%;
751
+ height: 90%;
752
+ filter: drop-shadow(0 10px 20px rgba(0,0,0,0.1));
753
+ }
754
+
755
+ .antenna-calculator-ui .antenna-wire {
756
+ stroke-width: 8;
757
+ stroke-linecap: round;
758
+ transition: all 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
759
+ }
760
+
761
+ .antenna-calculator-ui .antenna-wire.active {
762
+ stroke: var(--antenna-primary);
763
+ }
764
+
765
+ .antenna-calculator-ui .feed-core {
766
+ fill: #ef4444;
767
+ stroke: white;
768
+ stroke-width: 2;
769
+ }
770
+
771
+ .antenna-calculator-ui .feed-point-gap {
772
+ stroke-dasharray: 2 1;
773
+ }
774
+
775
+ .antenna-calculator-ui .ground-plate {
776
+ fill: #3b82f6;
777
+ opacity: 0.8;
778
+ }
779
+
780
+ .antenna-calculator-ui .measuring-line {
781
+ stroke: rgba(0, 0, 0, 0.2);
782
+ stroke-width: 1;
783
+ stroke-dasharray: 4 4;
784
+ }
785
+
786
+ :global([data-theme="dark"]) .antenna-calculator-ui .measuring-line,
787
+ :global(.theme-dark) .antenna-calculator-ui .measuring-line {
788
+ stroke: rgba(255, 255, 255, 0.2);
789
+ }
790
+
791
+ .antenna-calculator-ui .harmonics-container {
792
+ background: var(--antenna-bg-overlay);
793
+ padding: 2rem;
794
+ border-radius: 24px;
795
+ }
796
+
797
+ :global([data-theme="dark"]) .antenna-calculator-ui .harmonics-container,
798
+ :global(.theme-dark) .antenna-calculator-ui .harmonics-container {
799
+ background: var(--antenna-bg-surface);
800
+ }
801
+
802
+ .antenna-calculator-ui .harmonics-list {
803
+ display: grid;
804
+ grid-template-columns: repeat(3, 1fr);
805
+ gap: 1rem;
806
+ }
807
+
808
+ .antenna-calculator-ui .harmonic-card {
809
+ background: var(--antenna-input-bg);
810
+ color: var(--antenna-text);
811
+ padding: 0.65rem 0.85rem;
812
+ border-radius: 12px;
813
+ display: flex;
814
+ flex-direction: column;
815
+ gap: 0.1rem;
816
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.01);
817
+ border: 1px solid var(--antenna-border-light);
818
+ }
819
+
820
+ :global([data-theme="dark"]) .antenna-calculator-ui .harmonic-card,
821
+ :global(.theme-dark) .antenna-calculator-ui .harmonic-card {
822
+ background: var(--antenna-bg-muted);
823
+ border-color: var(--antenna-border);
824
+ }
825
+
826
+ .antenna-calculator-ui .h-header {
827
+ display: flex;
828
+ justify-content: space-between;
829
+ align-items: center;
830
+ margin-bottom: 0.5rem;
831
+ }
832
+
833
+ .antenna-calculator-ui .h-badge {
834
+ font-size: 0.6rem;
835
+ font-weight: 900;
836
+ padding: 2px 6px;
837
+ background: rgba(var(--antenna-primary-rgb), 0.1);
838
+ color: var(--antenna-primary);
839
+ border-radius: 4px;
840
+ letter-spacing: 0.05em;
841
+ }
842
+
843
+ .antenna-calculator-ui .h-order {
844
+ font-size: 0.7rem;
845
+ font-weight: 800;
846
+ color: var(--antenna-text-dim);
847
+ }
848
+
849
+ .antenna-calculator-ui .h-freq {
850
+ font-size: 1.05rem;
851
+ font-weight: 900;
852
+ color: var(--antenna-primary);
853
+ }
854
+
855
+ .antenna-calculator-ui .expert-reference-grid {
856
+ display: grid;
857
+ grid-template-columns: 1fr 1fr;
858
+ gap: 1rem;
859
+ }
860
+
861
+ .antenna-calculator-ui .ref-card {
862
+ background: var(--antenna-bg-overlay);
863
+ border: 1px solid var(--antenna-border-light);
864
+ padding: 1rem;
865
+ border-radius: 16px;
866
+ display: flex;
867
+ align-items: center;
868
+ gap: 0.75rem;
869
+ transition: all 0.3s ease;
870
+ }
871
+
872
+ :global([data-theme="dark"]) .antenna-calculator-ui .ref-card,
873
+ :global(.theme-dark) .antenna-calculator-ui .ref-card {
874
+ background: var(--antenna-bg-surface);
875
+ border-color: var(--antenna-border);
876
+ }
877
+
878
+ .antenna-calculator-ui .ref-card:hover {
879
+ transform: translateY(-3px);
880
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05);
881
+ }
882
+
883
+ .antenna-calculator-ui .ref-card [data-icon] {
884
+ width: 28px;
885
+ height: 28px;
886
+ color: var(--antenna-primary);
887
+ background: rgba(var(--antenna-primary-rgb), 0.1);
888
+ padding: 8px;
889
+ border-radius: 12px;
890
+ }
891
+
892
+ .antenna-calculator-ui .ref-card h4 {
893
+ margin: 0;
894
+ font-size: 0.65rem;
895
+ font-weight: 800;
896
+ text-transform: uppercase;
897
+ letter-spacing: 0.1em;
898
+ color: var(--antenna-text-dim);
899
+ }
900
+
901
+ .antenna-calculator-ui .ref-card p {
902
+ margin: 0;
903
+ font-size: 1rem;
904
+ font-weight: 900;
905
+ color: var(--antenna-text);
906
+ }
907
+
908
+ .antenna-calculator-ui .divider {
909
+ height: 1px;
910
+ width: 100%;
911
+ background: linear-gradient(90deg, transparent, var(--antenna-border-light), transparent);
912
+ }
913
+
914
+ :global([data-theme="dark"]) .antenna-calculator-ui .divider,
915
+ :global(.theme-dark) .antenna-calculator-ui .divider {
916
+ background: linear-gradient(90deg, transparent, var(--antenna-border), transparent);
917
+ }
918
+
919
+ @media (max-width: 1100px) {
920
+ .antenna-calculator-ui .card-grid {
921
+ grid-template-columns: 1fr;
922
+ min-height: auto;
923
+ }
924
+
925
+ .antenna-calculator-ui .config-sidebar {
926
+ border-right: none;
927
+ border-bottom: 1px solid var(--antenna-border-light);
928
+ padding: 2.5rem 2rem;
929
+ }
930
+
931
+ .antenna-calculator-ui .main-display {
932
+ padding: 2.5rem 2rem;
933
+ }
934
+ }
935
+
936
+ @media (max-width: 600px) {
937
+ .antenna-calculator-ui {
938
+ padding: 0.5rem;
939
+ }
940
+
941
+ .antenna-calculator-ui .tech-mega-card {
942
+ border-radius: 24px;
943
+ }
944
+
945
+ .antenna-calculator-ui .config-sidebar {
946
+ padding: 1.5rem;
947
+ gap: 1.5rem;
948
+ }
949
+
950
+ .antenna-calculator-ui .main-display {
951
+ padding: 1.5rem;
952
+ gap: 2rem;
953
+ }
954
+
955
+ .antenna-calculator-ui .input-with-unit input {
956
+ font-size: 1.25rem;
957
+ padding: 1rem;
958
+ }
959
+
960
+ .antenna-calculator-ui .result-value .number {
961
+ font-size: 2.5rem;
962
+ }
963
+
964
+ .antenna-calculator-ui .mega-result {
965
+ padding: 1.5rem;
966
+ border-radius: 20px;
336
967
  }
337
968
 
338
- :global(.dark) .custom-select-premium {
339
- background-color: rgba(15, 23, 42, 0.4);
340
- border-color: rgba(255,255,255,0.1);
341
- color: white;
969
+ .antenna-calculator-ui .results-hero {
970
+ grid-template-columns: 1fr;
971
+ gap: 1rem;
342
972
  }
343
973
 
344
- .custom-select-premium:focus {
345
- border-color: var(--antenna-primary);
346
- box-shadow: 0 5px 15px rgba(var(--antenna-primary-rgb), 0.1);
974
+ .antenna-calculator-ui .harmonics-list {
975
+ grid-template-columns: 1fr;
976
+ gap: 1rem;
347
977
  }
348
978
 
349
- .svg-label-text {
350
- font-size: 12px;
351
- font-weight: 800;
352
- fill: #999;
353
- text-transform: uppercase;
354
- letter-spacing: 0.1em;
979
+ .antenna-calculator-ui .h-freq {
980
+ font-size: 1.15rem;
355
981
  }
356
982
 
357
- :global(.dark) .svg-label-text {
358
- fill: #666;
983
+ .antenna-calculator-ui .section-title h2 {
984
+ font-size: 0.65rem;
359
985
  }
986
+
987
+ .antenna-calculator-ui .expert-reference-grid {
988
+ grid-template-columns: 1fr;
989
+ gap: 0.75rem;
990
+ }
991
+
992
+ .antenna-calculator-ui .ref-card {
993
+ padding: 1rem;
994
+ }
995
+
996
+ .antenna-calculator-ui .visualizer-stage {
997
+ height: 200px;
998
+ }
999
+ }
1000
+
1001
+ .custom-select-premium {
1002
+ width: 100%;
1003
+ padding: 1.1rem 3rem 1.1rem 1.25rem;
1004
+ background: white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%23f59e0b' d='M7.41 8.58L12 13.17l4.59-4.59L18 10l-6 6l-6-6l1.41-1.42Z'/%3E%3C/svg%3E") no-repeat right 1rem center;
1005
+ border: 2px solid rgba(0,0,0,0.05);
1006
+ border-radius: 18px;
1007
+ font-weight: 700;
1008
+ font-size: 0.95rem;
1009
+ cursor: pointer;
1010
+ outline: none;
1011
+ appearance: none;
1012
+ -webkit-appearance: none;
1013
+ transition: all 0.3s ease;
1014
+ box-shadow: 0 2px 5px rgba(0,0,0,0.02);
1015
+ }
1016
+
1017
+ :global([data-theme="dark"]) .custom-select-premium,
1018
+ :global(.theme-dark) .custom-select-premium {
1019
+ background-color: rgba(15, 23, 42, 0.4);
1020
+ border-color: rgba(255,255,255,0.1);
1021
+ color: white;
1022
+ }
1023
+
1024
+ .custom-select-premium:focus {
1025
+ border-color: var(--antenna-primary);
1026
+ box-shadow: 0 5px 15px rgba(var(--antenna-primary-rgb), 0.1);
1027
+ }
1028
+
1029
+ .svg-label-text {
1030
+ font-size: 12px;
1031
+ font-weight: 800;
1032
+ fill: #999;
1033
+ text-transform: uppercase;
1034
+ letter-spacing: 0.1em;
1035
+ }
1036
+
1037
+ :global([data-theme="dark"]) .svg-label-text,
1038
+ :global(.theme-dark) .svg-label-text {
1039
+ fill: #666;
1040
+ }
1041
+ .antenna-calculator-ui .security-warning {
1042
+ margin-top: 2rem;
1043
+ padding: 1.5rem 2rem;
1044
+ background: rgba(239, 68, 68, 0.05);
1045
+ border: 1px solid rgba(239, 68, 68, 0.2);
1046
+ border-left: 4px solid #ef4444;
1047
+ border-radius: 20px;
1048
+ display: flex;
1049
+ align-items: flex-start;
1050
+ gap: 1.25rem;
1051
+ transition: all 0.3s ease;
1052
+ }
1053
+
1054
+ :global([data-theme="dark"]) .antenna-calculator-ui .security-warning,
1055
+ :global(.theme-dark) .antenna-calculator-ui .security-warning {
1056
+ background: rgba(239, 68, 68, 0.1);
1057
+ border-color: rgba(239, 68, 68, 0.3);
1058
+ }
1059
+
1060
+ .antenna-calculator-ui .security-warning:hover {
1061
+ transform: translateY(-2px);
1062
+ background: rgba(239, 68, 68, 0.08);
1063
+ box-shadow: 0 15px 30px rgba(239, 68, 68, 0.1);
1064
+ }
1065
+
1066
+ .antenna-calculator-ui .security-warning [data-icon] {
1067
+ width: 24px;
1068
+ height: 24px;
1069
+ color: #ef4444;
1070
+ flex-shrink: 0;
1071
+ }
1072
+
1073
+ .antenna-calculator-ui .security-warning p {
1074
+ margin: 0;
1075
+ font-size: 0.95rem;
1076
+ line-height: 1.6;
1077
+ color: var(--antenna-text);
1078
+ font-weight: 500;
1079
+ }
1080
+
1081
+ .antenna-calculator-ui .security-warning strong {
1082
+ color: #ef4444;
1083
+ font-weight: 800;
1084
+ text-transform: uppercase;
1085
+ letter-spacing: 0.02em;
1086
+ }
360
1087
  </style>