Spaces:
Running
Running
Update index.html
Browse files- index.html +61 -22
index.html
CHANGED
|
@@ -166,32 +166,46 @@
|
|
| 166 |
.roi-excellent { color: #4ade80; } .roi-good { color: #22c55e; } .roi-ok { color: #fbbf24; } .roi-risk { color: #fb923c; } .roi-low { color: #f87171; }
|
| 167 |
|
| 168 |
.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%); }
|
| 169 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
.titulo-slide5 {
|
| 171 |
-
font-family: 'EB Garamond', serif;
|
| 172 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
}
|
| 174 |
.slide5-desc {
|
| 175 |
-
font-family: 'Manrope', sans-serif; font-size:
|
| 176 |
-
margin-bottom:
|
| 177 |
}
|
| 178 |
-
.cascada-table { width: 100%; border-collapse: collapse; margin-bottom: 20px; font-size: 0.
|
| 179 |
-
.cascada-table th { text-align: left; padding:
|
| 180 |
-
.cascada-table td { padding:
|
| 181 |
.cascada-table .col-etapa { width: 20%; font-weight: 700; color: #fff; }
|
| 182 |
.cascada-table .col-concepto { width: 50%; color: #ddd; }
|
| 183 |
-
.cascada-table .col-monto { width: 30%; text-align: right; font-weight: 700; color: #4ade80; font-size:
|
| 184 |
.cascada-table .total-row { background: rgba(255,255,255,0.08); }
|
| 185 |
.cascada-table .total-row td { border-bottom: 2px solid rgba(255,255,255,0.4); font-weight: 700; }
|
| 186 |
-
.cascada-table .total-row .col-monto { color: #fbbf24; font-size: 1.
|
| 187 |
.cascada-table .fase3-row .col-monto { color: #fbbf24; }
|
| 188 |
.notas-tecnicas {
|
| 189 |
background: rgba(0,0,0,0.8); border-left: 3px solid rgba(255,255,255,0.3);
|
| 190 |
-
padding:
|
| 191 |
}
|
| 192 |
-
.notas-tecnicas h3 { font-family: 'EB Garamond', serif; font-size: 1.
|
| 193 |
-
.nota-item { margin-bottom:
|
| 194 |
-
.nota-item strong { color: #fff; display: block; margin-bottom:
|
| 195 |
|
| 196 |
.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%); }
|
| 197 |
.content-slide6 { position: absolute; top: 50%; left: 5%; transform: translateY(-50%); width: 50%; z-index: 10; }
|
|
@@ -213,7 +227,7 @@
|
|
| 213 |
position: fixed;
|
| 214 |
bottom: 0; left: 0; width: 100%;
|
| 215 |
z-index: 1000;
|
| 216 |
-
pointer-events: none;
|
| 217 |
}
|
| 218 |
.bottom-controls > * { pointer-events: auto; }
|
| 219 |
|
|
@@ -283,7 +297,7 @@
|
|
| 283 |
.titulo-main { font-size: 6rem; letter-spacing: 15px; }
|
| 284 |
.titulo-slide2 { font-size: 3.5rem; }
|
| 285 |
.titulo-slide4 { font-size: 2.5rem; }
|
| 286 |
-
.titulo-slide5 { font-size:
|
| 287 |
.gracias-title { font-size: 3.5rem; }
|
| 288 |
.equipo-container { grid-template-columns: 1fr 1fr; gap: 20px; }
|
| 289 |
.table-row { grid-template-columns: 1.8fr 0.8fr 0.7fr; }
|
|
@@ -312,7 +326,7 @@
|
|
| 312 |
}
|
| 313 |
.content-slide6 { width: 90%; left: 5%; }
|
| 314 |
.titulo-slide4 { font-size: 1.8rem; }
|
| 315 |
-
.titulo-slide5 { font-size:
|
| 316 |
.gracias-title { font-size: 2.5rem; margin-bottom: 30px; }
|
| 317 |
.contacto-nombre { font-size: 1.4rem; }
|
| 318 |
.table-row { grid-template-columns: 1fr; gap: 5px; padding: 10px 0; }
|
|
@@ -320,7 +334,7 @@
|
|
| 320 |
.col-movie-desc { font-size: 0.7rem; }
|
| 321 |
.cascada-table { font-size: 0.85rem; }
|
| 322 |
.cascada-table th, .cascada-table td { padding: 8px 10px; }
|
| 323 |
-
.notas-tecnicas { margin-top:
|
| 324 |
|
| 325 |
/* MÓVIL: BARRA INFERIOR FLEX UNIFICADA */
|
| 326 |
.bottom-controls {
|
|
@@ -375,7 +389,7 @@
|
|
| 375 |
.titulo-slide-top-right { font-size: 1.4rem; }
|
| 376 |
.miembro-nombre { font-size: 1.2rem; }
|
| 377 |
.miembro-bio { font-size: 0.85rem; }
|
| 378 |
-
.titulo-slide4, .titulo-slide5 { font-size: 1.
|
| 379 |
.highlight-number { font-size: 1.8rem; }
|
| 380 |
.highlight-text { font-size: 0.7rem; }
|
| 381 |
.gracias-title { font-size: 2rem; letter-spacing: 2px; }
|
|
@@ -383,8 +397,8 @@
|
|
| 383 |
.whatsapp-icon { width: 20px; height: 20px; }
|
| 384 |
.table-row { font-size: 0.8rem; }
|
| 385 |
.cascada-table { font-size: 0.75rem; }
|
| 386 |
-
.notas-tecnicas h3 { font-size:
|
| 387 |
-
.nota-item { font-size: 0.
|
| 388 |
|
| 389 |
.bottom-controls { bottom: 10px; padding: 0 10px; }
|
| 390 |
.slide-counter { padding: 5px 8px; font-size: 0.7rem; }
|
|
@@ -682,7 +696,7 @@
|
|
| 682 |
if (e.key === 'ArrowLeft') changeSlide(-1);
|
| 683 |
});
|
| 684 |
|
| 685 |
-
// ===================== GENERADOR DE PDF -
|
| 686 |
async function generatePDF() {
|
| 687 |
const loadingOverlay = document.getElementById('pdf-loading');
|
| 688 |
const progressText = document.getElementById('progress-text');
|
|
@@ -710,6 +724,20 @@
|
|
| 710 |
slide.classList.add('capture-mode');
|
| 711 |
slide.style.display = 'flex';
|
| 712 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 713 |
const animatedElements = slide.querySelectorAll('[class*="animate-"]');
|
| 714 |
animatedElements.forEach(el => {
|
| 715 |
el.style.animation = 'none';
|
|
@@ -718,6 +746,7 @@
|
|
| 718 |
void el.offsetWidth;
|
| 719 |
});
|
| 720 |
|
|
|
|
| 721 |
const links = [];
|
| 722 |
slide.querySelectorAll('a[href]').forEach(link => {
|
| 723 |
const rect = link.getBoundingClientRect();
|
|
@@ -727,8 +756,10 @@
|
|
| 727 |
}
|
| 728 |
});
|
| 729 |
|
|
|
|
| 730 |
await new Promise(resolve => setTimeout(resolve, 1500));
|
| 731 |
|
|
|
|
| 732 |
const bgStyle = window.getComputedStyle(slide).backgroundImage;
|
| 733 |
const urlMatch = bgStyle.match(/url\(["']?(.*?)["']?\)/);
|
| 734 |
if (urlMatch && urlMatch[1]) {
|
|
@@ -744,15 +775,23 @@
|
|
| 744 |
} catch (e) { console.warn("BG conversion failed:", e); }
|
| 745 |
}
|
| 746 |
|
|
|
|
| 747 |
const canvas = await html2canvas(slide, {
|
| 748 |
scale: 1, useCORS: false, allowTaint: false, backgroundColor: '#050505',
|
| 749 |
logging: false, width: 1920, height: 1080, windowWidth: 1920, windowHeight: 1080,
|
| 750 |
scrollX: 0, scrollY: 0, x: 0, y: 0, foreignObjectRendering: true, removeContainer: true
|
| 751 |
});
|
| 752 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 753 |
if (i > 0) pdf.addPage();
|
| 754 |
pdf.addImage(canvas.toDataURL('image/jpeg', 0.95), 'JPEG', 0, 0, 1920, 1080, undefined, 'FAST');
|
| 755 |
|
|
|
|
| 756 |
links.forEach(link => {
|
| 757 |
pdf.link(link.x, link.y, link.width, link.height, { url: link.url });
|
| 758 |
});
|
|
|
|
| 166 |
.roi-excellent { color: #4ade80; } .roi-good { color: #22c55e; } .roi-ok { color: #fbbf24; } .roi-risk { color: #fb923c; } .roi-low { color: #f87171; }
|
| 167 |
|
| 168 |
.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%); }
|
| 169 |
+
/* Ajustes clave para SCROLL y TAMAÑO */
|
| 170 |
+
.content-slide5 {
|
| 171 |
+
position: absolute;
|
| 172 |
+
top: 20px;
|
| 173 |
+
left: 5%;
|
| 174 |
+
width: 65%;
|
| 175 |
+
z-index: 10;
|
| 176 |
+
max-height: 85vh; /* Permite scroll si es necesario */
|
| 177 |
+
overflow-y: auto; /* Activa scroll vertical */
|
| 178 |
+
padding-bottom: 50px; /* Espacio al final del scroll */
|
| 179 |
+
}
|
| 180 |
.titulo-slide5 {
|
| 181 |
+
font-family: 'EB Garamond', serif;
|
| 182 |
+
font-size: 2.2rem; /* REDUCIDO: de 3.5rem a 2.2rem */
|
| 183 |
+
font-weight: 600;
|
| 184 |
+
letter-spacing: 1px;
|
| 185 |
+
margin-bottom: 15px; /* Menor margen inferior */
|
| 186 |
+
text-shadow: 0 4px 15px rgba(0,0,0,0.9);
|
| 187 |
}
|
| 188 |
.slide5-desc {
|
| 189 |
+
font-family: 'Manrope', sans-serif; font-size: 0.95rem; line-height: 1.6;
|
| 190 |
+
margin-bottom: 20px; color: #ddd; opacity: 0.9;
|
| 191 |
}
|
| 192 |
+
.cascada-table { width: 100%; border-collapse: collapse; margin-bottom: 20px; font-size: 0.9rem; }
|
| 193 |
+
.cascada-table th { text-align: left; padding: 10px 12px; border-bottom: 2px solid rgba(255,255,255,0.3); font-family: 'Manrope', sans-serif; font-weight: 600; font-size: 0.8rem; letter-spacing: 1px; text-transform: uppercase; color: #ccc; }
|
| 194 |
+
.cascada-table td { padding: 10px 12px; border-bottom: 1px solid rgba(255,255,255,0.1); vertical-align: top; }
|
| 195 |
.cascada-table .col-etapa { width: 20%; font-weight: 700; color: #fff; }
|
| 196 |
.cascada-table .col-concepto { width: 50%; color: #ddd; }
|
| 197 |
+
.cascada-table .col-monto { width: 30%; text-align: right; font-weight: 700; color: #4ade80; font-size: 1rem; }
|
| 198 |
.cascada-table .total-row { background: rgba(255,255,255,0.08); }
|
| 199 |
.cascada-table .total-row td { border-bottom: 2px solid rgba(255,255,255,0.4); font-weight: 700; }
|
| 200 |
+
.cascada-table .total-row .col-monto { color: #fbbf24; font-size: 1.05rem; }
|
| 201 |
.cascada-table .fase3-row .col-monto { color: #fbbf24; }
|
| 202 |
.notas-tecnicas {
|
| 203 |
background: rgba(0,0,0,0.8); border-left: 3px solid rgba(255,255,255,0.3);
|
| 204 |
+
padding: 15px; margin-top: 20px; /* Menor margen superior */
|
| 205 |
}
|
| 206 |
+
.notas-tecnicas h3 { font-family: 'EB Garamond', serif; font-size: 1.2rem; margin-bottom: 10px; color: #fff; font-weight: 600; }
|
| 207 |
+
.nota-item { margin-bottom: 12px; font-size: 0.8rem; line-height: 1.5; color: #ccc; }
|
| 208 |
+
.nota-item strong { color: #fff; display: block; margin-bottom: 4px; font-weight: 600; }
|
| 209 |
|
| 210 |
.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%); }
|
| 211 |
.content-slide6 { position: absolute; top: 50%; left: 5%; transform: translateY(-50%); width: 50%; z-index: 10; }
|
|
|
|
| 227 |
position: fixed;
|
| 228 |
bottom: 0; left: 0; width: 100%;
|
| 229 |
z-index: 1000;
|
| 230 |
+
pointer-events: none;
|
| 231 |
}
|
| 232 |
.bottom-controls > * { pointer-events: auto; }
|
| 233 |
|
|
|
|
| 297 |
.titulo-main { font-size: 6rem; letter-spacing: 15px; }
|
| 298 |
.titulo-slide2 { font-size: 3.5rem; }
|
| 299 |
.titulo-slide4 { font-size: 2.5rem; }
|
| 300 |
+
.titulo-slide5 { font-size: 2rem; } /* Más pequeño en tablet */
|
| 301 |
.gracias-title { font-size: 3.5rem; }
|
| 302 |
.equipo-container { grid-template-columns: 1fr 1fr; gap: 20px; }
|
| 303 |
.table-row { grid-template-columns: 1.8fr 0.8fr 0.7fr; }
|
|
|
|
| 326 |
}
|
| 327 |
.content-slide6 { width: 90%; left: 5%; }
|
| 328 |
.titulo-slide4 { font-size: 1.8rem; }
|
| 329 |
+
.titulo-slide5 { font-size: 1.6rem; } /* Más pequeño en móvil */
|
| 330 |
.gracias-title { font-size: 2.5rem; margin-bottom: 30px; }
|
| 331 |
.contacto-nombre { font-size: 1.4rem; }
|
| 332 |
.table-row { grid-template-columns: 1fr; gap: 5px; padding: 10px 0; }
|
|
|
|
| 334 |
.col-movie-desc { font-size: 0.7rem; }
|
| 335 |
.cascada-table { font-size: 0.85rem; }
|
| 336 |
.cascada-table th, .cascada-table td { padding: 8px 10px; }
|
| 337 |
+
.notas-tecnicas { margin-top: 15px; padding: 12px; }
|
| 338 |
|
| 339 |
/* MÓVIL: BARRA INFERIOR FLEX UNIFICADA */
|
| 340 |
.bottom-controls {
|
|
|
|
| 389 |
.titulo-slide-top-right { font-size: 1.4rem; }
|
| 390 |
.miembro-nombre { font-size: 1.2rem; }
|
| 391 |
.miembro-bio { font-size: 0.85rem; }
|
| 392 |
+
.titulo-slide4, .titulo-slide5 { font-size: 1.5rem; }
|
| 393 |
.highlight-number { font-size: 1.8rem; }
|
| 394 |
.highlight-text { font-size: 0.7rem; }
|
| 395 |
.gracias-title { font-size: 2rem; letter-spacing: 2px; }
|
|
|
|
| 397 |
.whatsapp-icon { width: 20px; height: 20px; }
|
| 398 |
.table-row { font-size: 0.8rem; }
|
| 399 |
.cascada-table { font-size: 0.75rem; }
|
| 400 |
+
.notas-tecnicas h3 { font-size: 1rem; }
|
| 401 |
+
.nota-item { font-size: 0.7rem; }
|
| 402 |
|
| 403 |
.bottom-controls { bottom: 10px; padding: 0 10px; }
|
| 404 |
.slide-counter { padding: 5px 8px; font-size: 0.7rem; }
|
|
|
|
| 696 |
if (e.key === 'ArrowLeft') changeSlide(-1);
|
| 697 |
});
|
| 698 |
|
| 699 |
+
// ===================== GENERADOR DE PDF - CON MANEJO DE SCROLL =====================
|
| 700 |
async function generatePDF() {
|
| 701 |
const loadingOverlay = document.getElementById('pdf-loading');
|
| 702 |
const progressText = document.getElementById('progress-text');
|
|
|
|
| 724 |
slide.classList.add('capture-mode');
|
| 725 |
slide.style.display = 'flex';
|
| 726 |
|
| 727 |
+
// TRUCO PARA SLIDE 5: Expandir altura para capturar todo el texto
|
| 728 |
+
const contentSlide5 = slide.querySelector('.content-slide5');
|
| 729 |
+
let originalMaxHeight = '';
|
| 730 |
+
let originalOverflow = '';
|
| 731 |
+
|
| 732 |
+
if (contentSlide5) {
|
| 733 |
+
originalMaxHeight = contentSlide5.style.maxHeight;
|
| 734 |
+
originalOverflow = contentSlide5.style.overflow;
|
| 735 |
+
// Expande el contenedor al 100% del contenido para que html2canvas lo vea todo
|
| 736 |
+
contentSlide5.style.maxHeight = 'none';
|
| 737 |
+
contentSlide5.style.overflow = 'visible';
|
| 738 |
+
}
|
| 739 |
+
|
| 740 |
+
// Forzar animaciones a estado final
|
| 741 |
const animatedElements = slide.querySelectorAll('[class*="animate-"]');
|
| 742 |
animatedElements.forEach(el => {
|
| 743 |
el.style.animation = 'none';
|
|
|
|
| 746 |
void el.offsetWidth;
|
| 747 |
});
|
| 748 |
|
| 749 |
+
// Recolectar links
|
| 750 |
const links = [];
|
| 751 |
slide.querySelectorAll('a[href]').forEach(link => {
|
| 752 |
const rect = link.getBoundingClientRect();
|
|
|
|
| 756 |
}
|
| 757 |
});
|
| 758 |
|
| 759 |
+
// Esperar renderizado (un poco más para asegurar carga de fuentes expandidas)
|
| 760 |
await new Promise(resolve => setTimeout(resolve, 1500));
|
| 761 |
|
| 762 |
+
// Convertir bg a base64
|
| 763 |
const bgStyle = window.getComputedStyle(slide).backgroundImage;
|
| 764 |
const urlMatch = bgStyle.match(/url\(["']?(.*?)["']?\)/);
|
| 765 |
if (urlMatch && urlMatch[1]) {
|
|
|
|
| 775 |
} catch (e) { console.warn("BG conversion failed:", e); }
|
| 776 |
}
|
| 777 |
|
| 778 |
+
// Capturar
|
| 779 |
const canvas = await html2canvas(slide, {
|
| 780 |
scale: 1, useCORS: false, allowTaint: false, backgroundColor: '#050505',
|
| 781 |
logging: false, width: 1920, height: 1080, windowWidth: 1920, windowHeight: 1080,
|
| 782 |
scrollX: 0, scrollY: 0, x: 0, y: 0, foreignObjectRendering: true, removeContainer: true
|
| 783 |
});
|
| 784 |
|
| 785 |
+
// Restaurar estilos de scroll inmediatamente después de capturar
|
| 786 |
+
if (contentSlide5) {
|
| 787 |
+
contentSlide5.style.maxHeight = originalMaxHeight;
|
| 788 |
+
contentSlide5.style.overflow = originalOverflow;
|
| 789 |
+
}
|
| 790 |
+
|
| 791 |
if (i > 0) pdf.addPage();
|
| 792 |
pdf.addImage(canvas.toDataURL('image/jpeg', 0.95), 'JPEG', 0, 0, 1920, 1080, undefined, 'FAST');
|
| 793 |
|
| 794 |
+
// Agregar links
|
| 795 |
links.forEach(link => {
|
| 796 |
pdf.link(link.x, link.y, link.width, link.height, { url: link.url });
|
| 797 |
});
|