@jjlmoya/utils-science 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,5 +1,4 @@
1
1
  ---
2
- import "./AsteroidImpact.css";
3
2
  import "leaflet/dist/leaflet.css";
4
3
  import { Icon } from "astro-icon/components";
5
4
 
@@ -438,3 +437,816 @@ const { ui } = Astro.props;
438
437
  init();
439
438
  }
440
439
  </script>
440
+
441
+ <style>
442
+ :root,
443
+ .theme-light {
444
+ --asteroid-primary: #f97316;
445
+ --asteroid-secondary: #ef4444;
446
+ --asteroid-accent: #64748b;
447
+ --asteroid-success: #10b981;
448
+ --asteroid-warning: #f59e0b;
449
+ --asteroid-danger: #dc2626;
450
+ --asteroid-bg-light: #f8fafc;
451
+ --asteroid-bg-dark: #0f172a;
452
+ --asteroid-bg-card: #fff;
453
+ --asteroid-bg-modal: rgba(255, 255, 255, 0.9);
454
+ --asteroid-border-light: #e2e8f0;
455
+ --asteroid-border-dark: #1e293b;
456
+ --asteroid-text-primary: #1e293b;
457
+ --asteroid-text-secondary: #64748b;
458
+ --asteroid-text-light: #f1f5f9;
459
+ --asteroid-shadow-sm: 0 2px 5px rgba(0, 0, 0, 0.02);
460
+ --asteroid-shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
461
+ --asteroid-shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
462
+ --asteroid-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
463
+ --asteroid-radius-sm: 0.75rem;
464
+ --asteroid-radius-md: 1.5rem;
465
+ --asteroid-radius-lg: 2rem;
466
+ --asteroid-radius-full: 9999px;
467
+ --asteroid-transition: all 0.2s ease;
468
+ --asteroid-transition-slow: all 0.3s ease;
469
+ }
470
+
471
+ :global(.theme-dark) {
472
+ --asteroid-primary: #ff9f43;
473
+ --asteroid-secondary: #ff6b5b;
474
+ --asteroid-accent: #94a3b8;
475
+ --asteroid-success: #2ecc71;
476
+ --asteroid-warning: #ffa502;
477
+ --asteroid-danger: #ff4757;
478
+ --asteroid-bg-light: #0f172a;
479
+ --asteroid-bg-card: #1a2332;
480
+ --asteroid-bg-modal: rgba(26, 35, 50, 0.95);
481
+ --asteroid-border-light: #2d3748;
482
+ --asteroid-border-dark: #0f172a;
483
+ --asteroid-text-primary: #f8f9fa;
484
+ --asteroid-text-secondary: #cbd5e1;
485
+ }
486
+
487
+ .asteroid-app {
488
+ position: relative;
489
+ width: 100%;
490
+ height: 85vh;
491
+ min-height: 600px;
492
+ border-radius: var(--asteroid-radius-md);
493
+ overflow: hidden;
494
+ background: var(--asteroid-bg-dark);
495
+ box-shadow: var(--asteroid-shadow-xl);
496
+ border: 1px solid var(--asteroid-border-dark);
497
+ user-select: none;
498
+ touch-action: none;
499
+ }
500
+
501
+ .asteroid-game-map {
502
+ position: absolute;
503
+ inset: 0;
504
+ z-index: 0;
505
+ background: var(--asteroid-bg-light);
506
+ touch-action: none;
507
+ }
508
+
509
+ .asteroid-map-target-overlay {
510
+ position: absolute;
511
+ inset: 0;
512
+ z-index: 10;
513
+ pointer-events: none;
514
+ opacity: 0;
515
+ transition: opacity var(--asteroid-transition-slow);
516
+ background: rgba(16, 185, 129, 0.05);
517
+ display: flex;
518
+ align-items: center;
519
+ justify-content: center;
520
+ }
521
+
522
+ .asteroid-map-target-overlay.active {
523
+ opacity: 1;
524
+ }
525
+
526
+ .asteroid-target-crosshair {
527
+ position: absolute;
528
+ width: 100%;
529
+ height: 1px;
530
+ background: rgba(16, 185, 129, 0.2);
531
+ }
532
+
533
+ .asteroid-target-crosshair.vertical {
534
+ width: 1px;
535
+ height: 100%;
536
+ }
537
+
538
+ .asteroid-target-box {
539
+ position: absolute;
540
+ border: 2px solid rgba(16, 185, 129, 0.3);
541
+ border-radius: var(--asteroid-radius-md);
542
+ width: 80%;
543
+ height: 80%;
544
+ }
545
+
546
+ .asteroid-top-bar {
547
+ position: absolute;
548
+ top: 1rem;
549
+ left: 0;
550
+ right: 0;
551
+ z-index: 30;
552
+ display: flex;
553
+ flex-direction: column;
554
+ align-items: center;
555
+ pointer-events: none;
556
+ padding: 0 1rem;
557
+ }
558
+
559
+ .asteroid-gps-btn {
560
+ pointer-events: auto;
561
+ margin-bottom: 0.5rem;
562
+ background: rgba(255, 255, 255, 0.9);
563
+ backdrop-filter: blur(12px);
564
+ color: var(--asteroid-text-primary);
565
+ padding: 0.5rem 1rem;
566
+ border-radius: var(--asteroid-radius-full);
567
+ font-size: 0.75rem;
568
+ font-weight: 700;
569
+ border: 1px solid rgba(255, 255, 255, 0.4);
570
+ box-shadow: var(--asteroid-shadow-md);
571
+ display: flex;
572
+ align-items: center;
573
+ gap: 0.5rem;
574
+ cursor: pointer;
575
+ transition: var(--asteroid-transition);
576
+ }
577
+
578
+ :global(.theme-dark) .asteroid-gps-btn {
579
+ background: rgba(30, 41, 59, 0.95);
580
+ border: 1px solid rgba(100, 116, 139, 0.4);
581
+ }
582
+
583
+ .asteroid-gps-btn:hover {
584
+ transform: scale(1.05);
585
+ }
586
+
587
+ .asteroid-gps-dot {
588
+ width: 0.5rem;
589
+ height: 0.5rem;
590
+ border-radius: 50%;
591
+ background: var(--asteroid-accent);
592
+ transition: var(--asteroid-transition);
593
+ }
594
+
595
+ .asteroid-gps-dot.active {
596
+ background: var(--asteroid-success);
597
+ animation: pulse 2s infinite;
598
+ }
599
+
600
+ @keyframes pulse {
601
+ 0%,
602
+ 100% {
603
+ opacity: 1;
604
+ }
605
+
606
+ 50% {
607
+ opacity: 0.5;
608
+ }
609
+ }
610
+
611
+ .asteroid-verdict-pill {
612
+ max-width: 100%;
613
+ transform: translateY(-20px);
614
+ opacity: 0;
615
+ transition: all var(--asteroid-transition-slow);
616
+ pointer-events: none;
617
+ }
618
+
619
+ .asteroid-verdict-pill.active {
620
+ transform: translateY(0);
621
+ opacity: 1;
622
+ pointer-events: auto;
623
+ }
624
+
625
+ .asteroid-verdict-container {
626
+ background: var(--asteroid-bg-dark);
627
+ color: var(--asteroid-text-primary);
628
+ padding: 0.75rem 1.25rem;
629
+ border-radius: var(--asteroid-radius-lg);
630
+ box-shadow: var(--asteroid-shadow-xl);
631
+ display: flex;
632
+ align-items: center;
633
+ gap: 0.75rem;
634
+ backdrop-filter: blur(8px);
635
+ border: 1px solid rgba(255, 255, 255, 0.1);
636
+ }
637
+
638
+ .asteroid-verdict-icon {
639
+ width: 1.5rem;
640
+ height: 1.5rem;
641
+ flex-shrink: 0;
642
+ display: flex;
643
+ align-items: center;
644
+ justify-content: center;
645
+ }
646
+
647
+ .asteroid-verdict-text {
648
+ text-align: left;
649
+ line-height: 1;
650
+ }
651
+
652
+ .asteroid-verdict-label {
653
+ font-weight: 700;
654
+ font-size: 0.5625rem;
655
+ text-transform: uppercase;
656
+ letter-spacing: 0.125em;
657
+ opacity: 0.6;
658
+ margin-bottom: 0.125rem;
659
+ }
660
+
661
+ .asteroid-verdict-value {
662
+ font-weight: 900;
663
+ font-size: 1.125rem;
664
+ text-transform: uppercase;
665
+ white-space: nowrap;
666
+ font-style: italic;
667
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
668
+ }
669
+
670
+ .asteroid-verdict-safe .asteroid-verdict-value {
671
+ color: #34d399;
672
+ }
673
+
674
+ .asteroid-verdict-shock .asteroid-verdict-value {
675
+ color: #60a5fa;
676
+ }
677
+
678
+ .asteroid-verdict-burned .asteroid-verdict-value {
679
+ color: #fb923c;
680
+ }
681
+
682
+ .asteroid-verdict-vaporized .asteroid-verdict-value {
683
+ color: #f87171;
684
+ }
685
+
686
+ .asteroid-desktop-lab {
687
+ display: none;
688
+ }
689
+
690
+ @media (min-width: 768px) {
691
+ .asteroid-desktop-lab {
692
+ display: flex;
693
+ position: absolute;
694
+ top: 1.5rem;
695
+ left: 1.5rem;
696
+ bottom: 1.5rem;
697
+ width: 20rem;
698
+ z-index: 30;
699
+ flex-direction: column;
700
+ pointer-events: none;
701
+ }
702
+ }
703
+
704
+ .asteroid-lab-panel {
705
+ background: var(--asteroid-bg-modal);
706
+ backdrop-filter: blur(32px);
707
+ border: 1px solid var(--asteroid-border-light);
708
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
709
+ border-radius: var(--asteroid-radius-lg);
710
+ padding: 1.25rem;
711
+ display: flex;
712
+ flex-direction: column;
713
+ gap: 1rem;
714
+ pointer-events: auto;
715
+ height: 100%;
716
+ overflow: hidden;
717
+ color: var(--asteroid-text-primary);
718
+ }
719
+
720
+ .asteroid-lab-header {
721
+ display: flex;
722
+ align-items: center;
723
+ justify-content: space-between;
724
+ padding-bottom: 0.5rem;
725
+ border-bottom: 1px solid var(--asteroid-border-light);
726
+ flex-shrink: 0;
727
+ }
728
+
729
+ .asteroid-lab-title {
730
+ display: flex;
731
+ align-items: center;
732
+ gap: 0.5rem;
733
+ }
734
+
735
+ .asteroid-lab-icon {
736
+ width: 2rem;
737
+ height: 2rem;
738
+ border-radius: var(--asteroid-radius-sm);
739
+ background: linear-gradient(135deg, var(--asteroid-primary) 0%, var(--asteroid-secondary) 100%);
740
+ display: flex;
741
+ align-items: center;
742
+ justify-content: center;
743
+ color: var(--asteroid-text-primary);
744
+ box-shadow: 0 4px 8px rgba(var(--asteroid-primary-rgb), 0.3);
745
+ }
746
+
747
+ .asteroid-lab-name {
748
+ font-weight: 900;
749
+ color: var(--asteroid-text-primary);
750
+ font-size: 1rem;
751
+ line-height: 1;
752
+ }
753
+
754
+ .asteroid-lab-subtitle {
755
+ font-size: 0.5625rem;
756
+ font-weight: 700;
757
+ color: var(--asteroid-text-secondary);
758
+ text-transform: uppercase;
759
+ letter-spacing: 0.125em;
760
+ }
761
+
762
+ .asteroid-lab-content {
763
+ flex: 1;
764
+ overflow-y: auto;
765
+ padding-right: 0.25rem;
766
+ display: flex;
767
+ flex-direction: column;
768
+ gap: 1.5rem;
769
+ }
770
+
771
+ .asteroid-lab-content::-webkit-scrollbar {
772
+ width: 6px;
773
+ }
774
+
775
+ .asteroid-lab-content::-webkit-scrollbar-track {
776
+ background: transparent;
777
+ }
778
+
779
+ .asteroid-lab-content::-webkit-scrollbar-thumb {
780
+ background: rgba(100, 116, 139, 0.3);
781
+ border-radius: 3px;
782
+ }
783
+
784
+ .asteroid-drag-source {
785
+ position: relative;
786
+ cursor: grab;
787
+ transform-origin: center;
788
+ transition: var(--asteroid-transition);
789
+ }
790
+
791
+ .asteroid-drag-source:active {
792
+ cursor: grabbing;
793
+ transform: scale(0.98);
794
+ }
795
+
796
+ .asteroid-drag-source:hover {
797
+ transform: scale(1.02);
798
+ }
799
+
800
+ .asteroid-drag-bg {
801
+ position: absolute;
802
+ inset: 0;
803
+ background: linear-gradient(135deg, #f3f4f6 0%, #fff 100%);
804
+ border-radius: var(--asteroid-radius-lg);
805
+ border: 1px solid var(--asteroid-border-light);
806
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05);
807
+ }
808
+
809
+ .asteroid-drag-tooltip {
810
+ position: absolute;
811
+ top: -2.5rem;
812
+ left: 50%;
813
+ transform: translateX(-50%);
814
+ opacity: 0;
815
+ display: flex;
816
+ align-items: center;
817
+ justify-content: center;
818
+ z-index: 10;
819
+ pointer-events: none;
820
+ transition: opacity var(--asteroid-transition);
821
+ }
822
+
823
+ .asteroid-drag-source:hover .asteroid-drag-tooltip {
824
+ opacity: 1;
825
+ }
826
+
827
+ .asteroid-drag-tooltip-text {
828
+ background: rgba(0, 0, 0, 0.85);
829
+ color: var(--asteroid-text-primary);
830
+ font-size: 0.65rem;
831
+ font-weight: 700;
832
+ padding: 0.4rem 0.75rem;
833
+ border-radius: var(--asteroid-radius-sm);
834
+ border: 1px solid rgba(255, 255, 255, 0.1);
835
+ backdrop-filter: blur(8px);
836
+ box-shadow: var(--asteroid-shadow-lg);
837
+ }
838
+
839
+ .asteroid-drag-visual {
840
+ position: relative;
841
+ height: 12rem;
842
+ display: flex;
843
+ align-items: center;
844
+ justify-content: center;
845
+ overflow: visible;
846
+ border-radius: var(--asteroid-radius-lg);
847
+ }
848
+
849
+ .asteroid-drag-grid {
850
+ position: absolute;
851
+ inset: 0;
852
+ background-image: radial-gradient(#cbd5e1 1px, transparent 1px);
853
+ background-size: 20px 20px;
854
+ opacity: 0.5;
855
+ }
856
+
857
+ .asteroid-visual {
858
+ width: 5rem;
859
+ height: 5rem;
860
+ border-radius: 50%;
861
+ box-shadow: 10px 10px 30px rgba(0, 0, 0, 0.2), -5px -5px 15px rgba(255, 255, 255, 0.8);
862
+ position: relative;
863
+ transition: var(--asteroid-transition);
864
+ z-index: 10;
865
+ }
866
+
867
+ .asteroid-visual.ice-type {
868
+ box-shadow:
869
+ 0 0 20px rgba(103, 232, 249, 0.6),
870
+ 10px 10px 30px rgba(0, 0, 0, 0.2),
871
+ -5px -5px 15px rgba(255, 255, 255, 0.8);
872
+ }
873
+
874
+ .asteroid-drag-icon-parent {
875
+ position: absolute;
876
+ bottom: 0.5rem;
877
+ right: 0.5rem;
878
+ width: 2rem;
879
+ height: 2rem;
880
+ background: rgba(0, 0, 0, 0.85);
881
+ border: 1px solid rgba(255, 255, 255, 0.1);
882
+ border-radius: var(--asteroid-radius-sm);
883
+ display: flex;
884
+ align-items: center;
885
+ justify-content: center;
886
+ color: var(--asteroid-text-primary);
887
+ z-index: 20;
888
+ opacity: 1;
889
+ transition: var(--asteroid-transition);
890
+ }
891
+
892
+ .asteroid-drag-source:hover .asteroid-drag-icon-parent {
893
+ background: rgba(0, 0, 0, 0.95);
894
+ }
895
+
896
+ .asteroid-surface {
897
+ position: absolute;
898
+ inset: 0;
899
+ border-radius: 50%;
900
+ background: var(--asteroid-accent);
901
+ overflow: hidden;
902
+ border: 2px solid rgba(255, 255, 255, 0.2);
903
+ }
904
+
905
+ .asteroid-surface-gradient {
906
+ position: absolute;
907
+ top: 0;
908
+ right: 0;
909
+ width: 100%;
910
+ height: 100%;
911
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, rgba(0, 0, 0, 0.3) 100%);
912
+ animation: asteroid-spin 8s linear infinite;
913
+ }
914
+
915
+ @keyframes asteroid-spin {
916
+ from {
917
+ transform: rotate(0deg);
918
+ }
919
+
920
+ to {
921
+ transform: rotate(360deg);
922
+ }
923
+ }
924
+
925
+ .asteroid-params-badge {
926
+ position: absolute;
927
+ top: 0.5rem;
928
+ left: 0.5rem;
929
+ background: rgba(0, 0, 0, 0.85);
930
+ border: 1px solid rgba(255, 255, 255, 0.1);
931
+ border-radius: var(--asteroid-radius-sm);
932
+ padding: 0.5rem 0.75rem;
933
+ display: flex;
934
+ flex-direction: column;
935
+ gap: 0.25rem;
936
+ z-index: 20;
937
+ font-size: 0.7rem;
938
+ font-weight: 700;
939
+ color: var(--asteroid-text-primary);
940
+ white-space: nowrap;
941
+ opacity: 1;
942
+ transition: opacity var(--asteroid-transition-slow);
943
+ }
944
+
945
+ .asteroid-param-item {
946
+ display: flex;
947
+ align-items: center;
948
+ gap: 0.25rem;
949
+ }
950
+
951
+ .asteroid-param-item:nth-child(1) {
952
+ color: var(--asteroid-primary);
953
+ }
954
+
955
+ .asteroid-param-item:nth-child(2) {
956
+ color: var(--asteroid-success);
957
+ }
958
+
959
+ .asteroid-param-item:nth-child(3) {
960
+ color: var(--asteroid-accent);
961
+ }
962
+
963
+ .asteroid-presets {
964
+ display: grid;
965
+ grid-template-columns: repeat(2, 1fr);
966
+ gap: 0.75rem;
967
+ }
968
+
969
+ .asteroid-preset-btn {
970
+ position: relative;
971
+ overflow: hidden;
972
+ background: var(--asteroid-bg-card);
973
+ border: 1px solid var(--asteroid-border-light);
974
+ border-radius: var(--asteroid-radius-md);
975
+ padding: 0.75rem;
976
+ text-align: left;
977
+ transition: var(--asteroid-transition-slow);
978
+ cursor: pointer;
979
+ flex-shrink: 0;
980
+ }
981
+
982
+ .asteroid-preset-btn:hover {
983
+ box-shadow: var(--asteroid-shadow-lg);
984
+ transform: translateY(-2px);
985
+ border-color: var(--asteroid-primary);
986
+ }
987
+
988
+ .asteroid-preset-title {
989
+ font-size: 0.6875rem;
990
+ font-weight: 900;
991
+ color: var(--asteroid-text-primary);
992
+ margin-bottom: 0.125rem;
993
+ position: relative;
994
+ z-index: 10;
995
+ transition: var(--asteroid-transition);
996
+ }
997
+
998
+ .asteroid-preset-btn:hover .asteroid-preset-title {
999
+ color: var(--asteroid-primary);
1000
+ }
1001
+
1002
+ .asteroid-preset-subtitle {
1003
+ font-size: 0.5625rem;
1004
+ font-weight: 500;
1005
+ color: var(--asteroid-text-secondary);
1006
+ position: relative;
1007
+ z-index: 10;
1008
+ }
1009
+
1010
+ .asteroid-control-group {
1011
+ background: var(--asteroid-bg-light);
1012
+ border-radius: var(--asteroid-radius-md);
1013
+ padding: 0.75rem;
1014
+ border: 1px solid var(--asteroid-border-light);
1015
+ }
1016
+
1017
+ .asteroid-control-label {
1018
+ display: flex;
1019
+ justify-content: space-between;
1020
+ align-items: flex-end;
1021
+ margin-bottom: 0.5rem;
1022
+ }
1023
+
1024
+ .asteroid-control-text {
1025
+ font-size: 0.625rem;
1026
+ font-weight: 700;
1027
+ color: var(--asteroid-text-secondary);
1028
+ text-transform: uppercase;
1029
+ letter-spacing: 0.05em;
1030
+ }
1031
+
1032
+ .asteroid-control-value {
1033
+ font-size: 0.875rem;
1034
+ font-weight: 900;
1035
+ color: var(--asteroid-text-primary);
1036
+ }
1037
+
1038
+ .asteroid-slider {
1039
+ width: 100%;
1040
+ height: 0.375rem;
1041
+ background: var(--asteroid-border-light);
1042
+ border-radius: 0.5rem;
1043
+ appearance: none;
1044
+ cursor: pointer;
1045
+ accent-color: var(--asteroid-primary);
1046
+ }
1047
+
1048
+ .asteroid-slider::-webkit-slider-thumb {
1049
+ appearance: none;
1050
+ width: 1.25rem;
1051
+ height: 1.25rem;
1052
+ background: var(--asteroid-primary);
1053
+ border-radius: 50%;
1054
+ cursor: pointer;
1055
+ box-shadow: var(--asteroid-shadow-md);
1056
+ transition: var(--asteroid-transition);
1057
+ }
1058
+
1059
+ .asteroid-slider::-webkit-slider-thumb:hover {
1060
+ transform: scale(1.2);
1061
+ box-shadow: var(--asteroid-shadow-lg);
1062
+ }
1063
+
1064
+ .asteroid-slider::-moz-range-thumb {
1065
+ width: 1.25rem;
1066
+ height: 1.25rem;
1067
+ background: var(--asteroid-primary);
1068
+ border: none;
1069
+ border-radius: 50%;
1070
+ cursor: pointer;
1071
+ box-shadow: var(--asteroid-shadow-md);
1072
+ transition: var(--asteroid-transition);
1073
+ }
1074
+
1075
+ .asteroid-slider::-moz-range-thumb:hover {
1076
+ transform: scale(1.2);
1077
+ box-shadow: var(--asteroid-shadow-lg);
1078
+ }
1079
+
1080
+ .asteroid-material-buttons {
1081
+ display: grid;
1082
+ grid-template-columns: repeat(3, 1fr);
1083
+ gap: 0.5rem;
1084
+ }
1085
+
1086
+ .asteroid-material-btn {
1087
+ padding: 0.5rem;
1088
+ border-radius: var(--asteroid-radius-md);
1089
+ border: 1px solid var(--asteroid-border-light);
1090
+ background: var(--asteroid-bg-light);
1091
+ cursor: pointer;
1092
+ transition: var(--asteroid-transition);
1093
+ display: flex;
1094
+ flex-direction: column;
1095
+ align-items: center;
1096
+ gap: 0.25rem;
1097
+ }
1098
+
1099
+ .asteroid-material-btn:hover {
1100
+ background: white;
1101
+ }
1102
+
1103
+ .asteroid-material-btn.active {
1104
+ border-color: var(--asteroid-primary);
1105
+ background: rgba(249, 115, 22, 0.1);
1106
+ }
1107
+
1108
+ .asteroid-material-dot {
1109
+ width: 1rem;
1110
+ height: 1rem;
1111
+ border-radius: 50%;
1112
+ box-shadow: var(--asteroid-shadow-sm);
1113
+ transition: var(--asteroid-transition);
1114
+ }
1115
+
1116
+ .asteroid-material-btn:hover .asteroid-material-dot {
1117
+ transform: scale(1.1);
1118
+ }
1119
+
1120
+ .asteroid-material-name {
1121
+ font-size: 0.5625rem;
1122
+ font-weight: 700;
1123
+ color: var(--asteroid-text-secondary);
1124
+ text-transform: uppercase;
1125
+ }
1126
+
1127
+ .asteroid-clear-btn {
1128
+ padding: 0.25rem 0.35rem;
1129
+ border-radius: 0.35rem;
1130
+ background: var(--asteroid-bg-light);
1131
+ color: var(--asteroid-text-secondary);
1132
+ font-weight: 600;
1133
+ font-size: 0.5rem;
1134
+ text-transform: uppercase;
1135
+ letter-spacing: 0.04em;
1136
+ border: none;
1137
+ cursor: pointer;
1138
+ transition: var(--asteroid-transition);
1139
+ display: flex;
1140
+ align-items: center;
1141
+ justify-content: center;
1142
+ gap: 0.2rem;
1143
+ height: auto;
1144
+ min-height: 1.5rem;
1145
+ flex-shrink: 0;
1146
+ }
1147
+
1148
+ .asteroid-clear-btn:hover {
1149
+ background: rgba(220, 38, 38, 0.1);
1150
+ color: var(--asteroid-danger);
1151
+ }
1152
+
1153
+ .asteroid-mobile-control {
1154
+ display: flex;
1155
+ align-items: center;
1156
+ justify-content: center;
1157
+ }
1158
+
1159
+ @media (min-width: 768px) {
1160
+ .asteroid-mobile-control {
1161
+ display: none;
1162
+ }
1163
+ }
1164
+
1165
+ .asteroid-mobile-bar {
1166
+ position: absolute;
1167
+ bottom: 1.5rem;
1168
+ left: 1rem;
1169
+ right: 1rem;
1170
+ z-index: 40;
1171
+ background: rgba(255, 255, 255, 0.9);
1172
+ backdrop-filter: blur(12px);
1173
+ border-radius: var(--asteroid-radius-lg);
1174
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
1175
+ border: 1px solid rgba(255, 255, 255, 0.6);
1176
+ padding: 0.5rem;
1177
+ display: flex;
1178
+ align-items: center;
1179
+ justify-content: space-between;
1180
+ pointer-events: auto;
1181
+ }
1182
+
1183
+ .asteroid-mobile-asteroid {
1184
+ width: 4rem;
1185
+ height: 4rem;
1186
+ background: var(--asteroid-bg-light);
1187
+ border-radius: 50%;
1188
+ box-shadow: var(--asteroid-shadow-lg);
1189
+ border: 1px solid white;
1190
+ display: flex;
1191
+ align-items: center;
1192
+ justify-content: center;
1193
+ cursor: grab;
1194
+ position: relative;
1195
+ overflow: hidden;
1196
+ transition: var(--asteroid-transition);
1197
+ }
1198
+
1199
+ .asteroid-mobile-asteroid:active {
1200
+ cursor: grabbing;
1201
+ transform: scale(0.95);
1202
+ }
1203
+
1204
+ .asteroid-mobile-asteroid-label {
1205
+ position: absolute;
1206
+ top: -0.75rem;
1207
+ background: var(--asteroid-bg-dark);
1208
+ color: var(--asteroid-text-primary);
1209
+ font-size: 0.5625rem;
1210
+ font-weight: 900;
1211
+ letter-spacing: 0.125em;
1212
+ padding: 0 0.5rem;
1213
+ border-radius: var(--asteroid-radius-full);
1214
+ box-shadow: var(--asteroid-shadow-lg);
1215
+ transform: scale(0.9);
1216
+ }
1217
+
1218
+ .asteroid-mobile-person {
1219
+ width: 4rem;
1220
+ height: 4rem;
1221
+ background: rgba(59, 130, 246, 0.05);
1222
+ border-radius: 50%;
1223
+ box-shadow: var(--asteroid-shadow-lg);
1224
+ border: 1px solid white;
1225
+ display: flex;
1226
+ align-items: center;
1227
+ justify-content: center;
1228
+ cursor: grab;
1229
+ position: relative;
1230
+ overflow: hidden;
1231
+ transition: var(--asteroid-transition);
1232
+ }
1233
+
1234
+ .asteroid-mobile-person:active {
1235
+ cursor: grabbing;
1236
+ transform: scale(0.95);
1237
+ }
1238
+
1239
+ .asteroid-person-icon {
1240
+ width: 2rem;
1241
+ height: 2rem;
1242
+ color: #3b82f6;
1243
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
1244
+ }
1245
+
1246
+ .asteroid-divider {
1247
+ height: 2rem;
1248
+ width: 1px;
1249
+ background: var(--asteroid-border-light);
1250
+ margin: 0 0.5rem;
1251
+ }
1252
+ </style>