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.
@@ -351,3 +351,827 @@
351
351
  padding-right: 2rem;
352
352
  }
353
353
  }
354
+
355
+ /* ========================================
356
+ HERO TYPOGRAPHY
357
+ ======================================== */
358
+
359
+ .hero-content h1 {
360
+ font-size: 2.25rem !important;
361
+ line-height: 2.5rem !important;
362
+ font-weight: 700 !important;
363
+ letter-spacing: -0.025em !important;
364
+ margin-bottom: 1.5rem !important;
365
+ color: var(--color-foreground) !important;
366
+ }
367
+
368
+ .hero-content p {
369
+ font-size: 1.25rem !important;
370
+ line-height: 1.75rem !important;
371
+ color: var(--color-muted-foreground) !important;
372
+ max-width: 42rem;
373
+ margin-left: auto;
374
+ margin-right: auto;
375
+ margin-bottom: 2rem !important;
376
+ }
377
+
378
+ .hero-content--dark h1 {
379
+ color: white !important;
380
+ }
381
+
382
+ .hero-content--dark p {
383
+ color: rgba(255, 255, 255, 0.8) !important;
384
+ }
385
+
386
+ @media (min-width: 768px) {
387
+ .hero-content h1 {
388
+ font-size: 3.75rem !important;
389
+ line-height: 1 !important;
390
+ }
391
+ }
392
+
393
+ /* Left-aligned hero content */
394
+ .hero-content--left h1 {
395
+ text-align: left !important;
396
+ margin-left: 0 !important;
397
+ margin-right: 0 !important;
398
+ }
399
+
400
+ .hero-content--left p {
401
+ text-align: left !important;
402
+ margin-left: 0 !important;
403
+ margin-right: 0 !important;
404
+ }
405
+
406
+ /* ========================================
407
+ PRODUCT SHOWCASE HERO STYLES
408
+ ======================================== */
409
+
410
+ .hero-showcase {
411
+ position: relative;
412
+ border-radius: 12px;
413
+ overflow: hidden;
414
+ padding: 3rem;
415
+ min-height: 500px;
416
+ }
417
+
418
+ @media (min-width: 768px) {
419
+ .hero-showcase {
420
+ min-height: 600px;
421
+ }
422
+ }
423
+
424
+ @media (min-width: 1024px) {
425
+ .hero-showcase {
426
+ min-height: 700px;
427
+ }
428
+ }
429
+
430
+ .hero-bg-image {
431
+ position: absolute;
432
+ inset: 0;
433
+ z-index: 0;
434
+ }
435
+
436
+ .hero-bg-image img {
437
+ width: 100%;
438
+ height: 100%;
439
+ object-fit: cover;
440
+ object-position: center;
441
+ }
442
+
443
+ .hero-mockup-centered {
444
+ position: relative;
445
+ z-index: 10;
446
+ max-width: 800px;
447
+ margin: 0 auto;
448
+ width: 100%;
449
+ }
450
+
451
+ @media (min-width: 768px) {
452
+ .hero-mockup-centered {
453
+ max-width: 900px;
454
+ }
455
+ }
456
+
457
+ @media (min-width: 1024px) {
458
+ .hero-mockup-centered {
459
+ max-width: 1000px;
460
+ }
461
+ }
462
+
463
+ .mockup-wrapper {
464
+ background: var(--color-background);
465
+ border-radius: 12px;
466
+ 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);
467
+ overflow: hidden;
468
+ animation: mockup-entrance 0.8s ease-out;
469
+ width: 100%;
470
+ }
471
+
472
+ .mockup-wrapper img {
473
+ width: 100%;
474
+ height: auto;
475
+ display: block;
476
+ }
477
+
478
+ @keyframes mockup-entrance {
479
+ from {
480
+ opacity: 0;
481
+ transform: translateY(30px);
482
+ }
483
+ to {
484
+ opacity: 1;
485
+ transform: translateY(0);
486
+ }
487
+ }
488
+
489
+ /* Browser chrome */
490
+ .mockup-chrome {
491
+ display: flex;
492
+ align-items: center;
493
+ padding: 12px 16px;
494
+ background: var(--color-muted);
495
+ border-bottom: 1px solid var(--color-border);
496
+ }
497
+
498
+ .mockup-chrome-dots {
499
+ display: flex;
500
+ gap: 6px;
501
+ }
502
+
503
+ .mockup-chrome-dots .dot {
504
+ width: 12px;
505
+ height: 12px;
506
+ border-radius: 50%;
507
+ }
508
+
509
+ .mockup-chrome-dots .dot-red {
510
+ background: #ff5f56;
511
+ }
512
+ .mockup-chrome-dots .dot-yellow {
513
+ background: #ffbd2e;
514
+ }
515
+ .mockup-chrome-dots .dot-green {
516
+ background: #27ca40;
517
+ }
518
+
519
+ .mockup-chrome-title {
520
+ flex: 1;
521
+ text-align: center;
522
+ font-size: 13px;
523
+ font-weight: 500;
524
+ color: var(--color-muted-foreground);
525
+ }
526
+
527
+ .mockup-chrome-actions {
528
+ width: 60px;
529
+ }
530
+
531
+ /* App content layout */
532
+ .mockup-content {
533
+ display: flex;
534
+ min-height: 400px;
535
+ }
536
+
537
+ .mockup-sidebar {
538
+ width: 220px;
539
+ background: var(--color-card);
540
+ border-right: 1px solid var(--color-border);
541
+ flex-shrink: 0;
542
+ }
543
+
544
+ .sidebar-header {
545
+ padding: 16px;
546
+ border-bottom: 1px solid var(--color-border);
547
+ }
548
+
549
+ .sidebar-logo {
550
+ display: flex;
551
+ align-items: center;
552
+ gap: 10px;
553
+ }
554
+
555
+ .logo-icon {
556
+ width: 28px;
557
+ height: 28px;
558
+ background: var(--color-primary);
559
+ color: white;
560
+ border-radius: 6px;
561
+ display: flex;
562
+ align-items: center;
563
+ justify-content: center;
564
+ font-weight: 700;
565
+ font-size: 14px;
566
+ }
567
+
568
+ .logo-text {
569
+ font-weight: 600;
570
+ font-size: 14px;
571
+ color: var(--color-foreground);
572
+ }
573
+
574
+ .sidebar-nav {
575
+ padding: 8px;
576
+ }
577
+
578
+ .sidebar-item {
579
+ display: flex;
580
+ align-items: center;
581
+ gap: 10px;
582
+ padding: 10px 12px;
583
+ border-radius: 6px;
584
+ font-size: 13px;
585
+ color: var(--color-muted-foreground);
586
+ transition: all 0.15s ease;
587
+ cursor: pointer;
588
+ }
589
+
590
+ .sidebar-item:hover {
591
+ background: var(--color-accent);
592
+ color: var(--color-accent-foreground);
593
+ }
594
+
595
+ .sidebar-item--active {
596
+ background: oklch(from var(--color-primary) l c h / 0.12);
597
+ color: var(--color-primary);
598
+ }
599
+
600
+ .sidebar-icon {
601
+ font-size: 16px;
602
+ }
603
+
604
+ .sidebar-label {
605
+ flex: 1;
606
+ }
607
+
608
+ .sidebar-badge {
609
+ background: var(--color-primary);
610
+ color: var(--color-primary-foreground);
611
+ font-size: 11px;
612
+ padding: 2px 6px;
613
+ border-radius: 10px;
614
+ font-weight: 500;
615
+ }
616
+
617
+ /* Main content area */
618
+ .mockup-main {
619
+ flex: 1;
620
+ display: flex;
621
+ flex-direction: column;
622
+ background: var(--color-background);
623
+ }
624
+
625
+ .main-header {
626
+ display: flex;
627
+ align-items: center;
628
+ justify-content: space-between;
629
+ padding: 16px 20px;
630
+ border-bottom: 1px solid var(--color-border);
631
+ }
632
+
633
+ .header-title {
634
+ display: flex;
635
+ flex-direction: column;
636
+ gap: 2px;
637
+ }
638
+
639
+ .header-title h2 {
640
+ font-size: 16px;
641
+ font-weight: 600;
642
+ margin: 0;
643
+ color: var(--color-foreground);
644
+ }
645
+
646
+ .header-breadcrumb {
647
+ font-size: 12px;
648
+ color: var(--color-muted-foreground);
649
+ }
650
+
651
+ .header-actions {
652
+ display: flex;
653
+ align-items: center;
654
+ gap: 8px;
655
+ }
656
+
657
+ .action-btn {
658
+ padding: 8px 16px;
659
+ background: var(--color-primary);
660
+ color: var(--color-primary-foreground);
661
+ border: none;
662
+ border-radius: 6px;
663
+ font-size: 13px;
664
+ font-weight: 500;
665
+ cursor: pointer;
666
+ transition: all 0.3s ease;
667
+ }
668
+
669
+ .action-btn--success {
670
+ background: #27ca40;
671
+ }
672
+
673
+ .action-btn--featured {
674
+ background: var(--color-primary);
675
+ }
676
+
677
+ /* Split view */
678
+ .main-split {
679
+ display: flex;
680
+ flex: 1;
681
+ }
682
+
683
+ .editor-panel {
684
+ flex: 1;
685
+ padding: 20px;
686
+ border-right: 1px solid var(--color-border);
687
+ }
688
+
689
+ .editor-section {
690
+ margin-bottom: 20px;
691
+ }
692
+
693
+ .editor-label {
694
+ display: block;
695
+ font-size: 12px;
696
+ font-weight: 500;
697
+ color: var(--color-muted-foreground);
698
+ margin-bottom: 6px;
699
+ }
700
+
701
+ .editor-input {
702
+ background: var(--color-muted);
703
+ border: 1px solid var(--color-border);
704
+ border-radius: 6px;
705
+ padding: 10px 12px;
706
+ font-size: 14px;
707
+ color: var(--color-foreground);
708
+ display: flex;
709
+ align-items: center;
710
+ }
711
+
712
+ .input-text {
713
+ flex: 1;
714
+ overflow: hidden;
715
+ text-overflow: ellipsis;
716
+ white-space: nowrap;
717
+ }
718
+
719
+ .input-cursor {
720
+ width: 2px;
721
+ height: 18px;
722
+ background: var(--color-primary);
723
+ animation: blink 1s infinite;
724
+ margin-left: 2px;
725
+ }
726
+
727
+ @keyframes blink {
728
+ 0%,
729
+ 50% {
730
+ opacity: 1;
731
+ }
732
+ 51%,
733
+ 100% {
734
+ opacity: 0;
735
+ }
736
+ }
737
+
738
+ .editor-select {
739
+ background: var(--color-muted);
740
+ border: 1px solid var(--color-border);
741
+ border-radius: 6px;
742
+ padding: 10px 12px;
743
+ font-size: 14px;
744
+ color: var(--color-foreground);
745
+ display: flex;
746
+ justify-content: space-between;
747
+ align-items: center;
748
+ }
749
+
750
+ .select-arrow {
751
+ font-size: 10px;
752
+ color: var(--color-muted-foreground);
753
+ }
754
+
755
+ .editor-textarea {
756
+ background: var(--color-muted);
757
+ border: 1px solid var(--color-border);
758
+ border-radius: 6px;
759
+ padding: 10px 12px;
760
+ font-size: 14px;
761
+ color: var(--color-foreground);
762
+ min-height: 80px;
763
+ }
764
+
765
+ .textarea-text {
766
+ transition: all 0.5s ease;
767
+ }
768
+
769
+ .textarea-text--complete {
770
+ color: var(--color-foreground);
771
+ }
772
+
773
+ /* Preview panel */
774
+ .preview-panel {
775
+ width: 320px;
776
+ padding: 20px;
777
+ background: oklch(from var(--color-muted) l c h / 0.5);
778
+ }
779
+
780
+ .preview-header {
781
+ display: flex;
782
+ justify-content: space-between;
783
+ align-items: center;
784
+ margin-bottom: 16px;
785
+ }
786
+
787
+ .preview-label {
788
+ font-size: 12px;
789
+ font-weight: 500;
790
+ color: var(--color-muted-foreground);
791
+ }
792
+
793
+ .preview-url {
794
+ font-size: 11px;
795
+ color: var(--color-muted-foreground);
796
+ font-family: monospace;
797
+ }
798
+
799
+ .preview-card {
800
+ background: var(--color-card);
801
+ border: 1px solid var(--color-border);
802
+ border-radius: 10px;
803
+ overflow: hidden;
804
+ position: relative;
805
+ transition: all 0.3s ease;
806
+ }
807
+
808
+ .preview-badge {
809
+ position: absolute;
810
+ top: 10px;
811
+ right: 10px;
812
+ background: var(--color-primary);
813
+ color: white;
814
+ font-size: 11px;
815
+ padding: 4px 8px;
816
+ border-radius: 4px;
817
+ font-weight: 500;
818
+ animation: badge-pop 0.3s ease;
819
+ }
820
+
821
+ @keyframes badge-pop {
822
+ from {
823
+ transform: scale(0);
824
+ opacity: 0;
825
+ }
826
+ to {
827
+ transform: scale(1);
828
+ opacity: 1;
829
+ }
830
+ }
831
+
832
+ .preview-image {
833
+ height: 120px;
834
+ background: linear-gradient(135deg, var(--color-muted) 0%, var(--color-accent) 100%);
835
+ }
836
+
837
+ .preview-image-placeholder {
838
+ width: 100%;
839
+ height: 100%;
840
+ display: flex;
841
+ align-items: center;
842
+ justify-content: center;
843
+ font-size: 40px;
844
+ }
845
+
846
+ .preview-content {
847
+ padding: 16px;
848
+ }
849
+
850
+ .preview-category-tag {
851
+ display: inline-block;
852
+ font-size: 11px;
853
+ color: var(--color-primary);
854
+ font-weight: 500;
855
+ margin-bottom: 8px;
856
+ }
857
+
858
+ .preview-title {
859
+ font-size: 16px;
860
+ font-weight: 600;
861
+ margin: 0 0 8px;
862
+ color: var(--color-foreground);
863
+ }
864
+
865
+ .preview-description {
866
+ font-size: 13px;
867
+ color: var(--color-muted-foreground);
868
+ line-height: 1.5;
869
+ margin: 0 0 12px;
870
+ }
871
+
872
+ .preview-meta {
873
+ display: flex;
874
+ gap: 8px;
875
+ font-size: 12px;
876
+ }
877
+
878
+ .meta-rating {
879
+ color: #ffc24a;
880
+ }
881
+
882
+ .meta-reviews {
883
+ color: var(--color-muted-foreground);
884
+ }
885
+
886
+ /* State indicators */
887
+ .mockup-indicators {
888
+ display: flex;
889
+ justify-content: center;
890
+ gap: 24px;
891
+ padding: 16px;
892
+ border-top: 1px solid var(--color-border);
893
+ }
894
+
895
+ .indicator {
896
+ display: flex;
897
+ align-items: center;
898
+ gap: 8px;
899
+ background: none;
900
+ border: none;
901
+ cursor: pointer;
902
+ padding: 6px 12px;
903
+ border-radius: 20px;
904
+ transition: all 0.2s ease;
905
+ }
906
+
907
+ .indicator:hover {
908
+ background: var(--color-accent);
909
+ }
910
+
911
+ .indicator--active {
912
+ background: oklch(from var(--color-primary) l c h / 0.12);
913
+ }
914
+
915
+ .indicator-dot {
916
+ width: 8px;
917
+ height: 8px;
918
+ border-radius: 50%;
919
+ background: var(--color-muted-foreground);
920
+ transition: all 0.2s ease;
921
+ }
922
+
923
+ .indicator--active .indicator-dot {
924
+ background: var(--color-primary);
925
+ box-shadow: 0 0 0 3px oklch(from var(--color-primary) l c h / 0.2);
926
+ }
927
+
928
+ .indicator-label {
929
+ font-size: 12px;
930
+ color: var(--color-muted-foreground);
931
+ }
932
+
933
+ .indicator--active .indicator-label {
934
+ color: var(--color-foreground);
935
+ font-weight: 500;
936
+ }
937
+
938
+ /* ========================================
939
+ LOGO BANNER STYLES
940
+ ======================================== */
941
+
942
+ .logo-scroll-container {
943
+ overflow: hidden;
944
+ mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
945
+ }
946
+
947
+ .logo-scroll-track {
948
+ display: flex;
949
+ animation: logo-scroll 30s linear infinite;
950
+ }
951
+
952
+ .logo-scroll-track:hover {
953
+ animation-play-state: paused;
954
+ }
955
+
956
+ @keyframes logo-scroll {
957
+ 0% {
958
+ transform: translateX(0);
959
+ }
960
+ 100% {
961
+ transform: translateX(-50%);
962
+ }
963
+ }
964
+
965
+ .logo-item {
966
+ flex-shrink: 0;
967
+ min-width: 150px;
968
+ }
969
+
970
+ /* ========================================
971
+ RESPONSIVE ADJUSTMENTS
972
+ ======================================== */
973
+
974
+ @media (max-width: 768px) {
975
+ .mockup-content {
976
+ flex-direction: column;
977
+ }
978
+
979
+ .mockup-sidebar {
980
+ width: 100%;
981
+ border-right: none;
982
+ border-bottom: 1px solid var(--color-border);
983
+ }
984
+
985
+ .sidebar-nav {
986
+ display: flex;
987
+ overflow-x: auto;
988
+ padding: 8px;
989
+ gap: 4px;
990
+ }
991
+
992
+ .sidebar-item {
993
+ white-space: nowrap;
994
+ }
995
+
996
+ .main-split {
997
+ flex-direction: column;
998
+ }
999
+
1000
+ .editor-panel {
1001
+ border-right: none;
1002
+ border-bottom: 1px solid var(--color-border);
1003
+ }
1004
+
1005
+ .preview-panel {
1006
+ width: 100%;
1007
+ }
1008
+
1009
+ .mockup-indicators {
1010
+ flex-wrap: wrap;
1011
+ gap: 12px;
1012
+ }
1013
+
1014
+ .indicator-label {
1015
+ display: none;
1016
+ }
1017
+ }
1018
+
1019
+ /* ========================================
1020
+ ANIMATION STYLES
1021
+ ======================================== */
1022
+
1023
+ /* Industry Tabs Animation */
1024
+ .industry-tab-content {
1025
+ animation: tab-fade-in 0.3s ease-out;
1026
+ }
1027
+
1028
+ @keyframes tab-fade-in {
1029
+ from {
1030
+ opacity: 0;
1031
+ transform: translateY(10px);
1032
+ }
1033
+ to {
1034
+ opacity: 1;
1035
+ transform: translateY(0);
1036
+ }
1037
+ }
1038
+
1039
+ /* Feature Showcase Entrance Animation */
1040
+ @keyframes feature-slide-in {
1041
+ from {
1042
+ opacity: 0;
1043
+ transform: translateX(-20px);
1044
+ }
1045
+ to {
1046
+ opacity: 1;
1047
+ transform: translateX(0);
1048
+ }
1049
+ }
1050
+
1051
+ .feature-showcase-content {
1052
+ animation: feature-slide-in 0.5s ease-out;
1053
+ }
1054
+
1055
+ /* Testimonial Card Hover Effects */
1056
+ .testimonial-card {
1057
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
1058
+ }
1059
+
1060
+ .testimonial-card:hover {
1061
+ transform: translateY(-4px);
1062
+ box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.15);
1063
+ }
1064
+
1065
+ /* Stat Number Animation */
1066
+ @keyframes stat-count-up {
1067
+ from {
1068
+ opacity: 0;
1069
+ transform: translateY(20px);
1070
+ }
1071
+ to {
1072
+ opacity: 1;
1073
+ transform: translateY(0);
1074
+ }
1075
+ }
1076
+
1077
+ .stat-number {
1078
+ animation: stat-count-up 0.6s ease-out;
1079
+ }
1080
+
1081
+ /* Trust Column Icon Animation */
1082
+ .trust-icon {
1083
+ transition: transform 0.2s ease, background-color 0.2s ease;
1084
+ }
1085
+
1086
+ .trust-icon:hover {
1087
+ transform: scale(1.1);
1088
+ }
1089
+
1090
+ /* Final CTA Background Animation */
1091
+ @keyframes subtle-float {
1092
+ 0%,
1093
+ 100% {
1094
+ transform: translateY(0);
1095
+ }
1096
+ 50% {
1097
+ transform: translateY(-10px);
1098
+ }
1099
+ }
1100
+
1101
+ .cta-decorative {
1102
+ animation: subtle-float 6s ease-in-out infinite;
1103
+ }
1104
+
1105
+ /* Feature Grid Card Entrance */
1106
+ @keyframes card-entrance {
1107
+ from {
1108
+ opacity: 0;
1109
+ transform: translateY(20px);
1110
+ }
1111
+ to {
1112
+ opacity: 1;
1113
+ transform: translateY(0);
1114
+ }
1115
+ }
1116
+
1117
+ .feature-card {
1118
+ animation: card-entrance 0.4s ease-out;
1119
+ animation-fill-mode: both;
1120
+ }
1121
+
1122
+ .feature-card:nth-child(1) {
1123
+ animation-delay: 0.1s;
1124
+ }
1125
+ .feature-card:nth-child(2) {
1126
+ animation-delay: 0.2s;
1127
+ }
1128
+ .feature-card:nth-child(3) {
1129
+ animation-delay: 0.3s;
1130
+ }
1131
+ .feature-card:nth-child(4) {
1132
+ animation-delay: 0.4s;
1133
+ }
1134
+ .feature-card:nth-child(5) {
1135
+ animation-delay: 0.5s;
1136
+ }
1137
+ .feature-card:nth-child(6) {
1138
+ animation-delay: 0.6s;
1139
+ }
1140
+
1141
+ /* Smooth Section Transitions */
1142
+ section {
1143
+ scroll-margin-top: 80px;
1144
+ }
1145
+
1146
+ /* Button Hover Enhancement */
1147
+ .cta-button {
1148
+ position: relative;
1149
+ overflow: hidden;
1150
+ }
1151
+
1152
+ .cta-button::after {
1153
+ content: "";
1154
+ position: absolute;
1155
+ inset: 0;
1156
+ background: linear-gradient(rgba(255, 255, 255, 0.1), transparent);
1157
+ opacity: 0;
1158
+ transition: opacity 0.3s ease;
1159
+ }
1160
+
1161
+ .cta-button:hover::after {
1162
+ opacity: 1;
1163
+ }
1164
+
1165
+ /* Responsive Image Container */
1166
+ .feature-image-container {
1167
+ position: relative;
1168
+ border-radius: 12px;
1169
+ overflow: hidden;
1170
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
1171
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
1172
+ }
1173
+
1174
+ .feature-image-container:hover {
1175
+ transform: translateY(-4px);
1176
+ box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.2);
1177
+ }