Malaji71 commited on
Commit
90339e3
·
verified ·
1 Parent(s): 42cb144

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +196 -302
index.html CHANGED
@@ -4,6 +4,11 @@
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
  <title>MIGUEL - Pitch Deck</title>
 
 
 
 
 
7
  <style>
8
  @import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,600;1,400&family=Manrope:wght@200;300;400;500;600;700&display=swap');
9
 
@@ -42,114 +47,43 @@
42
  from { opacity: 0; transform: translateY(30px); }
43
  to { opacity: 1; transform: translateY(0); }
44
  }
45
-
46
- @keyframes fadeIn {
47
- from { opacity: 0; }
48
- to { opacity: 1; }
49
- }
50
-
51
  @keyframes slideInLeft {
52
  from { opacity: 0; transform: translateX(-40px); }
53
  to { opacity: 1; transform: translateX(0); }
54
  }
55
-
56
  @keyframes scaleIn {
57
  from { opacity: 0; transform: scale(0.95); }
58
  to { opacity: 1; transform: scale(1); }
59
  }
60
-
61
- @keyframes slowZoom {
62
- from { transform: scale(1); }
63
- to { transform: scale(1.05); }
64
- }
65
-
66
  @keyframes fadeInOverlay {
67
  from { opacity: 0; }
68
  to { opacity: 1; }
69
  }
70
-
71
- /* === TIMINGS: 1.5s de imagen limpia antes de cualquier animación === */
72
-
73
- .animate-overlay {
74
- animation: fadeInOverlay 1.5s ease-out forwards;
75
- animation-delay: 1.5s;
76
- }
77
-
78
- .animate-title {
79
- opacity: 0;
80
- animation: fadeInUp 1s ease-out forwards;
81
- animation-delay: 1.8s;
82
- }
83
-
84
- .animate-tagline {
85
- opacity: 0;
86
- animation: fadeIn 1.2s ease-out forwards;
87
- animation-delay: 1.6s;
88
- }
89
-
90
- .animate-credits {
91
- opacity: 0;
92
- animation: fadeInUp 1s ease-out forwards;
93
- animation-delay: 2.2s;
94
- }
95
-
96
- .animate-genre {
97
- opacity: 0;
98
- animation: fadeIn 1s ease-out forwards;
99
- animation-delay: 2.6s;
100
- }
101
-
102
- .animate-text {
103
- opacity: 0;
104
- animation: slideInLeft 1s ease-out forwards;
105
- animation-delay: 1.8s;
106
- }
107
-
108
- .animate-title-slide {
109
- opacity: 0;
110
- animation: fadeInUp 0.8s ease-out forwards;
111
- animation-delay: 1.6s;
112
- }
113
-
114
- .animate-table {
115
- opacity: 0;
116
- animation: fadeIn 1.2s ease-out forwards;
117
- animation-delay: 1.8s;
118
- }
119
-
120
- .animate-notes {
121
- opacity: 0;
122
- animation: fadeInUp 1s ease-out forwards;
123
- animation-delay: 2.5s;
124
- }
125
-
126
- .animate-contact {
127
- opacity: 0;
128
- animation: slideInLeft 0.8s ease-out forwards;
129
- animation-delay: 1.6s;
130
- }
131
-
132
- .animate-contact-item {
133
- opacity: 0;
134
- animation: fadeInUp 0.6s ease-out forwards;
135
- }
136
  .animate-contact-item:nth-child(1) { animation-delay: 2.0s; }
137
  .animate-contact-item:nth-child(2) { animation-delay: 2.2s; }
138
  .animate-contact-item:nth-child(3) { animation-delay: 2.4s; }
139
-
140
- .animate-miembro {
141
- opacity: 0;
142
- animation: scaleIn 0.8s ease-out forwards;
143
- }
144
  .animate-miembro:nth-child(1) { animation-delay: 1.8s; }
145
  .animate-miembro:nth-child(2) { animation-delay: 2.0s; }
146
  .animate-miembro:nth-child(3) { animation-delay: 2.2s; }
147
-
148
- .animate-highlight {
149
- opacity: 0;
150
- animation: fadeInUp 0.8s ease-out forwards;
151
- animation-delay: 1.8s;
152
- }
153
 
154
  /* ===================== ESTILOS GENERALES ===================== */
155
  .tagline-top {
@@ -163,24 +97,14 @@
163
  letter-spacing: 25px; margin-top: 80px; margin-bottom: 20px;
164
  text-shadow: 0 5px 25px rgba(0,0,0,0.8);
165
  }
166
- .credits-bottom {
167
- margin-top: 180px; width: 80%; margin-left: auto; margin-right: auto;
168
- }
169
  .credits {
170
  font-family: 'Manrope', sans-serif; font-size: 1.5rem; font-weight: 500;
171
  letter-spacing: 1px; line-height: 2; text-shadow: 0 2px 15px rgba(0,0,0,1); margin-bottom: 30px;
172
  }
173
  .credits span { display: block; white-space: nowrap; }
174
- .credits a {
175
- color: #fff;
176
- text-decoration: none;
177
- border-bottom: 1px solid rgba(255,255,255,0.3);
178
- transition: all 0.3s;
179
- }
180
- .credits a:hover {
181
- color: #4ade80;
182
- border-bottom-color: #4ade80;
183
- }
184
  .genre {
185
  font-family: 'Manrope', sans-serif; font-size: 1rem; letter-spacing: 6px;
186
  border-top: 1px solid rgba(255,255,255,0.6); display: inline-block;
@@ -188,12 +112,8 @@
188
  text-shadow: 0 2px 10px rgba(0,0,0,1);
189
  }
190
 
191
- .overlay-slide2 {
192
- background: linear-gradient(to bottom, rgba(0,0,0,0.98) 0%, rgba(0,0,0,0.0) 100%);
193
- }
194
- .content-slide2 {
195
- position: absolute; top: 35px; left: 5%; width: 85%; z-index: 10; text-align: left;
196
- }
197
  .titulo-slide2 {
198
  font-family: 'EB Garamond', serif; font-size: 4.8rem; margin-bottom: 15px;
199
  font-weight: 600; letter-spacing: 2px; text-shadow: 0 4px 10px rgba(0,0,0,0.9); line-height: 1;
@@ -221,26 +141,16 @@
221
  margin-bottom: 10px; letter-spacing: 1px; border-bottom: 1px solid rgba(255,255,255,0.3);
222
  padding-bottom: 12px; display: block;
223
  }
224
- .miembro-nombre a {
225
- color: #fff;
226
- text-decoration: none;
227
- transition: all 0.3s;
228
- }
229
- .miembro-nombre a:hover {
230
- color: #4ade80;
231
- }
232
  .miembro-rol {
233
  font-size: 0.9rem; text-transform: uppercase; letter-spacing: 2px;
234
  opacity: 0.8; margin-bottom: 15px; display: block; font-weight: 400; color: #fff;
235
  }
236
  .miembro-bio { font-size: 1rem; line-height: 1.7; font-weight: 300; opacity: 0.95; }
237
 
238
- .overlay-slide4 {
239
- background: linear-gradient(to right, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.8) 60%, rgba(0,0,0,0.0) 100%);
240
- }
241
- .content-slide4 {
242
- position: absolute; top: 20px; left: 5%; width: 60%; z-index: 10;
243
- }
244
  .titulo-slide4 {
245
  font-family: 'EB Garamond', serif; font-size: 3.2rem; font-weight: 600;
246
  letter-spacing: 2px; margin-bottom: 0px; text-shadow: 0 4px 10px rgba(0,0,0,0.9);
@@ -249,203 +159,78 @@
249
  font-family: 'Manrope', sans-serif; font-size: 1rem; font-weight: 400;
250
  letter-spacing: 3px; text-transform: uppercase; opacity: 0.8; margin-bottom: 20px;
251
  }
252
- .highlight-row {
253
- display: flex; align-items: flex-start; gap: 20px; margin-bottom: 25px; flex-wrap: wrap;
254
- }
255
  .highlight-box {
256
  background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.2);
257
  padding: 15px 20px; display: inline-flex; align-items: baseline; gap: 15px;
258
  border-radius: 4px; flex-shrink: 0;
259
  }
260
- .highlight-number {
261
- font-family: 'Manrope', sans-serif; font-size: 2.8rem; font-weight: 700;
262
- color: #fff; line-height: 1;
263
- }
264
- .highlight-text {
265
- font-family: 'Manrope', sans-serif; font-size: 0.9rem; font-weight: 500;
266
- letter-spacing: 2px; text-transform: uppercase; color: #ccc;
267
- }
268
- .sources-box {
269
- font-size: 0.8rem; color: #bbb; line-height: 1.5; max-width: 400px; padding-top: 5px;
270
- }
271
  .table-container { display: grid; gap: 6px; }
272
  .table-row {
273
  display: grid; grid-template-columns: 2.2fr 0.8fr 0.8fr; padding: 8px 0;
274
  border-bottom: 1px solid rgba(255,255,255,0.1); align-items: start;
275
  }
276
  .col-movie-header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 5px; }
277
- .col-movie-header strong {
278
- font-family: 'EB Garamond', serif; font-size: 1.05rem; font-weight: 600; color: #fff;
279
- }
280
  .col-movie-header span.year { font-size: 0.85rem; color: #888; }
281
- .col-movie-header span.country {
282
- font-family: 'Manrope', sans-serif; font-size: 0.8rem; font-weight: 700;
283
- color: #999; letter-spacing: 1px;
284
- }
285
  .col-movie-desc { font-size: 0.75rem; line-height: 1.4; color: #aaa; display: block; margin-top: 2px; }
286
- .col-budget, .col-roi {
287
- font-family: 'Manrope', sans-serif; font-size: 0.95rem; font-weight: 700;
288
- text-align: right; padding-top: 2px;
289
- }
290
- .roi-excellent { color: #4ade80; }
291
- .roi-good { color: #22c55e; }
292
- .roi-ok { color: #fbbf24; }
293
- .roi-risk { color: #fb923c; }
294
- .roi-low { color: #f87171; }
295
 
296
- .overlay-slide5 {
297
- background: linear-gradient(to right, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.7) 55%, rgba(0,0,0,0.0) 100%);
298
- }
299
- .content-slide5 {
300
- position: absolute; top: 40px; left: 5%; width: 65%; z-index: 10;
301
- }
302
  .titulo-slide5 {
303
  font-family: 'EB Garamond', serif; font-size: 3.5rem; font-weight: 600;
304
  letter-spacing: 2px; margin-bottom: 25px; text-shadow: 0 4px 15px rgba(0,0,0,0.9);
305
  }
306
-
307
- .cascada-table {
308
- width: 100%;
309
- border-collapse: collapse;
310
- margin-bottom: 20px;
311
- font-size: 0.95rem;
312
- }
313
- .cascada-table th {
314
- text-align: left;
315
- padding: 12px 15px;
316
- border-bottom: 2px solid rgba(255,255,255,0.3);
317
- font-family: 'Manrope', sans-serif;
318
- font-weight: 600;
319
- font-size: 0.85rem;
320
- letter-spacing: 1px;
321
- text-transform: uppercase;
322
- color: #ccc;
323
- }
324
- .cascada-table td {
325
- padding: 12px 15px;
326
- border-bottom: 1px solid rgba(255,255,255,0.1);
327
- vertical-align: top;
328
- }
329
  .cascada-table .col-etapa { width: 20%; font-weight: 700; color: #fff; }
330
  .cascada-table .col-concepto { width: 50%; color: #ddd; }
331
- .cascada-table .col-monto {
332
- width: 30%; text-align: right; font-weight: 700; color: #4ade80; font-size: 1.05rem;
333
- }
334
  .cascada-table .total-row { background: rgba(255,255,255,0.08); }
335
  .cascada-table .total-row td { border-bottom: 2px solid rgba(255,255,255,0.4); font-weight: 700; }
336
  .cascada-table .total-row .col-monto { color: #fbbf24; font-size: 1.15rem; }
337
  .cascada-table .fase3-row .col-monto { color: #fbbf24; }
338
-
339
  .notas-tecnicas {
340
- background: rgba(0,0,0,0.8);
341
- border-left: 3px solid rgba(255,255,255,0.3);
342
- padding: 20px;
343
- margin-top: 110px;
344
- backdrop-filter: blur(5px);
345
- }
346
- .notas-tecnicas h3 {
347
- font-family: 'EB Garamond', serif;
348
- font-size: 1.3rem;
349
- margin-bottom: 15px;
350
- color: #fff;
351
- font-weight: 600;
352
- }
353
- .nota-item {
354
- margin-bottom: 15px;
355
- font-size: 0.85rem;
356
- line-height: 1.6;
357
- color: #ccc;
358
- }
359
- .nota-item strong {
360
- color: #fff;
361
- display: block;
362
- margin-bottom: 5px;
363
- font-weight: 600;
364
- }
365
-
366
- .overlay-slide6 {
367
- background: linear-gradient(to right, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.8) 50%, rgba(0,0,0,0.0) 100%);
368
- }
369
- .content-slide6 {
370
- position: absolute; top: 50%; left: 5%;
371
- transform: translateY(-50%);
372
- width: 50%;
373
- z-index: 10;
374
- }
375
- .gracias-title {
376
- font-family: 'EB Garamond', serif;
377
- font-size: 4.5rem;
378
- font-weight: 600;
379
- margin-bottom: 50px;
380
- letter-spacing: 3px;
381
- text-shadow: 0 4px 20px rgba(0,0,0,0.9);
382
- }
383
- .contacto-nombre {
384
- font-family: 'EB Garamond', serif;
385
- font-size: 2rem;
386
- font-weight: 600;
387
- margin-bottom: 30px;
388
- color: #fff;
389
- letter-spacing: 2px;
390
- }
391
- .contacto-item {
392
- display: flex;
393
- align-items: center;
394
- gap: 15px;
395
- margin-bottom: 20px;
396
- font-size: 1.1rem;
397
- color: #ddd;
398
- }
399
- .contacto-item a {
400
- color: #fff;
401
- text-decoration: none;
402
- transition: color 0.3s;
403
- }
404
- .contacto-item a:hover {
405
- color: #4ade80;
406
- }
407
- .whatsapp-icon {
408
- width: 24px;
409
- height: 24px;
410
- fill: #25D366;
411
- }
412
-
413
  .talishte-credit {
414
- position: absolute;
415
- bottom: 85px;
416
- right: 5%;
417
- font-size: 0.9rem;
418
- font-weight: 700;
419
- color: #1a1a1a;
420
- z-index: 5;
421
- text-shadow: 0 0 10px rgba(255,255,255,0.6);
422
- }
423
- .talishte-credit a {
424
- color: #000;
425
- text-decoration: none;
426
- font-weight: 700;
427
- border-bottom: 2px solid #000;
428
- transition: color 0.3s;
429
- }
430
- .talishte-credit a:hover {
431
- color: #333;
432
- border-bottom-color: #333;
433
- }
434
-
435
- /* ===================== NAVEGACIÓN ===================== */
436
- .nav {
437
- position: fixed; bottom: 30px; right: 30px; z-index: 1000; display: flex; gap: 10px;
438
- }
439
- .nav button {
440
- background: rgba(0,0,0,0.7);
441
- border: 2px solid rgba(255,255,255,0.5);
442
  color: white; padding: 12px 20px; cursor: pointer;
443
  font-family: 'Manrope', sans-serif; font-size: 0.85rem; letter-spacing: 2px;
444
  transition: 0.3s; border-radius: 5px; backdrop-filter: blur(5px);
445
  }
446
- .nav button:hover { background: rgba(0,0,0,0.9); border-color: white; }
447
- .nav button:active { transform: scale(0.95); }
448
- .nav button:disabled { opacity: 0.3; cursor: not-allowed; }
449
 
450
  .slide-counter {
451
  position: fixed; bottom: 30px; left: 30px; z-index: 1000;
@@ -453,6 +238,43 @@
453
  background: rgba(0,0,0,0.6); padding: 8px 15px; border-radius: 5px; backdrop-filter: blur(5px);
454
  }
455
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
456
  /* ===================== RESPONSIVE + SCROLL FIX ===================== */
457
  @media (max-width: 1024px) {
458
  .titulo-main { font-size: 6rem; letter-spacing: 15px; }
@@ -481,8 +303,7 @@
481
  }
482
  .content-slide4, .content-slide5 {
483
  width: 90%; left: 5%;
484
- /* SCROLL FIX: Permitir scroll vertical en móvil */
485
- max-height: calc(100vh - 140px); /* Dejar espacio para navegación */
486
  overflow-y: auto;
487
  padding-bottom: 20px;
488
  }
@@ -500,17 +321,10 @@
500
  .nav { bottom: 15px; right: 15px; }
501
  .nav button { padding: 12px 18px; font-size: 0.8rem; background: rgba(0,0,0,0.8); }
502
  .slide-counter { bottom: 15px; left: 15px; font-size: 0.8rem; background: rgba(0,0,0,0.8); padding: 10px 15px; }
 
503
 
504
- /* Scrollbar sutil para móvil */
505
- .content-slide4::-webkit-scrollbar,
506
- .content-slide5::-webkit-scrollbar {
507
- width: 4px;
508
- }
509
- .content-slide4::-webkit-scrollbar-thumb,
510
- .content-slide5::-webkit-scrollbar-thumb {
511
- background: rgba(255,255,255,0.3);
512
- border-radius: 2px;
513
- }
514
  }
515
 
516
  @media (max-width: 480px) {
@@ -537,6 +351,7 @@
537
  .nav { bottom: 10px; right: 10px; gap: 8px; }
538
  .nav button { padding: 10px 15px; font-size: 0.75rem; background: rgba(0,0,0,0.85); border: 2px solid rgba(255,255,255,0.6); }
539
  .slide-counter { bottom: 10px; left: 10px; font-size: 0.75rem; background: rgba(0,0,0,0.85); padding: 8px 12px; }
 
540
  }
541
 
542
  @media (max-height: 500px) and (orientation: landscape) {
@@ -759,6 +574,15 @@
759
  <button id="btn-next" onclick="changeSlide(1)">NEXT</button>
760
  </div>
761
 
 
 
 
 
 
 
 
 
 
762
  <script>
763
  let currentSlide = 1;
764
  const totalSlides = 6;
@@ -788,6 +612,76 @@
788
  if (e.key === 'ArrowLeft') changeSlide(-1);
789
  });
790
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
791
  changeSlide(0);
792
  </script>
793
  </body>
 
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
  <title>MIGUEL - Pitch Deck</title>
7
+
8
+ <!-- LIBRERÍAS PARA PDF -->
9
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
10
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
11
+
12
  <style>
13
  @import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,600;1,400&family=Manrope:wght@200;300;400;500;600;700&display=swap');
14
 
 
47
  from { opacity: 0; transform: translateY(30px); }
48
  to { opacity: 1; transform: translateY(0); }
49
  }
50
+ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
 
 
 
 
 
51
  @keyframes slideInLeft {
52
  from { opacity: 0; transform: translateX(-40px); }
53
  to { opacity: 1; transform: translateX(0); }
54
  }
 
55
  @keyframes scaleIn {
56
  from { opacity: 0; transform: scale(0.95); }
57
  to { opacity: 1; transform: scale(1); }
58
  }
 
 
 
 
 
 
59
  @keyframes fadeInOverlay {
60
  from { opacity: 0; }
61
  to { opacity: 1; }
62
  }
63
+ @keyframes spin {
64
+ to { transform: rotate(360deg); }
65
+ }
66
+
67
+ /* === TIMINGS: 1.5s de imagen limpia === */
68
+ .animate-overlay { animation: fadeInOverlay 1.5s ease-out forwards; animation-delay: 1.5s; }
69
+ .animate-title { opacity: 0; animation: fadeInUp 1s ease-out forwards; animation-delay: 1.8s; }
70
+ .animate-tagline { opacity: 0; animation: fadeIn 1.2s ease-out forwards; animation-delay: 1.6s; }
71
+ .animate-credits { opacity: 0; animation: fadeInUp 1s ease-out forwards; animation-delay: 2.2s; }
72
+ .animate-genre { opacity: 0; animation: fadeIn 1s ease-out forwards; animation-delay: 2.6s; }
73
+ .animate-text { opacity: 0; animation: slideInLeft 1s ease-out forwards; animation-delay: 1.8s; }
74
+ .animate-title-slide { opacity: 0; animation: fadeInUp 0.8s ease-out forwards; animation-delay: 1.6s; }
75
+ .animate-table { opacity: 0; animation: fadeIn 1.2s ease-out forwards; animation-delay: 1.8s; }
76
+ .animate-notes { opacity: 0; animation: fadeInUp 1s ease-out forwards; animation-delay: 2.5s; }
77
+ .animate-contact { opacity: 0; animation: slideInLeft 0.8s ease-out forwards; animation-delay: 1.6s; }
78
+ .animate-contact-item { opacity: 0; animation: fadeInUp 0.6s ease-out forwards; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  .animate-contact-item:nth-child(1) { animation-delay: 2.0s; }
80
  .animate-contact-item:nth-child(2) { animation-delay: 2.2s; }
81
  .animate-contact-item:nth-child(3) { animation-delay: 2.4s; }
82
+ .animate-miembro { opacity: 0; animation: scaleIn 0.8s ease-out forwards; }
 
 
 
 
83
  .animate-miembro:nth-child(1) { animation-delay: 1.8s; }
84
  .animate-miembro:nth-child(2) { animation-delay: 2.0s; }
85
  .animate-miembro:nth-child(3) { animation-delay: 2.2s; }
86
+ .animate-highlight { opacity: 0; animation: fadeInUp 0.8s ease-out forwards; animation-delay: 1.8s; }
 
 
 
 
 
87
 
88
  /* ===================== ESTILOS GENERALES ===================== */
89
  .tagline-top {
 
97
  letter-spacing: 25px; margin-top: 80px; margin-bottom: 20px;
98
  text-shadow: 0 5px 25px rgba(0,0,0,0.8);
99
  }
100
+ .credits-bottom { margin-top: 180px; width: 80%; margin-left: auto; margin-right: auto; }
 
 
101
  .credits {
102
  font-family: 'Manrope', sans-serif; font-size: 1.5rem; font-weight: 500;
103
  letter-spacing: 1px; line-height: 2; text-shadow: 0 2px 15px rgba(0,0,0,1); margin-bottom: 30px;
104
  }
105
  .credits span { display: block; white-space: nowrap; }
106
+ .credits a { color: #fff; text-decoration: none; border-bottom: 1px solid rgba(255,255,255,0.3); transition: all 0.3s; }
107
+ .credits a:hover { color: #4ade80; border-bottom-color: #4ade80; }
 
 
 
 
 
 
 
 
108
  .genre {
109
  font-family: 'Manrope', sans-serif; font-size: 1rem; letter-spacing: 6px;
110
  border-top: 1px solid rgba(255,255,255,0.6); display: inline-block;
 
112
  text-shadow: 0 2px 10px rgba(0,0,0,1);
113
  }
114
 
115
+ .overlay-slide2 { background: linear-gradient(to bottom, rgba(0,0,0,0.98) 0%, rgba(0,0,0,0.0) 100%); }
116
+ .content-slide2 { position: absolute; top: 35px; left: 5%; width: 85%; z-index: 10; text-align: left; }
 
 
 
 
117
  .titulo-slide2 {
118
  font-family: 'EB Garamond', serif; font-size: 4.8rem; margin-bottom: 15px;
119
  font-weight: 600; letter-spacing: 2px; text-shadow: 0 4px 10px rgba(0,0,0,0.9); line-height: 1;
 
141
  margin-bottom: 10px; letter-spacing: 1px; border-bottom: 1px solid rgba(255,255,255,0.3);
142
  padding-bottom: 12px; display: block;
143
  }
144
+ .miembro-nombre a { color: #fff; text-decoration: none; transition: all 0.3s; }
145
+ .miembro-nombre a:hover { color: #4ade80; }
 
 
 
 
 
 
146
  .miembro-rol {
147
  font-size: 0.9rem; text-transform: uppercase; letter-spacing: 2px;
148
  opacity: 0.8; margin-bottom: 15px; display: block; font-weight: 400; color: #fff;
149
  }
150
  .miembro-bio { font-size: 1rem; line-height: 1.7; font-weight: 300; opacity: 0.95; }
151
 
152
+ .overlay-slide4 { background: linear-gradient(to right, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.8) 60%, rgba(0,0,0,0.0) 100%); }
153
+ .content-slide4 { position: absolute; top: 20px; left: 5%; width: 60%; z-index: 10; }
 
 
 
 
154
  .titulo-slide4 {
155
  font-family: 'EB Garamond', serif; font-size: 3.2rem; font-weight: 600;
156
  letter-spacing: 2px; margin-bottom: 0px; text-shadow: 0 4px 10px rgba(0,0,0,0.9);
 
159
  font-family: 'Manrope', sans-serif; font-size: 1rem; font-weight: 400;
160
  letter-spacing: 3px; text-transform: uppercase; opacity: 0.8; margin-bottom: 20px;
161
  }
162
+ .highlight-row { display: flex; align-items: flex-start; gap: 20px; margin-bottom: 25px; flex-wrap: wrap; }
 
 
163
  .highlight-box {
164
  background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.2);
165
  padding: 15px 20px; display: inline-flex; align-items: baseline; gap: 15px;
166
  border-radius: 4px; flex-shrink: 0;
167
  }
168
+ .highlight-number { font-family: 'Manrope', sans-serif; font-size: 2.8rem; font-weight: 700; color: #fff; line-height: 1; }
169
+ .highlight-text { font-family: 'Manrope', sans-serif; font-size: 0.9rem; font-weight: 500; letter-spacing: 2px; text-transform: uppercase; color: #ccc; }
170
+ .sources-box { font-size: 0.8rem; color: #bbb; line-height: 1.5; max-width: 400px; padding-top: 5px; }
 
 
 
 
 
 
 
 
171
  .table-container { display: grid; gap: 6px; }
172
  .table-row {
173
  display: grid; grid-template-columns: 2.2fr 0.8fr 0.8fr; padding: 8px 0;
174
  border-bottom: 1px solid rgba(255,255,255,0.1); align-items: start;
175
  }
176
  .col-movie-header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 5px; }
177
+ .col-movie-header strong { font-family: 'EB Garamond', serif; font-size: 1.05rem; font-weight: 600; color: #fff; }
 
 
178
  .col-movie-header span.year { font-size: 0.85rem; color: #888; }
179
+ .col-movie-header span.country { font-family: 'Manrope', sans-serif; font-size: 0.8rem; font-weight: 700; color: #999; letter-spacing: 1px; }
 
 
 
180
  .col-movie-desc { font-size: 0.75rem; line-height: 1.4; color: #aaa; display: block; margin-top: 2px; }
181
+ .col-budget, .col-roi { font-family: 'Manrope', sans-serif; font-size: 0.95rem; font-weight: 700; text-align: right; padding-top: 2px; }
182
+ .roi-excellent { color: #4ade80; } .roi-good { color: #22c55e; } .roi-ok { color: #fbbf24; } .roi-risk { color: #fb923c; } .roi-low { color: #f87171; }
 
 
 
 
 
 
 
183
 
184
+ .overlay-slide5 { background: linear-gradient(to right, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.7) 55%, rgba(0,0,0,0.0) 100%); }
185
+ .content-slide5 { position: absolute; top: 40px; left: 5%; width: 65%; z-index: 10; }
 
 
 
 
186
  .titulo-slide5 {
187
  font-family: 'EB Garamond', serif; font-size: 3.5rem; font-weight: 600;
188
  letter-spacing: 2px; margin-bottom: 25px; text-shadow: 0 4px 15px rgba(0,0,0,0.9);
189
  }
190
+ .cascada-table { width: 100%; border-collapse: collapse; margin-bottom: 20px; font-size: 0.95rem; }
191
+ .cascada-table th { text-align: left; padding: 12px 15px; border-bottom: 2px solid rgba(255,255,255,0.3); font-family: 'Manrope', sans-serif; font-weight: 600; font-size: 0.85rem; letter-spacing: 1px; text-transform: uppercase; color: #ccc; }
192
+ .cascada-table td { padding: 12px 15px; border-bottom: 1px solid rgba(255,255,255,0.1); vertical-align: top; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  .cascada-table .col-etapa { width: 20%; font-weight: 700; color: #fff; }
194
  .cascada-table .col-concepto { width: 50%; color: #ddd; }
195
+ .cascada-table .col-monto { width: 30%; text-align: right; font-weight: 700; color: #4ade80; font-size: 1.05rem; }
 
 
196
  .cascada-table .total-row { background: rgba(255,255,255,0.08); }
197
  .cascada-table .total-row td { border-bottom: 2px solid rgba(255,255,255,0.4); font-weight: 700; }
198
  .cascada-table .total-row .col-monto { color: #fbbf24; font-size: 1.15rem; }
199
  .cascada-table .fase3-row .col-monto { color: #fbbf24; }
 
200
  .notas-tecnicas {
201
+ background: rgba(0,0,0,0.8); border-left: 3px solid rgba(255,255,255,0.3);
202
+ padding: 20px; margin-top: 110px; backdrop-filter: blur(5px);
203
+ }
204
+ .notas-tecnicas h3 { font-family: 'EB Garamond', serif; font-size: 1.3rem; margin-bottom: 15px; color: #fff; font-weight: 600; }
205
+ .nota-item { margin-bottom: 15px; font-size: 0.85rem; line-height: 1.6; color: #ccc; }
206
+ .nota-item strong { color: #fff; display: block; margin-bottom: 5px; font-weight: 600; }
207
+
208
+ .overlay-slide6 { background: linear-gradient(to right, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.8) 50%, rgba(0,0,0,0.0) 100%); }
209
+ .content-slide6 { position: absolute; top: 50%; left: 5%; transform: translateY(-50%); width: 50%; z-index: 10; }
210
+ .gracias-title { font-family: 'EB Garamond', serif; font-size: 4.5rem; font-weight: 600; margin-bottom: 50px; letter-spacing: 3px; text-shadow: 0 4px 20px rgba(0,0,0,0.9); }
211
+ .contacto-nombre { font-family: 'EB Garamond', serif; font-size: 2rem; font-weight: 600; margin-bottom: 30px; color: #fff; letter-spacing: 2px; }
212
+ .contacto-item { display: flex; align-items: center; gap: 15px; margin-bottom: 20px; font-size: 1.1rem; color: #ddd; }
213
+ .contacto-item a { color: #fff; text-decoration: none; transition: color 0.3s; }
214
+ .contacto-item a:hover { color: #4ade80; }
215
+ .whatsapp-icon { width: 24px; height: 24px; fill: #25D366; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  .talishte-credit {
217
+ position: absolute; bottom: 85px; right: 5%; font-size: 0.9rem; font-weight: 700;
218
+ color: #1a1a1a; z-index: 5; text-shadow: 0 0 10px rgba(255,255,255,0.6);
219
+ }
220
+ .talishte-credit a { color: #000; text-decoration: none; font-weight: 700; border-bottom: 2px solid #000; transition: color 0.3s; }
221
+ .talishte-credit a:hover { color: #333; border-bottom-color: #333; }
222
+
223
+ /* ===================== NAVEGACI��N & BOTÓN PDF ===================== */
224
+ .nav { position: fixed; bottom: 30px; right: 30px; z-index: 1000; display: flex; gap: 10px; }
225
+ .nav button, #btn-pdf {
226
+ background: rgba(0,0,0,0.7); border: 2px solid rgba(255,255,255,0.5);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  color: white; padding: 12px 20px; cursor: pointer;
228
  font-family: 'Manrope', sans-serif; font-size: 0.85rem; letter-spacing: 2px;
229
  transition: 0.3s; border-radius: 5px; backdrop-filter: blur(5px);
230
  }
231
+ .nav button:hover, #btn-pdf:hover { background: rgba(0,0,0,0.9); border-color: white; }
232
+ .nav button:active, #btn-pdf:active { transform: scale(0.95); }
233
+ .nav button:disabled, #btn-pdf:disabled { opacity: 0.3; cursor: not-allowed; }
234
 
235
  .slide-counter {
236
  position: fixed; bottom: 30px; left: 30px; z-index: 1000;
 
238
  background: rgba(0,0,0,0.6); padding: 8px 15px; border-radius: 5px; backdrop-filter: blur(5px);
239
  }
240
 
241
+ /* BOTÓN PDF: ARRIBA DERECHA FIJO */
242
+ #btn-pdf {
243
+ position: fixed;
244
+ top: 30px;
245
+ right: 30px;
246
+ z-index: 1001;
247
+ display: flex;
248
+ align-items: center;
249
+ gap: 8px;
250
+ }
251
+
252
+ /* LOADING OVERLAY */
253
+ #pdf-loading {
254
+ position: fixed; top: 0; left: 0; width: 100%; height: 100%;
255
+ background: rgba(0,0,0,0.9);
256
+ z-index: 2000;
257
+ display: none;
258
+ flex-direction: column;
259
+ justify-content: center;
260
+ align-items: center;
261
+ gap: 20px;
262
+ backdrop-filter: blur(5px);
263
+ }
264
+ .spinner {
265
+ width: 50px; height: 50px;
266
+ border: 4px solid rgba(255,255,255,0.2);
267
+ border-top-color: #fff;
268
+ border-radius: 50%;
269
+ animation: spin 1s linear infinite;
270
+ }
271
+ #pdf-loading p {
272
+ font-family: 'Manrope', sans-serif;
273
+ font-size: 1.2rem;
274
+ color: #fff;
275
+ letter-spacing: 1px;
276
+ }
277
+
278
  /* ===================== RESPONSIVE + SCROLL FIX ===================== */
279
  @media (max-width: 1024px) {
280
  .titulo-main { font-size: 6rem; letter-spacing: 15px; }
 
303
  }
304
  .content-slide4, .content-slide5 {
305
  width: 90%; left: 5%;
306
+ max-height: calc(100vh - 140px);
 
307
  overflow-y: auto;
308
  padding-bottom: 20px;
309
  }
 
321
  .nav { bottom: 15px; right: 15px; }
322
  .nav button { padding: 12px 18px; font-size: 0.8rem; background: rgba(0,0,0,0.8); }
323
  .slide-counter { bottom: 15px; left: 15px; font-size: 0.8rem; background: rgba(0,0,0,0.8); padding: 10px 15px; }
324
+ #btn-pdf { top: 15px; right: 15px; padding: 10px 15px; font-size: 0.8rem; }
325
 
326
+ .content-slide4::-webkit-scrollbar, .content-slide5::-webkit-scrollbar { width: 4px; }
327
+ .content-slide4::-webkit-scrollbar-thumb, .content-slide5::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.3); border-radius: 2px; }
 
 
 
 
 
 
 
 
328
  }
329
 
330
  @media (max-width: 480px) {
 
351
  .nav { bottom: 10px; right: 10px; gap: 8px; }
352
  .nav button { padding: 10px 15px; font-size: 0.75rem; background: rgba(0,0,0,0.85); border: 2px solid rgba(255,255,255,0.6); }
353
  .slide-counter { bottom: 10px; left: 10px; font-size: 0.75rem; background: rgba(0,0,0,0.85); padding: 8px 12px; }
354
+ #btn-pdf { top: 10px; right: 10px; padding: 8px 12px; font-size: 0.75rem; }
355
  }
356
 
357
  @media (max-height: 500px) and (orientation: landscape) {
 
574
  <button id="btn-next" onclick="changeSlide(1)">NEXT</button>
575
  </div>
576
 
577
+ <!-- BOTÓN PDF (ARRIBA DERECHA) -->
578
+ <button id="btn-pdf" onclick="generatePDF()">📥 PDF</button>
579
+
580
+ <!-- OVERLAY DE CARGA -->
581
+ <div id="pdf-loading">
582
+ <div class="spinner"></div>
583
+ <p>El PDF se está generando...</p>
584
+ </div>
585
+
586
  <script>
587
  let currentSlide = 1;
588
  const totalSlides = 6;
 
612
  if (e.key === 'ArrowLeft') changeSlide(-1);
613
  });
614
 
615
+ // ===================== GENERADOR DE PDF =====================
616
+ async function generatePDF() {
617
+ const loadingOverlay = document.getElementById('pdf-loading');
618
+ const btnPdf = document.getElementById('btn-pdf');
619
+
620
+ loadingOverlay.style.display = 'flex';
621
+ btnPdf.disabled = true;
622
+
623
+ try {
624
+ const { jsPDF } = window.jspdf;
625
+ // Formato horizontal 16:9 en px para máxima calidad en pantalla
626
+ const pdf = new jsPDF({ orientation: 'landscape', unit: 'px', format: [1920, 1080] });
627
+
628
+ const slides = document.querySelectorAll('.slide');
629
+ const tempContainer = document.createElement('div');
630
+ tempContainer.style.cssText = 'position: absolute; left: -9999px; top: 0; width: 1920px; height: 1080px; z-index: -1;';
631
+ document.body.appendChild(tempContainer);
632
+
633
+ for (let i = 0; i < slides.length; i++) {
634
+ const clone = slides[i].cloneNode(true);
635
+ clone.style.display = 'flex';
636
+ clone.style.width = '1920px';
637
+ clone.style.height = '1080px';
638
+
639
+ // Forzar estado final de animaciones
640
+ const animatedElements = clone.querySelectorAll('[class*="animate-"]');
641
+ animatedElements.forEach(el => {
642
+ el.style.animation = 'none';
643
+ el.style.opacity = '1';
644
+ el.style.transform = 'none';
645
+ });
646
+
647
+ // Forzar overlays visibles
648
+ const overlays = clone.querySelectorAll('.overlay, .overlay-slide2, .overlay-slide4, .overlay-slide5, .overlay-slide6');
649
+ overlays.forEach(el => el.style.opacity = '1');
650
+
651
+ tempContainer.innerHTML = '';
652
+ tempContainer.appendChild(clone);
653
+
654
+ // Esperar renderizado
655
+ await new Promise(res => setTimeout(res, 600));
656
+
657
+ const canvas = await html2canvas(clone, {
658
+ scale: 2,
659
+ useCORS: true,
660
+ allowTaint: true,
661
+ backgroundColor: '#050505',
662
+ width: 1920,
663
+ height: 1080
664
+ });
665
+
666
+ const imgData = canvas.toDataURL('image/png');
667
+ pdf.addImage(imgData, 'PNG', 0, 0, 1920, 1080);
668
+
669
+ if (i < slides.length - 1) {
670
+ pdf.addPage();
671
+ }
672
+ }
673
+
674
+ document.body.removeChild(tempContainer);
675
+ pdf.save('MIGUEL_PitchDeck.pdf');
676
+ } catch (err) {
677
+ console.error('Error generando PDF:', err);
678
+ alert('Hubo un error al generar el PDF. Por favor intenta de nuevo.');
679
+ } finally {
680
+ loadingOverlay.style.display = 'none';
681
+ btnPdf.disabled = false;
682
+ }
683
+ }
684
+
685
  changeSlide(0);
686
  </script>
687
  </body>