kofi-stack-template-generator 2.1.49 → 2.1.51

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.
Files changed (28) hide show
  1. package/.turbo/turbo-build.log +6 -6
  2. package/dist/index.js +106 -35
  3. package/package.json +2 -2
  4. package/src/templates.generated.ts +25 -21
  5. package/templates/marketing/nextjs/src/app/globals.css.hbs +495 -10
  6. package/templates/marketing/payload/public/favicon.ico +0 -0
  7. package/templates/marketing/payload/public/favicon.svg +6 -0
  8. package/templates/marketing/payload/public/logo-light.svg +6 -0
  9. package/templates/marketing/payload/public/logo.svg +6 -0
  10. package/templates/marketing/payload/src/Footer/Component.client.tsx +1 -1
  11. package/templates/marketing/payload/src/Footer/config.ts +1 -1
  12. package/templates/marketing/payload/src/Header/Component.client.tsx +1 -1
  13. package/templates/marketing/payload/src/Header/MobileMenu/index.tsx +1 -1
  14. package/templates/marketing/payload/src/app/(docs)/docs/[[...slug]]/page.tsx +6 -6
  15. package/templates/marketing/payload/src/app/(docs)/docs/layout.tsx +1 -1
  16. package/templates/marketing/payload/src/app/(docs)/layout.tsx +3 -3
  17. package/templates/marketing/payload/src/app/(frontend)/api/newsletter/route.ts +15 -15
  18. package/templates/marketing/payload/src/app/(frontend)/globals.css.hbs +1380 -0
  19. package/templates/marketing/payload/src/app/(frontend)/layout.tsx +17 -17
  20. package/templates/marketing/payload/src/app/(frontend)/posts/[slug]/BlogPostContent.tsx +5 -5
  21. package/templates/marketing/payload/src/app/(frontend)/posts/page.tsx +2 -2
  22. package/templates/marketing/payload/src/components/JsonLd/index.tsx +19 -19
  23. package/templates/marketing/payload/src/components/Logo/Logo.tsx +1 -1
  24. package/templates/marketing/payload/src/components/TableOfContents/index.tsx +3 -3
  25. package/templates/marketing/payload/src/heros/ProductShowcase/AnimatedMockup.tsx +3 -3
  26. package/templates/marketing/payload/src/utilities/generateMeta.ts +16 -16
  27. package/templates/marketing/payload/src/utilities/mergeOpenGraph.ts +4 -4
  28. package/templates/marketing/payload/src/app/(frontend)/globals.css +0 -1019
@@ -1,1019 +0,0 @@
1
- @import "tailwindcss";
2
- @import "tw-animate-css";
3
- @plugin "@tailwindcss/typography";
4
-
5
- @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
6
-
7
- @theme {
8
- /* Colors */
9
- --color-background: hsl(var(--background));
10
- --color-foreground: hsl(var(--foreground));
11
-
12
- --color-card: hsl(var(--card));
13
- --color-card-foreground: hsl(var(--card-foreground));
14
-
15
- --color-popover: hsl(var(--popover));
16
- --color-popover-foreground: hsl(var(--popover-foreground));
17
-
18
- --color-primary: hsl(var(--primary));
19
- --color-primary-foreground: hsl(var(--primary-foreground));
20
-
21
- --color-secondary: hsl(var(--secondary));
22
- --color-secondary-foreground: hsl(var(--secondary-foreground));
23
-
24
- --color-muted: hsl(var(--muted));
25
- --color-muted-foreground: hsl(var(--muted-foreground));
26
-
27
- --color-accent: hsl(var(--accent));
28
- --color-accent-foreground: hsl(var(--accent-foreground));
29
-
30
- --color-destructive: hsl(var(--destructive));
31
- --color-destructive-foreground: hsl(var(--destructive-foreground));
32
-
33
- --color-border: hsla(var(--border));
34
- --color-input: hsl(var(--input));
35
- --color-ring: hsl(var(--ring));
36
-
37
- --color-success: hsl(var(--success));
38
- --color-warning: hsl(var(--warning));
39
- --color-error: hsl(var(--error));
40
-
41
- /* Border radius */
42
- --radius-sm: calc(var(--radius) - 4px);
43
- --radius-md: calc(var(--radius) - 2px);
44
- --radius-lg: var(--radius);
45
- --radius-xl: calc(var(--radius) + 4px);
46
-
47
- /* Fonts */
48
- --font-sans: var(--font-inter), system-ui, sans-serif;
49
- --font-mono: var(--font-geist-mono), monospace;
50
-
51
- /* Container - matching web app */
52
- --container-sm: 40rem;
53
- --container-md: 48rem;
54
- --container-lg: 64rem;
55
- --container-xl: 80rem;
56
- --container-2xl: 96rem;
57
-
58
- /* Animations */
59
- --animate-accordion-down: accordion-down 0.2s ease-out;
60
- --animate-accordion-up: accordion-up 0.2s ease-out;
61
- }
62
-
63
- @keyframes accordion-down {
64
- from {
65
- height: 0;
66
- }
67
- to {
68
- height: var(--radix-accordion-content-height);
69
- }
70
- }
71
-
72
- @keyframes accordion-up {
73
- from {
74
- height: var(--radix-accordion-content-height);
75
- }
76
- to {
77
- height: 0;
78
- }
79
- }
80
-
81
- :root {
82
- --background: 0 0% 98%; /* #f7f9fc */
83
- --foreground: 220 59% 15%; /* #0f1f3d */
84
-
85
- --card: 217 46% 96%; /* #e9eff8 */
86
- --card-foreground: 220 59% 15%; /* #0f1f3d */
87
-
88
- --popover: 0 0% 100%;
89
- --popover-foreground: 220 59% 15%;
90
-
91
- --primary: 220 59% 15%; /* navy */
92
- --primary-foreground: 0 0% 100%;
93
-
94
- --secondary: 173 55% 32%; /* darker teal for WCAG AA contrast */
95
- --secondary-foreground: 220 59% 15%;
96
-
97
- --muted: 217 46% 96%; /* mist */
98
- --muted-foreground: 220 20% 25%; /* darkened further for WCAG AA on card backgrounds */
99
-
100
- --accent: 213 35% 95%; /* soft accent */
101
- --accent-foreground: 220 59% 15%;
102
-
103
- --destructive: 0 68% 65%; /* #e76a6a */
104
- --destructive-foreground: 0 0% 100%;
105
-
106
- --border: 216 23% 89%; /* #e1e6ef */
107
- --input: 216 23% 89%;
108
- --ring: 220 59% 15%;
109
-
110
- --radius: 0.75rem;
111
-
112
- --success: 157 48% 47%; /* #3fae8c */
113
- --warning: 41 54% 62%; /* #d9b36a */
114
- --error: 0 68% 65%; /* #e76a6a */
115
- }
116
-
117
- [data-theme="dark"] {
118
- --background: 219 53% 12%; /* #0b162c */
119
- --foreground: 216 33% 93%; /* #f7f9fc */
120
-
121
- --card: 220 52% 11%; /* #101c32 */
122
- --card-foreground: 216 33% 93%;
123
-
124
- --popover: 220 52% 11%;
125
- --popover-foreground: 216 33% 93%;
126
-
127
- --primary: 220 59% 15%;
128
- --primary-foreground: 0 0% 100%;
129
-
130
- --secondary: 173 46% 44%;
131
- --secondary-foreground: 219 53% 12%;
132
-
133
- --muted: 221 53% 12%;
134
- --muted-foreground: 217 23% 75%; /* improved contrast for WCAG AA */
135
-
136
- --accent: 222 44% 16%;
137
- --accent-foreground: 216 33% 93%;
138
-
139
- --destructive: 0 70% 71%;
140
- --destructive-foreground: 219 53% 12%;
141
-
142
- --border: 222 30% 21%;
143
- --input: 222 30% 21%;
144
- --ring: 173 46% 44%;
145
-
146
- --success: 157 48% 47%;
147
- --warning: 41 54% 62%;
148
- --error: 0 70% 71%;
149
- }
150
-
151
- * {
152
- border-color: var(--color-border);
153
- }
154
-
155
- body {
156
- background-color: var(--color-background);
157
- color: var(--color-foreground);
158
- min-height: 100vh;
159
- display: flex;
160
- flex-direction: column;
161
- }
162
-
163
- html {
164
- opacity: 0;
165
- }
166
-
167
- html[data-theme="dark"],
168
- html[data-theme="light"] {
169
- opacity: initial;
170
- }
171
-
172
- /* Container utility - matching web app */
173
- .container {
174
- width: 100%;
175
- margin-left: auto;
176
- margin-right: auto;
177
- padding-left: 1rem;
178
- padding-right: 1rem;
179
- max-width: 96rem;
180
- }
181
-
182
- /* Hero typography - matching web app exactly */
183
- .hero-content h1 {
184
- font-size: 2.25rem !important; /* text-4xl */
185
- line-height: 2.5rem !important; /* text-4xl line-height */
186
- font-weight: 700 !important; /* font-bold */
187
- letter-spacing: -0.025em !important; /* tracking-tight */
188
- margin-bottom: 1.5rem !important; /* mb-6 */
189
- color: hsl(var(--foreground)) !important;
190
- }
191
-
192
- .hero-content p {
193
- font-size: 1.25rem !important; /* text-xl */
194
- line-height: 1.75rem !important; /* text-xl line-height */
195
- color: hsl(var(--muted-foreground)) !important;
196
- max-width: 42rem; /* max-w-2xl */
197
- margin-left: auto;
198
- margin-right: auto;
199
- margin-bottom: 2rem !important; /* mb-8 */
200
- }
201
-
202
- .hero-content--dark h1 {
203
- color: white !important;
204
- }
205
-
206
- .hero-content--dark p {
207
- color: rgba(255, 255, 255, 0.8) !important;
208
- }
209
-
210
- @media (min-width: 768px) {
211
- .hero-content h1 {
212
- font-size: 3.75rem !important; /* md:text-6xl */
213
- line-height: 1 !important; /* text-6xl line-height */
214
- }
215
- }
216
-
217
- @media (min-width: 640px) {
218
- .container {
219
- padding-left: 1.5rem;
220
- padding-right: 1.5rem;
221
- }
222
- }
223
-
224
- @media (min-width: 1024px) {
225
- .container {
226
- padding-left: 2rem;
227
- padding-right: 2rem;
228
- }
229
- }
230
-
231
- /* ========================================
232
- PRODUCT SHOWCASE HERO STYLES
233
- ======================================== */
234
-
235
- /* Left-aligned hero content */
236
- .hero-content--left h1 {
237
- text-align: left !important;
238
- margin-left: 0 !important;
239
- margin-right: 0 !important;
240
- }
241
-
242
- .hero-content--left p {
243
- text-align: left !important;
244
- margin-left: 0 !important;
245
- margin-right: 0 !important;
246
- }
247
-
248
- /* Hero showcase section */
249
- .hero-showcase {
250
- position: relative;
251
- border-radius: 12px;
252
- overflow: hidden;
253
- padding: 3rem;
254
- min-height: 500px;
255
- }
256
-
257
- @media (min-width: 768px) {
258
- .hero-showcase {
259
- min-height: 600px;
260
- }
261
- }
262
-
263
- @media (min-width: 1024px) {
264
- .hero-showcase {
265
- min-height: 700px;
266
- }
267
- }
268
-
269
- /* Hero background image */
270
- .hero-bg-image {
271
- position: absolute;
272
- inset: 0;
273
- z-index: 0;
274
- }
275
-
276
- .hero-bg-image img {
277
- width: 100%;
278
- height: 100%;
279
- object-fit: cover;
280
- object-position: center;
281
- }
282
-
283
- /* Mockup centered within background */
284
- .hero-mockup-centered {
285
- position: relative;
286
- z-index: 10;
287
- max-width: 800px;
288
- margin: 0 auto;
289
- width: 100%;
290
- }
291
-
292
- @media (min-width: 768px) {
293
- .hero-mockup-centered {
294
- max-width: 900px;
295
- }
296
- }
297
-
298
- @media (min-width: 1024px) {
299
- .hero-mockup-centered {
300
- max-width: 1000px;
301
- }
302
- }
303
-
304
- .mockup-wrapper {
305
- background: hsl(var(--background));
306
- border-radius: 12px;
307
- 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
308
- rgba(0, 0, 0, 0.05);
309
- overflow: hidden;
310
- animation: mockup-entrance 0.8s ease-out;
311
- width: 100%;
312
- }
313
-
314
- .mockup-wrapper img {
315
- width: 100%;
316
- height: auto;
317
- display: block;
318
- }
319
-
320
- @keyframes mockup-entrance {
321
- from {
322
- opacity: 0;
323
- transform: translateY(30px);
324
- }
325
- to {
326
- opacity: 1;
327
- transform: translateY(0);
328
- }
329
- }
330
-
331
- /* Browser chrome */
332
- .mockup-chrome {
333
- display: flex;
334
- align-items: center;
335
- padding: 12px 16px;
336
- background: hsl(var(--muted));
337
- border-bottom: 1px solid hsl(var(--border));
338
- }
339
-
340
- .mockup-chrome-dots {
341
- display: flex;
342
- gap: 6px;
343
- }
344
-
345
- .mockup-chrome-dots .dot {
346
- width: 12px;
347
- height: 12px;
348
- border-radius: 50%;
349
- }
350
-
351
- .mockup-chrome-dots .dot-red {
352
- background: #ff5f56;
353
- }
354
- .mockup-chrome-dots .dot-yellow {
355
- background: #ffbd2e;
356
- }
357
- .mockup-chrome-dots .dot-green {
358
- background: #27ca40;
359
- }
360
-
361
- .mockup-chrome-title {
362
- flex: 1;
363
- text-align: center;
364
- font-size: 13px;
365
- font-weight: 500;
366
- color: hsl(var(--muted-foreground));
367
- }
368
-
369
- .mockup-chrome-actions {
370
- width: 60px;
371
- }
372
-
373
- /* App content layout */
374
- .mockup-content {
375
- display: flex;
376
- min-height: 400px;
377
- }
378
-
379
- .mockup-sidebar {
380
- width: 220px;
381
- background: hsl(var(--card));
382
- border-right: 1px solid hsl(var(--border));
383
- flex-shrink: 0;
384
- }
385
-
386
- .sidebar-header {
387
- padding: 16px;
388
- border-bottom: 1px solid hsl(var(--border));
389
- }
390
-
391
- .sidebar-logo {
392
- display: flex;
393
- align-items: center;
394
- gap: 10px;
395
- }
396
-
397
- .logo-icon {
398
- width: 28px;
399
- height: 28px;
400
- background: hsl(var(--primary));
401
- color: white;
402
- border-radius: 6px;
403
- display: flex;
404
- align-items: center;
405
- justify-content: center;
406
- font-weight: 700;
407
- font-size: 14px;
408
- }
409
-
410
- .logo-text {
411
- font-weight: 600;
412
- font-size: 14px;
413
- color: hsl(var(--foreground));
414
- }
415
-
416
- .sidebar-nav {
417
- padding: 8px;
418
- }
419
-
420
- .sidebar-item {
421
- display: flex;
422
- align-items: center;
423
- gap: 10px;
424
- padding: 10px 12px;
425
- border-radius: 6px;
426
- font-size: 13px;
427
- color: hsl(var(--muted-foreground));
428
- transition: all 0.15s ease;
429
- cursor: pointer;
430
- }
431
-
432
- .sidebar-item:hover {
433
- background: hsl(var(--accent));
434
- color: hsl(var(--accent-foreground));
435
- }
436
-
437
- .sidebar-item--active {
438
- background: hsl(var(--primary) / 0.12);
439
- color: hsl(var(--primary));
440
- }
441
-
442
- .sidebar-icon {
443
- font-size: 16px;
444
- }
445
-
446
- .sidebar-label {
447
- flex: 1;
448
- }
449
-
450
- .sidebar-badge {
451
- background: hsl(var(--primary));
452
- color: hsl(var(--primary-foreground));
453
- font-size: 11px;
454
- padding: 2px 6px;
455
- border-radius: 10px;
456
- font-weight: 500;
457
- }
458
-
459
- /* Main content area */
460
- .mockup-main {
461
- flex: 1;
462
- display: flex;
463
- flex-direction: column;
464
- background: hsl(var(--background));
465
- }
466
-
467
- .main-header {
468
- display: flex;
469
- align-items: center;
470
- justify-content: space-between;
471
- padding: 16px 20px;
472
- border-bottom: 1px solid hsl(var(--border));
473
- }
474
-
475
- .header-title {
476
- display: flex;
477
- flex-direction: column;
478
- gap: 2px;
479
- }
480
-
481
- .header-title h2 {
482
- font-size: 16px;
483
- font-weight: 600;
484
- margin: 0;
485
- color: hsl(var(--foreground));
486
- }
487
-
488
- .header-breadcrumb {
489
- font-size: 12px;
490
- color: hsl(var(--muted-foreground));
491
- }
492
-
493
- .header-actions {
494
- display: flex;
495
- align-items: center;
496
- gap: 8px;
497
- }
498
-
499
- .action-btn {
500
- padding: 8px 16px;
501
- background: hsl(var(--primary));
502
- color: hsl(var(--primary-foreground));
503
- border: none;
504
- border-radius: 6px;
505
- font-size: 13px;
506
- font-weight: 500;
507
- cursor: pointer;
508
- transition: all 0.3s ease;
509
- }
510
-
511
- .action-btn--success {
512
- background: #27ca40;
513
- }
514
-
515
- .action-btn--featured {
516
- background: hsl(var(--primary));
517
- }
518
-
519
- /* Split view */
520
- .main-split {
521
- display: flex;
522
- flex: 1;
523
- }
524
-
525
- .editor-panel {
526
- flex: 1;
527
- padding: 20px;
528
- border-right: 1px solid hsl(var(--border));
529
- }
530
-
531
- .editor-section {
532
- margin-bottom: 20px;
533
- }
534
-
535
- .editor-label {
536
- display: block;
537
- font-size: 12px;
538
- font-weight: 500;
539
- color: hsl(var(--muted-foreground));
540
- margin-bottom: 6px;
541
- }
542
-
543
- .editor-input {
544
- background: hsl(var(--muted));
545
- border: 1px solid hsl(var(--border));
546
- border-radius: 6px;
547
- padding: 10px 12px;
548
- font-size: 14px;
549
- color: hsl(var(--foreground));
550
- display: flex;
551
- align-items: center;
552
- }
553
-
554
- .input-text {
555
- flex: 1;
556
- overflow: hidden;
557
- text-overflow: ellipsis;
558
- white-space: nowrap;
559
- }
560
-
561
- .input-cursor {
562
- width: 2px;
563
- height: 18px;
564
- background: #6c4cff;
565
- animation: blink 1s infinite;
566
- margin-left: 2px;
567
- }
568
-
569
- @keyframes blink {
570
- 0%,
571
- 50% {
572
- opacity: 1;
573
- }
574
- 51%,
575
- 100% {
576
- opacity: 0;
577
- }
578
- }
579
-
580
- .editor-select {
581
- background: hsl(var(--muted));
582
- border: 1px solid hsl(var(--border));
583
- border-radius: 6px;
584
- padding: 10px 12px;
585
- font-size: 14px;
586
- color: hsl(var(--foreground));
587
- display: flex;
588
- justify-content: space-between;
589
- align-items: center;
590
- }
591
-
592
- .select-arrow {
593
- font-size: 10px;
594
- color: hsl(var(--muted-foreground));
595
- }
596
-
597
- .editor-textarea {
598
- background: hsl(var(--muted));
599
- border: 1px solid hsl(var(--border));
600
- border-radius: 6px;
601
- padding: 10px 12px;
602
- font-size: 14px;
603
- color: hsl(var(--foreground));
604
- min-height: 80px;
605
- }
606
-
607
- .textarea-text {
608
- transition: all 0.5s ease;
609
- }
610
-
611
- .textarea-text--complete {
612
- color: hsl(var(--foreground));
613
- }
614
-
615
- /* Preview panel */
616
- .preview-panel {
617
- width: 320px;
618
- padding: 20px;
619
- background: hsl(var(--muted) / 0.5);
620
- }
621
-
622
- .preview-header {
623
- display: flex;
624
- justify-content: space-between;
625
- align-items: center;
626
- margin-bottom: 16px;
627
- }
628
-
629
- .preview-label {
630
- font-size: 12px;
631
- font-weight: 500;
632
- color: hsl(var(--muted-foreground));
633
- }
634
-
635
- .preview-url {
636
- font-size: 11px;
637
- color: hsl(var(--muted-foreground));
638
- font-family: monospace;
639
- }
640
-
641
- .preview-card {
642
- background: hsl(var(--card));
643
- border: 1px solid hsl(var(--border));
644
- border-radius: 10px;
645
- overflow: hidden;
646
- position: relative;
647
- transition: all 0.3s ease;
648
- }
649
-
650
- .preview-badge {
651
- position: absolute;
652
- top: 10px;
653
- right: 10px;
654
- background: hsl(var(--primary));
655
- color: white;
656
- font-size: 11px;
657
- padding: 4px 8px;
658
- border-radius: 4px;
659
- font-weight: 500;
660
- animation: badge-pop 0.3s ease;
661
- }
662
-
663
- @keyframes badge-pop {
664
- from {
665
- transform: scale(0);
666
- opacity: 0;
667
- }
668
- to {
669
- transform: scale(1);
670
- opacity: 1;
671
- }
672
- }
673
-
674
- .preview-image {
675
- height: 120px;
676
- background: linear-gradient(135deg, hsl(var(--muted)) 0%, hsl(var(--accent)) 100%);
677
- }
678
-
679
- .preview-image-placeholder {
680
- width: 100%;
681
- height: 100%;
682
- display: flex;
683
- align-items: center;
684
- justify-content: center;
685
- font-size: 40px;
686
- }
687
-
688
- .preview-content {
689
- padding: 16px;
690
- }
691
-
692
- .preview-category-tag {
693
- display: inline-block;
694
- font-size: 11px;
695
- color: hsl(var(--primary));
696
- font-weight: 500;
697
- margin-bottom: 8px;
698
- }
699
-
700
- .preview-title {
701
- font-size: 16px;
702
- font-weight: 600;
703
- margin: 0 0 8px;
704
- color: hsl(var(--foreground));
705
- }
706
-
707
- .preview-description {
708
- font-size: 13px;
709
- color: hsl(var(--muted-foreground));
710
- line-height: 1.5;
711
- margin: 0 0 12px;
712
- }
713
-
714
- .preview-meta {
715
- display: flex;
716
- gap: 8px;
717
- font-size: 12px;
718
- }
719
-
720
- .meta-rating {
721
- color: #ffc24a;
722
- }
723
-
724
- .meta-reviews {
725
- color: hsl(var(--muted-foreground));
726
- }
727
-
728
- /* State indicators */
729
- .mockup-indicators {
730
- display: flex;
731
- justify-content: center;
732
- gap: 24px;
733
- padding: 16px;
734
- border-top: 1px solid hsl(var(--border));
735
- }
736
-
737
- .indicator {
738
- display: flex;
739
- align-items: center;
740
- gap: 8px;
741
- background: none;
742
- border: none;
743
- cursor: pointer;
744
- padding: 6px 12px;
745
- border-radius: 20px;
746
- transition: all 0.2s ease;
747
- }
748
-
749
- .indicator:hover {
750
- background: hsl(var(--accent));
751
- }
752
-
753
- .indicator--active {
754
- background: hsl(var(--primary) / 0.12);
755
- }
756
-
757
- .indicator-dot {
758
- width: 8px;
759
- height: 8px;
760
- border-radius: 50%;
761
- background: hsl(var(--muted-foreground));
762
- transition: all 0.2s ease;
763
- }
764
-
765
- .indicator--active .indicator-dot {
766
- background: hsl(var(--primary));
767
- box-shadow: 0 0 0 3px hsl(var(--primary) / 0.2);
768
- }
769
-
770
- .indicator-label {
771
- font-size: 12px;
772
- color: hsl(var(--muted-foreground));
773
- }
774
-
775
- .indicator--active .indicator-label {
776
- color: hsl(var(--foreground));
777
- font-weight: 500;
778
- }
779
-
780
- /* ========================================
781
- LOGO BANNER STYLES
782
- ======================================== */
783
-
784
- .logo-scroll-container {
785
- overflow: hidden;
786
- mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
787
- }
788
-
789
- .logo-scroll-track {
790
- display: flex;
791
- animation: logo-scroll 30s linear infinite;
792
- }
793
-
794
- .logo-scroll-track:hover {
795
- animation-play-state: paused;
796
- }
797
-
798
- @keyframes logo-scroll {
799
- 0% {
800
- transform: translateX(0);
801
- }
802
- 100% {
803
- transform: translateX(-50%);
804
- }
805
- }
806
-
807
- .logo-item {
808
- flex-shrink: 0;
809
- min-width: 150px;
810
- }
811
-
812
- /* ========================================
813
- RESPONSIVE ADJUSTMENTS
814
- ======================================== */
815
-
816
- @media (max-width: 768px) {
817
- .mockup-content {
818
- flex-direction: column;
819
- }
820
-
821
- .mockup-sidebar {
822
- width: 100%;
823
- border-right: none;
824
- border-bottom: 1px solid hsl(var(--border));
825
- }
826
-
827
- .sidebar-nav {
828
- display: flex;
829
- overflow-x: auto;
830
- padding: 8px;
831
- gap: 4px;
832
- }
833
-
834
- .sidebar-item {
835
- white-space: nowrap;
836
- }
837
-
838
- .main-split {
839
- flex-direction: column;
840
- }
841
-
842
- .editor-panel {
843
- border-right: none;
844
- border-bottom: 1px solid hsl(var(--border));
845
- }
846
-
847
- .preview-panel {
848
- width: 100%;
849
- }
850
-
851
- .mockup-indicators {
852
- flex-wrap: wrap;
853
- gap: 12px;
854
- }
855
-
856
- .indicator-label {
857
- display: none;
858
- }
859
- }
860
-
861
- /* ========================================
862
- BIRD-INSPIRED BLOCK STYLES
863
- ======================================== */
864
-
865
- /* Industry Tabs Animation */
866
- .industry-tab-content {
867
- animation: tab-fade-in 0.3s ease-out;
868
- }
869
-
870
- @keyframes tab-fade-in {
871
- from {
872
- opacity: 0;
873
- transform: translateY(10px);
874
- }
875
- to {
876
- opacity: 1;
877
- transform: translateY(0);
878
- }
879
- }
880
-
881
- /* Feature Showcase Entrance Animation */
882
- @keyframes feature-slide-in {
883
- from {
884
- opacity: 0;
885
- transform: translateX(-20px);
886
- }
887
- to {
888
- opacity: 1;
889
- transform: translateX(0);
890
- }
891
- }
892
-
893
- .feature-showcase-content {
894
- animation: feature-slide-in 0.5s ease-out;
895
- }
896
-
897
- /* Testimonial Card Hover Effects */
898
- .testimonial-card {
899
- transition: transform 0.3s ease, box-shadow 0.3s ease;
900
- }
901
-
902
- .testimonial-card:hover {
903
- transform: translateY(-4px);
904
- box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.15);
905
- }
906
-
907
- /* Stat Number Animation */
908
- @keyframes stat-count-up {
909
- from {
910
- opacity: 0;
911
- transform: translateY(20px);
912
- }
913
- to {
914
- opacity: 1;
915
- transform: translateY(0);
916
- }
917
- }
918
-
919
- .stat-number {
920
- animation: stat-count-up 0.6s ease-out;
921
- }
922
-
923
- /* Trust Column Icon Animation */
924
- .trust-icon {
925
- transition: transform 0.2s ease, background-color 0.2s ease;
926
- }
927
-
928
- .trust-icon:hover {
929
- transform: scale(1.1);
930
- }
931
-
932
- /* Final CTA Background Animation */
933
- @keyframes subtle-float {
934
- 0%,
935
- 100% {
936
- transform: translateY(0);
937
- }
938
- 50% {
939
- transform: translateY(-10px);
940
- }
941
- }
942
-
943
- .cta-decorative {
944
- animation: subtle-float 6s ease-in-out infinite;
945
- }
946
-
947
- /* Feature Grid Card Entrance */
948
- @keyframes card-entrance {
949
- from {
950
- opacity: 0;
951
- transform: translateY(20px);
952
- }
953
- to {
954
- opacity: 1;
955
- transform: translateY(0);
956
- }
957
- }
958
-
959
- .feature-card {
960
- animation: card-entrance 0.4s ease-out;
961
- animation-fill-mode: both;
962
- }
963
-
964
- .feature-card:nth-child(1) {
965
- animation-delay: 0.1s;
966
- }
967
- .feature-card:nth-child(2) {
968
- animation-delay: 0.2s;
969
- }
970
- .feature-card:nth-child(3) {
971
- animation-delay: 0.3s;
972
- }
973
- .feature-card:nth-child(4) {
974
- animation-delay: 0.4s;
975
- }
976
- .feature-card:nth-child(5) {
977
- animation-delay: 0.5s;
978
- }
979
- .feature-card:nth-child(6) {
980
- animation-delay: 0.6s;
981
- }
982
-
983
- /* Smooth Section Transitions */
984
- section {
985
- scroll-margin-top: 80px;
986
- }
987
-
988
- /* Button Hover Enhancement */
989
- .cta-button {
990
- position: relative;
991
- overflow: hidden;
992
- }
993
-
994
- .cta-button::after {
995
- content: "";
996
- position: absolute;
997
- inset: 0;
998
- background: linear-gradient(rgba(255, 255, 255, 0.1), transparent);
999
- opacity: 0;
1000
- transition: opacity 0.3s ease;
1001
- }
1002
-
1003
- .cta-button:hover::after {
1004
- opacity: 1;
1005
- }
1006
-
1007
- /* Responsive Image Container */
1008
- .feature-image-container {
1009
- position: relative;
1010
- border-radius: 12px;
1011
- overflow: hidden;
1012
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
1013
- transition: transform 0.3s ease, box-shadow 0.3s ease;
1014
- }
1015
-
1016
- .feature-image-container:hover {
1017
- transform: translateY(-4px);
1018
- box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.2);
1019
- }