@howssatoshi/quantumcss 1.3.1 → 1.4.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,14 +1,15 @@
1
1
  /*!
2
- * QuantumCSS - Utility-First CSS Framework
3
- * Advanced utility framework with modern CSS features
4
- * Version: 1.0.0
5
- * Features: Modern CSS, Container Queries, Logical Properties, Dark Mode, etc.
2
+ * QuantumCSS + Starlight UI
3
+ * Advanced utility-first framework with ethereal cosmic aesthetics
4
+ * Version: 1.4.0
5
+ * Features: Modern CSS, JIT Engine, Starlight Components, Dark Mode
6
6
  */
7
7
 
8
8
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
9
9
 
10
10
  /* CSS Custom Properties (Design Tokens) */
11
11
  :root {
12
+ color-scheme: dark;
12
13
  /* Colors */
13
14
  --color-primary: #3b82f6;
14
15
  --color-primary-50: #eff6ff;
@@ -134,11 +135,11 @@
134
135
  --radius-full: 0;
135
136
  }
136
137
 
137
- .starlight-card, .glass, .q-card {
138
+ .starlight-card, .glass {
138
139
  border: 2px solid CanvasText !important;
139
140
  }
140
141
 
141
- .btn-starlight, .q-btn-primary {
142
+ .btn-starlight {
142
143
  background: ButtonFace !important;
143
144
  color: ButtonText !important;
144
145
  border: 2px solid ButtonText !important;
@@ -168,6 +169,9 @@ html {
168
169
  font-size: 16px;
169
170
  -webkit-font-smoothing: antialiased;
170
171
  -moz-osx-font-smoothing: grayscale;
172
+ background-color: var(--color-starlight-deep);
173
+ scrollbar-width: thin;
174
+ scrollbar-color: var(--color-starlight-blue) transparent;
171
175
  }
172
176
 
173
177
  body {
@@ -191,11 +195,17 @@ textarea {
191
195
  /* Layout Utilities */
192
196
  .container {
193
197
  width: 100%;
194
- max-width: 1200px;
198
+ max-width: 1100px;
195
199
  margin-left: auto;
196
200
  margin-right: auto;
197
- padding-left: var(--space-4);
198
- padding-right: var(--space-4);
201
+ padding-left: var(--space-8);
202
+ padding-right: var(--space-8);
203
+ }
204
+
205
+ .grid-3 {
206
+ display: grid;
207
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
208
+ gap: var(--space-8);
199
209
  }
200
210
 
201
211
  @container (min-width: 640px) {
@@ -462,435 +472,6 @@ textarea {
462
472
 
463
473
  /* ====== QUANTUM CSS ENHANCEMENTS ====== */
464
474
 
465
- /* Responsive Design System - Better Breakpoints */
466
- @media (max-width: 639px) {
467
- .q-sm\:block { display: block; }
468
- .q-sm\:hidden { display: none; }
469
- .q-sm\:text-center { text-align: center; }
470
- .q-sm\:flex-col { flex-direction: column; }
471
- }
472
-
473
- @media (min-width: 640px) {
474
- .q-md\:block { display: block; }
475
- .q-md\:hidden { display: none; }
476
- .q-md\:flex-row { flex-direction: row; }
477
- }
478
-
479
- @media (min-width: 768px) {
480
- .q-lg\:block { display: block; }
481
- .q-lg\:hidden { display: none; }
482
- .q-lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
483
- }
484
-
485
- @media (min-width: 1024px) {
486
- .q-xl\:block { display: block; }
487
- .q-xl\:hidden { display: none; }
488
- .q-xl\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
489
- }
490
-
491
- @media (min-width: 1280px) {
492
- .q-2xl\:block { display: block; }
493
- .q-2xl\:hidden { display: none; }
494
- .q-2xl\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
495
- }
496
-
497
- /* Component Utilities - Semantic & Reusable */
498
- .q-card {
499
- background: white;
500
- border-radius: var(--radius-lg);
501
- box-shadow: var(--shadow-md);
502
- padding: var(--space-6);
503
- border: 1px solid var(--color-neutral);
504
- transition: var(--duration-200) all var(--ease-in-out);
505
- }
506
-
507
- .q-card:hover {
508
- box-shadow: var(--shadow-lg);
509
- transform: translateY(-2px);
510
- }
511
-
512
- .q-btn {
513
- display: inline-flex;
514
- align-items: center;
515
- justify-content: center;
516
- gap: var(--space-2);
517
- padding: var(--space-3) var(--space-6);
518
- border-radius: var(--radius-md);
519
- font-weight: 500;
520
- font-size: 0.875rem;
521
- line-height: 1.25rem;
522
- transition: all var(--duration-150) var(--ease-in-out);
523
- cursor: pointer;
524
- border: none;
525
- text-decoration: none;
526
- position: relative;
527
- overflow: hidden;
528
- }
529
-
530
- .q-btn:disabled {
531
- opacity: 0.5;
532
- cursor: not-allowed;
533
- }
534
-
535
- .q-btn-primary {
536
- background-color: var(--color-primary);
537
- color: white;
538
- }
539
-
540
- .q-btn-primary:hover:not(:disabled) {
541
- background-color: var(--color-primary-600);
542
- transform: translateY(-1px);
543
- box-shadow: var(--shadow-md);
544
- }
545
-
546
- .q-btn-secondary {
547
- background-color: var(--color-neutral);
548
- color: white;
549
- }
550
-
551
- .q-btn-outline {
552
- background-color: transparent;
553
- border: 1px solid var(--color-primary);
554
- color: var(--color-primary);
555
- }
556
-
557
- .q-btn-outline:hover:not(:disabled) {
558
- background-color: var(--color-primary);
559
- color: white;
560
- }
561
-
562
- .q-input {
563
- display: block;
564
- width: 100%;
565
- padding: var(--space-3) var(--space-4);
566
- border: 1px solid var(--color-neutral);
567
- border-radius: var(--radius-md);
568
- font-size: 0.875rem;
569
- line-height: 1.25rem;
570
- transition: all var(--duration-150) var(--ease-in-out);
571
- background-color: white;
572
- }
573
-
574
- .q-input:focus {
575
- outline: none;
576
- border-color: var(--color-primary);
577
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
578
- }
579
-
580
- .q-input-error {
581
- border-color: var(--color-error);
582
- }
583
-
584
- .q-input-error:focus {
585
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
586
- }
587
-
588
- .q-badge {
589
- display: inline-flex;
590
- align-items: center;
591
- padding: var(--space-1) var(--space-3);
592
- border-radius: var(--radius-full);
593
- font-size: 0.75rem;
594
- font-weight: 500;
595
- text-transform: uppercase;
596
- letter-spacing: 0.05em;
597
- }
598
-
599
- .q-badge-primary {
600
- background-color: var(--color-primary-100);
601
- color: var(--color-primary-800);
602
- }
603
-
604
- .q-badge-success {
605
- background-color: #dcfce7;
606
- color: #166534;
607
- }
608
-
609
- .q-badge-warning {
610
- background-color: #fef3c7;
611
- color: #92400e;
612
- }
613
-
614
- .q-badge-error {
615
- background-color: #fee2e2;
616
- color: #991b1b;
617
- }
618
-
619
- /* Advanced Layout Patterns */
620
- .q-center {
621
- display: flex;
622
- align-items: center;
623
- justify-content: center;
624
- }
625
-
626
- .q-stack {
627
- display: flex;
628
- flex-direction: column;
629
- gap: var(--space-4);
630
- }
631
-
632
- .q-cluster {
633
- display: flex;
634
- flex-wrap: wrap;
635
- gap: var(--space-4);
636
- align-items: flex-start;
637
- }
638
-
639
- .q-switcher {
640
- display: flex;
641
- flex-wrap: wrap;
642
- gap: var(--space-2);
643
- }
644
-
645
- .q-sidebar {
646
- display: grid;
647
- grid-template-columns: auto 1fr;
648
- gap: var(--space-6);
649
- }
650
-
651
- .q-cover {
652
- position: absolute;
653
- inset: 0;
654
- width: 100%;
655
- height: 100%;
656
- object-fit: cover;
657
- }
658
-
659
- .q-frame {
660
- position: relative;
661
- overflow: hidden;
662
- }
663
-
664
- /* Smart Spacing - Logical Properties */
665
- .q-space-y > * + * {
666
- margin-top: var(--space-4);
667
- }
668
-
669
- .q-space-y-2 > * + * {
670
- margin-top: var(--space-2);
671
- }
672
-
673
- .q-space-y-6 > * + * {
674
- margin-top: var(--space-6);
675
- }
676
-
677
- .q-space-x > * + * {
678
- margin-left: var(--space-4);
679
- }
680
-
681
- .q-space-x-2 > * + * {
682
- margin-left: var(--space-2);
683
- }
684
-
685
- .q-space-x-6 > * + * {
686
- margin-left: var(--space-6);
687
- }
688
-
689
- /* Animation Utilities */
690
- .q-animate-fade-in {
691
- animation: fadeIn var(--duration-300) var(--ease-out);
692
- }
693
-
694
- .q-animate-slide-up {
695
- animation: slideUp var(--duration-300) var(--ease-out);
696
- }
697
-
698
- .q-animate-slide-down {
699
- animation: slideDown var(--duration-300) var(--ease-out);
700
- }
701
-
702
- .q-animate-scale-in {
703
- animation: scaleIn var(--duration-200) var(--ease-out);
704
- }
705
-
706
- .q-animate-spin {
707
- animation: spin 1s linear infinite;
708
- }
709
-
710
- .q-animate-ping {
711
- animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
712
- }
713
-
714
- .q-animate-pulse {
715
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
716
- }
717
-
718
- .q-animate-bounce {
719
- animation: bounce 1s infinite;
720
- }
721
-
722
- /* Keyframes */
723
- @keyframes fadeIn {
724
- from { opacity: 0; }
725
- to { opacity: 1; }
726
- }
727
-
728
- @keyframes slideUp {
729
- from { opacity: 0; transform: translateY(20px); }
730
- to { opacity: 1; transform: translateY(0); }
731
- }
732
-
733
- @keyframes slideDown {
734
- from { opacity: 0; transform: translateY(-20px); }
735
- to { opacity: 1; transform: translateY(0); }
736
- }
737
-
738
- @keyframes scaleIn {
739
- from { opacity: 0; transform: scale(0.95); }
740
- to { opacity: 1; transform: scale(1); }
741
- }
742
-
743
- @keyframes spin {
744
- from { transform: rotate(0deg); }
745
- to { transform: rotate(360deg); }
746
- }
747
-
748
- @keyframes ping {
749
- 75%, 100% {
750
- transform: scale(2);
751
- opacity: 0;
752
- }
753
- }
754
-
755
- @keyframes pulse {
756
- 0%, 100% { opacity: 1; }
757
- 50% { opacity: 0.5; }
758
- }
759
-
760
- @keyframes bounce {
761
- 0%, 100% {
762
- transform: translateY(-25%);
763
- animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
764
- }
765
- 50% {
766
- transform: none;
767
- animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
768
- }
769
- }
770
-
771
- /* Interactive States */
772
- .q-hover-lift:hover {
773
- transform: translateY(-4px);
774
- box-shadow: var(--shadow-lg);
775
- }
776
-
777
- .q-hover-scale:hover {
778
- transform: scale(1.05);
779
- }
780
-
781
- .q-hover-rotate:hover {
782
- transform: rotate(1deg);
783
- }
784
-
785
- .q-hover-glow:hover {
786
- box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);
787
- }
788
-
789
- .q-active:active {
790
- transform: scale(0.98);
791
- }
792
-
793
- .q-focus-ring:focus {
794
- outline: 2px solid var(--color-primary);
795
- outline-offset: 2px;
796
- }
797
-
798
- /* Form States */
799
- .q-required::after {
800
- content: " *";
801
- color: var(--color-error);
802
- }
803
-
804
- .q-disabled {
805
- opacity: 0.5;
806
- cursor: not-allowed;
807
- pointer-events: none;
808
- }
809
-
810
- .q-loading {
811
- position: relative;
812
- overflow: hidden;
813
- }
814
-
815
- .q-loading::after {
816
- content: "";
817
- position: absolute;
818
- top: 0;
819
- left: -100%;
820
- width: 100%;
821
- height: 100%;
822
- background: linear-gradient(
823
- 90deg,
824
- transparent,
825
- rgba(255, 255, 255, 0.2),
826
- transparent
827
- );
828
- animation: loading 1.5s infinite;
829
- }
830
-
831
- @keyframes loading {
832
- to { left: 100%; }
833
- }
834
-
835
- /* Visual Feedback */
836
- .q-success {
837
- border-color: var(--color-success) !important;
838
- box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.1) !important;
839
- }
840
-
841
- .q-warning {
842
- border-color: var(--color-warning) !important;
843
- box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1) !important;
844
- }
845
-
846
- .q-error {
847
- border-color: var(--color-error) !important;
848
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1) !important;
849
- }
850
-
851
- .q-info {
852
- border-color: var(--color-primary) !important;
853
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
854
- }
855
-
856
- /* Dark Mode Enhancements */
857
- @media (prefers-color-scheme: dark) {
858
- .q-card {
859
- background-color: #1f2937;
860
- border-color: #374151;
861
- }
862
-
863
- .q-input {
864
- background-color: #1f2937;
865
- border-color: #374151;
866
- color: #f9fafb;
867
- }
868
-
869
- .q-dark\:text-white { color: #ffffff !important; }
870
- .q-dark\:bg-gray-800 { background-color: #1f2937 !important; }
871
- .q-dark\:bg-gray-900 { background-color: #111827 !important; }
872
- .q-dark\:border-gray-700 { border-color: #374151 !important; }
873
- }
874
-
875
- /* Print Styles */
876
- @media print {
877
- .q-print-hidden {
878
- display: none !important;
879
- }
880
-
881
- .q-print-block {
882
- display: block !important;
883
- }
884
-
885
- .q-no-shadow {
886
- box-shadow: none !important;
887
- }
888
-
889
- .q-black-text {
890
- color: black !important;
891
- }
892
- }
893
-
894
475
  /* Utility for Quick Prototyping */
895
476
  .prose {
896
477
  max-width: 65ch;
@@ -925,34 +506,6 @@ textarea {
925
506
  color: var(--color-primary-600);
926
507
  }
927
508
 
928
- /* Performance Optimizations */
929
- .q-will-change-transform {
930
- will-change: transform;
931
- }
932
-
933
- .q-will-change-opacity {
934
- will-change: opacity;
935
- }
936
-
937
- .q-gpu-accelerated {
938
- transform: translateZ(0);
939
- backface-visibility: hidden;
940
- perspective: 1000px;
941
- }
942
-
943
- /* Container Queries - Future Ready */
944
- @container (min-width: 320px) {
945
- .q-cq-sm\:flex { display: flex; }
946
- }
947
-
948
- @container (min-width: 640px) {
949
- .q-cq-md\:grid { display: grid; }
950
- }
951
-
952
- @container (min-width: 1024px) {
953
- .q-cq-lg\:block { display: block; }
954
- }
955
-
956
509
  /* Reduced Motion Support */
957
510
  @media (prefers-reduced-motion: reduce) {
958
511
  *,
@@ -965,129 +518,69 @@ textarea {
965
518
  }
966
519
  }
967
520
 
968
- /* High Contrast Mode Support */
969
- @media (prefers-contrast: high) {
970
- .q-card {
971
- border-width: 2px;
972
- }
973
-
974
- .q-btn {
975
- border: 2px solid;
976
- }
977
- }
521
+ /* --- Restored Core Styles --- */
978
522
 
979
- /* Focus Visible Support */
980
- .q-focus-visible:focus-visible {
981
- outline: 2px solid var(--color-primary);
982
- outline-offset: 2px;
983
- }
984
523
 
985
- /* Modern CSS Features */
986
- .q-backdrop-blur-sm {
987
- backdrop-filter: blur(4px);
988
- }
989
524
 
990
- .q-backdrop-blur {
991
- backdrop-filter: blur(8px);
992
- }
525
+ /* Nebula Scrollbar */
993
526
 
994
- .q-backdrop-blur-md {
995
- backdrop-filter: blur(12px);
996
- }
997
527
 
998
- .q-backdrop-blur-lg {
999
- backdrop-filter: blur(16px);
1000
- }
1001
528
 
1002
- .q-text-shadow-sm {
1003
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
1004
- }
529
+ ::-webkit-scrollbar { width: 8px; }
1005
530
 
1006
- .q-text-shadow {
1007
- text-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1008
- }
1009
531
 
1010
- .q-text-shadow-lg {
1011
- text-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
1012
- }
1013
532
 
1014
- /* Gradient Utilities */
1015
- .q-gradient-primary {
1016
- background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-600) 100%);
1017
- }
1018
533
 
1019
- .q-gradient-secondary {
1020
- background: linear-gradient(135deg, var(--color-secondary) 0%, #475569 100%);
1021
- }
1022
534
 
1023
- .q-gradient-radial {
1024
- background: radial-gradient(circle at center, var(--color-primary) 0%, var(--color-primary-600) 100%);
1025
- }
1026
535
 
1027
- .q-gradient-text {
1028
- background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-600) 100%);
1029
- -webkit-background-clip: text;
1030
- -webkit-text-fill-color: transparent;
1031
- background-clip: text;
1032
- }
1033
536
 
1034
- /* Scrollbar Styling */
1035
- .q-scrollbar-thin {
1036
- scrollbar-width: thin;
1037
- scrollbar-color: var(--color-neutral) transparent;
1038
- }
537
+ ::-webkit-scrollbar-track { background: transparent; }
1039
538
 
1040
- .q-scrollbar-thin::-webkit-scrollbar {
1041
- width: 6px;
1042
- }
1043
539
 
1044
- .q-scrollbar-thin::-webkit-scrollbar-track {
1045
- background: transparent;
1046
- }
1047
540
 
1048
- .q-scrollbar-thin::-webkit-scrollbar-thumb {
1049
- background-color: var(--color-neutral);
1050
- border-radius: 3px;
1051
- }
1052
541
 
1053
- .q-scrollbar-none {
1054
- -ms-overflow-style: none;
1055
- scrollbar-width: none;
1056
- }
1057
542
 
1058
- .q-scrollbar-none::-webkit-scrollbar {
1059
543
 
1060
- display: none;
1061
544
 
1062
- }
545
+ ::-webkit-scrollbar-thumb {
1063
546
 
1064
547
 
1065
548
 
1066
- /* --- Restored Core Styles --- */
549
+ background: linear-gradient(135deg, var(--color-starlight-peach) 0%, var(--color-starlight-blue) 100%);
1067
550
 
1068
551
 
1069
552
 
1070
- /* Nebula Scrollbar */
553
+ border-radius: 10px;
1071
554
 
1072
- ::-webkit-scrollbar { width: 8px; }
1073
555
 
1074
- ::-webkit-scrollbar-track { background: var(--color-starlight-deep); }
1075
556
 
1076
- body.light-mode ::-webkit-scrollbar-track { background: var(--light-bg); }
557
+ border: 2px solid var(--color-starlight-deep);
1077
558
 
1078
559
 
1079
560
 
1080
- ::-webkit-scrollbar-thumb {
561
+ }
1081
562
 
1082
- background: linear-gradient(to bottom, var(--color-starlight-peach), var(--color-starlight-blue));
1083
563
 
1084
- border-radius: 10px;
1085
564
 
1086
- border: 2px solid var(--color-starlight-deep);
565
+ body.light-mode,
566
+
567
+ html.light-mode {
568
+
569
+ scrollbar-color: var(--color-starlight-blue) transparent;
1087
570
 
1088
571
  }
1089
572
 
1090
- body.light-mode ::-webkit-scrollbar-thumb { border-color: var(--light-bg); }
573
+
574
+
575
+ body.light-mode::-webkit-scrollbar-thumb,
576
+
577
+ body.light-mode ::-webkit-scrollbar-thumb {
578
+
579
+ background: linear-gradient(135deg, var(--color-starlight-peach) 40%, var(--color-starlight-blue) 100%);
580
+
581
+ border-color: var(--light-bg);
582
+
583
+ }
1091
584
 
1092
585
 
1093
586
 
@@ -1167,7 +660,9 @@ body {
1167
660
 
1168
661
 
1169
662
 
1170
- body.light-mode {
663
+ body.light-mode,
664
+ html.light-mode {
665
+ color-scheme: light;
1171
666
  background-color: var(--light-bg);
1172
667
  color: var(--light-text);
1173
668
  --text-primary: var(--light-text);