kofi-stack-template-generator 2.1.54 → 2.1.55

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.
@@ -501,3 +501,827 @@
501
501
  padding-right: 2rem;
502
502
  }
503
503
  }
504
+
505
+ /* ========================================
506
+ HERO TYPOGRAPHY
507
+ ======================================== */
508
+
509
+ .hero-content h1 {
510
+ font-size: 2.25rem !important;
511
+ line-height: 2.5rem !important;
512
+ font-weight: 700 !important;
513
+ letter-spacing: -0.025em !important;
514
+ margin-bottom: 1.5rem !important;
515
+ color: var(--color-foreground) !important;
516
+ }
517
+
518
+ .hero-content p {
519
+ font-size: 1.25rem !important;
520
+ line-height: 1.75rem !important;
521
+ color: var(--color-muted-foreground) !important;
522
+ max-width: 42rem;
523
+ margin-left: auto;
524
+ margin-right: auto;
525
+ margin-bottom: 2rem !important;
526
+ }
527
+
528
+ .hero-content--dark h1 {
529
+ color: white !important;
530
+ }
531
+
532
+ .hero-content--dark p {
533
+ color: rgba(255, 255, 255, 0.8) !important;
534
+ }
535
+
536
+ @media (min-width: 768px) {
537
+ .hero-content h1 {
538
+ font-size: 3.75rem !important;
539
+ line-height: 1 !important;
540
+ }
541
+ }
542
+
543
+ /* Left-aligned hero content */
544
+ .hero-content--left h1 {
545
+ text-align: left !important;
546
+ margin-left: 0 !important;
547
+ margin-right: 0 !important;
548
+ }
549
+
550
+ .hero-content--left p {
551
+ text-align: left !important;
552
+ margin-left: 0 !important;
553
+ margin-right: 0 !important;
554
+ }
555
+
556
+ /* ========================================
557
+ PRODUCT SHOWCASE HERO STYLES
558
+ ======================================== */
559
+
560
+ .hero-showcase {
561
+ position: relative;
562
+ border-radius: 12px;
563
+ overflow: hidden;
564
+ padding: 3rem;
565
+ min-height: 500px;
566
+ }
567
+
568
+ @media (min-width: 768px) {
569
+ .hero-showcase {
570
+ min-height: 600px;
571
+ }
572
+ }
573
+
574
+ @media (min-width: 1024px) {
575
+ .hero-showcase {
576
+ min-height: 700px;
577
+ }
578
+ }
579
+
580
+ .hero-bg-image {
581
+ position: absolute;
582
+ inset: 0;
583
+ z-index: 0;
584
+ }
585
+
586
+ .hero-bg-image img {
587
+ width: 100%;
588
+ height: 100%;
589
+ object-fit: cover;
590
+ object-position: center;
591
+ }
592
+
593
+ .hero-mockup-centered {
594
+ position: relative;
595
+ z-index: 10;
596
+ max-width: 800px;
597
+ margin: 0 auto;
598
+ width: 100%;
599
+ }
600
+
601
+ @media (min-width: 768px) {
602
+ .hero-mockup-centered {
603
+ max-width: 900px;
604
+ }
605
+ }
606
+
607
+ @media (min-width: 1024px) {
608
+ .hero-mockup-centered {
609
+ max-width: 1000px;
610
+ }
611
+ }
612
+
613
+ .mockup-wrapper {
614
+ background: var(--color-background);
615
+ border-radius: 12px;
616
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 12px 24px -8px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.05);
617
+ overflow: hidden;
618
+ animation: mockup-entrance 0.8s ease-out;
619
+ width: 100%;
620
+ }
621
+
622
+ .mockup-wrapper img {
623
+ width: 100%;
624
+ height: auto;
625
+ display: block;
626
+ }
627
+
628
+ @keyframes mockup-entrance {
629
+ from {
630
+ opacity: 0;
631
+ transform: translateY(30px);
632
+ }
633
+ to {
634
+ opacity: 1;
635
+ transform: translateY(0);
636
+ }
637
+ }
638
+
639
+ /* Browser chrome */
640
+ .mockup-chrome {
641
+ display: flex;
642
+ align-items: center;
643
+ padding: 12px 16px;
644
+ background: var(--color-muted);
645
+ border-bottom: 1px solid var(--color-border);
646
+ }
647
+
648
+ .mockup-chrome-dots {
649
+ display: flex;
650
+ gap: 6px;
651
+ }
652
+
653
+ .mockup-chrome-dots .dot {
654
+ width: 12px;
655
+ height: 12px;
656
+ border-radius: 50%;
657
+ }
658
+
659
+ .mockup-chrome-dots .dot-red {
660
+ background: #ff5f56;
661
+ }
662
+ .mockup-chrome-dots .dot-yellow {
663
+ background: #ffbd2e;
664
+ }
665
+ .mockup-chrome-dots .dot-green {
666
+ background: #27ca40;
667
+ }
668
+
669
+ .mockup-chrome-title {
670
+ flex: 1;
671
+ text-align: center;
672
+ font-size: 13px;
673
+ font-weight: 500;
674
+ color: var(--color-muted-foreground);
675
+ }
676
+
677
+ .mockup-chrome-actions {
678
+ width: 60px;
679
+ }
680
+
681
+ /* App content layout */
682
+ .mockup-content {
683
+ display: flex;
684
+ min-height: 400px;
685
+ }
686
+
687
+ .mockup-sidebar {
688
+ width: 220px;
689
+ background: var(--color-card);
690
+ border-right: 1px solid var(--color-border);
691
+ flex-shrink: 0;
692
+ }
693
+
694
+ .sidebar-header {
695
+ padding: 16px;
696
+ border-bottom: 1px solid var(--color-border);
697
+ }
698
+
699
+ .sidebar-logo {
700
+ display: flex;
701
+ align-items: center;
702
+ gap: 10px;
703
+ }
704
+
705
+ .logo-icon {
706
+ width: 28px;
707
+ height: 28px;
708
+ background: var(--color-primary);
709
+ color: white;
710
+ border-radius: 6px;
711
+ display: flex;
712
+ align-items: center;
713
+ justify-content: center;
714
+ font-weight: 700;
715
+ font-size: 14px;
716
+ }
717
+
718
+ .logo-text {
719
+ font-weight: 600;
720
+ font-size: 14px;
721
+ color: var(--color-foreground);
722
+ }
723
+
724
+ .sidebar-nav {
725
+ padding: 8px;
726
+ }
727
+
728
+ .sidebar-item {
729
+ display: flex;
730
+ align-items: center;
731
+ gap: 10px;
732
+ padding: 10px 12px;
733
+ border-radius: 6px;
734
+ font-size: 13px;
735
+ color: var(--color-muted-foreground);
736
+ transition: all 0.15s ease;
737
+ cursor: pointer;
738
+ }
739
+
740
+ .sidebar-item:hover {
741
+ background: var(--color-accent);
742
+ color: var(--color-accent-foreground);
743
+ }
744
+
745
+ .sidebar-item--active {
746
+ background: oklch(from var(--color-primary) l c h / 0.12);
747
+ color: var(--color-primary);
748
+ }
749
+
750
+ .sidebar-icon {
751
+ font-size: 16px;
752
+ }
753
+
754
+ .sidebar-label {
755
+ flex: 1;
756
+ }
757
+
758
+ .sidebar-badge {
759
+ background: var(--color-primary);
760
+ color: var(--color-primary-foreground);
761
+ font-size: 11px;
762
+ padding: 2px 6px;
763
+ border-radius: 10px;
764
+ font-weight: 500;
765
+ }
766
+
767
+ /* Main content area */
768
+ .mockup-main {
769
+ flex: 1;
770
+ display: flex;
771
+ flex-direction: column;
772
+ background: var(--color-background);
773
+ }
774
+
775
+ .main-header {
776
+ display: flex;
777
+ align-items: center;
778
+ justify-content: space-between;
779
+ padding: 16px 20px;
780
+ border-bottom: 1px solid var(--color-border);
781
+ }
782
+
783
+ .header-title {
784
+ display: flex;
785
+ flex-direction: column;
786
+ gap: 2px;
787
+ }
788
+
789
+ .header-title h2 {
790
+ font-size: 16px;
791
+ font-weight: 600;
792
+ margin: 0;
793
+ color: var(--color-foreground);
794
+ }
795
+
796
+ .header-breadcrumb {
797
+ font-size: 12px;
798
+ color: var(--color-muted-foreground);
799
+ }
800
+
801
+ .header-actions {
802
+ display: flex;
803
+ align-items: center;
804
+ gap: 8px;
805
+ }
806
+
807
+ .action-btn {
808
+ padding: 8px 16px;
809
+ background: var(--color-primary);
810
+ color: var(--color-primary-foreground);
811
+ border: none;
812
+ border-radius: 6px;
813
+ font-size: 13px;
814
+ font-weight: 500;
815
+ cursor: pointer;
816
+ transition: all 0.3s ease;
817
+ }
818
+
819
+ .action-btn--success {
820
+ background: #27ca40;
821
+ }
822
+
823
+ .action-btn--featured {
824
+ background: var(--color-primary);
825
+ }
826
+
827
+ /* Split view */
828
+ .main-split {
829
+ display: flex;
830
+ flex: 1;
831
+ }
832
+
833
+ .editor-panel {
834
+ flex: 1;
835
+ padding: 20px;
836
+ border-right: 1px solid var(--color-border);
837
+ }
838
+
839
+ .editor-section {
840
+ margin-bottom: 20px;
841
+ }
842
+
843
+ .editor-label {
844
+ display: block;
845
+ font-size: 12px;
846
+ font-weight: 500;
847
+ color: var(--color-muted-foreground);
848
+ margin-bottom: 6px;
849
+ }
850
+
851
+ .editor-input {
852
+ background: var(--color-muted);
853
+ border: 1px solid var(--color-border);
854
+ border-radius: 6px;
855
+ padding: 10px 12px;
856
+ font-size: 14px;
857
+ color: var(--color-foreground);
858
+ display: flex;
859
+ align-items: center;
860
+ }
861
+
862
+ .input-text {
863
+ flex: 1;
864
+ overflow: hidden;
865
+ text-overflow: ellipsis;
866
+ white-space: nowrap;
867
+ }
868
+
869
+ .input-cursor {
870
+ width: 2px;
871
+ height: 18px;
872
+ background: var(--color-primary);
873
+ animation: blink 1s infinite;
874
+ margin-left: 2px;
875
+ }
876
+
877
+ @keyframes blink {
878
+ 0%,
879
+ 50% {
880
+ opacity: 1;
881
+ }
882
+ 51%,
883
+ 100% {
884
+ opacity: 0;
885
+ }
886
+ }
887
+
888
+ .editor-select {
889
+ background: var(--color-muted);
890
+ border: 1px solid var(--color-border);
891
+ border-radius: 6px;
892
+ padding: 10px 12px;
893
+ font-size: 14px;
894
+ color: var(--color-foreground);
895
+ display: flex;
896
+ justify-content: space-between;
897
+ align-items: center;
898
+ }
899
+
900
+ .select-arrow {
901
+ font-size: 10px;
902
+ color: var(--color-muted-foreground);
903
+ }
904
+
905
+ .editor-textarea {
906
+ background: var(--color-muted);
907
+ border: 1px solid var(--color-border);
908
+ border-radius: 6px;
909
+ padding: 10px 12px;
910
+ font-size: 14px;
911
+ color: var(--color-foreground);
912
+ min-height: 80px;
913
+ }
914
+
915
+ .textarea-text {
916
+ transition: all 0.5s ease;
917
+ }
918
+
919
+ .textarea-text--complete {
920
+ color: var(--color-foreground);
921
+ }
922
+
923
+ /* Preview panel */
924
+ .preview-panel {
925
+ width: 320px;
926
+ padding: 20px;
927
+ background: oklch(from var(--color-muted) l c h / 0.5);
928
+ }
929
+
930
+ .preview-header {
931
+ display: flex;
932
+ justify-content: space-between;
933
+ align-items: center;
934
+ margin-bottom: 16px;
935
+ }
936
+
937
+ .preview-label {
938
+ font-size: 12px;
939
+ font-weight: 500;
940
+ color: var(--color-muted-foreground);
941
+ }
942
+
943
+ .preview-url {
944
+ font-size: 11px;
945
+ color: var(--color-muted-foreground);
946
+ font-family: monospace;
947
+ }
948
+
949
+ .preview-card {
950
+ background: var(--color-card);
951
+ border: 1px solid var(--color-border);
952
+ border-radius: 10px;
953
+ overflow: hidden;
954
+ position: relative;
955
+ transition: all 0.3s ease;
956
+ }
957
+
958
+ .preview-badge {
959
+ position: absolute;
960
+ top: 10px;
961
+ right: 10px;
962
+ background: var(--color-primary);
963
+ color: white;
964
+ font-size: 11px;
965
+ padding: 4px 8px;
966
+ border-radius: 4px;
967
+ font-weight: 500;
968
+ animation: badge-pop 0.3s ease;
969
+ }
970
+
971
+ @keyframes badge-pop {
972
+ from {
973
+ transform: scale(0);
974
+ opacity: 0;
975
+ }
976
+ to {
977
+ transform: scale(1);
978
+ opacity: 1;
979
+ }
980
+ }
981
+
982
+ .preview-image {
983
+ height: 120px;
984
+ background: linear-gradient(135deg, var(--color-muted) 0%, var(--color-accent) 100%);
985
+ }
986
+
987
+ .preview-image-placeholder {
988
+ width: 100%;
989
+ height: 100%;
990
+ display: flex;
991
+ align-items: center;
992
+ justify-content: center;
993
+ font-size: 40px;
994
+ }
995
+
996
+ .preview-content {
997
+ padding: 16px;
998
+ }
999
+
1000
+ .preview-category-tag {
1001
+ display: inline-block;
1002
+ font-size: 11px;
1003
+ color: var(--color-primary);
1004
+ font-weight: 500;
1005
+ margin-bottom: 8px;
1006
+ }
1007
+
1008
+ .preview-title {
1009
+ font-size: 16px;
1010
+ font-weight: 600;
1011
+ margin: 0 0 8px;
1012
+ color: var(--color-foreground);
1013
+ }
1014
+
1015
+ .preview-description {
1016
+ font-size: 13px;
1017
+ color: var(--color-muted-foreground);
1018
+ line-height: 1.5;
1019
+ margin: 0 0 12px;
1020
+ }
1021
+
1022
+ .preview-meta {
1023
+ display: flex;
1024
+ gap: 8px;
1025
+ font-size: 12px;
1026
+ }
1027
+
1028
+ .meta-rating {
1029
+ color: #ffc24a;
1030
+ }
1031
+
1032
+ .meta-reviews {
1033
+ color: var(--color-muted-foreground);
1034
+ }
1035
+
1036
+ /* State indicators */
1037
+ .mockup-indicators {
1038
+ display: flex;
1039
+ justify-content: center;
1040
+ gap: 24px;
1041
+ padding: 16px;
1042
+ border-top: 1px solid var(--color-border);
1043
+ }
1044
+
1045
+ .indicator {
1046
+ display: flex;
1047
+ align-items: center;
1048
+ gap: 8px;
1049
+ background: none;
1050
+ border: none;
1051
+ cursor: pointer;
1052
+ padding: 6px 12px;
1053
+ border-radius: 20px;
1054
+ transition: all 0.2s ease;
1055
+ }
1056
+
1057
+ .indicator:hover {
1058
+ background: var(--color-accent);
1059
+ }
1060
+
1061
+ .indicator--active {
1062
+ background: oklch(from var(--color-primary) l c h / 0.12);
1063
+ }
1064
+
1065
+ .indicator-dot {
1066
+ width: 8px;
1067
+ height: 8px;
1068
+ border-radius: 50%;
1069
+ background: var(--color-muted-foreground);
1070
+ transition: all 0.2s ease;
1071
+ }
1072
+
1073
+ .indicator--active .indicator-dot {
1074
+ background: var(--color-primary);
1075
+ box-shadow: 0 0 0 3px oklch(from var(--color-primary) l c h / 0.2);
1076
+ }
1077
+
1078
+ .indicator-label {
1079
+ font-size: 12px;
1080
+ color: var(--color-muted-foreground);
1081
+ }
1082
+
1083
+ .indicator--active .indicator-label {
1084
+ color: var(--color-foreground);
1085
+ font-weight: 500;
1086
+ }
1087
+
1088
+ /* ========================================
1089
+ LOGO BANNER STYLES
1090
+ ======================================== */
1091
+
1092
+ .logo-scroll-container {
1093
+ overflow: hidden;
1094
+ mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
1095
+ }
1096
+
1097
+ .logo-scroll-track {
1098
+ display: flex;
1099
+ animation: logo-scroll 30s linear infinite;
1100
+ }
1101
+
1102
+ .logo-scroll-track:hover {
1103
+ animation-play-state: paused;
1104
+ }
1105
+
1106
+ @keyframes logo-scroll {
1107
+ 0% {
1108
+ transform: translateX(0);
1109
+ }
1110
+ 100% {
1111
+ transform: translateX(-50%);
1112
+ }
1113
+ }
1114
+
1115
+ .logo-item {
1116
+ flex-shrink: 0;
1117
+ min-width: 150px;
1118
+ }
1119
+
1120
+ /* ========================================
1121
+ RESPONSIVE ADJUSTMENTS
1122
+ ======================================== */
1123
+
1124
+ @media (max-width: 768px) {
1125
+ .mockup-content {
1126
+ flex-direction: column;
1127
+ }
1128
+
1129
+ .mockup-sidebar {
1130
+ width: 100%;
1131
+ border-right: none;
1132
+ border-bottom: 1px solid var(--color-border);
1133
+ }
1134
+
1135
+ .sidebar-nav {
1136
+ display: flex;
1137
+ overflow-x: auto;
1138
+ padding: 8px;
1139
+ gap: 4px;
1140
+ }
1141
+
1142
+ .sidebar-item {
1143
+ white-space: nowrap;
1144
+ }
1145
+
1146
+ .main-split {
1147
+ flex-direction: column;
1148
+ }
1149
+
1150
+ .editor-panel {
1151
+ border-right: none;
1152
+ border-bottom: 1px solid var(--color-border);
1153
+ }
1154
+
1155
+ .preview-panel {
1156
+ width: 100%;
1157
+ }
1158
+
1159
+ .mockup-indicators {
1160
+ flex-wrap: wrap;
1161
+ gap: 12px;
1162
+ }
1163
+
1164
+ .indicator-label {
1165
+ display: none;
1166
+ }
1167
+ }
1168
+
1169
+ /* ========================================
1170
+ ANIMATION STYLES
1171
+ ======================================== */
1172
+
1173
+ /* Industry Tabs Animation */
1174
+ .industry-tab-content {
1175
+ animation: tab-fade-in 0.3s ease-out;
1176
+ }
1177
+
1178
+ @keyframes tab-fade-in {
1179
+ from {
1180
+ opacity: 0;
1181
+ transform: translateY(10px);
1182
+ }
1183
+ to {
1184
+ opacity: 1;
1185
+ transform: translateY(0);
1186
+ }
1187
+ }
1188
+
1189
+ /* Feature Showcase Entrance Animation */
1190
+ @keyframes feature-slide-in {
1191
+ from {
1192
+ opacity: 0;
1193
+ transform: translateX(-20px);
1194
+ }
1195
+ to {
1196
+ opacity: 1;
1197
+ transform: translateX(0);
1198
+ }
1199
+ }
1200
+
1201
+ .feature-showcase-content {
1202
+ animation: feature-slide-in 0.5s ease-out;
1203
+ }
1204
+
1205
+ /* Testimonial Card Hover Effects */
1206
+ .testimonial-card {
1207
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
1208
+ }
1209
+
1210
+ .testimonial-card:hover {
1211
+ transform: translateY(-4px);
1212
+ box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.15);
1213
+ }
1214
+
1215
+ /* Stat Number Animation */
1216
+ @keyframes stat-count-up {
1217
+ from {
1218
+ opacity: 0;
1219
+ transform: translateY(20px);
1220
+ }
1221
+ to {
1222
+ opacity: 1;
1223
+ transform: translateY(0);
1224
+ }
1225
+ }
1226
+
1227
+ .stat-number {
1228
+ animation: stat-count-up 0.6s ease-out;
1229
+ }
1230
+
1231
+ /* Trust Column Icon Animation */
1232
+ .trust-icon {
1233
+ transition: transform 0.2s ease, background-color 0.2s ease;
1234
+ }
1235
+
1236
+ .trust-icon:hover {
1237
+ transform: scale(1.1);
1238
+ }
1239
+
1240
+ /* Final CTA Background Animation */
1241
+ @keyframes subtle-float {
1242
+ 0%,
1243
+ 100% {
1244
+ transform: translateY(0);
1245
+ }
1246
+ 50% {
1247
+ transform: translateY(-10px);
1248
+ }
1249
+ }
1250
+
1251
+ .cta-decorative {
1252
+ animation: subtle-float 6s ease-in-out infinite;
1253
+ }
1254
+
1255
+ /* Feature Grid Card Entrance */
1256
+ @keyframes card-entrance {
1257
+ from {
1258
+ opacity: 0;
1259
+ transform: translateY(20px);
1260
+ }
1261
+ to {
1262
+ opacity: 1;
1263
+ transform: translateY(0);
1264
+ }
1265
+ }
1266
+
1267
+ .feature-card {
1268
+ animation: card-entrance 0.4s ease-out;
1269
+ animation-fill-mode: both;
1270
+ }
1271
+
1272
+ .feature-card:nth-child(1) {
1273
+ animation-delay: 0.1s;
1274
+ }
1275
+ .feature-card:nth-child(2) {
1276
+ animation-delay: 0.2s;
1277
+ }
1278
+ .feature-card:nth-child(3) {
1279
+ animation-delay: 0.3s;
1280
+ }
1281
+ .feature-card:nth-child(4) {
1282
+ animation-delay: 0.4s;
1283
+ }
1284
+ .feature-card:nth-child(5) {
1285
+ animation-delay: 0.5s;
1286
+ }
1287
+ .feature-card:nth-child(6) {
1288
+ animation-delay: 0.6s;
1289
+ }
1290
+
1291
+ /* Smooth Section Transitions */
1292
+ section {
1293
+ scroll-margin-top: 80px;
1294
+ }
1295
+
1296
+ /* Button Hover Enhancement */
1297
+ .cta-button {
1298
+ position: relative;
1299
+ overflow: hidden;
1300
+ }
1301
+
1302
+ .cta-button::after {
1303
+ content: "";
1304
+ position: absolute;
1305
+ inset: 0;
1306
+ background: linear-gradient(rgba(255, 255, 255, 0.1), transparent);
1307
+ opacity: 0;
1308
+ transition: opacity 0.3s ease;
1309
+ }
1310
+
1311
+ .cta-button:hover::after {
1312
+ opacity: 1;
1313
+ }
1314
+
1315
+ /* Responsive Image Container */
1316
+ .feature-image-container {
1317
+ position: relative;
1318
+ border-radius: 12px;
1319
+ overflow: hidden;
1320
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
1321
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
1322
+ }
1323
+
1324
+ .feature-image-container:hover {
1325
+ transform: translateY(-4px);
1326
+ box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.2);
1327
+ }