claude-presentation-master 1.0.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.
@@ -0,0 +1,3057 @@
1
+ /**
2
+ * Claude Presentation Master - CSS Component Library
3
+ * Version: 2.0.0
4
+ *
5
+ * A world-class CSS framework for creating stunning HTML presentations
6
+ * Built for Reveal.js with center: false for full layout control
7
+ *
8
+ * Part of the claude-presentation-master NPM package
9
+ *
10
+ * Author: Stuart Kerr, Isovision.ai
11
+ * License: MIT
12
+ */
13
+
14
+ /* ==========================================================================
15
+ CSS CUSTOM PROPERTIES - THEMING SYSTEM
16
+ ========================================================================== */
17
+
18
+ :root {
19
+ /* Color Palettes - Default Dark Executive Theme */
20
+ --color-primary: #3b82f6;
21
+ --color-primary-dark: #2563eb;
22
+ --color-primary-light: #60a5fa;
23
+ --color-secondary: #8b5cf6;
24
+ --color-accent: #f59e0b;
25
+ --color-success: #10b981;
26
+ --color-warning: #f59e0b;
27
+ --color-error: #ef4444;
28
+
29
+ /* Neutral Colors */
30
+ --color-bg-primary: #0f172a;
31
+ --color-bg-secondary: #1e293b;
32
+ --color-bg-tertiary: #334155;
33
+ --color-bg-overlay: rgba(15, 23, 42, 0.95);
34
+
35
+ --color-text-primary: #f8fafc;
36
+ --color-text-secondary: #cbd5e1;
37
+ --color-text-tertiary: #94a3b8;
38
+ --color-text-inverse: #0f172a;
39
+
40
+ --color-border: #334155;
41
+ --color-border-light: #475569;
42
+
43
+ /* Typography Scale - Responsive using clamp() */
44
+ --font-size-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
45
+ --font-size-sm: clamp(0.875rem, 0.8rem + 0.35vw, 1rem);
46
+ --font-size-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
47
+ --font-size-lg: clamp(1.125rem, 1rem + 0.625vw, 1.25rem);
48
+ --font-size-xl: clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem);
49
+ --font-size-2xl: clamp(1.5rem, 1.3rem + 1vw, 1.875rem);
50
+ --font-size-3xl: clamp(1.875rem, 1.6rem + 1.375vw, 2.25rem);
51
+ --font-size-4xl: clamp(2.25rem, 1.9rem + 1.75vw, 3rem);
52
+ --font-size-5xl: clamp(3rem, 2.5rem + 2.5vw, 4rem);
53
+ --font-size-6xl: clamp(3.75rem, 3rem + 3.75vw, 5rem);
54
+ --font-size-7xl: clamp(4.5rem, 3.5rem + 5vw, 6rem);
55
+
56
+ /* Font Families - Professional Typography (NOT Inter) */
57
+ /* Headings: Source Sans Pro - Clean, professional, highly legible */
58
+ /* Body: System fonts for optimal performance and native feel */
59
+ --font-heading: 'Source Sans Pro', 'Helvetica Neue', -apple-system, BlinkMacSystemFont, sans-serif;
60
+ --font-body: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
61
+ --font-mono: 'JetBrains Mono', 'Fira Code', 'Monaco', 'Courier New', monospace;
62
+
63
+ /* Alternative Font Stacks for Different Brand Personalities */
64
+ /* Modern Tech: --font-heading: 'Space Grotesk', 'DM Sans', sans-serif; */
65
+ /* Corporate: --font-heading: 'IBM Plex Sans', 'Roboto', sans-serif; */
66
+ /* Creative: --font-heading: 'Poppins', 'Montserrat', sans-serif; */
67
+ /* Editorial: --font-heading: 'Playfair Display', 'Merriweather', serif; */
68
+
69
+ /* Font Weights */
70
+ --font-weight-normal: 400;
71
+ --font-weight-medium: 500;
72
+ --font-weight-semibold: 600;
73
+ --font-weight-bold: 700;
74
+ --font-weight-black: 900;
75
+
76
+ /* Line Heights */
77
+ --line-height-tight: 1.2;
78
+ --line-height-snug: 1.375;
79
+ --line-height-normal: 1.5;
80
+ --line-height-relaxed: 1.625;
81
+ --line-height-loose: 2;
82
+
83
+ /* Spacing Scale */
84
+ --space-1: 0.25rem;
85
+ --space-2: 0.5rem;
86
+ --space-3: 0.75rem;
87
+ --space-4: 1rem;
88
+ --space-5: 1.25rem;
89
+ --space-6: 1.5rem;
90
+ --space-8: 2rem;
91
+ --space-10: 2.5rem;
92
+ --space-12: 3rem;
93
+ --space-16: 4rem;
94
+ --space-20: 5rem;
95
+ --space-24: 6rem;
96
+
97
+ /* Border Radius */
98
+ --radius-sm: 0.25rem;
99
+ --radius-md: 0.5rem;
100
+ --radius-lg: 0.75rem;
101
+ --radius-xl: 1rem;
102
+ --radius-2xl: 1.5rem;
103
+ --radius-full: 9999px;
104
+
105
+ /* Shadows */
106
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
107
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
108
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
109
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
110
+ --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
111
+
112
+ /* Transitions */
113
+ --transition-fast: 150ms ease-in-out;
114
+ --transition-base: 300ms ease-in-out;
115
+ --transition-slow: 500ms ease-in-out;
116
+
117
+ /* Safe Areas */
118
+ --safe-area-top: env(safe-area-inset-top, 0px);
119
+ --safe-area-right: env(safe-area-inset-right, 0px);
120
+ --safe-area-bottom: env(safe-area-inset-bottom, 0px);
121
+ --safe-area-left: env(safe-area-inset-left, 0px);
122
+
123
+ /* Slide Padding */
124
+ --slide-padding-x: clamp(2rem, 5vw, 4rem);
125
+ --slide-padding-y: clamp(2rem, 5vh, 3rem);
126
+ }
127
+
128
+ /* Theme Variants */
129
+ [data-theme="light-corporate"] {
130
+ --color-primary: #2563eb;
131
+ --color-primary-dark: #1d4ed8;
132
+ --color-primary-light: #3b82f6;
133
+ --color-secondary: #7c3aed;
134
+ --color-accent: #0891b2;
135
+
136
+ --color-bg-primary: #ffffff;
137
+ --color-bg-secondary: #f8fafc;
138
+ --color-bg-tertiary: #e2e8f0;
139
+ --color-bg-overlay: rgba(255, 255, 255, 0.95);
140
+
141
+ --color-text-primary: #0f172a;
142
+ --color-text-secondary: #475569;
143
+ --color-text-tertiary: #64748b;
144
+ --color-text-inverse: #ffffff;
145
+
146
+ --color-border: #e2e8f0;
147
+ --color-border-light: #cbd5e1;
148
+ }
149
+
150
+ [data-theme="modern-tech"] {
151
+ --color-primary: #06b6d4;
152
+ --color-primary-dark: #0891b2;
153
+ --color-primary-light: #22d3ee;
154
+ --color-secondary: #a855f7;
155
+ --color-accent: #ec4899;
156
+
157
+ --color-bg-primary: #09090b;
158
+ --color-bg-secondary: #18181b;
159
+ --color-bg-tertiary: #27272a;
160
+ --color-bg-overlay: rgba(9, 9, 11, 0.95);
161
+
162
+ --color-text-primary: #fafafa;
163
+ --color-text-secondary: #d4d4d8;
164
+ --color-text-tertiary: #a1a1aa;
165
+ --color-text-inverse: #09090b;
166
+
167
+ --color-border: #3f3f46;
168
+ --color-border-light: #52525b;
169
+ }
170
+
171
+ [data-theme="minimal"] {
172
+ --color-primary: #000000;
173
+ --color-primary-dark: #000000;
174
+ --color-primary-light: #404040;
175
+ --color-secondary: #737373;
176
+ --color-accent: #dc2626;
177
+
178
+ --color-bg-primary: #ffffff;
179
+ --color-bg-secondary: #fafafa;
180
+ --color-bg-tertiary: #f5f5f5;
181
+ --color-bg-overlay: rgba(255, 255, 255, 0.95);
182
+
183
+ --color-text-primary: #000000;
184
+ --color-text-secondary: #525252;
185
+ --color-text-tertiary: #737373;
186
+ --color-text-inverse: #ffffff;
187
+
188
+ --color-border: #e5e5e5;
189
+ --color-border-light: #d4d4d4;
190
+ }
191
+
192
+ [data-theme="warm"] {
193
+ --color-primary: #ea580c;
194
+ --color-primary-dark: #c2410c;
195
+ --color-primary-light: #f97316;
196
+ --color-secondary: #dc2626;
197
+ --color-accent: #facc15;
198
+
199
+ --color-bg-primary: #292524;
200
+ --color-bg-secondary: #44403c;
201
+ --color-bg-tertiary: #57534e;
202
+ --color-bg-overlay: rgba(41, 37, 36, 0.95);
203
+
204
+ --color-text-primary: #fafaf9;
205
+ --color-text-secondary: #e7e5e4;
206
+ --color-text-tertiary: #d6d3d1;
207
+ --color-text-inverse: #292524;
208
+
209
+ --color-border: #57534e;
210
+ --color-border-light: #78716c;
211
+ }
212
+
213
+ [data-theme="creative"] {
214
+ --color-primary: #ec4899;
215
+ --color-primary-dark: #db2777;
216
+ --color-primary-light: #f472b6;
217
+ --color-secondary: #8b5cf6;
218
+ --color-accent: #f59e0b;
219
+
220
+ --color-bg-primary: #1e1b4b;
221
+ --color-bg-secondary: #312e81;
222
+ --color-bg-tertiary: #3730a3;
223
+ --color-bg-overlay: rgba(30, 27, 75, 0.95);
224
+
225
+ --color-text-primary: #faf5ff;
226
+ --color-text-secondary: #e9d5ff;
227
+ --color-text-tertiary: #d8b4fe;
228
+ --color-text-inverse: #1e1b4b;
229
+
230
+ --color-border: #4c1d95;
231
+ --color-border-light: #6d28d9;
232
+ }
233
+
234
+ /* ==========================================================================
235
+ BASE REVEAL.JS OVERRIDES
236
+ ========================================================================== */
237
+
238
+ .reveal {
239
+ font-family: var(--font-body);
240
+ font-size: var(--font-size-base);
241
+ font-weight: var(--font-weight-normal);
242
+ color: var(--color-text-primary);
243
+ }
244
+
245
+ .reveal .slides {
246
+ text-align: left !important;
247
+ }
248
+
249
+ .reveal .slides section {
250
+ height: 100% !important;
251
+ padding: var(--slide-padding-y) var(--slide-padding-x) !important;
252
+ padding-top: calc(var(--slide-padding-y) + var(--safe-area-top)) !important;
253
+ padding-right: calc(var(--slide-padding-x) + var(--safe-area-right)) !important;
254
+ padding-bottom: calc(var(--slide-padding-y) + var(--safe-area-bottom)) !important;
255
+ padding-left: calc(var(--slide-padding-x) + var(--safe-area-left)) !important;
256
+ box-sizing: border-box;
257
+ display: flex !important;
258
+ flex-direction: column !important;
259
+ justify-content: flex-start !important;
260
+ align-items: stretch !important;
261
+ background: var(--color-bg-primary);
262
+ }
263
+
264
+ .reveal h1,
265
+ .reveal h2,
266
+ .reveal h3,
267
+ .reveal h4,
268
+ .reveal h5,
269
+ .reveal h6 {
270
+ font-family: var(--font-heading);
271
+ font-weight: var(--font-weight-bold);
272
+ line-height: var(--line-height-tight);
273
+ color: var(--color-text-primary);
274
+ margin: 0 0 var(--space-6) 0;
275
+ text-transform: none;
276
+ }
277
+
278
+ .reveal h1 { font-size: var(--font-size-5xl); }
279
+ .reveal h2 { font-size: var(--font-size-4xl); }
280
+ .reveal h3 { font-size: var(--font-size-3xl); }
281
+ .reveal h4 { font-size: var(--font-size-2xl); }
282
+
283
+ .reveal p {
284
+ margin: 0 0 var(--space-4) 0;
285
+ line-height: var(--line-height-relaxed);
286
+ }
287
+
288
+ .reveal a {
289
+ color: var(--color-primary);
290
+ text-decoration: none;
291
+ transition: color var(--transition-fast);
292
+ }
293
+
294
+ .reveal a:hover {
295
+ color: var(--color-primary-light);
296
+ }
297
+
298
+ .reveal strong {
299
+ font-weight: var(--font-weight-bold);
300
+ color: var(--color-text-primary);
301
+ }
302
+
303
+ .reveal em {
304
+ font-style: italic;
305
+ color: var(--color-text-secondary);
306
+ }
307
+
308
+ .reveal code {
309
+ font-family: var(--font-mono);
310
+ background: var(--color-bg-tertiary);
311
+ padding: var(--space-1) var(--space-2);
312
+ border-radius: var(--radius-sm);
313
+ font-size: 0.9em;
314
+ }
315
+
316
+ .reveal pre {
317
+ margin: var(--space-6) 0;
318
+ background: var(--color-bg-secondary);
319
+ border-radius: var(--radius-lg);
320
+ padding: var(--space-6);
321
+ overflow-x: auto;
322
+ }
323
+
324
+ .reveal pre code {
325
+ background: transparent;
326
+ padding: 0;
327
+ }
328
+
329
+ .reveal ul,
330
+ .reveal ol {
331
+ margin: 0 0 var(--space-6) 0;
332
+ padding-left: var(--space-8);
333
+ }
334
+
335
+ .reveal li {
336
+ margin-bottom: var(--space-3);
337
+ line-height: var(--line-height-relaxed);
338
+ }
339
+
340
+ .reveal img {
341
+ max-width: 100%;
342
+ height: auto;
343
+ display: block;
344
+ }
345
+
346
+ /* ==========================================================================
347
+ SLIDE TYPE: TITLE SLIDE
348
+ ========================================================================== */
349
+
350
+ /*
351
+ Usage:
352
+ <section class="slide-title">
353
+ <div class="title-content">
354
+ <span class="badge">Quarterly Review</span>
355
+ <h1>Revolutionizing Customer Experience</h1>
356
+ <p class="subtitle">Q4 2024 Strategic Insights</p>
357
+ </div>
358
+ <div class="title-footer">
359
+ <p>Presented by Sarah Johnson | December 5, 2024</p>
360
+ </div>
361
+ </section>
362
+ */
363
+
364
+ .reveal .slides section.slide-title {
365
+ background: linear-gradient(135deg, var(--color-bg-primary) 0%, var(--color-bg-secondary) 100%);
366
+ justify-content: center !important;
367
+ align-items: center !important;
368
+ text-align: center !important;
369
+ position: relative;
370
+ overflow: hidden;
371
+ }
372
+
373
+ .reveal .slides section.slide-title::before {
374
+ content: '';
375
+ position: absolute;
376
+ top: 0;
377
+ left: 0;
378
+ right: 0;
379
+ bottom: 0;
380
+ background: radial-gradient(circle at top right, var(--color-primary) 0%, transparent 50%);
381
+ opacity: 0.1;
382
+ pointer-events: none;
383
+ }
384
+
385
+ .reveal .slides section.slide-title .title-content {
386
+ position: relative;
387
+ z-index: 1;
388
+ max-width: 900px;
389
+ }
390
+
391
+ .reveal .slides section.slide-title h1 {
392
+ font-size: var(--font-size-7xl);
393
+ font-weight: var(--font-weight-black);
394
+ margin-bottom: var(--space-6);
395
+ background: linear-gradient(135deg, var(--color-text-primary) 0%, var(--color-text-secondary) 100%);
396
+ -webkit-background-clip: text;
397
+ -webkit-text-fill-color: transparent;
398
+ background-clip: text;
399
+ }
400
+
401
+ .reveal .slides section.slide-title .subtitle {
402
+ font-size: var(--font-size-2xl);
403
+ color: var(--color-text-secondary);
404
+ font-weight: var(--font-weight-medium);
405
+ margin-bottom: var(--space-8);
406
+ }
407
+
408
+ .reveal .slides section.slide-title .title-footer {
409
+ position: absolute;
410
+ bottom: var(--slide-padding-y);
411
+ left: var(--slide-padding-x);
412
+ right: var(--slide-padding-x);
413
+ text-align: center;
414
+ color: var(--color-text-tertiary);
415
+ font-size: var(--font-size-sm);
416
+ }
417
+
418
+ /* ==========================================================================
419
+ SLIDE TYPE: STATEMENT SLIDE
420
+ ========================================================================== */
421
+
422
+ /*
423
+ Usage:
424
+ <section class="slide-statement">
425
+ <div class="statement-content">
426
+ <h2>Our customers are 10x more engaged than industry average</h2>
427
+ </div>
428
+ </section>
429
+ */
430
+
431
+ .reveal .slides section.slide-statement {
432
+ justify-content: center !important;
433
+ align-items: center !important;
434
+ }
435
+
436
+ .reveal .slides section.slide-statement .statement-content {
437
+ max-width: 1000px;
438
+ text-align: center;
439
+ }
440
+
441
+ .reveal .slides section.slide-statement h2 {
442
+ font-size: var(--font-size-6xl);
443
+ font-weight: var(--font-weight-black);
444
+ line-height: var(--line-height-tight);
445
+ margin: 0;
446
+ background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
447
+ -webkit-background-clip: text;
448
+ -webkit-text-fill-color: transparent;
449
+ background-clip: text;
450
+ }
451
+
452
+ /* ==========================================================================
453
+ SLIDE TYPE: BIG NUMBER
454
+ ========================================================================== */
455
+
456
+ /*
457
+ Usage:
458
+ <section class="slide-big-number">
459
+ <div class="big-number-content">
460
+ <div class="number">847%</div>
461
+ <h3>Revenue Growth</h3>
462
+ <p>Year-over-year increase in Q4 2024, driven by enterprise adoption and product expansion</p>
463
+ </div>
464
+ </section>
465
+ */
466
+
467
+ .reveal .slides section.slide-big-number {
468
+ justify-content: center !important;
469
+ align-items: center !important;
470
+ }
471
+
472
+ .reveal .slides section.slide-big-number .big-number-content {
473
+ text-align: center;
474
+ max-width: 800px;
475
+ }
476
+
477
+ .reveal .slides section.slide-big-number .number {
478
+ font-size: var(--font-size-7xl);
479
+ font-weight: var(--font-weight-black);
480
+ line-height: 1;
481
+ background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
482
+ -webkit-background-clip: text;
483
+ -webkit-text-fill-color: transparent;
484
+ background-clip: text;
485
+ margin-bottom: var(--space-6);
486
+ display: block;
487
+ }
488
+
489
+ .reveal .slides section.slide-big-number h3 {
490
+ font-size: var(--font-size-3xl);
491
+ font-weight: var(--font-weight-bold);
492
+ margin-bottom: var(--space-6);
493
+ }
494
+
495
+ .reveal .slides section.slide-big-number p {
496
+ font-size: var(--font-size-xl);
497
+ color: var(--color-text-secondary);
498
+ line-height: var(--line-height-relaxed);
499
+ }
500
+
501
+ /* ==========================================================================
502
+ SLIDE TYPE: SCREENSHOT (SIDE-BY-SIDE)
503
+ ========================================================================== */
504
+
505
+ /*
506
+ Usage:
507
+ <section class="slide-screenshot slide-screenshot-left">
508
+ <div class="screenshot-container">
509
+ <div class="screenshot-image">
510
+ <div class="browser-frame">
511
+ <img src="dashboard.png" alt="Dashboard Screenshot">
512
+ </div>
513
+ </div>
514
+ <div class="screenshot-content">
515
+ <span class="badge">New Feature</span>
516
+ <h2>Real-Time Analytics Dashboard</h2>
517
+ <p>Track key metrics as they happen with our new real-time dashboard.</p>
518
+ <ul>
519
+ <li>Live data updates every second</li>
520
+ <li>Customizable widgets</li>
521
+ <li>Export to PDF/CSV</li>
522
+ </ul>
523
+ </div>
524
+ </div>
525
+ </section>
526
+ */
527
+
528
+ .reveal .slides section.slide-screenshot {
529
+ padding: var(--slide-padding-y) var(--slide-padding-x) !important;
530
+ }
531
+
532
+ .reveal .slides section.slide-screenshot .screenshot-container {
533
+ display: flex !important;
534
+ flex-direction: row !important;
535
+ gap: var(--space-12);
536
+ align-items: center !important;
537
+ height: 100%;
538
+ width: 100%;
539
+ }
540
+
541
+ .reveal .slides section.slide-screenshot .screenshot-image {
542
+ flex: 1 1 50%;
543
+ display: flex;
544
+ align-items: center;
545
+ justify-content: center;
546
+ }
547
+
548
+ .reveal .slides section.slide-screenshot .screenshot-content {
549
+ flex: 1 1 50%;
550
+ display: flex;
551
+ flex-direction: column;
552
+ justify-content: center;
553
+ }
554
+
555
+ /* Screenshot Left Variant */
556
+ .reveal .slides section.slide-screenshot-left .screenshot-container {
557
+ flex-direction: row !important;
558
+ }
559
+
560
+ /* Screenshot Right Variant */
561
+ .reveal .slides section.slide-screenshot-right .screenshot-container {
562
+ flex-direction: row-reverse !important;
563
+ }
564
+
565
+ .reveal .slides section.slide-screenshot h2 {
566
+ font-size: var(--font-size-4xl);
567
+ margin-bottom: var(--space-4);
568
+ }
569
+
570
+ .reveal .slides section.slide-screenshot p {
571
+ font-size: var(--font-size-lg);
572
+ color: var(--color-text-secondary);
573
+ margin-bottom: var(--space-6);
574
+ }
575
+
576
+ .reveal .slides section.slide-screenshot ul {
577
+ list-style: none;
578
+ padding: 0;
579
+ margin: 0;
580
+ }
581
+
582
+ .reveal .slides section.slide-screenshot li {
583
+ font-size: var(--font-size-base);
584
+ color: var(--color-text-secondary);
585
+ padding-left: var(--space-8);
586
+ position: relative;
587
+ margin-bottom: var(--space-3);
588
+ }
589
+
590
+ .reveal .slides section.slide-screenshot li::before {
591
+ content: '✓';
592
+ position: absolute;
593
+ left: 0;
594
+ color: var(--color-success);
595
+ font-weight: var(--font-weight-bold);
596
+ font-size: var(--font-size-lg);
597
+ }
598
+
599
+ /* ==========================================================================
600
+ SLIDE TYPE: TWO COLUMN
601
+ ========================================================================== */
602
+
603
+ /*
604
+ Usage:
605
+ <section class="slide-two-column">
606
+ <h2>Key Challenges & Solutions</h2>
607
+ <div class="two-column-container">
608
+ <div class="column">
609
+ <h3>Challenges</h3>
610
+ <ul>
611
+ <li>Legacy infrastructure</li>
612
+ <li>Data silos</li>
613
+ <li>Slow deployment</li>
614
+ </ul>
615
+ </div>
616
+ <div class="column">
617
+ <h3>Solutions</h3>
618
+ <ul>
619
+ <li>Cloud migration</li>
620
+ <li>Unified data platform</li>
621
+ <li>CI/CD automation</li>
622
+ </ul>
623
+ </div>
624
+ </div>
625
+ </section>
626
+ */
627
+
628
+ .reveal .slides section.slide-two-column .two-column-container {
629
+ display: flex !important;
630
+ flex-direction: row !important;
631
+ gap: var(--space-12);
632
+ flex: 1;
633
+ align-items: flex-start !important;
634
+ }
635
+
636
+ .reveal .slides section.slide-two-column .column {
637
+ flex: 1 1 50%;
638
+ }
639
+
640
+ .reveal .slides section.slide-two-column h3 {
641
+ font-size: var(--font-size-2xl);
642
+ margin-bottom: var(--space-6);
643
+ padding-bottom: var(--space-4);
644
+ border-bottom: 3px solid var(--color-primary);
645
+ }
646
+
647
+ /* ==========================================================================
648
+ SLIDE TYPE: THREE COLUMN
649
+ ========================================================================== */
650
+
651
+ /*
652
+ Usage:
653
+ <section class="slide-three-column">
654
+ <h2>Our Three-Pillar Strategy</h2>
655
+ <div class="three-column-container">
656
+ <div class="column">
657
+ <div class="icon-box">🎯</div>
658
+ <h3>Focus</h3>
659
+ <p>Concentrate on core strengths</p>
660
+ </div>
661
+ <div class="column">
662
+ <div class="icon-box">⚡</div>
663
+ <h3>Speed</h3>
664
+ <p>Accelerate time to market</p>
665
+ </div>
666
+ <div class="column">
667
+ <div class="icon-box">🚀</div>
668
+ <h3>Scale</h3>
669
+ <p>Expand global footprint</p>
670
+ </div>
671
+ </div>
672
+ </section>
673
+ */
674
+
675
+ .reveal .slides section.slide-three-column .three-column-container {
676
+ display: flex !important;
677
+ flex-direction: row !important;
678
+ gap: var(--space-8);
679
+ flex: 1;
680
+ align-items: flex-start !important;
681
+ }
682
+
683
+ .reveal .slides section.slide-three-column .column {
684
+ flex: 1 1 33.333%;
685
+ text-align: center;
686
+ }
687
+
688
+ .reveal .slides section.slide-three-column h3 {
689
+ font-size: var(--font-size-2xl);
690
+ margin-bottom: var(--space-4);
691
+ }
692
+
693
+ .reveal .slides section.slide-three-column p {
694
+ color: var(--color-text-secondary);
695
+ font-size: var(--font-size-lg);
696
+ }
697
+
698
+ /* ==========================================================================
699
+ SLIDE TYPE: FOUR COLUMN
700
+ ========================================================================== */
701
+
702
+ /*
703
+ Usage:
704
+ <section class="slide-four-column">
705
+ <h2>Q4 Key Metrics</h2>
706
+ <div class="four-column-container">
707
+ <div class="column">
708
+ <div class="metric">
709
+ <div class="metric-value">1.2M</div>
710
+ <div class="metric-label">Active Users</div>
711
+ </div>
712
+ </div>
713
+ <div class="column">
714
+ <div class="metric">
715
+ <div class="metric-value">98.7%</div>
716
+ <div class="metric-label">Uptime</div>
717
+ </div>
718
+ </div>
719
+ <div class="column">
720
+ <div class="metric">
721
+ <div class="metric-value">$12M</div>
722
+ <div class="metric-label">ARR</div>
723
+ </div>
724
+ </div>
725
+ <div class="column">
726
+ <div class="metric">
727
+ <div class="metric-value">4.9/5</div>
728
+ <div class="metric-label">Customer Rating</div>
729
+ </div>
730
+ </div>
731
+ </div>
732
+ </section>
733
+ */
734
+
735
+ .reveal .slides section.slide-four-column .four-column-container {
736
+ display: flex !important;
737
+ flex-direction: row !important;
738
+ gap: var(--space-6);
739
+ flex: 1;
740
+ align-items: center !important;
741
+ }
742
+
743
+ .reveal .slides section.slide-four-column .column {
744
+ flex: 1 1 25%;
745
+ }
746
+
747
+ /* ==========================================================================
748
+ SLIDE TYPE: COMPARISON
749
+ ========================================================================== */
750
+
751
+ /*
752
+ Usage:
753
+ <section class="slide-comparison">
754
+ <h2>Before vs After</h2>
755
+ <div class="comparison-container">
756
+ <div class="comparison-side before">
757
+ <h3>Before</h3>
758
+ <ul>
759
+ <li>Manual data entry</li>
760
+ <li>3-day turnaround</li>
761
+ <li>15% error rate</li>
762
+ </ul>
763
+ </div>
764
+ <div class="comparison-divider">→</div>
765
+ <div class="comparison-side after">
766
+ <h3>After</h3>
767
+ <ul>
768
+ <li>Automated workflows</li>
769
+ <li>Real-time processing</li>
770
+ <li>0.1% error rate</li>
771
+ </ul>
772
+ </div>
773
+ </div>
774
+ </section>
775
+ */
776
+
777
+ .reveal .slides section.slide-comparison .comparison-container {
778
+ display: flex !important;
779
+ flex-direction: row !important;
780
+ gap: var(--space-8);
781
+ align-items: center !important;
782
+ flex: 1;
783
+ }
784
+
785
+ .reveal .slides section.slide-comparison .comparison-side {
786
+ flex: 1 1 45%;
787
+ padding: var(--space-8);
788
+ background: var(--color-bg-secondary);
789
+ border-radius: var(--radius-xl);
790
+ }
791
+
792
+ .reveal .slides section.slide-comparison .comparison-side.before {
793
+ border: 2px solid var(--color-error);
794
+ }
795
+
796
+ .reveal .slides section.slide-comparison .comparison-side.after {
797
+ border: 2px solid var(--color-success);
798
+ }
799
+
800
+ .reveal .slides section.slide-comparison .comparison-divider {
801
+ font-size: var(--font-size-5xl);
802
+ font-weight: var(--font-weight-black);
803
+ color: var(--color-primary);
804
+ flex: 0 0 auto;
805
+ }
806
+
807
+ .reveal .slides section.slide-comparison h3 {
808
+ font-size: var(--font-size-2xl);
809
+ margin-bottom: var(--space-6);
810
+ }
811
+
812
+ /* ==========================================================================
813
+ SLIDE TYPE: QUOTE
814
+ ========================================================================== */
815
+
816
+ /*
817
+ Usage:
818
+ <section class="slide-quote">
819
+ <div class="quote-container">
820
+ <blockquote>
821
+ "This platform has transformed how we operate. We've seen a 300% increase in productivity."
822
+ </blockquote>
823
+ <div class="quote-attribution">
824
+ <div class="avatar">
825
+ <img src="headshot.jpg" alt="Jane Doe">
826
+ </div>
827
+ <div class="quote-author">
828
+ <div class="author-name">Jane Doe</div>
829
+ <div class="author-title">CEO, Acme Corp</div>
830
+ </div>
831
+ </div>
832
+ </div>
833
+ </section>
834
+ */
835
+
836
+ .reveal .slides section.slide-quote {
837
+ justify-content: center !important;
838
+ align-items: center !important;
839
+ }
840
+
841
+ .reveal .slides section.slide-quote .quote-container {
842
+ max-width: 900px;
843
+ text-align: center;
844
+ }
845
+
846
+ .reveal .slides section.slide-quote blockquote {
847
+ font-size: var(--font-size-4xl);
848
+ font-weight: var(--font-weight-medium);
849
+ line-height: var(--line-height-snug);
850
+ color: var(--color-text-primary);
851
+ margin: 0 0 var(--space-12) 0;
852
+ position: relative;
853
+ padding: 0;
854
+ border: none;
855
+ }
856
+
857
+ .reveal .slides section.slide-quote blockquote::before {
858
+ content: '"';
859
+ font-size: var(--font-size-7xl);
860
+ color: var(--color-primary);
861
+ opacity: 0.3;
862
+ position: absolute;
863
+ top: -0.3em;
864
+ left: -0.5em;
865
+ font-family: Georgia, serif;
866
+ }
867
+
868
+ .reveal .slides section.slide-quote .quote-attribution {
869
+ display: flex;
870
+ align-items: center;
871
+ justify-content: center;
872
+ gap: var(--space-4);
873
+ }
874
+
875
+ .reveal .slides section.slide-quote .quote-author {
876
+ text-align: left;
877
+ }
878
+
879
+ .reveal .slides section.slide-quote .author-name {
880
+ font-size: var(--font-size-xl);
881
+ font-weight: var(--font-weight-bold);
882
+ color: var(--color-text-primary);
883
+ }
884
+
885
+ .reveal .slides section.slide-quote .author-title {
886
+ font-size: var(--font-size-base);
887
+ color: var(--color-text-tertiary);
888
+ }
889
+
890
+ /* ==========================================================================
891
+ SLIDE TYPE: TIMELINE
892
+ ========================================================================== */
893
+
894
+ /*
895
+ Usage:
896
+ <section class="slide-timeline">
897
+ <h2>Product Roadmap 2025</h2>
898
+ <div class="timeline-container">
899
+ <div class="timeline-item">
900
+ <div class="timeline-marker"></div>
901
+ <div class="timeline-content">
902
+ <h3>Q1 2025</h3>
903
+ <p>AI-powered insights launch</p>
904
+ </div>
905
+ </div>
906
+ <div class="timeline-item">
907
+ <div class="timeline-marker"></div>
908
+ <div class="timeline-content">
909
+ <h3>Q2 2025</h3>
910
+ <p>Mobile app release</p>
911
+ </div>
912
+ </div>
913
+ <div class="timeline-item">
914
+ <div class="timeline-marker"></div>
915
+ <div class="timeline-content">
916
+ <h3>Q3 2025</h3>
917
+ <p>Enterprise features</p>
918
+ </div>
919
+ </div>
920
+ </div>
921
+ </section>
922
+ */
923
+
924
+ .reveal .slides section.slide-timeline .timeline-container {
925
+ display: flex !important;
926
+ flex-direction: row !important;
927
+ gap: var(--space-6);
928
+ position: relative;
929
+ padding: var(--space-12) 0;
930
+ flex: 1;
931
+ align-items: center !important;
932
+ }
933
+
934
+ .reveal .slides section.slide-timeline .timeline-container::before {
935
+ content: '';
936
+ position: absolute;
937
+ top: 50%;
938
+ left: 0;
939
+ right: 0;
940
+ height: 3px;
941
+ background: var(--color-border);
942
+ transform: translateY(-50%);
943
+ }
944
+
945
+ .reveal .slides section.slide-timeline .timeline-item {
946
+ flex: 1;
947
+ position: relative;
948
+ text-align: center;
949
+ }
950
+
951
+ .reveal .slides section.slide-timeline .timeline-marker {
952
+ width: 20px;
953
+ height: 20px;
954
+ background: var(--color-primary);
955
+ border-radius: var(--radius-full);
956
+ margin: 0 auto var(--space-4) auto;
957
+ position: relative;
958
+ z-index: 1;
959
+ border: 4px solid var(--color-bg-primary);
960
+ box-shadow: 0 0 0 2px var(--color-primary);
961
+ }
962
+
963
+ .reveal .slides section.slide-timeline h3 {
964
+ font-size: var(--font-size-xl);
965
+ font-weight: var(--font-weight-bold);
966
+ margin-bottom: var(--space-2);
967
+ }
968
+
969
+ .reveal .slides section.slide-timeline .timeline-content p {
970
+ font-size: var(--font-size-base);
971
+ color: var(--color-text-secondary);
972
+ }
973
+
974
+ /* ==========================================================================
975
+ SLIDE TYPE: PROCESS
976
+ ========================================================================== */
977
+
978
+ /*
979
+ Usage:
980
+ <section class="slide-process">
981
+ <h2>Our Methodology</h2>
982
+ <div class="process-container">
983
+ <div class="process-step">
984
+ <div class="process-number">1</div>
985
+ <h3>Discover</h3>
986
+ <p>Research and analysis</p>
987
+ </div>
988
+ <div class="process-step">
989
+ <div class="process-number">2</div>
990
+ <h3>Design</h3>
991
+ <p>Prototype solutions</p>
992
+ </div>
993
+ <div class="process-step">
994
+ <div class="process-number">3</div>
995
+ <h3>Develop</h3>
996
+ <p>Build and test</p>
997
+ </div>
998
+ <div class="process-step">
999
+ <div class="process-number">4</div>
1000
+ <h3>Deploy</h3>
1001
+ <p>Launch and iterate</p>
1002
+ </div>
1003
+ </div>
1004
+ </section>
1005
+ */
1006
+
1007
+ .reveal .slides section.slide-process .process-container {
1008
+ display: flex !important;
1009
+ flex-direction: row !important;
1010
+ gap: var(--space-6);
1011
+ flex: 1;
1012
+ align-items: flex-start !important;
1013
+ }
1014
+
1015
+ .reveal .slides section.slide-process .process-step {
1016
+ flex: 1;
1017
+ text-align: center;
1018
+ padding: var(--space-8);
1019
+ background: var(--color-bg-secondary);
1020
+ border-radius: var(--radius-xl);
1021
+ position: relative;
1022
+ transition: transform var(--transition-base);
1023
+ }
1024
+
1025
+ .reveal .slides section.slide-process .process-step:hover {
1026
+ transform: translateY(-4px);
1027
+ }
1028
+
1029
+ .reveal .slides section.slide-process .process-number {
1030
+ width: 60px;
1031
+ height: 60px;
1032
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
1033
+ color: var(--color-text-inverse);
1034
+ border-radius: var(--radius-full);
1035
+ display: flex;
1036
+ align-items: center;
1037
+ justify-content: center;
1038
+ font-size: var(--font-size-3xl);
1039
+ font-weight: var(--font-weight-black);
1040
+ margin: 0 auto var(--space-6) auto;
1041
+ }
1042
+
1043
+ .reveal .slides section.slide-process h3 {
1044
+ font-size: var(--font-size-2xl);
1045
+ margin-bottom: var(--space-4);
1046
+ }
1047
+
1048
+ .reveal .slides section.slide-process p {
1049
+ color: var(--color-text-secondary);
1050
+ font-size: var(--font-size-base);
1051
+ }
1052
+
1053
+ /* ==========================================================================
1054
+ SLIDE TYPE: TEAM
1055
+ ========================================================================== */
1056
+
1057
+ /*
1058
+ Usage:
1059
+ <section class="slide-team">
1060
+ <h2>Leadership Team</h2>
1061
+ <div class="team-container">
1062
+ <div class="team-member">
1063
+ <div class="avatar">
1064
+ <img src="ceo.jpg" alt="John Smith">
1065
+ </div>
1066
+ <h3>John Smith</h3>
1067
+ <p class="team-role">Chief Executive Officer</p>
1068
+ <p class="team-bio">20+ years in tech leadership</p>
1069
+ </div>
1070
+ <!-- More team members -->
1071
+ </div>
1072
+ </section>
1073
+ */
1074
+
1075
+ .reveal .slides section.slide-team .team-container {
1076
+ display: grid !important;
1077
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1078
+ gap: var(--space-8);
1079
+ flex: 1;
1080
+ }
1081
+
1082
+ .reveal .slides section.slide-team .team-member {
1083
+ text-align: center;
1084
+ padding: var(--space-6);
1085
+ background: var(--color-bg-secondary);
1086
+ border-radius: var(--radius-xl);
1087
+ transition: transform var(--transition-base);
1088
+ }
1089
+
1090
+ .reveal .slides section.slide-team .team-member:hover {
1091
+ transform: translateY(-4px);
1092
+ }
1093
+
1094
+ .reveal .slides section.slide-team h3 {
1095
+ font-size: var(--font-size-xl);
1096
+ margin: var(--space-4) 0 var(--space-2) 0;
1097
+ }
1098
+
1099
+ .reveal .slides section.slide-team .team-role {
1100
+ color: var(--color-primary);
1101
+ font-weight: var(--font-weight-semibold);
1102
+ font-size: var(--font-size-base);
1103
+ margin-bottom: var(--space-3);
1104
+ }
1105
+
1106
+ .reveal .slides section.slide-team .team-bio {
1107
+ color: var(--color-text-tertiary);
1108
+ font-size: var(--font-size-sm);
1109
+ }
1110
+
1111
+ /* ==========================================================================
1112
+ SLIDE TYPE: PRICING
1113
+ ========================================================================== */
1114
+
1115
+ /*
1116
+ Usage:
1117
+ <section class="slide-pricing">
1118
+ <h2>Simple, Transparent Pricing</h2>
1119
+ <div class="pricing-container">
1120
+ <div class="pricing-tier">
1121
+ <h3>Starter</h3>
1122
+ <div class="pricing-price">
1123
+ <span class="price-amount">$29</span>
1124
+ <span class="price-period">/month</span>
1125
+ </div>
1126
+ <ul class="pricing-features">
1127
+ <li>Up to 10 users</li>
1128
+ <li>5GB storage</li>
1129
+ <li>Email support</li>
1130
+ </ul>
1131
+ <button class="button">Get Started</button>
1132
+ </div>
1133
+ <!-- More pricing tiers -->
1134
+ </div>
1135
+ </section>
1136
+ */
1137
+
1138
+ .reveal .slides section.slide-pricing .pricing-container {
1139
+ display: flex !important;
1140
+ flex-direction: row !important;
1141
+ gap: var(--space-8);
1142
+ flex: 1;
1143
+ align-items: stretch !important;
1144
+ }
1145
+
1146
+ .reveal .slides section.slide-pricing .pricing-tier {
1147
+ flex: 1;
1148
+ padding: var(--space-10);
1149
+ background: var(--color-bg-secondary);
1150
+ border-radius: var(--radius-xl);
1151
+ border: 2px solid var(--color-border);
1152
+ display: flex;
1153
+ flex-direction: column;
1154
+ transition: all var(--transition-base);
1155
+ }
1156
+
1157
+ .reveal .slides section.slide-pricing .pricing-tier:hover {
1158
+ transform: translateY(-8px);
1159
+ border-color: var(--color-primary);
1160
+ box-shadow: var(--shadow-2xl);
1161
+ }
1162
+
1163
+ .reveal .slides section.slide-pricing .pricing-tier.featured {
1164
+ border-color: var(--color-primary);
1165
+ border-width: 3px;
1166
+ position: relative;
1167
+ }
1168
+
1169
+ .reveal .slides section.slide-pricing .pricing-tier.featured::before {
1170
+ content: 'POPULAR';
1171
+ position: absolute;
1172
+ top: -12px;
1173
+ left: 50%;
1174
+ transform: translateX(-50%);
1175
+ background: var(--color-primary);
1176
+ color: var(--color-text-inverse);
1177
+ padding: var(--space-2) var(--space-6);
1178
+ border-radius: var(--radius-full);
1179
+ font-size: var(--font-size-xs);
1180
+ font-weight: var(--font-weight-bold);
1181
+ }
1182
+
1183
+ .reveal .slides section.slide-pricing h3 {
1184
+ font-size: var(--font-size-2xl);
1185
+ text-align: center;
1186
+ margin-bottom: var(--space-6);
1187
+ }
1188
+
1189
+ .reveal .slides section.slide-pricing .pricing-price {
1190
+ text-align: center;
1191
+ margin-bottom: var(--space-8);
1192
+ }
1193
+
1194
+ .reveal .slides section.slide-pricing .price-amount {
1195
+ font-size: var(--font-size-5xl);
1196
+ font-weight: var(--font-weight-black);
1197
+ color: var(--color-primary);
1198
+ }
1199
+
1200
+ .reveal .slides section.slide-pricing .price-period {
1201
+ font-size: var(--font-size-base);
1202
+ color: var(--color-text-tertiary);
1203
+ }
1204
+
1205
+ .reveal .slides section.slide-pricing .pricing-features {
1206
+ list-style: none;
1207
+ padding: 0;
1208
+ margin: 0 0 var(--space-8) 0;
1209
+ flex: 1;
1210
+ }
1211
+
1212
+ .reveal .slides section.slide-pricing .pricing-features li {
1213
+ padding: var(--space-3) 0;
1214
+ padding-left: var(--space-8);
1215
+ position: relative;
1216
+ color: var(--color-text-secondary);
1217
+ }
1218
+
1219
+ .reveal .slides section.slide-pricing .pricing-features li::before {
1220
+ content: '✓';
1221
+ position: absolute;
1222
+ left: 0;
1223
+ color: var(--color-success);
1224
+ font-weight: var(--font-weight-bold);
1225
+ }
1226
+
1227
+ /* ==========================================================================
1228
+ SLIDE TYPE: FEATURES
1229
+ ========================================================================== */
1230
+
1231
+ /*
1232
+ Usage:
1233
+ <section class="slide-features">
1234
+ <h2>Platform Capabilities</h2>
1235
+ <div class="features-grid">
1236
+ <div class="feature-item">
1237
+ <div class="icon-box">📊</div>
1238
+ <h3>Analytics</h3>
1239
+ <p>Real-time insights</p>
1240
+ </div>
1241
+ <!-- More features -->
1242
+ </div>
1243
+ </section>
1244
+ */
1245
+
1246
+ .reveal .slides section.slide-features .features-grid {
1247
+ display: grid !important;
1248
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1249
+ gap: var(--space-8);
1250
+ flex: 1;
1251
+ }
1252
+
1253
+ .reveal .slides section.slide-features .feature-item {
1254
+ padding: var(--space-8);
1255
+ background: var(--color-bg-secondary);
1256
+ border-radius: var(--radius-xl);
1257
+ text-align: center;
1258
+ transition: transform var(--transition-base);
1259
+ }
1260
+
1261
+ .reveal .slides section.slide-features .feature-item:hover {
1262
+ transform: translateY(-4px);
1263
+ }
1264
+
1265
+ .reveal .slides section.slide-features h3 {
1266
+ font-size: var(--font-size-xl);
1267
+ margin-bottom: var(--space-3);
1268
+ }
1269
+
1270
+ .reveal .slides section.slide-features p {
1271
+ color: var(--color-text-secondary);
1272
+ font-size: var(--font-size-base);
1273
+ }
1274
+
1275
+ /* ==========================================================================
1276
+ SLIDE TYPE: CTA (CALL TO ACTION)
1277
+ ========================================================================== */
1278
+
1279
+ /*
1280
+ Usage:
1281
+ <section class="slide-cta">
1282
+ <div class="cta-content">
1283
+ <h2>Ready to Transform Your Business?</h2>
1284
+ <p>Join 10,000+ companies already using our platform</p>
1285
+ <div class="cta-buttons">
1286
+ <button class="button button-primary">Start Free Trial</button>
1287
+ <button class="button button-secondary">Schedule Demo</button>
1288
+ </div>
1289
+ </div>
1290
+ </section>
1291
+ */
1292
+
1293
+ .reveal .slides section.slide-cta {
1294
+ justify-content: center !important;
1295
+ align-items: center !important;
1296
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
1297
+ position: relative;
1298
+ overflow: hidden;
1299
+ }
1300
+
1301
+ .reveal .slides section.slide-cta::before {
1302
+ content: '';
1303
+ position: absolute;
1304
+ top: 0;
1305
+ left: 0;
1306
+ right: 0;
1307
+ bottom: 0;
1308
+ background: url('data:image/svg+xml,<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="2" fill="white" opacity="0.1"/></svg>');
1309
+ opacity: 0.5;
1310
+ }
1311
+
1312
+ .reveal .slides section.slide-cta .cta-content {
1313
+ position: relative;
1314
+ z-index: 1;
1315
+ text-align: center;
1316
+ max-width: 800px;
1317
+ color: var(--color-text-inverse);
1318
+ }
1319
+
1320
+ .reveal .slides section.slide-cta h2 {
1321
+ font-size: var(--font-size-5xl);
1322
+ font-weight: var(--font-weight-black);
1323
+ color: var(--color-text-inverse);
1324
+ margin-bottom: var(--space-6);
1325
+ }
1326
+
1327
+ .reveal .slides section.slide-cta p {
1328
+ font-size: var(--font-size-2xl);
1329
+ color: rgba(255, 255, 255, 0.9);
1330
+ margin-bottom: var(--space-12);
1331
+ }
1332
+
1333
+ .reveal .slides section.slide-cta .cta-buttons {
1334
+ display: flex;
1335
+ gap: var(--space-4);
1336
+ justify-content: center;
1337
+ flex-wrap: wrap;
1338
+ }
1339
+
1340
+ /* ==========================================================================
1341
+ SLIDE TYPE: AGENDA (NEW)
1342
+ Section divider / Table of contents
1343
+ ========================================================================== */
1344
+
1345
+ /*
1346
+ Usage:
1347
+ <section class="slide-agenda">
1348
+ <h2>Today's Agenda</h2>
1349
+ <ol class="agenda-list">
1350
+ <li class="active">
1351
+ <span class="agenda-number">01</span>
1352
+ <span class="agenda-title">Market Opportunity</span>
1353
+ </li>
1354
+ <li>
1355
+ <span class="agenda-number">02</span>
1356
+ <span class="agenda-title">Product Demo</span>
1357
+ </li>
1358
+ <li>
1359
+ <span class="agenda-number">03</span>
1360
+ <span class="agenda-title">Business Model</span>
1361
+ </li>
1362
+ <li>
1363
+ <span class="agenda-number">04</span>
1364
+ <span class="agenda-title">Next Steps</span>
1365
+ </li>
1366
+ </ol>
1367
+ </section>
1368
+ */
1369
+
1370
+ .reveal .slides section.slide-agenda {
1371
+ padding: var(--slide-padding-y) var(--slide-padding-x) !important;
1372
+ }
1373
+
1374
+ .reveal .slides section.slide-agenda h2 {
1375
+ font-size: var(--font-size-4xl);
1376
+ font-weight: var(--font-weight-bold);
1377
+ color: var(--color-text-primary);
1378
+ margin-bottom: var(--space-12);
1379
+ }
1380
+
1381
+ .reveal .slides section.slide-agenda .agenda-list {
1382
+ list-style: none;
1383
+ padding: 0;
1384
+ margin: 0;
1385
+ display: flex;
1386
+ flex-direction: column;
1387
+ gap: var(--space-6);
1388
+ max-width: 700px;
1389
+ }
1390
+
1391
+ .reveal .slides section.slide-agenda .agenda-list li {
1392
+ display: flex;
1393
+ align-items: center;
1394
+ gap: var(--space-6);
1395
+ padding: var(--space-6);
1396
+ background: var(--color-bg-secondary);
1397
+ border-radius: var(--radius-lg);
1398
+ border-left: 4px solid transparent;
1399
+ transition: all var(--transition-base);
1400
+ opacity: 0.6;
1401
+ }
1402
+
1403
+ .reveal .slides section.slide-agenda .agenda-list li.active {
1404
+ opacity: 1;
1405
+ border-left-color: var(--color-primary);
1406
+ background: var(--color-bg-tertiary);
1407
+ }
1408
+
1409
+ .reveal .slides section.slide-agenda .agenda-list li.completed {
1410
+ opacity: 0.4;
1411
+ }
1412
+
1413
+ .reveal .slides section.slide-agenda .agenda-number {
1414
+ font-size: var(--font-size-2xl);
1415
+ font-weight: var(--font-weight-bold);
1416
+ color: var(--color-primary);
1417
+ min-width: 50px;
1418
+ }
1419
+
1420
+ .reveal .slides section.slide-agenda .agenda-title {
1421
+ font-size: var(--font-size-xl);
1422
+ font-weight: var(--font-weight-medium);
1423
+ color: var(--color-text-primary);
1424
+ }
1425
+
1426
+ /* ==========================================================================
1427
+ SLIDE TYPE: THANK YOU / CLOSING (NEW)
1428
+ Final slide with contact info
1429
+ ========================================================================== */
1430
+
1431
+ /*
1432
+ Usage:
1433
+ <section class="slide-thank-you">
1434
+ <div class="thank-you-content">
1435
+ <h2>Thank You</h2>
1436
+ <p class="tagline">Questions? Let's connect.</p>
1437
+ <div class="contact-info">
1438
+ <div class="contact-item">
1439
+ <span class="contact-icon">✉</span>
1440
+ <span>hello@company.com</span>
1441
+ </div>
1442
+ <div class="contact-item">
1443
+ <span class="contact-icon">🌐</span>
1444
+ <span>www.company.com</span>
1445
+ </div>
1446
+ <div class="contact-item">
1447
+ <span class="contact-icon">📱</span>
1448
+ <span>@company</span>
1449
+ </div>
1450
+ </div>
1451
+ </div>
1452
+ </section>
1453
+ */
1454
+
1455
+ .reveal .slides section.slide-thank-you {
1456
+ justify-content: center !important;
1457
+ align-items: center !important;
1458
+ text-align: center;
1459
+ }
1460
+
1461
+ .reveal .slides section.slide-thank-you .thank-you-content {
1462
+ max-width: 700px;
1463
+ }
1464
+
1465
+ .reveal .slides section.slide-thank-you h2 {
1466
+ font-size: var(--font-size-6xl);
1467
+ font-weight: var(--font-weight-black);
1468
+ color: var(--color-primary);
1469
+ margin-bottom: var(--space-4);
1470
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
1471
+ -webkit-background-clip: text;
1472
+ -webkit-text-fill-color: transparent;
1473
+ background-clip: text;
1474
+ }
1475
+
1476
+ .reveal .slides section.slide-thank-you .tagline {
1477
+ font-size: var(--font-size-2xl);
1478
+ color: var(--color-text-secondary);
1479
+ margin-bottom: var(--space-12);
1480
+ }
1481
+
1482
+ .reveal .slides section.slide-thank-you .contact-info {
1483
+ display: flex;
1484
+ justify-content: center;
1485
+ gap: var(--space-8);
1486
+ flex-wrap: wrap;
1487
+ }
1488
+
1489
+ .reveal .slides section.slide-thank-you .contact-item {
1490
+ display: flex;
1491
+ align-items: center;
1492
+ gap: var(--space-3);
1493
+ padding: var(--space-4) var(--space-6);
1494
+ background: var(--color-bg-secondary);
1495
+ border-radius: var(--radius-lg);
1496
+ font-size: var(--font-size-lg);
1497
+ color: var(--color-text-secondary);
1498
+ }
1499
+
1500
+ .reveal .slides section.slide-thank-you .contact-icon {
1501
+ font-size: var(--font-size-xl);
1502
+ }
1503
+
1504
+ /* ==========================================================================
1505
+ SLIDE TYPE: SOCIAL PROOF / LOGO CLOUD (NEW)
1506
+ Client logos, partner logos, testimonial badges
1507
+ ========================================================================== */
1508
+
1509
+ /*
1510
+ Usage:
1511
+ <section class="slide-social-proof">
1512
+ <h2>Trusted by Industry Leaders</h2>
1513
+ <div class="logo-cloud">
1514
+ <img src="logo1.svg" alt="Company 1">
1515
+ <img src="logo2.svg" alt="Company 2">
1516
+ <img src="logo3.svg" alt="Company 3">
1517
+ <img src="logo4.svg" alt="Company 4">
1518
+ <img src="logo5.svg" alt="Company 5">
1519
+ <img src="logo6.svg" alt="Company 6">
1520
+ </div>
1521
+ <div class="proof-stats">
1522
+ <div class="proof-stat">
1523
+ <span class="stat-number">500+</span>
1524
+ <span class="stat-label">Enterprise Clients</span>
1525
+ </div>
1526
+ <div class="proof-stat">
1527
+ <span class="stat-number">98%</span>
1528
+ <span class="stat-label">Customer Satisfaction</span>
1529
+ </div>
1530
+ <div class="proof-stat">
1531
+ <span class="stat-number">$2B+</span>
1532
+ <span class="stat-label">Revenue Enabled</span>
1533
+ </div>
1534
+ </div>
1535
+ </section>
1536
+ */
1537
+
1538
+ .reveal .slides section.slide-social-proof {
1539
+ padding: var(--slide-padding-y) var(--slide-padding-x) !important;
1540
+ text-align: center;
1541
+ }
1542
+
1543
+ .reveal .slides section.slide-social-proof h2 {
1544
+ font-size: var(--font-size-3xl);
1545
+ font-weight: var(--font-weight-bold);
1546
+ color: var(--color-text-primary);
1547
+ margin-bottom: var(--space-12);
1548
+ }
1549
+
1550
+ .reveal .slides section.slide-social-proof .logo-cloud {
1551
+ display: grid;
1552
+ grid-template-columns: repeat(6, 1fr);
1553
+ gap: var(--space-8);
1554
+ align-items: center;
1555
+ justify-items: center;
1556
+ margin-bottom: var(--space-12);
1557
+ padding: var(--space-8);
1558
+ }
1559
+
1560
+ .reveal .slides section.slide-social-proof .logo-cloud img {
1561
+ max-width: 120px;
1562
+ max-height: 50px;
1563
+ filter: grayscale(100%);
1564
+ opacity: 0.6;
1565
+ transition: all var(--transition-base);
1566
+ }
1567
+
1568
+ .reveal .slides section.slide-social-proof .logo-cloud img:hover {
1569
+ filter: grayscale(0%);
1570
+ opacity: 1;
1571
+ }
1572
+
1573
+ .reveal .slides section.slide-social-proof .proof-stats {
1574
+ display: flex;
1575
+ justify-content: center;
1576
+ gap: var(--space-12);
1577
+ flex-wrap: wrap;
1578
+ }
1579
+
1580
+ .reveal .slides section.slide-social-proof .proof-stat {
1581
+ display: flex;
1582
+ flex-direction: column;
1583
+ gap: var(--space-2);
1584
+ }
1585
+
1586
+ .reveal .slides section.slide-social-proof .stat-number {
1587
+ font-size: var(--font-size-4xl);
1588
+ font-weight: var(--font-weight-bold);
1589
+ color: var(--color-primary);
1590
+ }
1591
+
1592
+ .reveal .slides section.slide-social-proof .stat-label {
1593
+ font-size: var(--font-size-base);
1594
+ color: var(--color-text-tertiary);
1595
+ text-transform: uppercase;
1596
+ letter-spacing: 0.05em;
1597
+ }
1598
+
1599
+ /* ==========================================================================
1600
+ SLIDE TYPE: CASE STUDY (NEW)
1601
+ Customer success story
1602
+ ========================================================================== */
1603
+
1604
+ /*
1605
+ Usage:
1606
+ <section class="slide-case-study">
1607
+ <div class="case-study-content">
1608
+ <div class="case-study-header">
1609
+ <img src="client-logo.svg" alt="Client Logo" class="client-logo">
1610
+ <span class="case-study-label">Case Study</span>
1611
+ </div>
1612
+ <blockquote class="case-study-quote">
1613
+ "Their platform reduced our processing time by 80% and saved us $2M annually."
1614
+ </blockquote>
1615
+ <div class="case-study-author">
1616
+ <img src="avatar.jpg" alt="John Smith" class="author-avatar">
1617
+ <div class="author-info">
1618
+ <span class="author-name">John Smith</span>
1619
+ <span class="author-title">CTO, Acme Corp</span>
1620
+ </div>
1621
+ </div>
1622
+ <div class="case-study-results">
1623
+ <div class="result">
1624
+ <span class="result-number">80%</span>
1625
+ <span class="result-label">Time Saved</span>
1626
+ </div>
1627
+ <div class="result">
1628
+ <span class="result-number">$2M</span>
1629
+ <span class="result-label">Annual Savings</span>
1630
+ </div>
1631
+ <div class="result">
1632
+ <span class="result-number">3 mo</span>
1633
+ <span class="result-label">Payback Period</span>
1634
+ </div>
1635
+ </div>
1636
+ </div>
1637
+ </section>
1638
+ */
1639
+
1640
+ .reveal .slides section.slide-case-study {
1641
+ padding: var(--slide-padding-y) var(--slide-padding-x) !important;
1642
+ }
1643
+
1644
+ .reveal .slides section.slide-case-study .case-study-content {
1645
+ max-width: 900px;
1646
+ margin: 0 auto;
1647
+ }
1648
+
1649
+ .reveal .slides section.slide-case-study .case-study-header {
1650
+ display: flex;
1651
+ align-items: center;
1652
+ gap: var(--space-4);
1653
+ margin-bottom: var(--space-8);
1654
+ }
1655
+
1656
+ .reveal .slides section.slide-case-study .client-logo {
1657
+ max-height: 40px;
1658
+ filter: brightness(0) invert(1);
1659
+ opacity: 0.8;
1660
+ }
1661
+
1662
+ .reveal .slides section.slide-case-study .case-study-label {
1663
+ font-size: var(--font-size-sm);
1664
+ text-transform: uppercase;
1665
+ letter-spacing: 0.1em;
1666
+ color: var(--color-primary);
1667
+ padding: var(--space-1) var(--space-3);
1668
+ background: rgba(59, 130, 246, 0.1);
1669
+ border-radius: var(--radius-full);
1670
+ }
1671
+
1672
+ .reveal .slides section.slide-case-study .case-study-quote {
1673
+ font-size: var(--font-size-3xl);
1674
+ font-weight: var(--font-weight-medium);
1675
+ color: var(--color-text-primary);
1676
+ font-style: italic;
1677
+ line-height: var(--line-height-relaxed);
1678
+ margin: 0 0 var(--space-8) 0;
1679
+ padding-left: var(--space-6);
1680
+ border-left: 4px solid var(--color-primary);
1681
+ }
1682
+
1683
+ .reveal .slides section.slide-case-study .case-study-author {
1684
+ display: flex;
1685
+ align-items: center;
1686
+ gap: var(--space-4);
1687
+ margin-bottom: var(--space-10);
1688
+ }
1689
+
1690
+ .reveal .slides section.slide-case-study .author-avatar {
1691
+ width: 60px;
1692
+ height: 60px;
1693
+ border-radius: var(--radius-full);
1694
+ object-fit: cover;
1695
+ }
1696
+
1697
+ .reveal .slides section.slide-case-study .author-info {
1698
+ display: flex;
1699
+ flex-direction: column;
1700
+ }
1701
+
1702
+ .reveal .slides section.slide-case-study .author-name {
1703
+ font-size: var(--font-size-lg);
1704
+ font-weight: var(--font-weight-semibold);
1705
+ color: var(--color-text-primary);
1706
+ }
1707
+
1708
+ .reveal .slides section.slide-case-study .author-title {
1709
+ font-size: var(--font-size-base);
1710
+ color: var(--color-text-tertiary);
1711
+ }
1712
+
1713
+ .reveal .slides section.slide-case-study .case-study-results {
1714
+ display: grid;
1715
+ grid-template-columns: repeat(3, 1fr);
1716
+ gap: var(--space-6);
1717
+ padding: var(--space-8);
1718
+ background: var(--color-bg-secondary);
1719
+ border-radius: var(--radius-xl);
1720
+ }
1721
+
1722
+ .reveal .slides section.slide-case-study .result {
1723
+ display: flex;
1724
+ flex-direction: column;
1725
+ align-items: center;
1726
+ text-align: center;
1727
+ }
1728
+
1729
+ .reveal .slides section.slide-case-study .result-number {
1730
+ font-size: var(--font-size-4xl);
1731
+ font-weight: var(--font-weight-bold);
1732
+ color: var(--color-success);
1733
+ }
1734
+
1735
+ .reveal .slides section.slide-case-study .result-label {
1736
+ font-size: var(--font-size-sm);
1737
+ color: var(--color-text-tertiary);
1738
+ text-transform: uppercase;
1739
+ letter-spacing: 0.05em;
1740
+ }
1741
+
1742
+ /* ==========================================================================
1743
+ SLIDE TYPE: SECTION DIVIDER (NEW)
1744
+ Bold section break
1745
+ ========================================================================== */
1746
+
1747
+ /*
1748
+ Usage:
1749
+ <section class="slide-section-divider">
1750
+ <span class="section-number">02</span>
1751
+ <h2>Product Demo</h2>
1752
+ <p class="section-subtitle">See it in action</p>
1753
+ </section>
1754
+ */
1755
+
1756
+ .reveal .slides section.slide-section-divider {
1757
+ justify-content: center !important;
1758
+ align-items: center !important;
1759
+ text-align: center;
1760
+ background: linear-gradient(135deg, var(--color-bg-primary), var(--color-bg-secondary));
1761
+ }
1762
+
1763
+ .reveal .slides section.slide-section-divider .section-number {
1764
+ display: block;
1765
+ font-size: var(--font-size-7xl);
1766
+ font-weight: var(--font-weight-black);
1767
+ color: var(--color-primary);
1768
+ opacity: 0.3;
1769
+ line-height: 1;
1770
+ margin-bottom: var(--space-4);
1771
+ }
1772
+
1773
+ .reveal .slides section.slide-section-divider h2 {
1774
+ font-size: var(--font-size-5xl);
1775
+ font-weight: var(--font-weight-bold);
1776
+ color: var(--color-text-primary);
1777
+ margin-bottom: var(--space-4);
1778
+ }
1779
+
1780
+ .reveal .slides section.slide-section-divider .section-subtitle {
1781
+ font-size: var(--font-size-xl);
1782
+ color: var(--color-text-tertiary);
1783
+ }
1784
+
1785
+ /* ==========================================================================
1786
+ COMPONENT: SOURCE/CITATION (NEW)
1787
+ Properly styled source citations
1788
+ ========================================================================== */
1789
+
1790
+ .source,
1791
+ .citation {
1792
+ font-size: var(--font-size-xs);
1793
+ color: var(--color-text-tertiary);
1794
+ position: absolute;
1795
+ bottom: var(--space-4);
1796
+ left: var(--slide-padding-x);
1797
+ right: var(--slide-padding-x);
1798
+ }
1799
+
1800
+ .source::before {
1801
+ content: 'Source: ';
1802
+ font-weight: var(--font-weight-medium);
1803
+ }
1804
+
1805
+ /* ==========================================================================
1806
+ COMPONENT: CAPTION (NEW)
1807
+ Image/chart captions
1808
+ ========================================================================== */
1809
+
1810
+ .caption {
1811
+ font-size: var(--font-size-sm);
1812
+ color: var(--color-text-tertiary);
1813
+ text-align: center;
1814
+ margin-top: var(--space-4);
1815
+ font-style: italic;
1816
+ }
1817
+
1818
+ .caption-left {
1819
+ text-align: left;
1820
+ }
1821
+
1822
+ /* ==========================================================================
1823
+ SLIDE TYPE: CHART
1824
+ ========================================================================== */
1825
+
1826
+ /*
1827
+ Usage:
1828
+ <section class="slide-chart">
1829
+ <h2>Revenue Growth Trajectory</h2>
1830
+ <div class="chart-container">
1831
+ <div class="chart-visual">
1832
+ <canvas id="myChart"></canvas>
1833
+ </div>
1834
+ <div class="callout">
1835
+ <h3>Key Insight</h3>
1836
+ <p>Q4 shows 200% YoY growth driven by enterprise expansion</p>
1837
+ </div>
1838
+ </div>
1839
+ </section>
1840
+ */
1841
+
1842
+ .reveal .slides section.slide-chart .chart-container {
1843
+ display: flex;
1844
+ flex-direction: column;
1845
+ gap: var(--space-8);
1846
+ flex: 1;
1847
+ }
1848
+
1849
+ .reveal .slides section.slide-chart .chart-visual {
1850
+ flex: 1;
1851
+ display: flex;
1852
+ align-items: center;
1853
+ justify-content: center;
1854
+ background: var(--color-bg-secondary);
1855
+ border-radius: var(--radius-xl);
1856
+ padding: var(--space-8);
1857
+ }
1858
+
1859
+ .reveal .slides section.slide-chart canvas {
1860
+ max-height: 400px;
1861
+ }
1862
+
1863
+ /* ==========================================================================
1864
+ SLIDE TYPE: TABLE
1865
+ ========================================================================== */
1866
+
1867
+ /*
1868
+ Usage:
1869
+ <section class="slide-table">
1870
+ <h2>Q4 Performance Summary</h2>
1871
+ <div class="table-container">
1872
+ <table>
1873
+ <thead>
1874
+ <tr>
1875
+ <th>Metric</th>
1876
+ <th>Q3</th>
1877
+ <th>Q4</th>
1878
+ <th>Change</th>
1879
+ </tr>
1880
+ </thead>
1881
+ <tbody>
1882
+ <tr>
1883
+ <td>Revenue</td>
1884
+ <td>$2.5M</td>
1885
+ <td>$3.8M</td>
1886
+ <td class="positive">+52%</td>
1887
+ </tr>
1888
+ </tbody>
1889
+ </table>
1890
+ </div>
1891
+ </section>
1892
+ */
1893
+
1894
+ .reveal .slides section.slide-table .table-container {
1895
+ flex: 1;
1896
+ overflow-x: auto;
1897
+ overflow-y: auto;
1898
+ background: var(--color-bg-secondary);
1899
+ border-radius: var(--radius-xl);
1900
+ padding: var(--space-6);
1901
+ }
1902
+
1903
+ .reveal .slides section.slide-table table {
1904
+ width: 100%;
1905
+ border-collapse: separate;
1906
+ border-spacing: 0;
1907
+ font-size: var(--font-size-base);
1908
+ }
1909
+
1910
+ .reveal .slides section.slide-table th {
1911
+ background: var(--color-bg-tertiary);
1912
+ color: var(--color-text-primary);
1913
+ font-weight: var(--font-weight-bold);
1914
+ padding: var(--space-4);
1915
+ text-align: left;
1916
+ border-bottom: 2px solid var(--color-border);
1917
+ position: sticky;
1918
+ top: 0;
1919
+ z-index: 1;
1920
+ }
1921
+
1922
+ .reveal .slides section.slide-table td {
1923
+ padding: var(--space-4);
1924
+ border-bottom: 1px solid var(--color-border);
1925
+ color: var(--color-text-secondary);
1926
+ }
1927
+
1928
+ .reveal .slides section.slide-table tr:hover {
1929
+ background: var(--color-bg-tertiary);
1930
+ }
1931
+
1932
+ .reveal .slides section.slide-table .positive {
1933
+ color: var(--color-success);
1934
+ font-weight: var(--font-weight-bold);
1935
+ }
1936
+
1937
+ .reveal .slides section.slide-table .negative {
1938
+ color: var(--color-error);
1939
+ font-weight: var(--font-weight-bold);
1940
+ }
1941
+
1942
+ /* ==========================================================================
1943
+ SLIDE TYPE: VIDEO
1944
+ ========================================================================== */
1945
+
1946
+ /*
1947
+ Usage:
1948
+ <section class="slide-video">
1949
+ <h2>Product Demo</h2>
1950
+ <div class="video-container">
1951
+ <iframe src="https://www.youtube.com/embed/..." frameborder="0" allowfullscreen></iframe>
1952
+ </div>
1953
+ </section>
1954
+ */
1955
+
1956
+ .reveal .slides section.slide-video .video-container {
1957
+ flex: 1;
1958
+ display: flex;
1959
+ align-items: center;
1960
+ justify-content: center;
1961
+ background: var(--color-bg-secondary);
1962
+ border-radius: var(--radius-xl);
1963
+ overflow: hidden;
1964
+ position: relative;
1965
+ }
1966
+
1967
+ .reveal .slides section.slide-video .video-container iframe,
1968
+ .reveal .slides section.slide-video .video-container video {
1969
+ width: 100%;
1970
+ height: 100%;
1971
+ aspect-ratio: 16 / 9;
1972
+ }
1973
+
1974
+ /* ==========================================================================
1975
+ SLIDE TYPE: IMAGE FULL
1976
+ ========================================================================== */
1977
+
1978
+ /*
1979
+ Usage:
1980
+ <section class="slide-image-full" data-background-image="hero.jpg">
1981
+ <div class="image-overlay">
1982
+ <h2>Transforming Industries</h2>
1983
+ <p>One innovation at a time</p>
1984
+ </div>
1985
+ </section>
1986
+ */
1987
+
1988
+ .reveal .slides section.slide-image-full {
1989
+ background-size: cover !important;
1990
+ background-position: center !important;
1991
+ justify-content: center !important;
1992
+ align-items: center !important;
1993
+ position: relative;
1994
+ }
1995
+
1996
+ .reveal .slides section.slide-image-full::before {
1997
+ content: '';
1998
+ position: absolute;
1999
+ top: 0;
2000
+ left: 0;
2001
+ right: 0;
2002
+ bottom: 0;
2003
+ background: rgba(0, 0, 0, 0.5);
2004
+ }
2005
+
2006
+ .reveal .slides section.slide-image-full .image-overlay {
2007
+ position: relative;
2008
+ z-index: 1;
2009
+ text-align: center;
2010
+ color: var(--color-text-inverse);
2011
+ max-width: 800px;
2012
+ }
2013
+
2014
+ .reveal .slides section.slide-image-full h2 {
2015
+ font-size: var(--font-size-6xl);
2016
+ color: var(--color-text-inverse);
2017
+ text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
2018
+ }
2019
+
2020
+ .reveal .slides section.slide-image-full p {
2021
+ font-size: var(--font-size-2xl);
2022
+ color: rgba(255, 255, 255, 0.9);
2023
+ text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
2024
+ }
2025
+
2026
+ /* ==========================================================================
2027
+ UI COMPONENTS
2028
+ ========================================================================== */
2029
+
2030
+ /* Badge Component */
2031
+ .badge {
2032
+ display: inline-block;
2033
+ padding: var(--space-2) var(--space-4);
2034
+ background: var(--color-primary);
2035
+ color: var(--color-text-inverse);
2036
+ font-size: var(--font-size-sm);
2037
+ font-weight: var(--font-weight-semibold);
2038
+ border-radius: var(--radius-full);
2039
+ text-transform: uppercase;
2040
+ letter-spacing: 0.05em;
2041
+ margin-bottom: var(--space-4);
2042
+ }
2043
+
2044
+ .badge.badge-secondary {
2045
+ background: var(--color-secondary);
2046
+ }
2047
+
2048
+ .badge.badge-success {
2049
+ background: var(--color-success);
2050
+ }
2051
+
2052
+ .badge.badge-warning {
2053
+ background: var(--color-warning);
2054
+ }
2055
+
2056
+ .badge.badge-error {
2057
+ background: var(--color-error);
2058
+ }
2059
+
2060
+ /* Card Component */
2061
+ .card {
2062
+ background: var(--color-bg-secondary);
2063
+ border-radius: var(--radius-xl);
2064
+ padding: var(--space-8);
2065
+ border: 1px solid var(--color-border);
2066
+ transition: all var(--transition-base);
2067
+ }
2068
+
2069
+ .card:hover {
2070
+ transform: translateY(-4px);
2071
+ box-shadow: var(--shadow-xl);
2072
+ border-color: var(--color-primary);
2073
+ }
2074
+
2075
+ .card h3 {
2076
+ font-size: var(--font-size-2xl);
2077
+ margin-bottom: var(--space-4);
2078
+ }
2079
+
2080
+ .card p {
2081
+ color: var(--color-text-secondary);
2082
+ }
2083
+
2084
+ /* Metric Component */
2085
+ .metric {
2086
+ text-align: center;
2087
+ padding: var(--space-6);
2088
+ background: var(--color-bg-secondary);
2089
+ border-radius: var(--radius-xl);
2090
+ }
2091
+
2092
+ .metric-value {
2093
+ font-size: var(--font-size-5xl);
2094
+ font-weight: var(--font-weight-black);
2095
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
2096
+ -webkit-background-clip: text;
2097
+ -webkit-text-fill-color: transparent;
2098
+ background-clip: text;
2099
+ line-height: 1;
2100
+ margin-bottom: var(--space-3);
2101
+ }
2102
+
2103
+ .metric-label {
2104
+ font-size: var(--font-size-base);
2105
+ color: var(--color-text-secondary);
2106
+ font-weight: var(--font-weight-medium);
2107
+ text-transform: uppercase;
2108
+ letter-spacing: 0.05em;
2109
+ }
2110
+
2111
+ /* Callout Component */
2112
+ .callout {
2113
+ background: var(--color-bg-secondary);
2114
+ border-left: 4px solid var(--color-primary);
2115
+ padding: var(--space-6);
2116
+ border-radius: var(--radius-lg);
2117
+ margin: var(--space-6) 0;
2118
+ }
2119
+
2120
+ .callout h3 {
2121
+ font-size: var(--font-size-xl);
2122
+ margin-bottom: var(--space-3);
2123
+ color: var(--color-primary);
2124
+ }
2125
+
2126
+ .callout p {
2127
+ color: var(--color-text-secondary);
2128
+ margin: 0;
2129
+ }
2130
+
2131
+ .callout.callout-info {
2132
+ border-left-color: var(--color-primary);
2133
+ }
2134
+
2135
+ .callout.callout-success {
2136
+ border-left-color: var(--color-success);
2137
+ }
2138
+
2139
+ .callout.callout-warning {
2140
+ border-left-color: var(--color-warning);
2141
+ }
2142
+
2143
+ .callout.callout-error {
2144
+ border-left-color: var(--color-error);
2145
+ }
2146
+
2147
+ /* Icon Box Component */
2148
+ .icon-box {
2149
+ width: 80px;
2150
+ height: 80px;
2151
+ display: flex;
2152
+ align-items: center;
2153
+ justify-content: center;
2154
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
2155
+ border-radius: var(--radius-xl);
2156
+ font-size: var(--font-size-4xl);
2157
+ margin: 0 auto var(--space-6) auto;
2158
+ box-shadow: var(--shadow-lg);
2159
+ }
2160
+
2161
+ /* Progress Bar Component */
2162
+ .progress-bar {
2163
+ width: 100%;
2164
+ height: 12px;
2165
+ background: var(--color-bg-tertiary);
2166
+ border-radius: var(--radius-full);
2167
+ overflow: hidden;
2168
+ margin: var(--space-4) 0;
2169
+ }
2170
+
2171
+ .progress-bar-fill {
2172
+ height: 100%;
2173
+ background: linear-gradient(90deg, var(--color-primary), var(--color-secondary));
2174
+ border-radius: var(--radius-full);
2175
+ transition: width var(--transition-slow);
2176
+ }
2177
+
2178
+ /* Avatar Component */
2179
+ .avatar {
2180
+ width: 80px;
2181
+ height: 80px;
2182
+ border-radius: var(--radius-full);
2183
+ overflow: hidden;
2184
+ border: 3px solid var(--color-border);
2185
+ box-shadow: var(--shadow-md);
2186
+ }
2187
+
2188
+ .avatar img {
2189
+ width: 100%;
2190
+ height: 100%;
2191
+ object-fit: cover;
2192
+ }
2193
+
2194
+ .avatar.avatar-sm {
2195
+ width: 40px;
2196
+ height: 40px;
2197
+ }
2198
+
2199
+ .avatar.avatar-lg {
2200
+ width: 120px;
2201
+ height: 120px;
2202
+ }
2203
+
2204
+ /* Tag Component */
2205
+ .tag {
2206
+ display: inline-block;
2207
+ padding: var(--space-1) var(--space-3);
2208
+ background: var(--color-bg-tertiary);
2209
+ color: var(--color-text-secondary);
2210
+ font-size: var(--font-size-sm);
2211
+ border-radius: var(--radius-md);
2212
+ margin-right: var(--space-2);
2213
+ margin-bottom: var(--space-2);
2214
+ }
2215
+
2216
+ /* Button Component */
2217
+ .button {
2218
+ display: inline-block;
2219
+ padding: var(--space-4) var(--space-8);
2220
+ font-size: var(--font-size-base);
2221
+ font-weight: var(--font-weight-semibold);
2222
+ text-align: center;
2223
+ text-decoration: none;
2224
+ border: none;
2225
+ border-radius: var(--radius-lg);
2226
+ cursor: pointer;
2227
+ transition: all var(--transition-base);
2228
+ font-family: var(--font-body);
2229
+ min-height: 44px; /* Accessibility: minimum touch target */
2230
+ min-width: 44px;
2231
+ }
2232
+
2233
+ .button-primary {
2234
+ background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
2235
+ color: var(--color-text-inverse);
2236
+ box-shadow: var(--shadow-md);
2237
+ }
2238
+
2239
+ .button-primary:hover {
2240
+ transform: translateY(-2px);
2241
+ box-shadow: var(--shadow-xl);
2242
+ }
2243
+
2244
+ .button-secondary {
2245
+ background: transparent;
2246
+ color: var(--color-text-inverse);
2247
+ border: 2px solid var(--color-text-inverse);
2248
+ }
2249
+
2250
+ .button-secondary:hover {
2251
+ background: var(--color-text-inverse);
2252
+ color: var(--color-primary);
2253
+ }
2254
+
2255
+ .button-outline {
2256
+ background: transparent;
2257
+ color: var(--color-primary);
2258
+ border: 2px solid var(--color-primary);
2259
+ }
2260
+
2261
+ .button-outline:hover {
2262
+ background: var(--color-primary);
2263
+ color: var(--color-text-inverse);
2264
+ }
2265
+
2266
+ .button-large {
2267
+ padding: var(--space-6) var(--space-12);
2268
+ font-size: var(--font-size-lg);
2269
+ }
2270
+
2271
+ .button-small {
2272
+ padding: var(--space-2) var(--space-4);
2273
+ font-size: var(--font-size-sm);
2274
+ }
2275
+
2276
+ /* Divider Component */
2277
+ .divider {
2278
+ height: 2px;
2279
+ background: var(--color-border);
2280
+ margin: var(--space-8) 0;
2281
+ border: none;
2282
+ }
2283
+
2284
+ .divider-gradient {
2285
+ background: linear-gradient(90deg, transparent, var(--color-primary), transparent);
2286
+ }
2287
+
2288
+ .divider-vertical {
2289
+ width: 2px;
2290
+ height: 100%;
2291
+ margin: 0 var(--space-8);
2292
+ }
2293
+
2294
+ /* Browser Frame Component */
2295
+ .browser-frame {
2296
+ background: var(--color-bg-secondary);
2297
+ border-radius: var(--radius-lg);
2298
+ overflow: hidden;
2299
+ box-shadow: var(--shadow-2xl);
2300
+ border: 1px solid var(--color-border);
2301
+ }
2302
+
2303
+ .browser-frame::before {
2304
+ content: '';
2305
+ display: block;
2306
+ height: 40px;
2307
+ background: var(--color-bg-tertiary);
2308
+ border-bottom: 1px solid var(--color-border);
2309
+ position: relative;
2310
+ }
2311
+
2312
+ .browser-frame img {
2313
+ display: block;
2314
+ width: 100%;
2315
+ height: auto;
2316
+ }
2317
+
2318
+ /* Phone Frame Component */
2319
+ .phone-frame {
2320
+ max-width: 300px;
2321
+ margin: 0 auto;
2322
+ background: var(--color-bg-primary);
2323
+ border-radius: 30px;
2324
+ padding: 15px;
2325
+ box-shadow: var(--shadow-2xl);
2326
+ border: 8px solid var(--color-bg-tertiary);
2327
+ position: relative;
2328
+ }
2329
+
2330
+ .phone-frame::before {
2331
+ content: '';
2332
+ position: absolute;
2333
+ top: 5px;
2334
+ left: 50%;
2335
+ transform: translateX(-50%);
2336
+ width: 60px;
2337
+ height: 6px;
2338
+ background: var(--color-bg-tertiary);
2339
+ border-radius: var(--radius-full);
2340
+ }
2341
+
2342
+ .phone-frame img {
2343
+ display: block;
2344
+ width: 100%;
2345
+ height: auto;
2346
+ border-radius: 20px;
2347
+ }
2348
+
2349
+ /* Laptop Frame Component */
2350
+ .laptop-frame {
2351
+ background: var(--color-bg-tertiary);
2352
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
2353
+ overflow: hidden;
2354
+ box-shadow: var(--shadow-2xl);
2355
+ padding: 20px 20px 0 20px;
2356
+ position: relative;
2357
+ }
2358
+
2359
+ .laptop-frame::after {
2360
+ content: '';
2361
+ display: block;
2362
+ height: 20px;
2363
+ background: var(--color-bg-tertiary);
2364
+ border-radius: 0 0 var(--radius-2xl) var(--radius-2xl);
2365
+ margin: 0 -100px;
2366
+ }
2367
+
2368
+ .laptop-frame img {
2369
+ display: block;
2370
+ width: 100%;
2371
+ height: auto;
2372
+ border-radius: var(--radius-md) var(--radius-md) 0 0;
2373
+ }
2374
+
2375
+ /* ==========================================================================
2376
+ ANIMATION LIBRARY
2377
+ ========================================================================== */
2378
+
2379
+ @keyframes fadeIn {
2380
+ from {
2381
+ opacity: 0;
2382
+ }
2383
+ to {
2384
+ opacity: 1;
2385
+ }
2386
+ }
2387
+
2388
+ @keyframes slideUp {
2389
+ from {
2390
+ opacity: 0;
2391
+ transform: translateY(30px);
2392
+ }
2393
+ to {
2394
+ opacity: 1;
2395
+ transform: translateY(0);
2396
+ }
2397
+ }
2398
+
2399
+ @keyframes scaleIn {
2400
+ from {
2401
+ opacity: 0;
2402
+ transform: scale(0.9);
2403
+ }
2404
+ to {
2405
+ opacity: 1;
2406
+ transform: scale(1);
2407
+ }
2408
+ }
2409
+
2410
+ @keyframes blurIn {
2411
+ from {
2412
+ opacity: 0;
2413
+ filter: blur(10px);
2414
+ }
2415
+ to {
2416
+ opacity: 1;
2417
+ filter: blur(0);
2418
+ }
2419
+ }
2420
+
2421
+ /* NEW: Slide from Left */
2422
+ @keyframes slideLeft {
2423
+ from {
2424
+ opacity: 0;
2425
+ transform: translateX(-50px);
2426
+ }
2427
+ to {
2428
+ opacity: 1;
2429
+ transform: translateX(0);
2430
+ }
2431
+ }
2432
+
2433
+ /* NEW: Slide from Right */
2434
+ @keyframes slideRight {
2435
+ from {
2436
+ opacity: 0;
2437
+ transform: translateX(50px);
2438
+ }
2439
+ to {
2440
+ opacity: 1;
2441
+ transform: translateX(0);
2442
+ }
2443
+ }
2444
+
2445
+ /* NEW: Slide Down */
2446
+ @keyframes slideDown {
2447
+ from {
2448
+ opacity: 0;
2449
+ transform: translateY(-30px);
2450
+ }
2451
+ to {
2452
+ opacity: 1;
2453
+ transform: translateY(0);
2454
+ }
2455
+ }
2456
+
2457
+ /* NEW: Bounce In */
2458
+ @keyframes bounceIn {
2459
+ 0% {
2460
+ opacity: 0;
2461
+ transform: scale(0.3);
2462
+ }
2463
+ 50% {
2464
+ opacity: 1;
2465
+ transform: scale(1.05);
2466
+ }
2467
+ 70% {
2468
+ transform: scale(0.95);
2469
+ }
2470
+ 100% {
2471
+ transform: scale(1);
2472
+ }
2473
+ }
2474
+
2475
+ /* NEW: Flip In X */
2476
+ @keyframes flipInX {
2477
+ from {
2478
+ opacity: 0;
2479
+ transform: perspective(400px) rotateX(90deg);
2480
+ }
2481
+ to {
2482
+ opacity: 1;
2483
+ transform: perspective(400px) rotateX(0);
2484
+ }
2485
+ }
2486
+
2487
+ /* NEW: Flip In Y */
2488
+ @keyframes flipInY {
2489
+ from {
2490
+ opacity: 0;
2491
+ transform: perspective(400px) rotateY(90deg);
2492
+ }
2493
+ to {
2494
+ opacity: 1;
2495
+ transform: perspective(400px) rotateY(0);
2496
+ }
2497
+ }
2498
+
2499
+ /* NEW: Zoom In */
2500
+ @keyframes zoomIn {
2501
+ from {
2502
+ opacity: 0;
2503
+ transform: scale(0.5);
2504
+ }
2505
+ to {
2506
+ opacity: 1;
2507
+ transform: scale(1);
2508
+ }
2509
+ }
2510
+
2511
+ /* NEW: Zoom Out (from large) */
2512
+ @keyframes zoomOut {
2513
+ from {
2514
+ opacity: 0;
2515
+ transform: scale(1.5);
2516
+ }
2517
+ to {
2518
+ opacity: 1;
2519
+ transform: scale(1);
2520
+ }
2521
+ }
2522
+
2523
+ /* NEW: Rotate In */
2524
+ @keyframes rotateIn {
2525
+ from {
2526
+ opacity: 0;
2527
+ transform: rotate(-180deg) scale(0.8);
2528
+ }
2529
+ to {
2530
+ opacity: 1;
2531
+ transform: rotate(0) scale(1);
2532
+ }
2533
+ }
2534
+
2535
+ /* NEW: Swing In */
2536
+ @keyframes swingIn {
2537
+ 0% {
2538
+ opacity: 0;
2539
+ transform: rotateX(-30deg);
2540
+ transform-origin: top center;
2541
+ }
2542
+ 100% {
2543
+ opacity: 1;
2544
+ transform: rotateX(0);
2545
+ transform-origin: top center;
2546
+ }
2547
+ }
2548
+
2549
+ /* NEW: Drop In */
2550
+ @keyframes dropIn {
2551
+ 0% {
2552
+ opacity: 0;
2553
+ transform: translateY(-100px) rotate(-10deg);
2554
+ }
2555
+ 50% {
2556
+ transform: translateY(10px) rotate(3deg);
2557
+ }
2558
+ 100% {
2559
+ opacity: 1;
2560
+ transform: translateY(0) rotate(0);
2561
+ }
2562
+ }
2563
+
2564
+ /* NEW: Pulse Attention Animation */
2565
+ @keyframes pulse {
2566
+ 0%, 100% {
2567
+ transform: scale(1);
2568
+ opacity: 1;
2569
+ }
2570
+ 50% {
2571
+ transform: scale(1.05);
2572
+ opacity: 0.9;
2573
+ }
2574
+ }
2575
+
2576
+ /* NEW: Shake Attention Animation */
2577
+ @keyframes shake {
2578
+ 0%, 100% { transform: translateX(0); }
2579
+ 10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
2580
+ 20%, 40%, 60%, 80% { transform: translateX(5px); }
2581
+ }
2582
+
2583
+ /* NEW: Glow Attention Animation */
2584
+ @keyframes glow {
2585
+ 0%, 100% {
2586
+ box-shadow: 0 0 5px var(--color-primary);
2587
+ }
2588
+ 50% {
2589
+ box-shadow: 0 0 20px var(--color-primary), 0 0 30px var(--color-primary-light);
2590
+ }
2591
+ }
2592
+
2593
+ /* Animation Classes */
2594
+ .animate-fade-in {
2595
+ animation: fadeIn 0.8s ease-out;
2596
+ }
2597
+
2598
+ .animate-slide-up {
2599
+ animation: slideUp 0.8s ease-out;
2600
+ }
2601
+
2602
+ .animate-scale-in {
2603
+ animation: scaleIn 0.8s ease-out;
2604
+ }
2605
+
2606
+ .animate-blur-in {
2607
+ animation: blurIn 0.8s ease-out;
2608
+ }
2609
+
2610
+ .animate-slide-left {
2611
+ animation: slideLeft 0.8s ease-out;
2612
+ }
2613
+
2614
+ .animate-slide-right {
2615
+ animation: slideRight 0.8s ease-out;
2616
+ }
2617
+
2618
+ .animate-slide-down {
2619
+ animation: slideDown 0.8s ease-out;
2620
+ }
2621
+
2622
+ .animate-bounce-in {
2623
+ animation: bounceIn 0.8s ease-out;
2624
+ }
2625
+
2626
+ .animate-flip-x {
2627
+ animation: flipInX 0.8s ease-out;
2628
+ }
2629
+
2630
+ .animate-flip-y {
2631
+ animation: flipInY 0.8s ease-out;
2632
+ }
2633
+
2634
+ .animate-zoom-in {
2635
+ animation: zoomIn 0.6s ease-out;
2636
+ }
2637
+
2638
+ .animate-zoom-out {
2639
+ animation: zoomOut 0.6s ease-out;
2640
+ }
2641
+
2642
+ .animate-rotate-in {
2643
+ animation: rotateIn 0.8s ease-out;
2644
+ }
2645
+
2646
+ .animate-swing-in {
2647
+ animation: swingIn 0.8s ease-out;
2648
+ }
2649
+
2650
+ .animate-drop-in {
2651
+ animation: dropIn 0.8s ease-out;
2652
+ }
2653
+
2654
+ /* Attention Animations (loop) */
2655
+ .animate-pulse {
2656
+ animation: pulse 2s infinite;
2657
+ }
2658
+
2659
+ .animate-shake {
2660
+ animation: shake 0.5s ease-in-out;
2661
+ }
2662
+
2663
+ .animate-glow {
2664
+ animation: glow 2s infinite;
2665
+ }
2666
+
2667
+ /* Animation Delay Utilities */
2668
+ .delay-100 { animation-delay: 100ms; }
2669
+ .delay-200 { animation-delay: 200ms; }
2670
+ .delay-300 { animation-delay: 300ms; }
2671
+ .delay-400 { animation-delay: 400ms; }
2672
+ .delay-500 { animation-delay: 500ms; }
2673
+ .delay-700 { animation-delay: 700ms; }
2674
+ .delay-1000 { animation-delay: 1000ms; }
2675
+
2676
+ /* Stagger Children Animation */
2677
+ .stagger-children > *:nth-child(1) { animation-delay: 0ms; }
2678
+ .stagger-children > *:nth-child(2) { animation-delay: 100ms; }
2679
+ .stagger-children > *:nth-child(3) { animation-delay: 200ms; }
2680
+ .stagger-children > *:nth-child(4) { animation-delay: 300ms; }
2681
+ .stagger-children > *:nth-child(5) { animation-delay: 400ms; }
2682
+ .stagger-children > *:nth-child(6) { animation-delay: 500ms; }
2683
+ .stagger-children > *:nth-child(7) { animation-delay: 600ms; }
2684
+ .stagger-children > *:nth-child(8) { animation-delay: 700ms; }
2685
+
2686
+ /* Reveal.js fragment animations */
2687
+ .reveal .slides section .fragment.animate-fade-in {
2688
+ opacity: 0;
2689
+ }
2690
+
2691
+ .reveal .slides section .fragment.animate-fade-in.visible {
2692
+ opacity: 1;
2693
+ }
2694
+
2695
+ /* Reduced motion support */
2696
+ @media (prefers-reduced-motion: reduce) {
2697
+ *,
2698
+ *::before,
2699
+ *::after {
2700
+ animation-duration: 0.01ms !important;
2701
+ animation-iteration-count: 1 !important;
2702
+ transition-duration: 0.01ms !important;
2703
+ }
2704
+ }
2705
+
2706
+ /* ==========================================================================
2707
+ UTILITY CLASSES
2708
+ ========================================================================== */
2709
+
2710
+ /* Spacing Utilities */
2711
+ .m-0 { margin: 0 !important; }
2712
+ .m-1 { margin: var(--space-1) !important; }
2713
+ .m-2 { margin: var(--space-2) !important; }
2714
+ .m-3 { margin: var(--space-3) !important; }
2715
+ .m-4 { margin: var(--space-4) !important; }
2716
+ .m-6 { margin: var(--space-6) !important; }
2717
+ .m-8 { margin: var(--space-8) !important; }
2718
+ .m-12 { margin: var(--space-12) !important; }
2719
+
2720
+ .mt-0 { margin-top: 0 !important; }
2721
+ .mt-1 { margin-top: var(--space-1) !important; }
2722
+ .mt-2 { margin-top: var(--space-2) !important; }
2723
+ .mt-3 { margin-top: var(--space-3) !important; }
2724
+ .mt-4 { margin-top: var(--space-4) !important; }
2725
+ .mt-6 { margin-top: var(--space-6) !important; }
2726
+ .mt-8 { margin-top: var(--space-8) !important; }
2727
+ .mt-12 { margin-top: var(--space-12) !important; }
2728
+
2729
+ .mb-0 { margin-bottom: 0 !important; }
2730
+ .mb-1 { margin-bottom: var(--space-1) !important; }
2731
+ .mb-2 { margin-bottom: var(--space-2) !important; }
2732
+ .mb-3 { margin-bottom: var(--space-3) !important; }
2733
+ .mb-4 { margin-bottom: var(--space-4) !important; }
2734
+ .mb-6 { margin-bottom: var(--space-6) !important; }
2735
+ .mb-8 { margin-bottom: var(--space-8) !important; }
2736
+ .mb-12 { margin-bottom: var(--space-12) !important; }
2737
+
2738
+ .p-0 { padding: 0 !important; }
2739
+ .p-1 { padding: var(--space-1) !important; }
2740
+ .p-2 { padding: var(--space-2) !important; }
2741
+ .p-3 { padding: var(--space-3) !important; }
2742
+ .p-4 { padding: var(--space-4) !important; }
2743
+ .p-6 { padding: var(--space-6) !important; }
2744
+ .p-8 { padding: var(--space-8) !important; }
2745
+ .p-12 { padding: var(--space-12) !important; }
2746
+
2747
+ /* Text Alignment */
2748
+ .text-left { text-align: left !important; }
2749
+ .text-center { text-align: center !important; }
2750
+ .text-right { text-align: right !important; }
2751
+
2752
+ /* Flexbox Helpers */
2753
+ .flex { display: flex !important; }
2754
+ .flex-row { flex-direction: row !important; }
2755
+ .flex-column { flex-direction: column !important; }
2756
+ .flex-wrap { flex-wrap: wrap !important; }
2757
+ .flex-nowrap { flex-wrap: nowrap !important; }
2758
+
2759
+ .justify-start { justify-content: flex-start !important; }
2760
+ .justify-center { justify-content: center !important; }
2761
+ .justify-end { justify-content: flex-end !important; }
2762
+ .justify-between { justify-content: space-between !important; }
2763
+ .justify-around { justify-content: space-around !important; }
2764
+
2765
+ .items-start { align-items: flex-start !important; }
2766
+ .items-center { align-items: center !important; }
2767
+ .items-end { align-items: flex-end !important; }
2768
+ .items-stretch { align-items: stretch !important; }
2769
+
2770
+ .flex-1 { flex: 1 1 0% !important; }
2771
+ .flex-auto { flex: 1 1 auto !important; }
2772
+ .flex-none { flex: none !important; }
2773
+
2774
+ .gap-2 { gap: var(--space-2) !important; }
2775
+ .gap-4 { gap: var(--space-4) !important; }
2776
+ .gap-6 { gap: var(--space-6) !important; }
2777
+ .gap-8 { gap: var(--space-8) !important; }
2778
+ .gap-12 { gap: var(--space-12) !important; }
2779
+
2780
+ /* Grid Helpers */
2781
+ .grid { display: grid !important; }
2782
+ .grid-cols-2 { grid-template-columns: repeat(2, 1fr) !important; }
2783
+ .grid-cols-3 { grid-template-columns: repeat(3, 1fr) !important; }
2784
+ .grid-cols-4 { grid-template-columns: repeat(4, 1fr) !important; }
2785
+
2786
+ /* Color Utilities */
2787
+ .text-primary { color: var(--color-primary) !important; }
2788
+ .text-secondary { color: var(--color-text-secondary) !important; }
2789
+ .text-tertiary { color: var(--color-text-tertiary) !important; }
2790
+ .text-success { color: var(--color-success) !important; }
2791
+ .text-warning { color: var(--color-warning) !important; }
2792
+ .text-error { color: var(--color-error) !important; }
2793
+
2794
+ .bg-primary { background: var(--color-bg-primary) !important; }
2795
+ .bg-secondary { background: var(--color-bg-secondary) !important; }
2796
+ .bg-tertiary { background: var(--color-bg-tertiary) !important; }
2797
+
2798
+ /* Font Weight */
2799
+ .font-normal { font-weight: var(--font-weight-normal) !important; }
2800
+ .font-medium { font-weight: var(--font-weight-medium) !important; }
2801
+ .font-semibold { font-weight: var(--font-weight-semibold) !important; }
2802
+ .font-bold { font-weight: var(--font-weight-bold) !important; }
2803
+ .font-black { font-weight: var(--font-weight-black) !important; }
2804
+
2805
+ /* Font Size */
2806
+ .text-xs { font-size: var(--font-size-xs) !important; }
2807
+ .text-sm { font-size: var(--font-size-sm) !important; }
2808
+ .text-base { font-size: var(--font-size-base) !important; }
2809
+ .text-lg { font-size: var(--font-size-lg) !important; }
2810
+ .text-xl { font-size: var(--font-size-xl) !important; }
2811
+ .text-2xl { font-size: var(--font-size-2xl) !important; }
2812
+ .text-3xl { font-size: var(--font-size-3xl) !important; }
2813
+ .text-4xl { font-size: var(--font-size-4xl) !important; }
2814
+
2815
+ /* Display */
2816
+ .block { display: block !important; }
2817
+ .inline-block { display: inline-block !important; }
2818
+ .inline { display: inline !important; }
2819
+ .hidden { display: none !important; }
2820
+
2821
+ /* Width */
2822
+ .w-full { width: 100% !important; }
2823
+ .w-auto { width: auto !important; }
2824
+
2825
+ /* Height */
2826
+ .h-full { height: 100% !important; }
2827
+ .h-auto { height: auto !important; }
2828
+
2829
+ /* ==========================================================================
2830
+ ACCESSIBILITY
2831
+ ========================================================================== */
2832
+
2833
+ /* Focus Visible States */
2834
+ *:focus-visible {
2835
+ outline: 3px solid var(--color-primary);
2836
+ outline-offset: 2px;
2837
+ }
2838
+
2839
+ button:focus-visible,
2840
+ a:focus-visible,
2841
+ input:focus-visible,
2842
+ textarea:focus-visible,
2843
+ select:focus-visible {
2844
+ outline: 3px solid var(--color-primary);
2845
+ outline-offset: 2px;
2846
+ }
2847
+
2848
+ /* High Contrast Mode Support */
2849
+ @media (prefers-contrast: high) {
2850
+ :root {
2851
+ --color-border: currentColor;
2852
+ }
2853
+
2854
+ .reveal .slides section {
2855
+ border: 2px solid currentColor;
2856
+ }
2857
+
2858
+ .button {
2859
+ border: 2px solid currentColor;
2860
+ }
2861
+ }
2862
+
2863
+ /* Screen Reader Only */
2864
+ .sr-only {
2865
+ position: absolute;
2866
+ width: 1px;
2867
+ height: 1px;
2868
+ padding: 0;
2869
+ margin: -1px;
2870
+ overflow: hidden;
2871
+ clip: rect(0, 0, 0, 0);
2872
+ white-space: nowrap;
2873
+ border-width: 0;
2874
+ }
2875
+
2876
+ /* Skip to Content Link */
2877
+ .skip-link {
2878
+ position: absolute;
2879
+ top: -40px;
2880
+ left: 0;
2881
+ background: var(--color-primary);
2882
+ color: var(--color-text-inverse);
2883
+ padding: var(--space-2) var(--space-4);
2884
+ text-decoration: none;
2885
+ z-index: 100;
2886
+ }
2887
+
2888
+ .skip-link:focus {
2889
+ top: 0;
2890
+ }
2891
+
2892
+ /* ==========================================================================
2893
+ RESPONSIVE BREAKPOINTS
2894
+ ========================================================================== */
2895
+
2896
+ /* Tablet (Portrait) */
2897
+ @media (max-width: 768px) {
2898
+ :root {
2899
+ --slide-padding-x: clamp(1.5rem, 4vw, 2.5rem);
2900
+ --slide-padding-y: clamp(1.5rem, 4vh, 2rem);
2901
+ }
2902
+
2903
+ .reveal .slides section.slide-screenshot .screenshot-container,
2904
+ .reveal .slides section.slide-screenshot-left .screenshot-container,
2905
+ .reveal .slides section.slide-screenshot-right .screenshot-container {
2906
+ flex-direction: column !important;
2907
+ }
2908
+
2909
+ .reveal .slides section.slide-two-column .two-column-container {
2910
+ flex-direction: column !important;
2911
+ }
2912
+
2913
+ .reveal .slides section.slide-three-column .three-column-container {
2914
+ grid-template-columns: 1fr !important;
2915
+ }
2916
+
2917
+ .reveal .slides section.slide-four-column .four-column-container {
2918
+ grid-template-columns: repeat(2, 1fr) !important;
2919
+ }
2920
+
2921
+ .reveal .slides section.slide-comparison .comparison-container {
2922
+ flex-direction: column !important;
2923
+ }
2924
+
2925
+ .reveal .slides section.slide-pricing .pricing-container {
2926
+ flex-direction: column !important;
2927
+ }
2928
+
2929
+ .reveal .slides section.slide-process .process-container {
2930
+ flex-direction: column !important;
2931
+ }
2932
+
2933
+ .reveal .slides section.slide-timeline .timeline-container {
2934
+ flex-direction: column !important;
2935
+ }
2936
+
2937
+ .reveal .slides section.slide-timeline .timeline-container::before {
2938
+ left: 20px;
2939
+ top: 0;
2940
+ bottom: 0;
2941
+ width: 3px;
2942
+ height: auto;
2943
+ }
2944
+
2945
+ .reveal .slides section.slide-timeline .timeline-marker {
2946
+ position: absolute;
2947
+ left: 11px;
2948
+ }
2949
+
2950
+ .reveal .slides section.slide-timeline .timeline-content {
2951
+ padding-left: var(--space-12);
2952
+ }
2953
+ }
2954
+
2955
+ /* Mobile */
2956
+ @media (max-width: 480px) {
2957
+ :root {
2958
+ --slide-padding-x: 1.5rem;
2959
+ --slide-padding-y: 1.5rem;
2960
+ }
2961
+
2962
+ .reveal h1 { font-size: var(--font-size-4xl); }
2963
+ .reveal h2 { font-size: var(--font-size-3xl); }
2964
+
2965
+ .reveal .slides section.slide-four-column .four-column-container {
2966
+ grid-template-columns: 1fr !important;
2967
+ }
2968
+
2969
+ .reveal .slides section.slide-features .features-grid {
2970
+ grid-template-columns: 1fr !important;
2971
+ }
2972
+
2973
+ .reveal .slides section.slide-cta .cta-buttons {
2974
+ flex-direction: column;
2975
+ width: 100%;
2976
+ }
2977
+
2978
+ .reveal .slides section.slide-cta .button {
2979
+ width: 100%;
2980
+ }
2981
+ }
2982
+
2983
+ /* ==========================================================================
2984
+ PRINT STYLES
2985
+ ========================================================================== */
2986
+
2987
+ @media print {
2988
+ :root {
2989
+ --color-bg-primary: #ffffff;
2990
+ --color-bg-secondary: #f5f5f5;
2991
+ --color-bg-tertiary: #e5e5e5;
2992
+ --color-text-primary: #000000;
2993
+ --color-text-secondary: #333333;
2994
+ --color-text-tertiary: #666666;
2995
+ }
2996
+
2997
+ .reveal .slides section {
2998
+ page-break-after: always;
2999
+ page-break-inside: avoid;
3000
+ }
3001
+
3002
+ .reveal .slides section,
3003
+ .reveal .slides section * {
3004
+ color: #000000 !important;
3005
+ background: transparent !important;
3006
+ box-shadow: none !important;
3007
+ text-shadow: none !important;
3008
+ }
3009
+
3010
+ .reveal a,
3011
+ .reveal a:visited {
3012
+ text-decoration: underline;
3013
+ color: #0066cc !important;
3014
+ }
3015
+
3016
+ .reveal a[href]::after {
3017
+ content: " (" attr(href) ")";
3018
+ font-size: 0.8em;
3019
+ }
3020
+
3021
+ .browser-frame::before,
3022
+ .phone-frame::before,
3023
+ .laptop-frame::after {
3024
+ display: none;
3025
+ }
3026
+
3027
+ .button,
3028
+ .badge {
3029
+ border: 1px solid #000000 !important;
3030
+ }
3031
+ }
3032
+
3033
+ /* ==========================================================================
3034
+ DARK MODE OVERRIDE (for systems with dark mode preference)
3035
+ ========================================================================== */
3036
+
3037
+ @media (prefers-color-scheme: dark) {
3038
+ :root:not([data-theme]) {
3039
+ --color-bg-primary: #0f172a;
3040
+ --color-bg-secondary: #1e293b;
3041
+ --color-bg-tertiary: #334155;
3042
+ --color-text-primary: #f8fafc;
3043
+ --color-text-secondary: #cbd5e1;
3044
+ --color-text-tertiary: #94a3b8;
3045
+ }
3046
+ }
3047
+
3048
+ @media (prefers-color-scheme: light) {
3049
+ :root:not([data-theme]) {
3050
+ --color-bg-primary: #ffffff;
3051
+ --color-bg-secondary: #f8fafc;
3052
+ --color-bg-tertiary: #e2e8f0;
3053
+ --color-text-primary: #0f172a;
3054
+ --color-text-secondary: #475569;
3055
+ --color-text-tertiary: #64748b;
3056
+ }
3057
+ }