Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> | |
| <title>MIGUEL - Pitch Deck</title> | |
| <!-- LIBRERÍAS PARA PDF --> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> | |
| <style> | |
| @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'); | |
| * { margin: 0; padding: 0; box-sizing: border-box; } | |
| body { | |
| font-family: 'Manrope', sans-serif; | |
| background: #050505; | |
| color: #f0f0f0; | |
| overflow: hidden; | |
| touch-action: manipulation; | |
| } | |
| .slide { | |
| width: 100vw; | |
| height: 100vh; | |
| position: relative; | |
| display: none; | |
| background-size: cover; | |
| background-position: center; | |
| background-repeat: no-repeat; | |
| } | |
| .slide.active { display: flex; align-items: center; justify-content: center; } | |
| .overlay, .overlay-slide2, .overlay-slide4, .overlay-slide5, .overlay-slide6 { | |
| position: absolute; top: 0; left: 0; width: 100%; height: 100%; | |
| z-index: 1; | |
| opacity: 0; | |
| pointer-events: none; | |
| } | |
| /* ===================== ANIMACIONES ===================== */ | |
| @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } | |
| @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } | |
| @keyframes slideInLeft { from { opacity: 0; transform: translateX(-40px); } to { opacity: 1; transform: translateX(0); } } | |
| @keyframes scaleIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } | |
| @keyframes fadeInOverlay { from { opacity: 0; } to { opacity: 1; } } | |
| @keyframes spin { to { transform: rotate(360deg); } } | |
| .animate-overlay { animation: fadeInOverlay 1.5s ease-out forwards; animation-delay: 1.5s; } | |
| .animate-title { opacity: 0; animation: fadeInUp 1s ease-out forwards; animation-delay: 1.8s; } | |
| .animate-tagline { opacity: 0; animation: fadeIn 1.2s ease-out forwards; animation-delay: 1.6s; } | |
| .animate-credits { opacity: 0; animation: fadeInUp 1s ease-out forwards; animation-delay: 2.2s; } | |
| .animate-genre { opacity: 0; animation: fadeIn 1s ease-out forwards; animation-delay: 2.6s; } | |
| .animate-text { opacity: 0; animation: slideInLeft 1s ease-out forwards; animation-delay: 1.8s; } | |
| .animate-title-slide { opacity: 0; animation: fadeInUp 0.8s ease-out forwards; animation-delay: 1.6s; } | |
| .animate-table { opacity: 0; animation: fadeIn 1.2s ease-out forwards; animation-delay: 1.8s; } | |
| .animate-notes { opacity: 0; animation: fadeInUp 1s ease-out forwards; animation-delay: 2.5s; } | |
| .animate-contact { opacity: 0; animation: slideInLeft 0.8s ease-out forwards; animation-delay: 1.6s; } | |
| .animate-contact-item { opacity: 0; animation: fadeInUp 0.6s ease-out forwards; } | |
| .animate-contact-item:nth-child(1) { animation-delay: 2.0s; } | |
| .animate-contact-item:nth-child(2) { animation-delay: 2.2s; } | |
| .animate-contact-item:nth-child(3) { animation-delay: 2.4s; } | |
| .animate-miembro { opacity: 0; animation: scaleIn 0.8s ease-out forwards; } | |
| .animate-miembro:nth-child(1) { animation-delay: 1.8s; } | |
| .animate-miembro:nth-child(2) { animation-delay: 2.0s; } | |
| .animate-miembro:nth-child(3) { animation-delay: 2.2s; } | |
| .animate-highlight { opacity: 0; animation: fadeInUp 0.8s ease-out forwards; animation-delay: 1.8s; } | |
| /* ===================== ESTILOS GENERALES ===================== */ | |
| .tagline-top { | |
| position: absolute; top: 25px; width: 100%; text-align: center; | |
| font-family: 'EB Garamond', serif; font-style: italic; font-size: 2rem; | |
| color: #000000; z-index: 10; font-weight: 600; | |
| text-shadow: 0 0 15px rgba(255,255,255,0.8); | |
| } | |
| .titulo-main { | |
| font-family: 'EB Garamond', serif; font-size: 9rem; font-weight: 400; | |
| letter-spacing: 25px; margin-top: 80px; margin-bottom: 20px; | |
| text-shadow: 0 5px 25px rgba(0,0,0,0.8); | |
| } | |
| .credits-bottom { margin-top: 180px; width: 80%; margin-left: auto; margin-right: auto; } | |
| .credits { | |
| font-family: 'Manrope', sans-serif; font-size: 1.5rem; font-weight: 500; | |
| letter-spacing: 1px; line-height: 2; text-shadow: 0 2px 15px rgba(0,0,0,1); margin-bottom: 30px; | |
| } | |
| .credits span { display: block; white-space: nowrap; } | |
| .credits a { color: #fff; text-decoration: none; border-bottom: 1px solid rgba(255,255,255,0.3); transition: all 0.3s; } | |
| .credits a:hover { color: #4ade80; border-bottom-color: #4ade80; } | |
| .genre { | |
| font-family: 'Manrope', sans-serif; font-size: 1rem; letter-spacing: 6px; | |
| border-top: 1px solid rgba(255,255,255,0.6); display: inline-block; | |
| padding-top: 20px; text-transform: uppercase; font-weight: 500; | |
| text-shadow: 0 2px 10px rgba(0,0,0,1); | |
| } | |
| .overlay-slide2 { background: linear-gradient(to bottom, rgba(0,0,0,0.98) 0%, rgba(0,0,0,0.0) 100%); } | |
| .content-slide2 { position: absolute; top: 35px; left: 5%; width: 85%; z-index: 10; text-align: left; } | |
| .titulo-slide2 { | |
| font-family: 'EB Garamond', serif; font-size: 4.8rem; margin-bottom: 15px; | |
| font-weight: 600; letter-spacing: 2px; text-shadow: 0 4px 10px rgba(0,0,0,0.9); line-height: 1; | |
| } | |
| .texto-slide2 { | |
| font-family: 'Manrope', sans-serif; font-size: 1.2rem; line-height: 1.85; | |
| text-align: justify; font-weight: 300; color: #f5f5f5; text-shadow: 0 2px 5px rgba(0,0,0,0.8); | |
| } | |
| .titulo-slide-top-right { | |
| font-family: 'EB Garamond', serif; font-size: 3.2rem; font-weight: 400; | |
| letter-spacing: 1px; text-align: right; position: absolute; | |
| top: 60px; right: 5%; z-index: 10; text-shadow: 0 4px 15px rgba(0,0,0,0.9); | |
| } | |
| .equipo-container { | |
| position: absolute; bottom: 60px; left: 5%; right: 5%; | |
| display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 30px; z-index: 10; | |
| } | |
| .miembro { | |
| padding: 25px; background: rgba(0,0,0,0.6); backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255,255,255,0.1); text-align: center; | |
| } | |
| .miembro-nombre { | |
| font-family: 'EB Garamond', serif; font-size: 1.8rem; font-weight: 700; | |
| margin-bottom: 10px; letter-spacing: 1px; border-bottom: 1px solid rgba(255,255,255,0.3); | |
| padding-bottom: 12px; display: block; | |
| } | |
| .miembro-nombre a { color: #4ade80; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; transition: all 0.3s; } | |
| .miembro-nombre a:hover { color: #86efac; text-decoration-thickness: 2px; } | |
| .miembro-rol { | |
| font-size: 0.9rem; text-transform: uppercase; letter-spacing: 2px; | |
| opacity: 0.8; margin-bottom: 15px; display: block; font-weight: 400; color: #fff; | |
| } | |
| .miembro-bio { font-size: 1rem; line-height: 1.7; font-weight: 300; opacity: 0.95; } | |
| .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%); } | |
| .content-slide4 { position: absolute; top: 20px; left: 5%; width: 60%; z-index: 10; } | |
| .titulo-slide4 { | |
| font-family: 'EB Garamond', serif; font-size: 3.2rem; font-weight: 600; | |
| letter-spacing: 2px; margin-bottom: 0px; text-shadow: 0 4px 10px rgba(0,0,0,0.9); | |
| } | |
| .subtitulo-slide4 { | |
| font-family: 'Manrope', sans-serif; font-size: 1rem; font-weight: 400; | |
| letter-spacing: 3px; text-transform: uppercase; opacity: 0.8; margin-bottom: 20px; | |
| } | |
| .highlight-row { display: flex; align-items: flex-start; gap: 20px; margin-bottom: 25px; flex-wrap: wrap; } | |
| .highlight-box { | |
| background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.2); | |
| padding: 15px 20px; display: inline-flex; align-items: baseline; gap: 15px; | |
| border-radius: 4px; flex-shrink: 0; | |
| } | |
| .highlight-number { font-family: 'Manrope', sans-serif; font-size: 2.8rem; font-weight: 700; color: #fff; line-height: 1; } | |
| .highlight-text { font-family: 'Manrope', sans-serif; font-size: 0.9rem; font-weight: 500; letter-spacing: 2px; text-transform: uppercase; color: #ccc; } | |
| .sources-box { font-size: 0.8rem; color: #bbb; line-height: 1.5; max-width: 400px; padding-top: 5px; } | |
| .table-container { display: grid; gap: 6px; } | |
| .table-row { | |
| display: grid; grid-template-columns: 2.2fr 0.8fr 0.8fr; padding: 8px 0; | |
| border-bottom: 1px solid rgba(255,255,255,0.1); align-items: start; | |
| } | |
| .col-movie-header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 5px; } | |
| .col-movie-header strong { font-family: 'EB Garamond', serif; font-size: 1.05rem; font-weight: 600; color: #fff; } | |
| .col-movie-header span.year { font-size: 0.85rem; color: #888; } | |
| .col-movie-header span.country { font-family: 'Manrope', sans-serif; font-size: 0.8rem; font-weight: 700; color: #999; letter-spacing: 1px; } | |
| .col-movie-desc { font-size: 0.75rem; line-height: 1.4; color: #aaa; display: block; margin-top: 2px; } | |
| .col-budget, .col-roi { font-family: 'Manrope', sans-serif; font-size: 0.95rem; font-weight: 700; text-align: right; padding-top: 2px; } | |
| .roi-excellent { color: #4ade80; } .roi-good { color: #22c55e; } .roi-ok { color: #fbbf24; } .roi-risk { color: #fb923c; } .roi-low { color: #f87171; } | |
| /* Slide 4 (Comparables Financieros) — compact 11-row table + bottom block + footer */ | |
| .content-slide4-wide { width: 70%; max-height: 92vh; overflow-y: auto; padding-bottom: 20px; } | |
| .table-container-compact { gap: 2px; margin-top: 8px; } | |
| .table-container-compact .table-row { padding: 5px 0; grid-template-columns: 2.4fr 0.6fr 0.7fr; } | |
| .table-container-compact .col-movie-header strong { font-size: 0.95rem; } | |
| .table-container-compact .col-movie-header span.year { font-size: 0.78rem; } | |
| .table-container-compact .col-movie-header span.country { font-size: 0.72rem; } | |
| .table-container-compact .col-movie-desc { font-size: 0.7rem; line-height: 1.3; } | |
| .table-container-compact .col-budget, .table-container-compact .col-roi { font-size: 0.85rem; } | |
| .comp-bottom-block { | |
| margin-top: 14px; padding: 10px 14px; | |
| background: rgba(0,0,0,0.55); border-left: 3px solid rgba(255,255,255,0.3); | |
| } | |
| .comp-bottom-row { | |
| display: flex; justify-content: space-between; align-items: baseline; | |
| font-size: 0.85rem; padding: 3px 0; color: #ddd; | |
| } | |
| .comp-bottom-row strong { font-family: 'Manrope', sans-serif; font-weight: 700; color: #fbbf24; font-size: 0.95rem; } | |
| .comp-footer { | |
| margin-top: 10px; font-size: 0.85rem; color: #ccc; letter-spacing: 0.5px; | |
| padding: 8px 0; border-top: 1px solid rgba(255,255,255,0.15); | |
| } | |
| .comp-footer strong { color: #fff; font-weight: 700; } | |
| .comp-disclaimer { | |
| margin-top: 18px; | |
| padding: 12px 16px; | |
| background: rgba(251, 191, 36, 0.08); | |
| border-left: 3px solid #fbbf24; | |
| border-radius: 4px; | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.78rem; | |
| line-height: 1.55; | |
| color: rgba(255, 255, 255, 0.82); | |
| } | |
| .comp-disclaimer strong { | |
| color: #fbbf24; | |
| font-weight: 700; | |
| } | |
| .table-header-row { | |
| grid-template-columns: 2.4fr 0.6fr 0.7fr; | |
| padding: 6px 0 8px 0 ; | |
| border-bottom: 2px solid rgba(255,255,255,0.3) ; | |
| margin-bottom: 4px; | |
| } | |
| .col-header-title { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| letter-spacing: 1.5px; | |
| text-transform: uppercase; | |
| color: #fbbf24; | |
| } | |
| .col-header-budget, | |
| .col-header-roi { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| letter-spacing: 1.5px; | |
| text-transform: uppercase; | |
| color: #fbbf24; | |
| text-align: right; | |
| } | |
| /* Slide 5 (Comparables Tonales) — 4 cluster grid */ | |
| .content-tonal { width: 90% ; max-height: 92vh; overflow-y: auto; padding-bottom: 20px; } | |
| .tonal-intro { | |
| font-family: 'Manrope', sans-serif; font-size: 1rem; line-height: 1.55; | |
| color: #ddd; max-width: 800px; margin: 8px 0 22px 0; opacity: 0.95; | |
| } | |
| .tonal-grid { | |
| display: grid; grid-template-columns: 1fr 1fr; gap: 16px; | |
| } | |
| .tonal-cluster { | |
| background: rgba(0,0,0,0.65); border: 1px solid rgba(255,255,255,0.18); | |
| border-left: 3px solid rgba(255,255,255,0.35); | |
| padding: 14px 16px; border-radius: 4px; | |
| } | |
| .tonal-cluster-anchor { | |
| border-left-color: #fbbf24; | |
| background: rgba(0,0,0,0.78); | |
| } | |
| .tonal-header { | |
| font-family: 'Manrope', sans-serif; font-size: 0.7rem; font-weight: 700; | |
| letter-spacing: 2.5px; color: #fbbf24; text-transform: uppercase; | |
| margin-bottom: 10px; padding-bottom: 6px; | |
| border-bottom: 1px solid rgba(255,255,255,0.15); | |
| } | |
| .tonal-row { | |
| display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; | |
| font-size: 0.92rem; padding: 3px 0; color: #fff; | |
| } | |
| .tonal-row strong { font-family: 'EB Garamond', serif; font-weight: 600; color: #fff; font-size: 1.05rem; } | |
| .tonal-row span { font-family: 'Manrope', sans-serif; font-size: 0.78rem; color: #aaa; font-weight: 400; } | |
| .tonal-desc { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; line-height: 1.45; | |
| color: #bbb; margin-top: 8px; font-style: italic; | |
| } | |
| .tonal-closing { | |
| margin-top: 18px; font-family: 'EB Garamond', serif; font-style: italic; | |
| font-size: 0.95rem; line-height: 1.55; color: #ccc; max-width: 900px; | |
| padding: 10px 0; border-top: 1px solid rgba(255,255,255,0.15); | |
| } | |
| /* Slide 5 (Comparables Tonales v2) — Constelación + tabla de validación */ | |
| .const-wrapper { | |
| display: grid; | |
| grid-template-columns: 1.1fr 1fr; | |
| gap: 24px; | |
| align-items: stretch; | |
| margin-top: 12px; | |
| } | |
| .const-canvas { | |
| position: relative; | |
| aspect-ratio: 1.15 / 1; | |
| background: radial-gradient(ellipse at center, rgba(74,222,128,0.04) 0%, rgba(0,0,0,0.55) 70%); | |
| border-radius: 4px; | |
| min-height: 380px; | |
| } | |
| .const-node { | |
| position: absolute; | |
| transform: translate(-50%, -50%); | |
| text-align: center; | |
| font-family: 'Manrope', sans-serif; | |
| } | |
| .const-node-miguel { | |
| top: 50%; left: 50%; | |
| width: 110px; height: 110px; | |
| background: rgba(74,222,128,0.14); | |
| border: 2px solid #4ade80; | |
| border-radius: 50%; | |
| display: flex; flex-direction: column; | |
| align-items: center; justify-content: center; | |
| z-index: 5; | |
| } | |
| .const-node-miguel .nname { | |
| font-family: 'EB Garamond', serif; | |
| font-size: 1.5rem; font-weight: 600; | |
| color: #4ade80; letter-spacing: 2px; | |
| } | |
| .const-node-miguel .nsub { | |
| font-size: 0.62rem; letter-spacing: 1.5px; | |
| color: rgba(74,222,128,0.85); text-transform: uppercase; | |
| margin-top: 2px; | |
| } | |
| .const-node-anchor { | |
| width: 130px; | |
| background: rgba(251,191,36,0.1); | |
| border: 1px solid rgba(251,191,36,0.5); | |
| border-radius: 4px; | |
| padding: 8px 10px; | |
| } | |
| .const-node-anchor .nname { | |
| font-family: 'EB Garamond', serif; | |
| font-size: 0.85rem; font-weight: 600; | |
| color: #fff; line-height: 1.15; | |
| } | |
| .const-node-anchor .nyear { | |
| font-size: 0.65rem; color: #aaa; | |
| margin-top: 2px; | |
| } | |
| .const-node-anchor .nscore { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.95rem; font-weight: 700; | |
| color: #fbbf24; margin-top: 4px; | |
| } | |
| .const-node-control { | |
| width: 130px; | |
| background: rgba(0,0,0,0.55); | |
| border: 1px dashed rgba(255,255,255,0.35); | |
| border-radius: 4px; | |
| padding: 8px 10px; | |
| } | |
| .const-node-control .nname { | |
| font-family: 'EB Garamond', serif; | |
| font-size: 0.85rem; font-weight: 600; | |
| color: #ddd; line-height: 1.15; | |
| } | |
| .const-node-control .nyear { | |
| font-size: 0.65rem; color: #888; | |
| margin-top: 2px; | |
| } | |
| .const-node-control .nscore { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.95rem; font-weight: 700; | |
| color: rgba(255,255,255,0.6); margin-top: 4px; | |
| } | |
| .const-node-control .nctrl { | |
| font-size: 0.58rem; letter-spacing: 1.5px; | |
| color: rgba(255,255,255,0.5); text-transform: uppercase; | |
| margin-top: 2px; | |
| } | |
| .const-line { | |
| position: absolute; | |
| height: 1px; | |
| background: linear-gradient(90deg, rgba(74,222,128,0.5) 0%, rgba(251,191,36,0.4) 100%); | |
| transform-origin: 0 50%; | |
| z-index: 1; | |
| } | |
| .const-line-control { | |
| background: linear-gradient(90deg, rgba(74,222,128,0.3) 0%, rgba(255,255,255,0.15) 100%); | |
| border-top: 1px dashed rgba(255,255,255,0.2); | |
| height: 0; | |
| } | |
| .const-data { | |
| display: flex; flex-direction: column; | |
| justify-content: center; gap: 14px; | |
| } | |
| .const-data-block { | |
| background: rgba(0,0,0,0.55); | |
| border-left: 3px solid #4ade80; | |
| padding: 12px 16px; | |
| border-radius: 4px; | |
| } | |
| .const-data-block.control { | |
| border-left-color: rgba(255,255,255,0.4); | |
| } | |
| .const-data-title { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.7rem; font-weight: 700; | |
| letter-spacing: 2px; color: #4ade80; | |
| text-transform: uppercase; margin-bottom: 6px; | |
| } | |
| .const-data-block.control .const-data-title { color: rgba(255,255,255,0.7); } | |
| .const-data-row { | |
| display: flex; justify-content: space-between; | |
| align-items: baseline; padding: 3px 0; | |
| font-size: 0.8rem; color: #ddd; | |
| } | |
| .const-data-row strong { | |
| font-family: 'Manrope', sans-serif; | |
| font-weight: 700; color: #fff; font-size: 0.9rem; | |
| } | |
| .const-method { | |
| margin-top: 16px; | |
| padding: 10px 16px; | |
| background: rgba(0,0,0,0.45); | |
| border-left: 2px solid rgba(255,255,255,0.25); | |
| border-radius: 3px; | |
| font-size: 0.74rem; line-height: 1.5; | |
| color: rgba(255,255,255,0.78); | |
| } | |
| .const-method strong { color: #fbbf24; font-weight: 700; } | |
| /* PDF mode — fit slide 5 in 1080px */ | |
| body.generating-pdf .tonal-slide .content-tonal { | |
| max-height: none ; | |
| overflow: visible ; | |
| } | |
| body.generating-pdf .const-canvas { | |
| min-height: 460px ; | |
| } | |
| @media (max-width: 768px) { | |
| .const-wrapper { grid-template-columns: 1fr; gap: 18px; } | |
| .const-canvas { aspect-ratio: 1 / 1; min-height: 340px; } | |
| .const-node-anchor, .const-node-control { width: 105px; padding: 6px 8px; } | |
| .const-node-anchor .nname, .const-node-control .nname { font-size: 0.72rem; } | |
| .const-node-miguel { width: 90px; height: 90px; } | |
| .const-node-miguel .nname { font-size: 1.2rem; } | |
| } | |
| /* Slide 6 (ROI Miguel + Monte Carlo) — sections appended below notas-tecnicas */ | |
| .mc-section { margin-top: 22px; } | |
| .mc-header { | |
| font-family: 'Manrope', sans-serif; font-size: 0.85rem; font-weight: 700; | |
| letter-spacing: 2.5px; color: #fbbf24; text-transform: uppercase; | |
| margin-bottom: 6px; | |
| } | |
| .mc-header-aside { color: #999; font-weight: 400; letter-spacing: 1px; } | |
| .mc-sub { | |
| font-family: 'Manrope', sans-serif; font-size: 0.75rem; line-height: 1.5; | |
| color: #aaa; margin-bottom: 4px; | |
| } | |
| .mc-table { | |
| width: 100%; border-collapse: collapse; margin-top: 10px; | |
| font-family: 'Manrope', sans-serif; font-size: 0.85rem; | |
| } | |
| .mc-table th { | |
| text-align: right; padding: 8px 10px; color: #ccc; | |
| font-weight: 600; font-size: 0.72rem; letter-spacing: 1.5px; text-transform: uppercase; | |
| border-bottom: 1px solid rgba(255,255,255,0.25); | |
| } | |
| .mc-table th:first-child { text-align: left; } | |
| .mc-table td { | |
| padding: 8px 10px; text-align: right; | |
| border-bottom: 1px solid rgba(255,255,255,0.08); | |
| color: #ddd; | |
| } | |
| .mc-table td:first-child { text-align: left; color: #fff; font-weight: 500; } | |
| .mc-row-positive td { color: #4ade80; font-weight: 600; } | |
| .mc-row-negative td { color: #f87171; font-weight: 600; } | |
| .mc-row-highlight td { | |
| color: #4ade80 ; | |
| font-weight: 700 ; | |
| font-size: 1rem ; | |
| background: rgba(74,222,128,0.08); | |
| border-bottom: 1px solid rgba(74,222,128,0.3) ; | |
| } | |
| .mc-headline { | |
| margin: 24px 0 32px 0; | |
| padding: 28px 32px; | |
| background: linear-gradient(135deg, rgba(74,222,128,0.12) 0%, rgba(74,222,128,0.04) 100%); | |
| border: 1px solid rgba(74,222,128,0.35); | |
| border-radius: 8px; | |
| text-align: center; | |
| } | |
| .mc-headline-label { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.78rem; | |
| font-weight: 700; | |
| letter-spacing: 3px; | |
| text-transform: uppercase; | |
| color: rgba(74,222,128,0.85); | |
| margin-bottom: 8px; | |
| } | |
| .mc-headline-value { | |
| font-family: 'EB Garamond', serif; | |
| font-size: 4.5rem; | |
| font-weight: 600; | |
| color: #4ade80; | |
| line-height: 1; | |
| margin-bottom: 8px; | |
| letter-spacing: -1px; | |
| } | |
| .mc-headline-sub { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.85rem; | |
| color: rgba(255,255,255,0.72); | |
| letter-spacing: 0.5px; | |
| } | |
| .mc-scenarios-intro { margin: 36px 0 18px 0; } | |
| .mc-scenarios-title { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.82rem; | |
| font-weight: 700; | |
| letter-spacing: 2px; | |
| text-transform: uppercase; | |
| color: #fbbf24; | |
| margin-bottom: 6px; | |
| } | |
| .mc-scenarios-desc { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.86rem; | |
| color: rgba(255,255,255,0.72); | |
| line-height: 1.5; | |
| } | |
| .mc-scenarios td:first-child strong { font-family: 'Manrope', sans-serif; font-weight: 700; letter-spacing: 1px; } | |
| .mc-pct { font-size: 0.7rem; color: #888; font-weight: 400; letter-spacing: 0.5px; margin-left: 6px; } | |
| .mc-gain { color: #4ade80 ; font-weight: 700 ; } | |
| .mc-loss { color: #f87171 ; font-weight: 700 ; } | |
| .mc-callout { | |
| margin-top: 22px; padding: 14px 18px; | |
| background: rgba(251,191,36,0.08); | |
| border-left: 3px solid #fbbf24; | |
| border-radius: 2px; | |
| } | |
| .mc-callout-title { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; font-weight: 700; | |
| letter-spacing: 2px; color: #fbbf24; text-transform: uppercase; | |
| margin-bottom: 10px; | |
| } | |
| .mc-callout-row { | |
| display: -webkit-flex; display: flex; | |
| -webkit-justify-content: space-between; justify-content: space-between; | |
| -webkit-align-items: baseline; align-items: baseline; | |
| -webkit-flex-wrap: wrap; flex-wrap: wrap; | |
| font-size: 0.9rem; padding: 6px 0; color: #ddd; | |
| } | |
| .mc-callout-row span:first-child { | |
| -webkit-flex: 1 1 auto; flex: 1 1 auto; | |
| min-width: 0; padding-right: 16px; | |
| word-wrap: break-word; overflow-wrap: break-word; | |
| } | |
| .mc-callout-row strong { | |
| font-family: 'Manrope', sans-serif; font-weight: 700; color: #fff; font-size: 1rem; | |
| -webkit-flex: 0 0 auto; flex: 0 0 auto; | |
| white-space: nowrap; | |
| } | |
| .mc-callout-row strong.mc-historic { color: #fbbf24; } | |
| .mc-callout-text { | |
| margin-top: 10px; font-family: 'EB Garamond', serif; font-style: italic; | |
| font-size: 0.92rem; line-height: 1.5; color: #ccc; | |
| } | |
| /* Slide 7 (Empirical Anchors) — 4 scenario cards */ | |
| .content-anchors { width: 90% ; max-height: 92vh; overflow-y: auto; padding-bottom: 20px; } | |
| .anchor-intro { | |
| font-family: 'Manrope', sans-serif; font-size: 1rem; line-height: 1.55; | |
| color: #ddd; max-width: 800px; margin: 8px 0 22px 0; | |
| } | |
| .anchor-grid { | |
| display: grid; grid-template-columns: 1fr 1fr; gap: 16px; | |
| } | |
| .anchor-card { | |
| background: rgba(0,0,0,0.7); border: 1px solid rgba(255,255,255,0.18); | |
| border-left: 4px solid; padding: 14px 18px; border-radius: 4px; | |
| } | |
| .anchor-bear { border-left-color: #f87171; } | |
| .anchor-base { border-left-color: #fbbf24; } | |
| .anchor-bull { border-left-color: #4ade80; } | |
| .anchor-stretch { border-left-color: #22c55e; } | |
| .anchor-tier { | |
| font-family: 'Manrope', sans-serif; font-size: 0.72rem; font-weight: 700; | |
| letter-spacing: 2.5px; color: #fbbf24; text-transform: uppercase; | |
| margin-bottom: 8px; | |
| } | |
| .anchor-bear .anchor-tier { color: #f87171; } | |
| .anchor-base .anchor-tier { color: #fbbf24; } | |
| .anchor-bull .anchor-tier { color: #4ade80; } | |
| .anchor-stretch .anchor-tier { color: #22c55e; } | |
| .anchor-tier span { color: #888; font-weight: 400; letter-spacing: 1px; } | |
| .anchor-title { | |
| font-family: 'EB Garamond', serif; font-size: 1.4rem; font-weight: 600; | |
| color: #fff; margin-bottom: 4px; line-height: 1.2; | |
| } | |
| .anchor-title .anchor-year { font-size: 1rem; color: #888; font-weight: 400; } | |
| .anchor-meta { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; color: #aaa; | |
| margin-bottom: 10px; | |
| } | |
| .anchor-numbers { | |
| display: flex; align-items: center; gap: 10px; flex-wrap: wrap; | |
| font-family: 'Manrope', sans-serif; font-size: 0.85rem; color: #ddd; | |
| padding: 8px 0; border-top: 1px solid rgba(255,255,255,0.1); | |
| } | |
| .anchor-numbers strong { font-weight: 700; color: #fff; } | |
| .anchor-arrow { color: #fbbf24; font-weight: 700; } | |
| .anchor-roi { | |
| font-family: 'Manrope', sans-serif; font-size: 0.95rem; color: #ccc; | |
| padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); | |
| } | |
| .anchor-roi strong { color: #fbbf24; font-size: 1.15rem; font-weight: 700; } | |
| .anchor-note { | |
| margin-top: 8px; font-family: 'Manrope', sans-serif; | |
| font-size: 0.78rem; line-height: 1.45; color: #aaa; font-style: italic; | |
| } | |
| .anchor-closing { | |
| margin-top: 18px; font-family: 'EB Garamond', serif; font-style: italic; | |
| font-size: 0.95rem; line-height: 1.5; color: #ccc; | |
| padding: 10px 0; border-top: 1px solid rgba(255,255,255,0.15); | |
| } | |
| .anchor-disclaimer { | |
| margin-top: 24px; | |
| padding: 12px 16px; | |
| background: rgba(251, 191, 36, 0.08); | |
| border-left: 3px solid #fbbf24; | |
| border-radius: 4px; | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.78rem; | |
| line-height: 1.55; | |
| color: rgba(255, 255, 255, 0.82); | |
| } | |
| .anchor-disclaimer strong { | |
| color: #fbbf24; | |
| font-weight: 700; | |
| } | |
| /* Slide 8 (Asymmetric Return Profile) — KPI quad + 3 cols + institutional callout */ | |
| .content-asym { width: 90% ; max-height: 92vh; overflow-y: auto; padding-bottom: 20px; } | |
| .asym-intro { | |
| font-family: 'EB Garamond', serif; font-size: 1.15rem; line-height: 1.55; | |
| color: #ddd; max-width: 800px; margin: 8px 0 18px 0; font-style: italic; | |
| } | |
| .asym-quad { | |
| display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; | |
| margin-bottom: 8px; | |
| } | |
| .asym-kpi { | |
| background: rgba(0,0,0,0.65); border: 1px solid rgba(255,255,255,0.15); | |
| border-top: 4px solid; padding: 16px 12px; border-radius: 4px; | |
| text-align: center; | |
| } | |
| .asym-kpi-good { border-top-color: #4ade80; } | |
| .asym-kpi-amber { border-top-color: #fbbf24; } | |
| .asym-kpi-bad { border-top-color: #f87171; } | |
| .asym-num { | |
| font-family: 'Manrope', sans-serif; font-size: 3.2rem; font-weight: 700; | |
| line-height: 1; margin-bottom: 8px; | |
| } | |
| .asym-kpi-good .asym-num { color: #4ade80; } | |
| .asym-kpi-amber .asym-num { color: #fbbf24; } | |
| .asym-kpi-bad .asym-num { color: #f87171; } | |
| .asym-label { | |
| font-family: 'Manrope', sans-serif; font-size: 0.72rem; font-weight: 700; | |
| letter-spacing: 2px; color: #fff; line-height: 1.3; | |
| } | |
| .asym-cond { | |
| margin-top: 6px; font-family: 'Manrope', sans-serif; font-size: 0.7rem; | |
| color: #888; font-weight: 400; | |
| } | |
| .asym-evidence { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; color: #888; | |
| text-align: center; margin: 4px 0 18px 0; letter-spacing: 1px; | |
| } | |
| .asym-cols { | |
| display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; | |
| margin-bottom: 18px; | |
| } | |
| .asym-col { | |
| background: rgba(0,0,0,0.5); padding: 12px 14px; border-radius: 3px; | |
| border-left: 2px solid rgba(255,255,255,0.25); | |
| } | |
| .asym-col-title { | |
| font-family: 'Manrope', sans-serif; font-size: 0.72rem; font-weight: 700; | |
| letter-spacing: 2px; color: #fbbf24; margin-bottom: 8px; | |
| } | |
| .asym-col p { | |
| font-family: 'Manrope', sans-serif; font-size: 0.82rem; line-height: 1.55; | |
| color: #ddd; font-weight: 300; | |
| } | |
| .asym-institutional { | |
| background: rgba(0,0,0,0.55); border-left: 3px solid #fbbf24; | |
| padding: 16px 20px; border-radius: 4px; | |
| } | |
| .asym-inst-title { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; font-weight: 600; | |
| letter-spacing: 2px; color: #fbbf24; margin-bottom: 10px; | |
| } | |
| .asym-institutional p { | |
| font-family: 'EB Garamond', serif; font-style: italic; | |
| font-size: 1.05rem; line-height: 1.55; color: #f0f0f0; font-weight: 500; | |
| } | |
| /* Slide 9 (Mercado y Posicionamiento) — quadrant + 4 implications */ | |
| .content-mercado { width: 90% ; max-height: 92vh; overflow-y: auto; padding-bottom: 20px; } | |
| .mercado-intro { | |
| font-family: 'EB Garamond', serif; font-size: 1.1rem; line-height: 1.5; | |
| color: #ddd; margin: 8px 0 18px 0; font-style: italic; | |
| } | |
| .mercado-row { | |
| display: grid; grid-template-columns: 1fr 1.4fr; gap: 24px; align-items: center; | |
| } | |
| .mercado-quadrant { | |
| position: relative; width: 100%; aspect-ratio: 1.4 / 1; | |
| max-width: 480px; margin: 0 auto; | |
| background: radial-gradient(ellipse at center, rgba(251,191,36,0.06) 0%, rgba(0,0,0,0.55) 70%); | |
| } | |
| .mercado-quadrant::before { | |
| content: ''; position: absolute; top: 50%; left: 4%; right: 4%; height: 1px; | |
| background: rgba(255,255,255,0.18); | |
| } | |
| .mercado-quadrant::after { | |
| content: ''; position: absolute; left: 50%; top: 4%; bottom: 4%; width: 1px; | |
| background: rgba(255,255,255,0.18); | |
| } | |
| .quad-axis { | |
| position: absolute; font-family: 'EB Garamond', serif; | |
| font-size: 1rem; font-weight: 600; | |
| color: #f0f0f0; text-align: center; line-height: 1.25; | |
| width: 30%; | |
| } | |
| .quad-axis span { | |
| display: block; font-size: 0.78rem; color: rgba(240,240,240,0.7); | |
| font-style: italic; font-weight: 400; margin-top: 3px; | |
| } | |
| .quad-top { top: 0; left: 50%; transform: translateX(-50%); } | |
| .quad-bottom { bottom: 0; left: 50%; transform: translateX(-50%); } | |
| .quad-left { left: 0; top: 50%; transform: translateY(-50%); } | |
| .quad-right { right: 0; top: 50%; transform: translateY(-50%); } | |
| .quad-center { | |
| position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); | |
| z-index: 5; white-space: nowrap; | |
| font-family: 'EB Garamond', serif; font-size: 1.3rem; font-weight: 600; | |
| letter-spacing: 4px; color: #4ade80; | |
| background: rgba(74,222,128,0.12); | |
| border: 2px solid #4ade80; | |
| padding: 10px 22px; border-radius: 4px; | |
| } | |
| .mercado-impl { display: flex; flex-direction: column; gap: 12px; } | |
| .impl-item { | |
| display: flex; gap: 12px; align-items: flex-start; | |
| background: rgba(0,0,0,0.55); padding: 10px 14px; border-radius: 3px; | |
| border-left: 2px solid #4ade80; | |
| } | |
| .impl-check { | |
| font-family: 'Manrope', sans-serif; font-size: 1.2rem; color: #4ade80; | |
| font-weight: 700; flex-shrink: 0; line-height: 1; | |
| } | |
| .impl-item strong { | |
| display: block; font-family: 'Manrope', sans-serif; font-size: 0.78rem; | |
| font-weight: 700; letter-spacing: 1.5px; color: #fbbf24; | |
| margin-bottom: 4px; | |
| } | |
| .impl-item div { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; line-height: 1.5; | |
| color: #ddd; font-weight: 300; | |
| } | |
| .mercado-closing { | |
| margin-top: 18px; font-family: 'EB Garamond', serif; font-style: italic; | |
| font-size: 0.95rem; line-height: 1.55; color: #ccc; | |
| padding: 10px 0; border-top: 1px solid rgba(255,255,255,0.15); | |
| } | |
| .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%); } | |
| /* ESTILOS DE PANTALLA PARA SLIDE 5 (COMPACTO) */ | |
| .content-slide5 { | |
| position: absolute; | |
| top: 20px; | |
| left: 5%; | |
| width: 65%; | |
| z-index: 10; | |
| max-height: 85vh; | |
| overflow-y: auto; | |
| padding-bottom: 30px; | |
| } | |
| .titulo-slide5 { | |
| font-family: 'EB Garamond', serif; | |
| font-size: 2.2rem; /* Compacto para pantalla */ | |
| font-weight: 600; | |
| letter-spacing: 1px; | |
| margin-bottom: 12px; | |
| text-shadow: 0 4px 15px rgba(0,0,0,0.9); | |
| } | |
| .slide5-desc { | |
| font-family: 'Manrope', sans-serif; font-size: 0.95rem; line-height: 1.6; | |
| margin-bottom: 18px; color: #ddd; opacity: 0.9; | |
| } | |
| .cascada-table { width: 100%; border-collapse: collapse; margin-bottom: 15px; font-size: 0.9rem; } | |
| .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; } | |
| .cascada-table td { padding: 10px 12px; border-bottom: 1px solid rgba(255,255,255,0.1); vertical-align: top; } | |
| .cascada-table .col-etapa { width: 20%; font-weight: 700; color: #fff; } | |
| .cascada-table .col-concepto { width: 50%; color: #ddd; } | |
| .cascada-table .col-monto { width: 30%; text-align: right; font-weight: 700; color: #4ade80; font-size: 1rem; } | |
| .cascada-table .total-row { background: rgba(255,255,255,0.08); } | |
| .cascada-table .total-row td { border-bottom: 2px solid rgba(255,255,255,0.4); font-weight: 700; } | |
| .cascada-table .total-row .col-monto { color: #fbbf24; font-size: 1.05rem; } | |
| .cascada-table .fase3-row .col-monto { color: #fbbf24; } | |
| .notas-tecnicas { | |
| background: rgba(0,0,0,0.8); border-left: 3px solid rgba(255,255,255,0.3); | |
| padding: 15px; margin-top: 45px; | |
| } | |
| .notas-tecnicas h3 { font-family: 'EB Garamond', serif; font-size: 1.2rem; margin-bottom: 10px; color: #fff; font-weight: 600; } | |
| .nota-item { margin-bottom: 12px; font-size: 0.8rem; line-height: 1.5; color: #ccc; } | |
| .nota-item strong { color: #fff; display: block; margin-bottom: 4px; font-weight: 600; } | |
| .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%); } | |
| .content-slide6 { position: absolute; top: 50%; left: 5%; transform: translateY(-50%); width: 50%; z-index: 10; } | |
| .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); } | |
| .contacto-nombre { font-family: 'EB Garamond', serif; font-size: 2rem; font-weight: 600; margin-bottom: 30px; color: #fff; letter-spacing: 2px; } | |
| .contacto-item { display: flex; align-items: center; gap: 15px; margin-bottom: 20px; font-size: 1.1rem; color: #ddd; } | |
| .contacto-item a { color: #fff; text-decoration: none; transition: color 0.3s; } | |
| .contacto-item a:hover { color: #4ade80; } | |
| .whatsapp-icon { width: 24px; height: 24px; fill: #25D366; } | |
| .talishte-credit { | |
| position: absolute; bottom: 85px; right: 5%; font-size: 0.9rem; font-weight: 700; | |
| color: #1a1a1a; z-index: 5; text-shadow: 0 0 10px rgba(255,255,255,0.6); | |
| } | |
| .talishte-credit a { color: #000; text-decoration: none; font-weight: 700; border-bottom: 2px solid #000; transition: color 0.3s; } | |
| .talishte-credit a:hover { color: #333; border-bottom-color: #333; } | |
| .ilustrador-credit { | |
| position: absolute; bottom: 120px; right: 5%; | |
| font-family: 'Manrope', sans-serif; font-size: 0.85rem; font-weight: 600; | |
| color: #1a1a1a; z-index: 5; text-align: right; | |
| text-shadow: 0 0 10px rgba(255,255,255,0.6); | |
| } | |
| .ilustrador-credit a { | |
| color: #000; text-decoration: none; font-weight: 700; | |
| border-bottom: 1px solid rgba(0,0,0,0.4); transition: all 0.3s; | |
| } | |
| .ilustrador-credit a:hover { color: #333; border-bottom-color: #333; } | |
| /* ===================== CONTROLES INFERIORES ===================== */ | |
| .bottom-controls { | |
| position: fixed; | |
| bottom: 0; left: 0; width: 100%; | |
| z-index: 1000; | |
| pointer-events: none; | |
| } | |
| .bottom-controls > * { pointer-events: auto; } | |
| .nav { | |
| position: fixed; bottom: 30px; right: 30px; | |
| display: flex; gap: 10px; | |
| } | |
| .nav button, #btn-pdf { | |
| background: rgba(0,0,0,0.7); border: 2px solid rgba(255,255,255,0.5); | |
| color: white; padding: 12px 20px; cursor: pointer; | |
| font-family: 'Manrope', sans-serif; font-size: 0.85rem; letter-spacing: 2px; | |
| transition: 0.3s; border-radius: 5px; backdrop-filter: blur(5px); | |
| } | |
| .nav button:hover, #btn-pdf:hover { background: rgba(0,0,0,0.9); border-color: white; } | |
| .nav button:active, #btn-pdf:active { transform: scale(0.95); } | |
| .nav button:disabled, #btn-pdf:disabled { opacity: 0.3; cursor: not-allowed; } | |
| .slide-counter { | |
| position: fixed; bottom: 30px; left: 30px; | |
| font-size: 0.9rem; opacity: 0.8; letter-spacing: 3px; | |
| background: rgba(0,0,0,0.6); padding: 8px 15px; border-radius: 5px; backdrop-filter: blur(5px); | |
| } | |
| /* BOTÓN PDF: ARRIBA DERECHA FIJO (DESKTOP) */ | |
| #btn-pdf { | |
| position: fixed; | |
| top: 30px; | |
| right: 30px; | |
| z-index: 1001; | |
| } | |
| /* LOADING OVERLAY - NEGRO SÓLIDO Y CAPA SUPERIOR ABSOLUTA */ | |
| #pdf-loading { | |
| position: fixed; top: 0; left: 0; width: 100%; height: 100%; | |
| background: #000000; | |
| z-index: 99999; | |
| display: none; | |
| flex-direction: column; | |
| justify-content: center; | |
| align-items: center; | |
| gap: 25px; | |
| } | |
| .spinner { | |
| width: 60px; height: 60px; | |
| border: 5px solid rgba(255,255,255,0.2); | |
| border-top-color: #4ade80; | |
| border-radius: 50%; | |
| animation: spin 1s linear infinite; | |
| } | |
| #pdf-loading p { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 1.4rem; | |
| color: #fff; | |
| letter-spacing: 2px; | |
| font-weight: 600; | |
| } | |
| #pdf-loading .progress-text { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 1rem; | |
| color: #aaa; | |
| letter-spacing: 1px; | |
| margin-top: 10px; | |
| } | |
| /* ===================== RESPONSIVE ===================== */ | |
| @media (max-width: 1024px) { | |
| .titulo-main { font-size: 6rem; letter-spacing: 15px; } | |
| .titulo-slide2 { font-size: 3.5rem; } | |
| .titulo-slide4 { font-size: 2.5rem; } | |
| .titulo-slide5 { font-size: 2rem; } | |
| .gracias-title { font-size: 3.5rem; } | |
| .equipo-container { grid-template-columns: 1fr 1fr; gap: 20px; } | |
| .table-row { grid-template-columns: 1.8fr 0.8fr 0.7fr; } | |
| } | |
| @media (max-width: 768px) { | |
| .titulo-main { font-size: 3.5rem; letter-spacing: 8px; margin-top: 60px; } | |
| .tagline-top { font-size: 1.1rem; top: 10px; } | |
| .credits { font-size: 1rem; line-height: 1.8; } | |
| .genre { font-size: 0.75rem; } | |
| .titulo-slide2 { font-size: 2.2rem; } | |
| .texto-slide2 { font-size: 0.95rem; } | |
| .titulo-slide-top-right { font-size: 1.8rem; top: 30px; right: 5%; } | |
| .equipo-container { grid-template-columns: 1fr; bottom: 120px; gap: 15px; } | |
| .miembro { padding: 15px; } | |
| .miembro-nombre { font-size: 1.4rem; } | |
| .overlay-slide4, .overlay-slide5, .overlay-slide6 { | |
| width: 100%; | |
| background: linear-gradient(to bottom, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.6) 50%, rgba(0,0,0,0.0) 100%); | |
| } | |
| .content-slide4, .content-slide5 { | |
| width: 90%; left: 5%; | |
| max-height: calc(100vh - 140px); | |
| overflow-y: auto; | |
| padding-bottom: 20px; | |
| } | |
| .content-slide6 { width: 90%; left: 5%; } | |
| .titulo-slide4 { font-size: 1.8rem; } | |
| .titulo-slide5 { font-size: 1.6rem; } | |
| .gracias-title { font-size: 2.5rem; margin-bottom: 30px; } | |
| .contacto-nombre { font-size: 1.4rem; } | |
| .table-row { grid-template-columns: 1fr; gap: 5px; padding: 10px 0; } | |
| .col-budget, .col-roi { text-align: left; font-size: 0.85rem; } | |
| .col-movie-desc { font-size: 0.7rem; } | |
| .cascada-table { font-size: 0.85rem; } | |
| .cascada-table th, .cascada-table td { padding: 8px 10px; } | |
| .notas-tecnicas { margin-top: 25px; padding: 12px; } | |
| .bottom-controls { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 0 15px; | |
| bottom: 15px; | |
| } | |
| .slide-counter, .nav, #btn-pdf { | |
| position: relative ; | |
| bottom: auto ; left: auto ; right: auto ; top: auto ; | |
| transform: none ; | |
| margin: 0; | |
| } | |
| .slide-counter { order: 1; padding: 6px 10px; font-size: 0.75rem; } | |
| #btn-pdf { | |
| order: 2; | |
| padding: 8px 12px; | |
| font-size: 0.7rem; | |
| background: rgba(0,0,0,0.7); | |
| border: 2px solid rgba(255,255,255,0.5); | |
| color: white; | |
| border-radius: 5px; | |
| backdrop-filter: blur(5px); | |
| white-space: nowrap; | |
| flex-shrink: 0; | |
| } | |
| .nav { order: 3; gap: 8px; } | |
| .nav button { padding: 8px 14px; font-size: 0.75rem; } | |
| .content-slide4::-webkit-scrollbar, .content-slide5::-webkit-scrollbar { width: 4px; } | |
| .content-slide4::-webkit-scrollbar-thumb, .content-slide5::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.3); border-radius: 2px; } | |
| .talishte-credit { | |
| bottom: 120px; | |
| right: 5%; | |
| left: 5%; | |
| text-align: center; | |
| font-size: 0.8rem; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .titulo-main { font-size: 2.5rem; letter-spacing: 5px; margin-top: 50px; } | |
| .tagline-top { font-size: 0.9rem; top: 5px; } | |
| .credits { font-size: 0.85rem; line-height: 1.6; } | |
| .genre { font-size: 0.65rem; } | |
| .titulo-slide2 { font-size: 1.8rem; } | |
| .texto-slide2 { font-size: 0.85rem; line-height: 1.5; } | |
| .titulo-slide-top-right { font-size: 1.4rem; } | |
| .miembro-nombre { font-size: 1.2rem; } | |
| .miembro-bio { font-size: 0.85rem; } | |
| .titulo-slide4, .titulo-slide5 { font-size: 1.5rem; } | |
| .highlight-number { font-size: 1.8rem; } | |
| .highlight-text { font-size: 0.7rem; } | |
| .gracias-title { font-size: 2rem; letter-spacing: 2px; } | |
| .contacto-item { font-size: 0.9rem; margin-bottom: 15px; } | |
| .whatsapp-icon { width: 20px; height: 20px; } | |
| .table-row { font-size: 0.8rem; } | |
| .cascada-table { font-size: 0.75rem; } | |
| .notas-tecnicas h3 { font-size: 1rem; } | |
| .nota-item { font-size: 0.7rem; } | |
| .bottom-controls { bottom: 10px; padding: 0 10px; } | |
| .slide-counter { padding: 5px 8px; font-size: 0.7rem; } | |
| #btn-pdf { padding: 6px 10px; font-size: 0.65rem; } | |
| .nav button { padding: 6px 10px; font-size: 0.7rem; } | |
| .talishte-credit { bottom: 100px; font-size: 0.7rem; } | |
| } | |
| @media (max-height: 500px) and (orientation: landscape) { | |
| .titulo-main { font-size: 2.5rem; margin-top: 0; } | |
| .credits { font-size: 0.8rem; margin-top: 80px; } | |
| .gracias-title { font-size: 1.8rem; margin-bottom: 20px; } | |
| .contacto-item { margin-bottom: 8px; font-size: 0.85rem; } | |
| .nav { bottom: 10px; right: 10px; } | |
| .nav button { padding: 8px 12px; font-size: 0.7rem; } | |
| .slide-counter { bottom: 10px; left: 10px; font-size: 0.7rem; } | |
| #btn-pdf { top: 10px; right: 10px; padding: 8px 12px; font-size: 0.75rem; bottom: auto; } | |
| } | |
| /* Narrow viewports: stack label + value rows so cifras no se solapan */ | |
| @media (max-width: 768px) { | |
| .mc-callout-row { | |
| -webkit-flex-direction: column; flex-direction: column; | |
| -webkit-align-items: flex-start; align-items: flex-start; | |
| } | |
| .mc-callout-row span:first-child { padding-right: 0; } | |
| .mc-callout-row strong { margin-top: 4px; font-size: 1.05em; } | |
| } | |
| @media print { | |
| .mc-callout-row { | |
| display: -webkit-flex ; display: flex ; | |
| -webkit-flex-direction: row ; flex-direction: row ; | |
| -webkit-justify-content: space-between; justify-content: space-between; | |
| page-break-inside: avoid; -webkit-column-break-inside: avoid; break-inside: avoid; | |
| } | |
| .mc-callout-row span:first-child { max-width: 70%; word-wrap: break-word; } | |
| .mc-callout-row strong { white-space: nowrap; -webkit-flex-shrink: 0; flex-shrink: 0; } | |
| } | |
| /* Slide 11 (Plan de Distribución Fased) — round 1 + round 2 condicional + retornos */ | |
| .content-plan { width: 90% ; max-height: 92vh; overflow-y: auto; padding-bottom: 20px; } | |
| .plan-intro { | |
| font-family: 'Manrope', sans-serif; font-size: 0.95rem; line-height: 1.55; | |
| color: #ddd; max-width: 90%; margin: 8px 0 18px 0; | |
| } | |
| .plan-section { margin-bottom: 18px; } | |
| .plan-header { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; font-weight: 700; | |
| letter-spacing: 2.5px; color: #fbbf24; text-transform: uppercase; | |
| margin-bottom: 10px; padding-bottom: 6px; | |
| border-bottom: 1px solid rgba(255,255,255,0.15); | |
| } | |
| .plan-round { | |
| background: rgba(0,0,0,0.55); border-left: 3px solid #4ade80; | |
| padding: 12px 18px; margin-bottom: 12px; border-radius: 4px; | |
| } | |
| .plan-round-conditional { border-left-color: #fbbf24; } | |
| .plan-round-title { | |
| display: flex; align-items: baseline; gap: 12px; margin-bottom: 6px; | |
| flex-wrap: wrap; | |
| } | |
| .plan-round-label { | |
| font-family: 'EB Garamond', serif; font-size: 1.2rem; font-weight: 600; | |
| color: #fff; letter-spacing: 1px; | |
| } | |
| .plan-round-aside { | |
| font-size: 0.82rem; color: rgba(240,240,240,0.6); font-style: italic; | |
| } | |
| .plan-round-amount { | |
| margin-left: auto; font-family: 'Manrope', sans-serif; | |
| font-size: 1.3rem; font-weight: 700; color: #4ade80; | |
| white-space: nowrap; | |
| } | |
| .plan-round-conditional .plan-round-amount { color: #fbbf24; } | |
| .plan-round-detail { | |
| list-style: none; padding: 0; margin: 6px 0; | |
| } | |
| .plan-round-detail li { | |
| display: flex; justify-content: space-between; gap: 16px; | |
| padding: 2px 0; color: #ddd; font-size: 0.88rem; | |
| flex-wrap: wrap; | |
| } | |
| .plan-round-detail li span:first-child { | |
| flex: 1 1 auto; min-width: 0; | |
| } | |
| .plan-amount { | |
| font-family: 'Manrope', sans-serif; color: rgba(240,240,240,0.85); | |
| white-space: nowrap; flex-shrink: 0; | |
| } | |
| .plan-round-includes { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; | |
| color: rgba(240,240,240,0.65); font-style: italic; | |
| margin-top: 6px; line-height: 1.4; | |
| } | |
| .plan-trigger-intro { | |
| font-family: 'Manrope', sans-serif; color: #ddd; | |
| margin: 6px 0; font-size: 0.88rem; | |
| } | |
| .plan-triggers { | |
| list-style: none; padding: 0; margin: 8px 0; | |
| } | |
| .plan-triggers li { | |
| display: flex; gap: 12px; padding: 5px 0; | |
| color: #ddd; line-height: 1.4; | |
| } | |
| .trigger-check { | |
| color: #fbbf24; font-size: 1rem; flex-shrink: 0; | |
| font-weight: 700; | |
| } | |
| .trigger-text { font-size: 0.85rem; } | |
| .trigger-text strong { | |
| color: #fff; font-size: 0.9rem; display: block; margin-bottom: 2px; | |
| } | |
| .plan-total { | |
| display: flex; justify-content: space-between; align-items: baseline; | |
| background: rgba(74,222,128,0.12); border: 1px solid rgba(74,222,128,0.3); | |
| padding: 10px 18px; margin-top: 14px; border-radius: 4px; | |
| flex-wrap: wrap; gap: 12px; | |
| } | |
| .plan-total-label { | |
| font-family: 'EB Garamond', serif; font-size: 1rem; color: #fff; | |
| letter-spacing: 1.5px; flex: 1 1 auto; min-width: 0; | |
| } | |
| .plan-total-amount { | |
| font-family: 'Manrope', sans-serif; font-size: 1.4rem; font-weight: 700; | |
| color: #4ade80; white-space: nowrap; flex-shrink: 0; | |
| } | |
| .plan-total-aside { | |
| font-family: 'Manrope', sans-serif; font-size: 0.78rem; | |
| color: rgba(240,240,240,0.7); font-style: italic; | |
| margin: 4px 0 0 0; text-align: right; | |
| } | |
| .plan-returns-intro { | |
| font-family: 'Manrope', sans-serif; font-size: 0.82rem; | |
| color: rgba(240,240,240,0.75); font-style: italic; | |
| margin-bottom: 8px; | |
| } | |
| .plan-returns-table { | |
| width: 100%; border-collapse: collapse; | |
| background: rgba(0,0,0,0.4); border-radius: 4px; overflow: hidden; | |
| } | |
| .plan-returns-table td { | |
| padding: 6px 14px; border-bottom: 1px solid rgba(240,240,240,0.08); | |
| color: #ddd; font-family: 'Manrope', sans-serif; font-size: 0.85rem; | |
| word-break: break-word; | |
| } | |
| .plan-returns-table td:first-child { | |
| padding-right: 24px; | |
| } | |
| .plan-returns-table td:last-child { | |
| text-align: right; color: #fff; white-space: nowrap; | |
| min-width: 80px; flex-shrink: 0; | |
| } | |
| .plan-returns-table tr:last-child td { border-bottom: none; } | |
| .plan-closing { | |
| font-family: 'EB Garamond', serif; font-size: 0.9rem; | |
| color: rgba(240,240,240,0.85); font-style: italic; | |
| line-height: 1.5; margin-top: 14px; | |
| padding: 10px 16px; background: rgba(0,0,0,0.4); | |
| border-left: 2px solid rgba(240,240,240,0.4); border-radius: 4px; | |
| } | |
| /* Plan responsive: stack on mobile */ | |
| @media (max-width: 768px) { | |
| .plan-round-title { flex-direction: column; align-items: flex-start; } | |
| .plan-round-amount { margin-left: 0; margin-top: 4px; } | |
| .plan-total { flex-direction: column; align-items: flex-start; } | |
| .plan-total-amount { font-size: 1.6rem; } | |
| .plan-returns-table td { padding: 8px 10px; font-size: 0.8rem; } | |
| .plan-round-detail li { flex-direction: column; gap: 2px; } | |
| .plan-amount { align-self: flex-end; } | |
| } | |
| @media (max-width: 768px) { | |
| .mercado-row { | |
| grid-template-columns: 1fr ; | |
| gap: 20px ; | |
| } | |
| .mercado-quadrant { | |
| aspect-ratio: 1 / 1 ; | |
| max-width: 320px ; | |
| margin: 0 auto ; | |
| } | |
| .quad-axis { | |
| font-size: 0.78rem ; | |
| width: 38% ; | |
| line-height: 1.2 ; | |
| } | |
| .quad-axis span { | |
| font-size: 0.65rem ; | |
| } | |
| .quad-top { top: -8px ; } | |
| .quad-bottom { bottom: -8px ; } | |
| .quad-left { left: -8px ; } | |
| .quad-right { right: -8px ; } | |
| .quad-center { | |
| font-size: 0.95rem ; | |
| letter-spacing: 2px ; | |
| padding: 6px 14px ; | |
| } | |
| .impl-item strong { | |
| font-size: 0.72rem ; | |
| } | |
| .impl-item div { | |
| font-size: 0.75rem ; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .mercado-quadrant { | |
| max-width: 280px ; | |
| } | |
| .quad-axis { | |
| font-size: 0.7rem ; | |
| width: 40% ; | |
| } | |
| .quad-axis span { | |
| font-size: 0.6rem ; | |
| } | |
| .quad-center { | |
| font-size: 0.85rem ; | |
| letter-spacing: 1.5px ; | |
| padding: 5px 12px ; | |
| } | |
| } | |
| /* ===================== MODO CAPTURA PDF (GHOST MODE) ===================== */ | |
| body.generating-pdf { | |
| width: 1920px ; | |
| min-width: 1920px ; | |
| overflow: hidden ; | |
| } | |
| body.generating-pdf .slide { | |
| width: 1920px ; | |
| height: 1080px ; | |
| } | |
| /* Forzar Slide 5 grande en PDF */ | |
| body.generating-pdf .content-slide5 { | |
| max-height: none ; | |
| overflow: visible ; | |
| padding-bottom: 0 ; | |
| } | |
| body.generating-pdf .titulo-slide5 { | |
| font-size: 3.2rem ; /* Vuelve a ser grande para el PDF */ | |
| margin-bottom: 15px ; | |
| } | |
| body.generating-pdf .slide5-desc { | |
| font-size: 1.1rem ; | |
| margin-bottom: 20px ; | |
| } | |
| body.generating-pdf .notas-tecnicas { | |
| margin-top: 45px ; | |
| } | |
| /* Anular Mobile Styles durante captura */ | |
| body.generating-pdf .bottom-controls, | |
| body.generating-pdf .slide-counter, | |
| body.generating-pdf .nav, | |
| body.generating-pdf #btn-pdf { | |
| display: none ; | |
| } | |
| body.generating-pdf .content-slide5, | |
| body.generating-pdf .content-slide4, | |
| body.generating-pdf .content-slide6 { | |
| max-height: none ; | |
| overflow: visible ; | |
| width: 65% ; /* Desktop width */ | |
| top: 40px ; | |
| left: 5% ; | |
| transform: none ; | |
| } | |
| body.generating-pdf .titulo-slide5, | |
| body.generating-pdf .titulo-slide4 { | |
| font-size: 3.2rem ; | |
| } | |
| body.generating-pdf .equipo-container { | |
| grid-template-columns: 1fr 1fr 1fr ; | |
| display: grid ; | |
| } | |
| /* ===================== MODO CAPTURA PDF ===================== */ | |
| .slide.capture-mode { | |
| display: flex ; | |
| opacity: 1 ; | |
| position: fixed ; | |
| top: 0 ; left: 0 ; | |
| z-index: 1 ; | |
| width: 1920px ; | |
| height: 1080px ; | |
| transform: none ; | |
| } | |
| .slide.capture-mode [class*="animate-"] { | |
| animation: none ; | |
| opacity: 1 ; | |
| transform: none ; | |
| transition: none ; | |
| } | |
| .slide.capture-mode .overlay, | |
| .slide.capture-mode .overlay-slide2, | |
| .slide.capture-mode .overlay-slide4, | |
| .slide.capture-mode .overlay-slide5, | |
| .slide.capture-mode .overlay-slide6 { | |
| opacity: 1 ; | |
| } | |
| /* ===================== FIX ESPECÍFICO S5 Y S6 PARA PDF ===================== */ | |
| /* Selectores ultra-específicos DESPUÉS de media queries para ganar cascada */ | |
| body.generating-pdf .slide:nth-child(5) .titulo-slide5, | |
| body.generating-pdf .slide:nth-child(5) .content-slide5 .titulo-slide5 { | |
| font-size: 3.2rem ; | |
| line-height: 1.2 ; | |
| margin-bottom: 15px ; | |
| letter-spacing: 1px ; | |
| } | |
| body.generating-pdf .slide:nth-child(5) .slide5-desc { | |
| font-size: 1.15rem ; | |
| line-height: 1.65 ; | |
| margin-bottom: 25px ; | |
| color: #ddd ; | |
| } | |
| body.generating-pdf .slide:nth-child(5) .cascada-table { | |
| font-size: 1.05rem ; | |
| width: 100% ; | |
| } | |
| body.generating-pdf .slide:nth-child(5) .cascada-table th { | |
| font-size: 0.9rem ; | |
| padding: 12px 15px ; | |
| } | |
| body.generating-pdf .slide:nth-child(5) .cascada-table td { | |
| padding: 12px 15px ; | |
| font-size: 0.95rem ; | |
| } | |
| body.generating-pdf .slide:nth-child(5) .cascada-table .col-monto { | |
| font-size: 1.1rem ; | |
| } | |
| body.generating-pdf .slide:nth-child(5) .notas-tecnicas { | |
| margin-top: 50px ; | |
| padding: 20px ; | |
| } | |
| body.generating-pdf .slide:nth-child(5) .nota-item { | |
| font-size: 0.9rem ; | |
| line-height: 1.6 ; | |
| } | |
| /* === SLIDE 6 === */ | |
| body.generating-pdf .slide:nth-child(6) .content-slide6 { | |
| width: 55% ; | |
| top: 50% ; | |
| transform: translateY(-50%) ; | |
| left: 5% ; | |
| } | |
| body.generating-pdf .slide:nth-child(6) .gracias-title { | |
| font-size: 4.5rem ; | |
| margin-bottom: 55px ; | |
| letter-spacing: 3px ; | |
| } | |
| body.generating-pdf .slide:nth-child(6) .contacto-nombre { | |
| font-size: 2rem ; | |
| margin-bottom: 35px ; | |
| } | |
| body.generating-pdf .slide:nth-child(6) .contacto-item { | |
| font-size: 1.15rem ; | |
| margin-bottom: 25px ; | |
| gap: 18px ; | |
| } | |
| body.generating-pdf .slide:nth-child(6) .whatsapp-icon { | |
| width: 26px ; | |
| height: 26px ; | |
| } | |
| body.generating-pdf .slide:nth-child(6) .talishte-credit { | |
| font-size: 0.95rem ; | |
| bottom: 85px ; | |
| } | |
| /* === OVERLAYS S5/S6 === */ | |
| body.generating-pdf .overlay-slide5, | |
| body.generating-pdf .overlay-slide6 { | |
| opacity: 1 ; | |
| 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%) ; | |
| } | |
| /* === SLIDE 10 (Análisis Estructural — Open Book) === */ | |
| #slide-openbook { | |
| align-items: stretch ; | |
| justify-content: stretch ; | |
| } | |
| #slide-openbook .slide-inner { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 14px; | |
| padding: 38px 50px 28px 50px; | |
| width: 100%; | |
| height: 100%; | |
| overflow-y: auto; | |
| box-sizing: border-box; | |
| } | |
| #slide-openbook .slide-title { | |
| font-family: 'EB Garamond', serif; | |
| font-size: 2.4rem; | |
| font-weight: 600; | |
| color: #fff; | |
| margin: 0; | |
| line-height: 1.1; | |
| letter-spacing: 1px; | |
| } | |
| #slide-openbook .slide-subtitle { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.85rem; | |
| font-weight: 500; | |
| letter-spacing: 2px; | |
| text-transform: uppercase; | |
| color: rgba(255,255,255,0.7); | |
| margin: 0; | |
| padding: 0; | |
| position: static; | |
| } | |
| .ob-intro { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.9rem; | |
| line-height: 1.55; | |
| color: rgba(255,255,255,0.78); | |
| max-width: 920px; | |
| margin: 0; | |
| text-align: left; | |
| } | |
| .ob-spectrogram { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .ob-driver { | |
| display: grid; | |
| grid-template-columns: 100px 1fr; | |
| gap: 10px; | |
| align-items: center; | |
| } | |
| .ob-driver-label { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| letter-spacing: 2px; | |
| text-transform: uppercase; | |
| color: #fbbf24; | |
| text-align: right; | |
| } | |
| .ob-driver-grid { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 2px; | |
| } | |
| .ob-row { | |
| display: grid; | |
| grid-template-columns: 110px repeat(15, 1fr); | |
| gap: 2px; | |
| align-items: center; | |
| } | |
| .ob-row-label { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.66rem; | |
| color: rgba(255,255,255,0.85); | |
| padding-right: 4px; | |
| text-align: right; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| .ob-row-label.ob-row-miguel { | |
| font-weight: 700; | |
| color: #fbbf24; | |
| letter-spacing: 1px; | |
| } | |
| .ob-cell { | |
| background: hsla( | |
| calc(60 - 60 * var(--v)), | |
| calc(70% + 25% * var(--v)), | |
| calc(85% - 35% * var(--v)), | |
| calc(0.15 + 0.75 * var(--v)) | |
| ); | |
| color: rgba(0,0,0,0.85); | |
| text-align: center; | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.6rem; | |
| font-weight: 600; | |
| padding: 3px 0; | |
| border-radius: 2px; | |
| min-height: 18px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .ob-header-row { | |
| display: grid; | |
| grid-template-columns: 110px repeat(15, 1fr); | |
| gap: 2px; | |
| margin-bottom: 6px; | |
| min-height: 36px; | |
| align-items: end; | |
| } | |
| .ob-header-label { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.55rem; | |
| letter-spacing: 0.4px; | |
| color: rgba(255,255,255,0.55); | |
| text-align: center; | |
| transform: rotate(-30deg); | |
| transform-origin: center bottom; | |
| white-space: nowrap; | |
| line-height: 1; | |
| } | |
| .ob-reading { | |
| margin-top: 4px; | |
| padding: 12px 18px; | |
| background: rgba(74,222,128,0.07); | |
| border-left: 3px solid #4ade80; | |
| border-radius: 4px; | |
| } | |
| .ob-reading-title { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| letter-spacing: 2px; | |
| text-transform: uppercase; | |
| color: #4ade80; | |
| margin-bottom: 8px; | |
| } | |
| .ob-reading-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); | |
| gap: 4px 24px; | |
| } | |
| .ob-reading-row { | |
| display: grid; | |
| grid-template-columns: 80px 18px 1fr 56px; | |
| gap: 8px; | |
| align-items: baseline; | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.8rem; | |
| } | |
| .ob-reading-text { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.92rem; | |
| line-height: 1.65; | |
| color: rgba(255,255,255,0.85); | |
| margin: 0; | |
| } | |
| .ob-reading-text strong { | |
| color: #4ade80; | |
| font-weight: 700; | |
| } | |
| .ob-dim { | |
| color: rgba(255,255,255,0.85); | |
| font-weight: 600; | |
| } | |
| .ob-arrow { | |
| color: rgba(255,255,255,0.4); | |
| text-align: center; | |
| } | |
| .ob-anchor { | |
| color: rgba(255,255,255,0.85); | |
| font-style: italic; | |
| } | |
| .ob-score { | |
| color: #4ade80; | |
| font-weight: 700; | |
| text-align: right; | |
| } | |
| .ob-score-strong { | |
| color: #4ade80; | |
| font-weight: 800; | |
| font-size: 0.92rem; | |
| } | |
| .ob-content-note { | |
| margin-top: 4px; | |
| padding: 14px 20px; | |
| background: rgba(255,255,255,0.04); | |
| border-left: 3px solid rgba(255,255,255,0.4); | |
| border-radius: 4px; | |
| } | |
| .ob-content-note-title { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.68rem; | |
| font-weight: 700; | |
| letter-spacing: 2.5px; | |
| text-transform: uppercase; | |
| color: rgba(255,255,255,0.65); | |
| margin-bottom: 6px; | |
| } | |
| .ob-content-note-text { | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.82rem; | |
| line-height: 1.55; | |
| color: rgba(255,255,255,0.82); | |
| margin: 0; | |
| } | |
| .ob-content-note-text strong { | |
| color: rgba(255,255,255,0.96); | |
| font-weight: 700; | |
| } | |
| .ob-disclaimer { | |
| padding: 10px 14px; | |
| background: rgba(251,191,36,0.06); | |
| border-left: 3px solid #fbbf24; | |
| border-radius: 4px; | |
| font-family: 'Manrope', sans-serif; | |
| font-size: 0.72rem; | |
| line-height: 1.55; | |
| color: rgba(255,255,255,0.78); | |
| } | |
| .ob-disclaimer strong { color: #fbbf24; font-weight: 700; } | |
| .ob-disclaimer code { | |
| font-family: 'SFMono-Regular', Consolas, Menlo, monospace; | |
| background: rgba(0,0,0,0.4); | |
| padding: 1px 6px; | |
| border-radius: 3px; | |
| font-size: 0.86em; | |
| color: rgba(255,255,255,0.92); | |
| } | |
| .ob-link { | |
| color: #fbbf24; | |
| text-decoration: none; | |
| border-bottom: 1px dashed rgba(251,191,36,0.5); | |
| font-family: 'SFMono-Regular', Consolas, Menlo, monospace; | |
| font-size: 0.86em; | |
| padding: 1px 4px; | |
| } | |
| .ob-link:hover { | |
| background: rgba(251,191,36,0.12); | |
| border-bottom-style: solid; | |
| } | |
| /* Slide 5 v3 — Espectrograma Lettieri con valores reales */ | |
| .tonal-spectro { display: flex; flex-direction: column; gap: 14px; margin-top: 12px; } | |
| .tonal-driver { display: grid; grid-template-columns: 110px 1fr; gap: 10px; align-items: center; } | |
| .tonal-driver-label { | |
| font-family: 'Manrope', sans-serif; font-size: 0.72rem; font-weight: 700; | |
| letter-spacing: 2px; text-transform: uppercase; color: #fbbf24; | |
| text-align: right; line-height: 1.2; | |
| } | |
| .tonal-driver-grid { display: flex; flex-direction: column; gap: 2px; } | |
| .tonal-row { | |
| display: grid; grid-template-columns: 120px repeat(15, 1fr); gap: 2px; align-items: center; | |
| } | |
| .tonal-row-label { | |
| font-family: 'Manrope', sans-serif; font-size: 0.66rem; | |
| color: rgba(255,255,255,0.85); padding-right: 4px; text-align: right; | |
| white-space: nowrap; overflow: hidden; text-overflow: ellipsis; | |
| } | |
| .tonal-row-label.is-miguel { font-weight: 700; color: #fbbf24; letter-spacing: 1px; } | |
| .tonal-cell-pos { | |
| background: hsla(calc(60 - 60 * var(--v)), calc(70% + 25% * var(--v)), calc(85% - 35% * var(--v)), calc(0.15 + 0.75 * var(--v))); | |
| color: rgba(0,0,0,0.85); text-align: center; | |
| font-family: 'Manrope', sans-serif; font-size: 0.6rem; font-weight: 600; | |
| padding: 3px 0; border-radius: 2px; min-height: 18px; | |
| display: flex; align-items: center; justify-content: center; | |
| } | |
| .tonal-cell-bipolar { | |
| background: hsla(calc(220 - 220 * var(--v)), 70%, calc(60% - 25% * var(--v)), calc(0.18 + 0.7 * var(--v))); | |
| color: rgba(255,255,255,0.95); text-align: center; | |
| font-family: 'Manrope', sans-serif; font-size: 0.6rem; font-weight: 600; | |
| padding: 3px 0; border-radius: 2px; min-height: 18px; | |
| display: flex; align-items: center; justify-content: center; | |
| } | |
| .tonal-header-row { | |
| display: grid; grid-template-columns: 120px repeat(15, 1fr); gap: 2px; | |
| margin-bottom: 6px; min-height: 36px; align-items: end; | |
| } | |
| .tonal-header-label { | |
| font-family: 'Manrope', sans-serif; font-size: 0.55rem; letter-spacing: 0.4px; | |
| color: rgba(255,255,255,0.55); text-align: center; | |
| transform: rotate(-30deg); transform-origin: center bottom; | |
| white-space: nowrap; line-height: 1; | |
| } | |
| .tonal-reading { | |
| margin-top: 12px; padding: 14px 20px; | |
| background: rgba(74,222,128,0.07); border-left: 3px solid #4ade80; border-radius: 4px; | |
| } | |
| .tonal-reading-title { | |
| font-family: 'Manrope', sans-serif; font-size: 0.7rem; font-weight: 700; | |
| letter-spacing: 2px; text-transform: uppercase; color: #4ade80; margin-bottom: 8px; | |
| } | |
| .tonal-reading-text { | |
| font-family: 'Manrope', sans-serif; font-size: 0.92rem; line-height: 1.65; | |
| color: rgba(255,255,255,0.85); margin: 0; | |
| } | |
| .tonal-reading-text strong { color: #4ade80; font-weight: 700; } | |
| .tonal-source-note { | |
| margin-top: 12px; padding: 10px 14px; | |
| background: rgba(251,191,36,0.06); border-left: 3px solid #fbbf24; border-radius: 4px; | |
| font-family: 'Manrope', sans-serif; font-size: 0.74rem; line-height: 1.55; | |
| color: rgba(255,255,255,0.78); | |
| } | |
| .tonal-source-note strong { color: #fbbf24; font-weight: 700; } | |
| .tonal-source-note a { | |
| color: #4ade80; text-decoration: none; | |
| border-bottom: 1px dashed rgba(74,222,128,0.5); | |
| } | |
| @media (max-width: 768px) { | |
| .tonal-driver { grid-template-columns: 70px 1fr; gap: 6px; } | |
| .tonal-row { grid-template-columns: 80px repeat(15, 1fr); gap: 1px; } | |
| .tonal-row-label { font-size: 0.55rem; } | |
| .tonal-cell-pos, .tonal-cell-bipolar { font-size: 0.5rem; padding: 2px 0; min-height: 14px; } | |
| .tonal-driver-label { font-size: 0.58rem; } | |
| .tonal-header-row, .tonal-header-label { display: none; } | |
| } | |
| body.generating-pdf .tonal-cell-pos, | |
| body.generating-pdf .tonal-cell-bipolar { | |
| min-height: 16px ; font-size: 0.55rem ; padding: 2px 0 ; | |
| } | |
| body.generating-pdf .tonal-driver-label { font-size: 0.66rem ; } | |
| body.generating-pdf .tonal-row-label { font-size: 0.62rem ; } | |
| body.generating-pdf .tonal-reading { padding: 10px 14px ; margin-top: 8px ; } | |
| body.generating-pdf .tonal-reading-text { font-size: 0.78rem ; line-height: 1.45 ; } | |
| body.generating-pdf .tonal-source-note { padding: 8px 12px ; font-size: 0.68rem ; } | |
| @media (max-width: 768px) { | |
| #slide-openbook .slide-inner { padding: 24px 18px; gap: 10px; } | |
| #slide-openbook .slide-title { font-size: 1.5rem; } | |
| .ob-driver { grid-template-columns: 70px 1fr; gap: 6px; } | |
| .ob-row { grid-template-columns: 70px repeat(15, 1fr); gap: 1px; } | |
| .ob-row-label { font-size: 0.55rem; } | |
| .ob-cell { font-size: 0.5rem; padding: 2px 0; min-height: 14px; } | |
| .ob-driver-label { font-size: 0.58rem; } | |
| .ob-header-row, .ob-header-label { display: none; } | |
| .ob-reading-grid { grid-template-columns: 1fr; } | |
| } | |
| /* PDF mode compaction for slide 10 — fit in 1080px */ | |
| body.generating-pdf #slide-openbook .slide-inner { | |
| padding: 26px 40px 18px 40px ; | |
| gap: 10px ; | |
| } | |
| body.generating-pdf #slide-openbook .slide-title { | |
| font-size: 2.1rem ; | |
| } | |
| body.generating-pdf #slide-openbook .slide-subtitle { | |
| font-size: 0.78rem ; | |
| } | |
| body.generating-pdf .ob-intro { | |
| font-size: 0.82rem ; | |
| line-height: 1.4 ; | |
| } | |
| body.generating-pdf .ob-spectrogram { gap: 6px ; } | |
| body.generating-pdf .ob-cell { | |
| min-height: 16px ; | |
| font-size: 0.55rem ; | |
| padding: 2px 0 ; | |
| } | |
| body.generating-pdf .ob-driver-label { font-size: 0.66rem ; } | |
| body.generating-pdf .ob-row-label { font-size: 0.62rem ; } | |
| body.generating-pdf .ob-reading { padding: 10px 14px ; margin-top: 2px ; } | |
| body.generating-pdf .ob-reading-row { font-size: 0.74rem ; } | |
| body.generating-pdf .ob-disclaimer { padding: 8px 12px ; font-size: 0.66rem ; } | |
| body.generating-pdf .ob-content-note { padding: 8px 14px ; margin-top: 2px ; } | |
| body.generating-pdf .ob-content-note-title { font-size: 0.62rem ; margin-bottom: 4px ; } | |
| body.generating-pdf .ob-content-note-text { font-size: 0.74rem ; line-height: 1.4 ; } | |
| /* === SLIDE 8 (Probabilidades) — compactar contenido para que quepa en 1080px PDF === */ | |
| body.generating-pdf .slide-probabilidades .content-slide5 { | |
| max-height: none ; | |
| overflow: visible ; | |
| padding-bottom: 0 ; | |
| top: 30px ; | |
| width: 60% ; | |
| } | |
| body.generating-pdf .slide-probabilidades .titulo-slide5 { | |
| font-size: 2.4rem ; | |
| margin-bottom: 8px ; | |
| line-height: 1.1 ; | |
| } | |
| body.generating-pdf .slide-probabilidades .slide5-desc { | |
| font-size: 0.92rem ; | |
| line-height: 1.45 ; | |
| margin-bottom: 14px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-headline { | |
| margin: 10px 0 16px 0 ; | |
| padding: 14px 24px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-headline-label { | |
| font-size: 0.7rem ; | |
| margin-bottom: 4px ; | |
| letter-spacing: 2.5px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-headline-value { | |
| font-size: 3rem ; | |
| margin-bottom: 4px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-headline-sub { | |
| font-size: 0.78rem ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-section { | |
| margin-top: 14px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-header { | |
| font-size: 0.78rem ; | |
| margin-bottom: 4px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-sub { | |
| font-size: 0.72rem ; | |
| line-height: 1.4 ; | |
| margin-bottom: 4px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-table { | |
| font-size: 0.78rem ; | |
| margin-top: 4px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-table th { | |
| padding: 5px 8px ; | |
| font-size: 0.66rem ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-table td { | |
| padding: 4px 8px ; | |
| font-size: 0.78rem ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-scenarios-intro { | |
| margin: 14px 0 6px 0 ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-scenarios-title { | |
| font-size: 0.74rem ; | |
| margin-bottom: 2px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-scenarios-desc { | |
| font-size: 0.74rem ; | |
| line-height: 1.4 ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-callout { | |
| margin-top: 14px ; | |
| padding: 10px 14px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-callout-title { | |
| font-size: 0.72rem ; | |
| margin-bottom: 6px ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-callout-row { | |
| font-size: 0.78rem ; | |
| padding: 2px 0 ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-callout-row strong { | |
| font-size: 0.85rem ; | |
| } | |
| body.generating-pdf .slide-probabilidades .mc-callout-text { | |
| font-size: 0.8rem ; | |
| line-height: 1.4 ; | |
| margin-top: 6px ; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <!-- ==================== SLIDE 1: PORTADA ==================== --> | |
| <div class="slide active" style="background-image: url('imagenes/portada.png');"> | |
| <div class="overlay animate-overlay"></div> | |
| <div class="tagline-top animate-tagline">Only a monster can hunt another.</div> | |
| <div class="content"> | |
| <h1 class="titulo-main animate-title">MIGUEL</h1> | |
| <div class="credits-bottom"> | |
| <div class="credits animate-credits"> | |
| <span>A film directed by Jorge Gurvich</span> | |
| <span>From an original idea by Juan Diego Rodríguez</span> | |
| <span>Written by Angel E. Pariente</span> | |
| </div> | |
| <div class="genre animate-genre">THRILLER • PERIOD • BASED ON TRUE EVENTS</div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 2: GUATEMALA ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/slide2.png');"> | |
| <div class="overlay-slide2 animate-overlay"></div> | |
| <div class="content-slide2"> | |
| <h2 class="titulo-slide2 animate-text">Guatemala, 1946</h2> | |
| <div class="texto-slide2 animate-text" style="animation-delay: 2.0s;"> | |
| The country's new revolutionary government faces an unforeseen crisis: a serial killer is preying on boys between ten and fifteen. He moves like a ghost. There are no witnesses, no sightings, no leads — only bodies. In their urgency to stop the killings, the authorities offer Commissioner Miguel a full pardon for every crime committed under the previous regime, in exchange for catching the killer. In a system this corrupt, justice can only be served by the same hands it set out to clean. | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 3: EQUIPO ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/slide3.png');"> | |
| <div class="overlay animate-overlay"></div> | |
| <h2 class="titulo-slide-top-right animate-title-slide">The Talent Behind the Vision</h2> | |
| <div class="equipo-container"> | |
| <div class="miembro animate-miembro"> | |
| <span class="miembro-nombre"> | |
| <a href="https://www.imdb.com/name/nm4602685/" target="_blank">Juan Diego Rodriguez</a> | |
| </span> | |
| <span class="miembro-rol">ORIGINAL IDEA & LEAD ACTOR (GT)</span> | |
| <p class="miembro-bio">With over three decades of work as an actor and producer, Juan Diego is one of the most recognized faces in Guatemalan theater and film.</p> | |
| </div> | |
| <div class="miembro animate-miembro"> | |
| <span class="miembro-nombre"> | |
| <a href="https://www.imdb.com/name/nm0348791/" target="_blank">Jorge Gurvich</a> | |
| </span> | |
| <span class="miembro-rol">DIRECTOR (AR)</span> | |
| <p class="miembro-bio">Across more than thirty credits as a director (<em>Back to Maracanã</em>, <em>The Shower</em>), producer (<em>Mrs. Moskowitz and the Cats</em>), and cinematographer (<em>Gentila</em>), Jorge brings a hands-on command of production conditions across Latin America that few directors can match.</p> | |
| </div> | |
| <div class="miembro animate-miembro"> | |
| <span class="miembro-nombre"> | |
| <a href="https://www.imdb.com/name/nm1041140/" target="_blank">Angel E. Pariente</a> | |
| </span> | |
| <span class="miembro-rol">SCREENWRITER (ES)</span> | |
| <p class="miembro-bio">Goya Award–winning writer with a long career in film and television, including major productions such as Amazon Prime's <em>El Cid</em>.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 4: COMPARABLES FINANCIEROS ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/slide4.png');"> | |
| <div class="overlay-slide4 animate-overlay"></div> | |
| <div class="content-slide4 content-slide4-wide"> | |
| <h2 class="titulo-slide4 animate-title-slide">Financial Comparables</h2> | |
| <p class="subtitulo-slide4 animate-title-slide" style="animation-delay: 1.8s;">VERIFIED COMPARABLE SEGMENT ($300K – $10M)</p> | |
| <div class="highlight-row animate-highlight"> | |
| <div class="highlight-box"> | |
| <span class="highlight-number">1.72x</span> | |
| <span class="highlight-text">MEDIAN BOX OFFICE ROI,<br>COMPARABLE SEGMENT (N=201)</span> | |
| </div> | |
| <div class="sources-box"> | |
| Sources: Box Office Mojo, Wikipedia, ICAA (Spain), INCAA (Argentina), KOFIC (Korea), KOBIS, territorial trade press. | |
| </div> | |
| </div> | |
| <div class="table-container table-container-compact animate-table"> | |
| <div class="table-row table-header-row"> | |
| <div class="col-header-title">Film</div> | |
| <div class="col-header-budget">Budget</div> | |
| <div class="col-header-roi">Box Office ROI</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>Memories of Murder</em></strong> <span class="year">(2003).</span> <span class="country">KR</span></div><span class="col-movie-desc">Bong Joon-ho · Procedural based on a real unsolved case; morally compromised hunters.</span></div> | |
| <div class="col-budget">$2.8M</div><div class="col-roi roi-ok">8.93x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>Wild Tales</em></strong> <span class="year">(2014).</span> <span class="country">AR/ES</span></div><span class="col-movie-desc">Damián Szifrón · Anthology of fury and social collapse. Almodóvar production.</span></div> | |
| <div class="col-budget">$3.5M</div><div class="col-roi roi-ok">8.71x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>The Clan</em></strong> <span class="year">(2015).</span> <span class="country">AR/ES</span></div><span class="col-movie-desc">Pablo Trapero · True-story family kidnapping ring. Silver Lion at Venice.</span></div> | |
| <div class="col-budget">$4.0M</div><div class="col-roi roi-ok">5.10x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>Memoir of a Murderer</em></strong> <span class="year">(2017).</span> <span class="country">KR</span></div><span class="col-movie-desc">Won Shin-yeon · A retired killer with Alzheimer's protects his daughter. Psychological thriller.</span></div> | |
| <div class="col-budget">$5.0M</div><div class="col-roi roi-good">3.04x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>Confession of Murder</em></strong> <span class="year">(2017).</span> <span class="country">JP</span></div><span class="col-movie-desc">Yū Irie · A serial killer comes forward after the statute of limitations expires and publishes a memoir of his crimes.</span></div> | |
| <div class="col-budget">$6.0M</div><div class="col-roi roi-good">3.37x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>Marshland</em></strong> <span class="year">(2014).</span> <span class="country">ES</span></div><span class="col-movie-desc">Alberto Rodríguez · Iberian procedural set during Spain's transition to democracy. 10 Goya Awards.</span></div> | |
| <div class="col-budget">$5.3M</div><div class="col-roi roi-good">2.83x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>Machuca</em></strong> <span class="year">(2004).</span> <span class="country">CL</span></div><span class="col-movie-desc">Andrés Wood · Coming-of-age during Pinochet's coup.</span></div> | |
| <div class="col-budget">$1.5M</div><div class="col-roi roi-good">2.13x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>Black Bread</em></strong> <span class="year">(2010).</span> <span class="country">ES</span></div><span class="col-movie-desc">Agustí Villaronga · Postwar Catalonia, rural crime. 9 Goya Awards.</span></div> | |
| <div class="col-budget">$3.2M</div><div class="col-roi roi-risk">1.72x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>No Rest for the Wicked</em></strong> <span class="year">(2011).</span> <span class="country">ES</span></div><span class="col-movie-desc">Enrique Urbizu · A corrupt cop investigates a triple homicide. 6 Goya Awards, including Best Picture.</span></div> | |
| <div class="col-budget">$4.9M</div><div class="col-roi roi-risk">1.21x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>God's Crooked Lines</em></strong> <span class="year">(2022).</span> <span class="country">ES</span></div><span class="col-movie-desc">Oriol Paulo · Psychiatric thriller of dual identity.</span></div> | |
| <div class="col-budget">$7.4M</div><div class="col-roi roi-low">0.85x</div> | |
| </div> | |
| <div class="table-row"> | |
| <div><div class="col-movie-header"><strong><em>May God Save Us</em></strong> <span class="year">(2016).</span> <span class="country">ES</span></div><span class="col-movie-desc">Rodrigo Sorogoyen · Detectives chase a serial killer in 2011 Madrid.</span></div> | |
| <div class="col-budget">$4.4M</div><div class="col-roi roi-low">0.70x</div> | |
| </div> | |
| </div> | |
| <div class="comp-bottom-block animate-notes"> | |
| <div class="comp-bottom-row"><span>Median box office ROI (N=201):</span><strong>1.72x</strong></div> | |
| <div class="comp-bottom-row"><span>Top quartile box office ROI (P75):</span><strong>4.29x</strong></div> | |
| <div class="comp-bottom-row"><span>Probability of box office ROI ≥ 1x:</span><strong>63%</strong></div> | |
| </div> | |
| <div class="comp-footer animate-notes" style="animation-delay: 2.7s;"> | |
| Total committed capital, MIGUEL: <strong>$1,390,000</strong> → see Distribution Plan | |
| </div> | |
| <div class="comp-disclaimer animate-notes" style="animation-delay: 2.9s;"> | |
| <strong>Technical note:</strong> The per-film ROI figures shown in this table reflect <strong>box office ROI</strong> (worldwide revenue ÷ production budget). This is not equivalent to investor ROI, which is calculated after distribution splits, sales agent commissions, and the recoupment waterfall. Investor-level returns are calibrated in the Monte Carlo model on the Probabilities slide. | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 5: PLAN DE DISTRIBUCIÓN DEL PRODUCTOR ==================== --> | |
| <!-- TODO: cuando llegue slideplan.png del ilustrador, sustituir el filename de abajo --> | |
| <div class="slide" style="background-image: url('imagenes/slidewaterfall.png');"> | |
| <div class="overlay-slide5 animate-overlay"></div> | |
| <div class="content-slide5 content-plan"> | |
| <h2 class="titulo-slide5 animate-title-slide">Producer's Distribution Plan</h2> | |
| <p class="slide5-desc animate-title-slide" style="animation-delay: 1.6s;"> | |
| CAPITAL TRANCHED AGAINST VERIFIABLE COMMERCIAL MILESTONES | |
| </p> | |
| <p class="plan-intro animate-table"> | |
| Independent films in this segment require dedicated producer-level investment in festival circuit deployment, professional press and marketing materials, and representation at industry markets. An underfunded distribution plan devalues a picture before it ever reaches a sales agent. | |
| </p> | |
| <div class="plan-section animate-table"> | |
| <div class="plan-header">TRANCHED CAPITAL STRUCTURE</div> | |
| <div class="plan-round"> | |
| <div class="plan-round-title"> | |
| <span class="plan-round-label">TRANCHE 1</span> | |
| <span class="plan-round-aside">(available from day one)</span> | |
| <span class="plan-round-amount">$1,120,000</span> | |
| </div> | |
| <ul class="plan-round-detail"> | |
| <li><span>Production</span><span class="plan-amount">$990,000</span></li> | |
| <li><span>Core festival circuit</span><span class="plan-amount">$130,000</span></li> | |
| </ul> | |
| <p class="plan-round-includes"> | |
| Includes: submissions and travel for 3–4 premieres at A-list festivals, professional press kit, EPK, trailer and poster, Iberian–Latin American PR agency, attendance at one industry market. | |
| </p> | |
| </div> | |
| <div class="plan-round plan-round-conditional"> | |
| <div class="plan-round-title"> | |
| <span class="plan-round-label">TRANCHE 2</span> | |
| <span class="plan-round-aside">(conditional)</span> | |
| <span class="plan-round-amount">$270,000</span> | |
| </div> | |
| <p class="plan-trigger-intro">Released only upon verifiable achievement of one of the following milestones:</p> | |
| <ul class="plan-triggers"> | |
| <li> | |
| <span class="trigger-check">✓</span> | |
| <span class="trigger-text"><strong>Confirmed invitation to an A-list festival</strong>Cannes, Venice, Berlin, Toronto, San Sebastián, Sundance, Locarno, Karlovy Vary</span> | |
| </li> | |
| <li> | |
| <span class="trigger-check">✓</span> | |
| <span class="trigger-text"><strong>Confirmed territorial pre-sale</strong>Exclusive SVOD deal or theatrical release in a major territory</span> | |
| </li> | |
| <li> | |
| <span class="trigger-check">✓</span> | |
| <span class="trigger-text"><strong>Sales agent signed with minimum guarantee</strong>Minimum guarantee equal to or greater than Tranche 2</span> | |
| </li> | |
| </ul> | |
| <p class="plan-round-includes"> | |
| Tranche 2 deployment: expanded festival circuit, international PR agency, presence at 2–3 additional industry markets, reserve allocation for awards campaign. | |
| </p> | |
| </div> | |
| <div class="plan-total"> | |
| <span class="plan-total-label">TOTAL COMMITTED CAPITAL</span> | |
| <span class="plan-total-amount">$1,390,000</span> | |
| </div> | |
| <p class="plan-total-aside"> | |
| Production-to-distribution ratio of 1 : 0.40 · aligned with current independent film consensus | |
| </p> | |
| </div> | |
| <p class="plan-closing animate-notes"> | |
| Tranche 2 is released only against verifiable objective milestones, never against projection. If the picture fails to gain initial commercial traction, investor exposure remains capped at $1,120,000 — not at the total committed amount. | |
| </p> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 6: ESTRUCTURA DE DISTRIBUCIÓN (WATERFALL) ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/slide5.png');"> | |
| <div class="overlay-slide5 animate-overlay"></div> | |
| <div class="content-slide5"> | |
| <h2 class="titulo-slide5 animate-title-slide">INVESTOR RETURN WATERFALL</h2> | |
| <p class="slide5-desc animate-title-slide" style="animation-delay: 1.8s;"> | |
| Full recoupment of invested capital plus a 15% preferred return, paid in priority to any producer participation, followed by a perpetual 50% share of net profits. | |
| </p> | |
| <table class="cascada-table animate-table"> | |
| <thead> | |
| <tr> | |
| <th>Tier</th> | |
| <th>Description</th> | |
| <th style="text-align: right;">Scenario A</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class="col-etapa">Tier 1</td> | |
| <td class="col-concepto">Full recoupment of total committed capital (100% to investors)</td> | |
| <td class="col-monto">$1,390,000</td> | |
| </tr> | |
| <tr> | |
| <td class="col-etapa">Tier 2</td> | |
| <td class="col-concepto">15% preferred return on total committed capital</td> | |
| <td class="col-monto">$208,500</td> | |
| </tr> | |
| <tr class="total-row"> | |
| <td class="col-etapa">TOTAL RECOUPMENT</td> | |
| <td class="col-concepto">Before net profit participation</td> | |
| <td class="col-monto">$1,598,500</td> | |
| </tr> | |
| <tr class="fase3-row"> | |
| <td class="col-etapa">Tier 3</td> | |
| <td class="col-concepto">Net profit participation</td> | |
| <td class="col-monto">50% of net profits</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <div class="notas-tecnicas animate-notes"> | |
| <h3>Technical Notes</h3> | |
| <div class="nota-item"> | |
| <strong>Tier 1 — Payment Priority</strong> | |
| Investors hold first position in the revenue waterfall (after taxes and sales agent commissions), receiving full return of invested capital before any deferred producer compensation is paid out. | |
| </div> | |
| <div class="nota-item"> | |
| <strong>Tier 2 — 15% Preferred Return</strong> | |
| A 15% preferred return is paid on total committed capital ($1,390,000) once the picture generates sufficient revenue. The return is calculated on actually deployed capital: if Tranche 2 is not triggered, the preferred return is calculated on $1,120,000. | |
| </div> | |
| <div class="nota-item"> | |
| <strong>Tier 3 — Net Profit Participation</strong> | |
| From this point forward, the investor class retains, in perpetuity, the right to 50% of all additional revenue generated by the production. This participation is distributed pro rata among investors based on each investor's contribution to total committed capital. The remaining 50% (Producer Net Profits) is reserved for the production company, talent, and creative participants. | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 7: PROBABILIDADES MONTE CARLO + ESCENARIOS ==================== --> | |
| <div class="slide slide-probabilidades" style="background-image: url('imagenes/newslide01.png');"> | |
| <div class="overlay-slide5 animate-overlay"></div> | |
| <div class="content-slide5"> | |
| <h2 class="titulo-slide5 animate-title-slide">MODEL PROBABILITIES & SCENARIOS</h2> | |
| <p class="slide5-desc animate-title-slide" style="animation-delay: 1.8s;"> | |
| 100,000 Monte Carlo simulations over 201 verified comparable films · tranched model with dynamic capital exposure based on Tranche 2 activation. | |
| </p> | |
| <div class="mc-headline animate-table"> | |
| <div class="mc-headline-label">INVESTOR EXPECTED RETURN</div> | |
| <div class="mc-headline-value">1.56x</div> | |
| <div class="mc-headline-sub">Probability-weighted mean · +56% over committed capital</div> | |
| </div> | |
| <div class="mc-section animate-notes"> | |
| <div class="mc-header">MODEL PROBABILITIES</div> | |
| <p class="mc-sub">100,000 Monte Carlo simulations · calibrated against 201 verified comparable films. All-in revenue model: theatrical box office + SVOD platforms + television + tax credits. Dynamic capital exposure based on Tranche 2 activation.</p> | |
| <table class="mc-table"> | |
| <thead> | |
| <tr> | |
| <th>Investor return distribution</th> | |
| <th>Probability</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr class="mc-row-positive"><td>Capital doubled or better (MOIC ≥ 2.0x)</td><td>20%</td></tr> | |
| <tr class="mc-row-positive"><td>Full recoupment + 15% preferred return</td><td>34%</td></tr> | |
| <tr><td>Capital recoupment (MOIC ≥ 1.0x)</td><td>49%</td></tr> | |
| <tr class="mc-row-negative"><td>Total loss (MOIC < 0.3x)</td><td>22%</td></tr> | |
| <tr><td>Tranche 2 activation (scaled capital)</td><td>62%</td></tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="mc-scenarios-intro animate-table"> | |
| <div class="mc-scenarios-title">SCENARIO CALIBRATION</div> | |
| <p class="mc-scenarios-desc">The Monte Carlo model is calibrated against four scenarios anchored to actual segment percentiles. Each scenario corresponds to a verifiable historical case.</p> | |
| </div> | |
| <div class="mc-section animate-notes"> | |
| <div class="mc-header">INVESTOR RETURN SCENARIOS</div> | |
| <table class="mc-table mc-scenarios"> | |
| <thead> | |
| <tr> | |
| <th></th> | |
| <th>Probability</th> | |
| <th>Investor MOIC</th> | |
| <th>Typical capital</th> | |
| <th>Total returned</th> | |
| <th>Outcome</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr><td><strong>BEAR</strong> <span class="mc-pct">(P25)</span></td><td>25%</td><td>0.37x</td><td>$1,120,000</td><td>$414,400</td><td class="mc-loss">−$705,600</td></tr> | |
| <tr><td><strong>BASE</strong> <span class="mc-pct">(P50)</span></td><td>50%</td><td>0.93x</td><td>$1,252,000</td><td>$1,164,360</td><td class="mc-loss">−$87,640</td></tr> | |
| <tr><td><strong>BULL</strong> <span class="mc-pct">(P75)</span></td><td>25%</td><td>1.60x</td><td>$1,390,000</td><td>$2,224,000</td><td class="mc-gain">+$834,000</td></tr> | |
| <tr><td><strong>STRETCH</strong> <span class="mc-pct">(P90)</span></td><td>10%</td><td>3.68x</td><td>$1,390,000</td><td>$5,115,200</td><td class="mc-gain">+$3,725,200</td></tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="mc-callout animate-notes"> | |
| <div class="mc-callout-title">WHY EXPECTED RETURN AND NOT MEDIAN</div> | |
| <div class="mc-callout-row"> | |
| <span>Median (P50) — what happens to the central investor:</span><strong>0.93x</strong> | |
| </div> | |
| <div class="mc-callout-row"> | |
| <span>Expected return (mean) — probability-weighted average:</span><strong class="mc-historic">1.56x</strong> | |
| </div> | |
| <p class="mc-callout-text"> | |
| Independent film exhibits positive skew: a modest median paired with a substantial right tail. The investor is not buying the median — the investor is buying the full distribution, in which 20% of projects double capital and 10% return 3.68x or more. The correct financial metric for evaluating this opportunity is expected return, not median. | |
| </p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 8: EMPIRICAL ANCHORS (NEW) ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/newslide02.png');"> | |
| <div class="overlay-slide4 animate-overlay"></div> | |
| <div class="content-slide4 content-anchors"> | |
| <h2 class="titulo-slide4 animate-title-slide">Empirical Anchors</h2> | |
| <p class="subtitulo-slide4 animate-title-slide" style="animation-delay: 1.8s;">EVERY SCENARIO HAS A REAL FILM BEHIND IT</p> | |
| <p class="anchor-intro animate-table"> | |
| The Monte Carlo model is calibrated against the actual return distribution of 201 verified comparable films in the segment ($300K–$10M). The four films below are tonal anchors representing each percentile. | |
| </p> | |
| <div class="anchor-grid animate-table"> | |
| <div class="anchor-card anchor-bear"> | |
| <div class="anchor-tier">BEAR (P25) <span>~25% probability</span></div> | |
| <div class="anchor-title"><em>Black Bread</em> <span class="anchor-year">(2010)</span></div> | |
| <div class="anchor-meta">Agustí Villaronga · Spain</div> | |
| <div class="anchor-numbers"> | |
| <span>Budget: <strong>$3.2M</strong></span> | |
| <span class="anchor-arrow">→</span> | |
| <span>Worldwide box office: <strong>$5.5M</strong></span> | |
| </div> | |
| <div class="anchor-roi">ROI: <strong>1.72x</strong></div> | |
| <div class="anchor-note">9 Goya Awards · moderate Spain/Europe distribution.</div> | |
| </div> | |
| <div class="anchor-card anchor-base"> | |
| <div class="anchor-tier">BASE (P50) <span>~50% probability</span></div> | |
| <div class="anchor-title"><em>Marshland</em> <span class="anchor-year">(2014)</span></div> | |
| <div class="anchor-meta">Alberto Rodríguez · Spain</div> | |
| <div class="anchor-numbers"> | |
| <span>Budget: <strong>$5.3M</strong></span> | |
| <span class="anchor-arrow">→</span> | |
| <span>Worldwide box office: <strong>$15.0M</strong></span> | |
| </div> | |
| <div class="anchor-roi">ROI: <strong>2.83x</strong></div> | |
| <div class="anchor-note">10 Goya Awards including Best Picture · international distribution.</div> | |
| </div> | |
| <div class="anchor-card anchor-bull"> | |
| <div class="anchor-tier">BULL (P75) <span>~25% probability</span></div> | |
| <div class="anchor-title"><em>The Clan</em> <span class="anchor-year">(2015)</span></div> | |
| <div class="anchor-meta">Pablo Trapero · Argentina/Spain</div> | |
| <div class="anchor-numbers"> | |
| <span>Budget: <strong>$4.0M</strong></span> | |
| <span class="anchor-arrow">→</span> | |
| <span>Worldwide box office: <strong>$20.4M</strong></span> | |
| </div> | |
| <div class="anchor-roi">ROI: <strong>5.10x</strong></div> | |
| <div class="anchor-note">Silver Lion at Venice · global distribution via Fox International.</div> | |
| </div> | |
| <div class="anchor-card anchor-stretch"> | |
| <div class="anchor-tier">STRETCH (P90) <span>~10% probability</span></div> | |
| <div class="anchor-title"><em>Memories of Murder</em> <span class="anchor-year">(2003)</span></div> | |
| <div class="anchor-meta">Bong Joon-ho · South Korea</div> | |
| <div class="anchor-numbers"> | |
| <span>Budget: <strong>$2.8M</strong></span> | |
| <span class="anchor-arrow">→</span> | |
| <span>Worldwide box office: <strong>$25.0M</strong></span> | |
| </div> | |
| <div class="anchor-roi">ROI: <strong>8.93x</strong></div> | |
| <div class="anchor-note">Global benchmark of the subgenre · 5.1M admissions in Korea.</div> | |
| </div> | |
| </div> | |
| <p class="anchor-closing animate-notes"> | |
| Four verifiable films. No outliers. No theoretical projections. | |
| </p> | |
| <div class="anchor-disclaimer animate-notes"> | |
| <strong>Technical note:</strong> The ROI figures shown for each film are <strong>box office ROI</strong> (worldwide revenue ÷ production budget). The historical investor MOIC for each case depends on its specific splits structure and is not included here. The Monte Carlo model on the previous slide calculates investor MOIC for MIGUEL under the declared tranched financial structure. | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 9: COMPARABLES TONALES (V3 — espectrograma Lettieri con datos reales) ==================== --> | |
| <div class="slide tonal-slide" style="background-image: url('imagenes/slidetonales.png');"> | |
| <div class="overlay-slide4 animate-overlay"></div> | |
| <div class="content-slide4 content-tonal"> | |
| <h2 class="titulo-slide4 animate-title-slide">Tonal Comparables</h2> | |
| <p class="subtitulo-slide4 animate-title-slide" style="animation-delay: 1.8s;">EMOTIONAL SPECTROGRAM — MIGUEL VS TONAL ANCHORS</p> | |
| <p class="tonal-credits animate-title-slide" style="animation-delay: 1.85s; font-family: 'Manrope', sans-serif; font-size: 0.78rem; color: rgba(255,255,255,0.65); letter-spacing: 0.5px; margin: 4px 0 14px 0; font-weight: 400;"> | |
| Methodology validated against Lettieri et al., <em>Nature Communications</em> 2019 · Auditable dataset | |
| </p> | |
| <p class="tonal-intro animate-table"> | |
| Every beat of MIGUEL's screenplay — and of the screenplays of its three tonal anchors (<em>Memories of Murder</em>, <em>Marshland</em>, <em>Black Bread</em>) — was labeled along three neuroimaging-validated emotional dimensions: <strong style="color:#fbbf24;">polarity</strong>, <strong style="color:#fbbf24;">complexity</strong>, and <strong style="color:#fbbf24;">intensity</strong>. The spectrogram visualizes how MIGUEL's dramatic structure unfolds across the fifteen Save the Cat beats, compared against the scripts of films that share its tonal DNA. | |
| </p> | |
| <div class="tonal-spectro animate-table" style="animation-delay: 1.9s;"> | |
| <div class="tonal-header-row"> | |
| <div></div> | |
| <div class="tonal-header-label">opening</div> | |
| <div class="tonal-header-label">theme</div> | |
| <div class="tonal-header-label">setup</div> | |
| <div class="tonal-header-label">catalyst</div> | |
| <div class="tonal-header-label">debate</div> | |
| <div class="tonal-header-label">break 2</div> | |
| <div class="tonal-header-label">B story</div> | |
| <div class="tonal-header-label">fun & games</div> | |
| <div class="tonal-header-label">midpoint</div> | |
| <div class="tonal-header-label">bad guys</div> | |
| <div class="tonal-header-label">all lost</div> | |
| <div class="tonal-header-label">dark night</div> | |
| <div class="tonal-header-label">break 3</div> | |
| <div class="tonal-header-label">finale</div> | |
| <div class="tonal-header-label">final image</div> | |
| </div> | |
| <div class="tonal-driver"> | |
| <div class="tonal-driver-label">POLARITY</div> | |
| <div class="tonal-driver-grid"> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Memories of Murder</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.100">-8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.250">-5.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.375">-2.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.150">-7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.250">-5.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.250">-5.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.350">-3.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.300">-4.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.400">-2.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.226">-5.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.061">-8.8</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.158">-6.8</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.260">-4.8</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.125">-7.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.075">-8.5</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Marshland</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.100">-8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.300">-4.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.200">-6.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.050">-9.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.225">-5.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.300">-4.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.275">-4.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.196">-6.1</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.200">-6.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.136">-7.3</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.057">-8.9</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.192">-6.2</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.375">-2.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.155">-6.9</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.225">-5.5</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Black Bread</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.200">-6.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.250">-5.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.325">-3.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.050">-9.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.200">-6.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.300">-4.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.400">-2.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.338">-3.2</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.175">-6.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.125">-7.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.056">-8.9</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.129">-7.4</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.300">-4.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.153">-6.9</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.275">-4.5</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label is-miguel">MIGUEL</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.300">-4.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.600">+2.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.300">-4.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.100">-8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.225">-5.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.550">+1.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.750">+5.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.782">+5.6</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.490">-0.2</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.146">-7.1</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.068">-8.6</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.267">-4.7</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.730">+4.6</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.705">+4.1</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.875">+7.5</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tonal-driver"> | |
| <div class="tonal-driver-label">COMPLEXITY</div> | |
| <div class="tonal-driver-grid"> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Memories of Murder</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.650">+3.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.900">+8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.775">+5.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.600">+2.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.825">+6.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.850">+7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.950">+9.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.870">+7.4</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.925">+8.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.853">+7.1</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.900">+8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.917">+8.3</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.910">+8.2</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.900">+8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 1.000">+10.0</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Marshland</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.550">+1.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.850">+7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.725">+4.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.600">+2.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.875">+7.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.800">+6.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.900">+8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.796">+5.9</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.850">+7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.768">+5.4</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.593">+1.9</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.900">+8.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.775">+5.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.850">+7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.925">+8.5</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Black Bread</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.650">+3.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.850">+7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.725">+4.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.600">+2.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.850">+7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.800">+6.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.750">+5.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.787">+5.8</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.925">+8.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.859">+7.2</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.831">+6.6</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.921">+8.4</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.867">+7.3</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.939">+8.8</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.975">+9.5</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label is-miguel">MIGUEL</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.650">+3.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.850">+7.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.650">+3.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.400">-2.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.875">+7.5</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.800">+6.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.750">+5.0</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.664">+3.3</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.890">+7.8</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.632">+2.6</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.582">+1.6</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.911">+8.2</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.780">+5.6</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.792">+5.8</div> | |
| <div class="tonal-cell-bipolar" style="--v: 0.875">+7.5</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tonal-driver"> | |
| <div class="tonal-driver-label">INTENSITY</div> | |
| <div class="tonal-driver-grid"> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Memories of Murder</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.600">6.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.550">5.5</div> | |
| <div class="tonal-cell-pos" style="--v: 0.800">8.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.800">8.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.600">6.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.780">7.8</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.818">8.2</div> | |
| <div class="tonal-cell-pos" style="--v: 0.956">9.6</div> | |
| <div class="tonal-cell-pos" style="--v: 0.750">7.5</div> | |
| <div class="tonal-cell-pos" style="--v: 0.780">7.8</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 1.000">10.0</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Marshland</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.600">6.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.625">6.2</div> | |
| <div class="tonal-cell-pos" style="--v: 1.000">10.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.650">6.5</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.600">6.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.800">8.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.786">7.9</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.767">7.7</div> | |
| <div class="tonal-cell-pos" style="--v: 0.775">7.8</div> | |
| <div class="tonal-cell-pos" style="--v: 0.855">8.5</div> | |
| <div class="tonal-cell-pos" style="--v: 0.550">5.5</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label">Black Bread</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.550">5.5</div> | |
| <div class="tonal-cell-pos" style="--v: 1.000">10.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.500">5.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.550">5.5</div> | |
| <div class="tonal-cell-pos" style="--v: 0.850">8.5</div> | |
| <div class="tonal-cell-pos" style="--v: 0.856">8.6</div> | |
| <div class="tonal-cell-pos" style="--v: 0.912">9.1</div> | |
| <div class="tonal-cell-pos" style="--v: 0.842">8.4</div> | |
| <div class="tonal-cell-pos" style="--v: 0.667">6.7</div> | |
| <div class="tonal-cell-pos" style="--v: 0.889">8.9</div> | |
| <div class="tonal-cell-pos" style="--v: 0.800">8.0</div> | |
| </div> | |
| <div class="tonal-row"> | |
| <div class="tonal-row-label is-miguel">MIGUEL</div> | |
| <div class="tonal-cell-pos" style="--v: 0.600">6.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.600">6.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.420">4.2</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.800">8.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.600">6.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.618">6.2</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.847">8.5</div> | |
| <div class="tonal-cell-pos" style="--v: 0.900">9.0</div> | |
| <div class="tonal-cell-pos" style="--v: 0.789">7.9</div> | |
| <div class="tonal-cell-pos" style="--v: 0.780">7.8</div> | |
| <div class="tonal-cell-pos" style="--v: 0.920">9.2</div> | |
| <div class="tonal-cell-pos" style="--v: 0.700">7.0</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="tonal-reading animate-notes" style="animation-delay: 2.2s;"> | |
| <div class="tonal-reading-title">DRAMATURGICAL READING</div> | |
| <p class="tonal-reading-text"> | |
| MIGUEL shares with its three anchors the <strong>emotional body of the moral thriller</strong>: sustained negative polarity from inciting incident through climax (<em>all is lost</em> around −8.6, in line with the anchors), rising complexity through the central acts, and intensity aligned at the pivot moments (8.5–9.2 at <em>bad guys close in</em>, <em>all is lost</em>, and <em>finale</em>). It diverges at two key points that constitute its <strong>distinctive authorial signature</strong>: a more visceral response at the inciting incident (complexity −2, against the +2 of the anchors) that reflects the brutality of the crime, and a <strong>shift to positive polarity in the closing arc</strong> (<em>finale</em> +4.1, <em>final image</em> +7.5) where all three anchors hold the darkness through the last frame. That final opening toward redemption and Mesoamerican magical realism is the project's differential asset. | |
| </p> | |
| </div> | |
| <div class="tonal-source-note animate-notes" style="animation-delay: 2.4s;"> | |
| <strong>Methodology:</strong> three emotional dimensions validated through functional neuroimaging (polarity, complexity, intensity — Lettieri et al., <em>Nature Communications</em>, 2019). LLM-based dramaturgical annotation of the complete screenplay, beat by beat, calibrated against an open fMRI dataset (Naturalistic Neuroimaging Database, UCL) using <em>Pulp Fiction</em> as scientific control. Reproducibility, similarity matrices, and downloadable dataset available in the <a href="https://malaji71-miguelpitchdeck.static.hf.space/openbook/index.html" target="_blank" rel="noopener" class="ob-link">Open Book</a>. | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 10: ASYMMETRIC RETURN PROFILE (NEW) ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/slideperfilderetorno.png');"> | |
| <div class="overlay-slide4 animate-overlay"></div> | |
| <div class="content-slide4 content-asym"> | |
| <h2 class="titulo-slide4 animate-title-slide">Asymmetric Return Profile</h2> | |
| <p class="subtitulo-slide4 animate-title-slide" style="animation-delay: 1.8s;">WHY MIGUEL IS NOT AN ALL-OR-NOTHING BET</p> | |
| <p class="asym-intro animate-table"> | |
| Independent film in this comparable segment does not behave like the traditional studio hit-or-miss model. | |
| </p> | |
| <div class="asym-quad animate-table"> | |
| <div class="asym-kpi asym-kpi-good"> | |
| <div class="asym-num">63%</div> | |
| <div class="asym-label">RECOUP<br>CAPITAL</div> | |
| <div class="asym-cond">(Box office ROI ≥ 1.0x)</div> | |
| </div> | |
| <div class="asym-kpi asym-kpi-good"> | |
| <div class="asym-num">42%</div> | |
| <div class="asym-label">DOUBLE<br>CAPITAL</div> | |
| <div class="asym-cond">(Box office ROI ≥ 2.0x)</div> | |
| </div> | |
| <div class="asym-kpi asym-kpi-amber"> | |
| <div class="asym-num">17%</div> | |
| <div class="asym-label">QUINTUPLE<br>CAPITAL</div> | |
| <div class="asym-cond">(Box office ROI ≥ 5.0x)</div> | |
| </div> | |
| <div class="asym-kpi asym-kpi-bad"> | |
| <div class="asym-num">14%</div> | |
| <div class="asym-label">TOTAL<br>LOSS</div> | |
| <div class="asym-cond">(Box office ROI < 0.3x)</div> | |
| </div> | |
| </div> | |
| <p class="asym-evidence">Empirical evidence · 201 verified comparable films in the segment ($300K–$10M)</p> | |
| <div class="asym-cols animate-notes"> | |
| <div class="asym-col"> | |
| <div class="asym-col-title">BOUNDED DOWNSIDE RISK</div> | |
| <p>14% of films in the segment lose more than 70% of capital. The tranched Tranche 2 structure caps actual investor exposure in bear scenarios.</p> | |
| </div> | |
| <div class="asym-col"> | |
| <div class="asym-col-title">SUBSTANTIAL UPSIDE POTENTIAL</div> | |
| <p>17% achieve box office ROI of 5x or more. The segment's asymmetric distribution lifts investor expected return to 1.56x over committed capital.</p> | |
| </div> | |
| <div class="asym-col"> | |
| <div class="asym-col-title">ASYMMETRIC DISTRIBUTION</div> | |
| <p>The segment's right tail is consistent with repeatable extraordinary cases, not with random luck.</p> | |
| </div> | |
| </div> | |
| <div class="asym-institutional animate-notes"> | |
| <div class="asym-inst-title">IN INSTITUTIONAL TERMS</div> | |
| <p>"This segment behaves more like venture capital with downside protection than like traditional hit-driven media. The model does not depend on outliers for base-case returns; on the contrary, the distribution is structurally skewed to the upside."</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 11: MERCADO Y POSICIONAMIENTO (NEW) ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/slidemercadoyposicionamiento.png');"> | |
| <div class="overlay-slide4 animate-overlay"></div> | |
| <div class="content-slide4 content-mercado"> | |
| <h2 class="titulo-slide4 animate-title-slide">Market & Positioning</h2> | |
| <p class="subtitulo-slide4 animate-title-slide" style="animation-delay: 1.8s;">THE MIGUEL QUADRANT</p> | |
| <p class="mercado-intro animate-table"> | |
| MIGUEL sits at the intersection of four variables that rarely converge in a single project: | |
| </p> | |
| <div class="mercado-row animate-table"> | |
| <div class="mercado-quadrant"> | |
| <div class="quad-axis quad-top">Comparable budget segment<br><span>($300K – $5M)</span></div> | |
| <div class="quad-axis quad-left">Spanish-<br>language</div> | |
| <div class="quad-axis quad-right">Period setting<br><span>(1946 Guatemala)</span></div> | |
| <div class="quad-axis quad-bottom">Psychological thriller<br><span>with redemption arc</span></div> | |
| <div class="quad-center">MIGUEL</div> | |
| </div> | |
| <div class="mercado-impl"> | |
| <div class="impl-item"><span class="impl-check">✓</span><div><strong>LOW DIRECT COMPETITION</strong>No film currently in production or development matches this intersection of variables. Absolute differentiation.</div></div> | |
| <div class="impl-item"><span class="impl-check">✓</span><div><strong>HIGH FESTIVAL SELECTIVITY</strong>The historical–Latin American–thriller quadrant is sought after at Cannes, Venice, Toronto, San Sebastián, and BAFICI.</div></div> | |
| <div class="impl-item"><span class="impl-check">✓</span><div><strong>GROWING STREAMING DEMAND</strong>Netflix, Amazon, MAX, and Movistar+ have tripled their investment in Iberian and Latin American thrillers since 2020.</div></div> | |
| <div class="impl-item"><span class="impl-check">✓</span><div><strong>ESTABLISHED SALES CIRCUIT</strong>Iberian and Latin American cinema of this profile is served by institutional sales agents with specific experience in European festivals and distribution across SVOD platforms and theatrical release in Latin America.</div></div> | |
| </div> | |
| </div> | |
| <p class="mercado-closing animate-notes"> | |
| The intersection is not accidental. This is precisely the quadrant in which the segment historically delivers its best risk-adjusted returns: high upside, contained downside, limited competition. | |
| </p> | |
| </div> | |
| </div> | |
| <!-- ==================== SLIDE 12: CIERRE/CONTACTO ==================== --> | |
| <div class="slide" style="background-image: url('imagenes/slide6.png');"> | |
| <div class="overlay-slide6 animate-overlay"></div> | |
| <div class="content-slide6"> | |
| <h1 class="gracias-title animate-contact">Thank you</h1> | |
| <div class="contacto-nombre animate-contact" style="animation-delay: 1.8s;">Contact</div> | |
| <div class="contacto-item animate-contact-item"> | |
| <span></span> | |
| <a href="tel:+50250008082">+502 5000 8082</a> | |
| </div> | |
| <div class="contacto-item animate-contact-item"> | |
| <svg class="whatsapp-icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> | |
| <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/> | |
| </svg> | |
| <a href="https://wa.me/50250008082" target="_blank">WhatsApp</a> | |
| </div> | |
| <div class="contacto-item animate-contact-item"> | |
| <span>️</span> | |
| <a href="mailto:info@talishte.io">info@talishte.io</a> | |
| </div> | |
| </div> | |
| <div class="ilustrador-credit"> | |
| Illustrations by <a href="https://www.imdb.com/name/nm0553439/" target="_blank">Adolfo Martínez</a> | |
| </div> | |
| <div class="talishte-credit"> | |
| This pitch deck was developed end-to-end by <a href="https://talishte.io" target="_blank">talishte.io</a> | |
| </div> | |
| </div> | |
| <!-- BARRA INFERIOR UNIFICADA --> | |
| <div class="bottom-controls"> | |
| <div class="slide-counter"><span id="current">1</span> / 12</div> | |
| <button id="btn-pdf" onclick="generatePDF()">Download PDF</button> | |
| <div class="nav"> | |
| <button id="btn-prev" onclick="changeSlide(-1)">PREV</button> | |
| <button id="btn-next" onclick="changeSlide(1)">NEXT</button> | |
| </div> | |
| </div> | |
| <!-- OVERLAY DE CARGA --> | |
| <div id="pdf-loading"> | |
| <div class="spinner"></div> | |
| <p>Generating PDF...</p> | |
| <div class="progress-text" id="progress-text">Preparing slides</div> | |
| </div> | |
| <script> | |
| let currentSlide = 1; | |
| const totalSlides = document.querySelectorAll('.slide').length; | |
| const counterEl = document.querySelector('.slide-counter'); | |
| if (counterEl) counterEl.innerHTML = '<span id="current">1</span> / ' + totalSlides; | |
| // Fallback: if a slide's background image is missing, swap to a dark gradient and warn | |
| document.querySelectorAll('.slide').forEach((slide, idx) => { | |
| const bgStyle = slide.style.backgroundImage; | |
| const urlMatch = bgStyle.match(/url\(['"]?(.*?)['"]?\)/); | |
| if (!urlMatch) return; | |
| const url = urlMatch[1]; | |
| const img = new Image(); | |
| img.onerror = () => { | |
| console.warn('[deck] Missing slide image: ' + url + ' (slide ' + (idx + 1) + ') — using gradient fallback'); | |
| slide.style.backgroundImage = 'linear-gradient(135deg, #0a0a0a 0%, #1a1410 50%, #0a0a0a 100%)'; | |
| }; | |
| img.src = url; | |
| }); | |
| function changeSlide(dir) { | |
| const currentEl = document.querySelector('.slide.active'); | |
| if (currentEl) { | |
| const animatedElements = currentEl.querySelectorAll('.animate-overlay, .animate-title, .animate-tagline, .animate-credits, .animate-genre, .animate-text, .animate-title-slide, .animate-table, .animate-notes, .animate-contact, .animate-contact-item, .animate-miembro, .animate-highlight'); | |
| animatedElements.forEach(el => { | |
| el.style.animation = 'none'; | |
| el.offsetHeight; | |
| el.style.animation = ''; | |
| }); | |
| } | |
| document.querySelector('.slide.active').classList.remove('active'); | |
| currentSlide = Math.max(1, Math.min(currentSlide + dir, totalSlides)); | |
| document.querySelectorAll('.slide')[currentSlide - 1].classList.add('active'); | |
| document.getElementById('current').innerText = currentSlide; | |
| document.getElementById('btn-prev').disabled = (currentSlide === 1); | |
| document.getElementById('btn-next').disabled = (currentSlide === totalSlides); | |
| } | |
| document.addEventListener('keydown', e => { | |
| if (e.key === 'ArrowRight') changeSlide(1); | |
| if (e.key === 'ArrowLeft') changeSlide(-1); | |
| }); | |
| // ===================== GENERADOR DE PDF - FORZADO DESKTOP ===================== | |
| async function generatePDF() { | |
| const loadingOverlay = document.getElementById('pdf-loading'); | |
| const progressText = document.getElementById('progress-text'); | |
| const btnPdf = document.getElementById('btn-pdf'); | |
| const slides = document.querySelectorAll('.slide'); | |
| const originalSlide = currentSlide - 1; | |
| loadingOverlay.style.display = 'flex'; | |
| btnPdf.disabled = true; | |
| progressText.textContent = 'Inicializando...'; | |
| // 1. ACTIVAR MODO GHOST (Fuerza estilos desktop y tamaño de fuente) | |
| document.body.classList.add('generating-pdf'); | |
| // Esperar a que el CSS tome efecto antes de ocultar | |
| await new Promise(resolve => setTimeout(resolve, 500)); | |
| // 2. Ocultar slides | |
| slides.forEach(s => s.style.display = 'none'); | |
| await new Promise(resolve => setTimeout(resolve, 200)); | |
| try { | |
| const { jsPDF } = window.jspdf; | |
| const pdf = new jsPDF({ orientation: 'landscape', unit: 'px', format: [1920, 1080], compress: true }); | |
| for (let i = 0; i < slides.length; i++) { | |
| const slide = slides[i]; | |
| progressText.textContent = `Processing slide ${i + 1} of ${slides.length}...`; | |
| await new Promise(resolve => setTimeout(resolve, 50)); | |
| slide.classList.add('capture-mode'); | |
| slide.style.display = 'flex'; | |
| // Forzar animaciones a estado final | |
| const animatedElements = slide.querySelectorAll('[class*="animate-"]'); | |
| animatedElements.forEach(el => { | |
| el.style.animation = 'none'; | |
| el.style.opacity = '1'; | |
| el.style.transform = 'none'; | |
| void el.offsetWidth; | |
| }); | |
| // Recolectar links | |
| const links = []; | |
| slide.querySelectorAll('a[href]').forEach(link => { | |
| const rect = link.getBoundingClientRect(); | |
| const href = link.getAttribute('href'); | |
| if (href && !href.startsWith('#')) { | |
| links.push({ x: rect.left, y: rect.top, width: rect.width, height: rect.height, url: href }); | |
| } | |
| }); | |
| await new Promise(resolve => setTimeout(resolve, 1500)); | |
| // === FIX VIEWPORT: Forzar meta viewport para evitar media queries móviles === | |
| const originalMetaViewport = document.querySelector('meta[name="viewport"]'); | |
| const tempMeta = document.createElement('meta'); | |
| tempMeta.name = 'viewport'; | |
| tempMeta.content = 'width=1920, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'; | |
| if (originalMetaViewport) { | |
| originalMetaViewport.parentNode.replaceChild(tempMeta, originalMetaViewport); | |
| } else { | |
| document.head.appendChild(tempMeta); | |
| } | |
| // Convertir bg a base64 | |
| const bgStyle = window.getComputedStyle(slide).backgroundImage; | |
| const urlMatch = bgStyle.match(/url\(["']?(.*?)["']?\)/); | |
| if (urlMatch && urlMatch[1]) { | |
| try { | |
| const res = await fetch(urlMatch[1]); | |
| const blob = await res.blob(); | |
| const b64 = await new Promise(r => { | |
| const rd = new FileReader(); | |
| rd.onloadend = () => r(rd.result); | |
| rd.readAsDataURL(blob); | |
| }); | |
| slide.style.backgroundImage = `url(${b64})`; | |
| } catch (e) { console.warn("BG conversion failed:", e); } | |
| } | |
| // Capturar | |
| const canvas = await html2canvas(slide, { | |
| scale: 1, | |
| useCORS: false, | |
| allowTaint: false, | |
| backgroundColor: '#050505', | |
| logging: false, | |
| width: 1920, | |
| height: 1080, | |
| windowWidth: 1920, // Fuerza ancho de ventana para evitar media queries de móvil | |
| windowHeight: 1080, | |
| scrollX: 0, | |
| scrollY: 0, | |
| x: 0, | |
| y: 0, | |
| foreignObjectRendering: true, | |
| removeContainer: true | |
| }); | |
| // === RESTAURAR viewport original DESPUÉS de capturar === | |
| await new Promise(resolve => setTimeout(resolve, 100)); | |
| if (originalMetaViewport) { | |
| if (tempMeta.parentNode) { | |
| tempMeta.parentNode.replaceChild(originalMetaViewport, tempMeta); | |
| } | |
| } else { | |
| if (tempMeta.parentNode) { | |
| tempMeta.remove(); | |
| } | |
| } | |
| if (i > 0) pdf.addPage(); | |
| pdf.addImage(canvas.toDataURL('image/jpeg', 0.95), 'JPEG', 0, 0, 1920, 1080, undefined, 'FAST'); | |
| links.forEach(link => { | |
| pdf.link(link.x, link.y, link.width, link.height, { url: link.url }); | |
| }); | |
| slide.classList.remove('capture-mode'); | |
| slide.style.display = 'none'; | |
| } | |
| progressText.textContent = 'Finalizing and downloading...'; | |
| await new Promise(resolve => setTimeout(resolve, 500)); | |
| pdf.save('MIGUEL_PitchDeck_EN.pdf'); | |
| slides.forEach((s, idx) => { | |
| s.style.display = idx === originalSlide ? 'flex' : 'none'; | |
| }); | |
| // Desactivar modo ghost | |
| document.body.classList.remove('generating-pdf'); | |
| setTimeout(() => location.reload(), 1000); | |
| } catch (err) { | |
| console.error('Error:', err); | |
| alert('Error al generar PDF: ' + err.message); | |
| } finally { | |
| loadingOverlay.style.display = 'none'; | |
| btnPdf.disabled = false; | |
| document.body.classList.remove('generating-pdf'); | |
| } | |
| } | |
| changeSlide(0); | |
| </script> | |
| </body> | |
| </html> |