Peliculas De Juegos Del Hambre Guide
body background: radial-gradient(circle at 10% 20%, #0a0c12, #030507); font-family: 'Inter', sans-serif; color: #ede7dd; line-height: 1.5; scroll-behavior: smooth;
/* stats / tribute */ .stats-panel display: flex; flex-wrap: wrap; justify-content: center; gap: 2rem; margin-top: 1.5rem; margin-bottom: 3rem; .stat background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); padding: 1rem 2rem; border-radius: 60px; border: 1px solid #c9a03d40; font-weight: 500; .stat strong font-size: 1.8rem; font-weight: 800; color: #e2bc6e; margin-right: 8px;
// poster container with background image (safe cross-origin) const posterDiv = document.createElement('div'); posterDiv.className = 'poster'; // set background-image, fallback to gradient if image fails const imgUrl = movie.posterBg; posterDiv.style.backgroundImage = `url($imgUrl)`; posterDiv.style.backgroundSize = 'cover'; posterDiv.style.backgroundPosition = 'center 20%'; // add overlay for year const overlaySpan = document.createElement('div'); overlaySpan.className = 'overlay'; const yearSpan = document.createElement('span'); yearSpan.className = 'year'; yearSpan.innerText = movie.year; overlaySpan.appendChild(yearSpan); posterDiv.appendChild(overlaySpan); peliculas de juegos del hambre
/* film grid */ .film-grid display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; margin: 3rem 0 5rem; .film-card background: rgba(15, 18, 24, 0.75); backdrop-filter: blur(2px); border-radius: 2rem; overflow: hidden; transition: all 0.35s cubic-bezier(0.2, 0.9, 0.4, 1.1); border: 1px solid rgba(201, 160, 61, 0.2); box-shadow: 0 20px 35px -15px rgba(0,0,0,0.6); .film-card:hover transform: translateY(-12px); border-color: rgba(201, 160, 61, 0.6); box-shadow: 0 30px 40px -18px black; background: rgba(20, 24, 32, 0.9); .poster position: relative; height: 400px; background-size: cover; background-position: center top; transition: transform 0.5s ease; .film-card:hover .poster transform: scale(1.02); .overlay position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(to top, #030507ee, transparent); padding: 1.5rem 1rem 0.8rem; .year font-size: 0.8rem; font-weight: 500; background: #c9a03dcc; display: inline-block; padding: 0.2rem 0.8rem; border-radius: 30px; backdrop-filter: blur(2px); letter-spacing: 0.5px; color: #0a0c12; font-weight: 700; .film-info padding: 1.5rem; .film-title font-size: 1.6rem; font-weight: 700; font-family: 'Cormorant Garamond', serif; letter-spacing: -0.3px; margin-bottom: 0.5rem; display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; .film-title span:first-child background: linear-gradient(135deg, #f3e0b0, #dbb85c); background-clip: text; -webkit-background-clip: text; color: transparent; .director font-size: 0.8rem; color: #c9aa6e; margin-bottom: 0.75rem; text-transform: uppercase; letter-spacing: 1px; .synopsis font-size: 0.9rem; color: #cec6b5; margin: 0.8rem 0 1rem; line-height: 1.45; .tagline font-style: italic; font-size: 0.85rem; border-left: 3px solid #c9a03d; padding-left: 0.75rem; margin: 0.8rem 0; color: #e7cf9e; .btn-detail background: none; border: 1.5px solid #c9a03d; color: #c9a03d; padding: 0.5rem 1.2rem; border-radius: 40px; font-weight: 600; font-size: 0.75rem; cursor: pointer; transition: 0.25s; margin-top: 0.5rem; display: inline-flex; align-items: center; gap: 6px; background: rgba(0,0,0,0.4); .btn-detail:hover background: #c9a03d; color: #0a0c12; border-color: #c9a03d;
/* modal lightbox for extra details */ .modal display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(2, 4, 8, 0.95); backdrop-filter: blur(10px); align-items: center; justify-content: center; z-index: 1000; opacity: 0; transition: opacity 0.3s ease; .modal.show display: flex; opacity: 1; .modal-content background: #12161f; max-width: 500px; width: 90%; border-radius: 2rem; padding: 2rem; border: 1px solid #c9a03d; box-shadow: 0 25px 40px rgba(0,0,0,0.6); transform: scale(0.95); transition: transform 0.2s; text-align: center; .modal.show .modal-content transform: scale(1); .modal-content h3 font-size: 2rem; font-family: 'Cormorant Garamond', serif; margin-bottom: 1rem; color: #f1d997; .modal-content p margin: 0.8rem 0; color: #cfc7b6; .close-modal background: #c9a03d; border: none; padding: 0.5rem 1.5rem; border-radius: 40px; font-weight: bold; margin-top: 1.5rem; cursor: pointer; color: #111; footer text-align: center; margin-top: 5rem; font-size: 0.8rem; color: #6b5e48; border-top: 1px solid #2a241c; padding-top: 2rem; body background: radial-gradient(circle at 10% 20%
// fallback high-res images if TMDB fails (for offline/resilience we embed some backup style gradient) // but we use actual poster URLs as background images, plus fallback color. const fallbackColors = [ "linear-gradient(135deg, #3b2b1f, #1a1c23), url('https://placehold.co/400x600/2c241a/c9a03d?text=Hunger+Games')", "linear-gradient(145deg, #2f3e46, #0f1722)", "linear-gradient(120deg, #1f2a2e, #0a0e17)", "linear-gradient(160deg, #261e17, #050b12)", "radial-gradient(ellipse at top, #2c2b26, #03050a)" ];
/* custom scrollbar */ ::-webkit-scrollbar width: 6px; ::-webkit-scrollbar-track background: #1e1a14; ::-webkit-scrollbar-thumb background: #c9a03d; border-radius: 6px; .stat background: rgba(0
// info block const infoDiv = document.createElement('div'); infoDiv.className = 'film-info'; const titleDiv = document.createElement('div'); titleDiv.className = 'film-title'; titleDiv.innerHTML = `<span>$movie.title</span><span style="font-size:0.9rem; font-weight:400;">🎬</span>`; const directorSpan = document.createElement('div'); directorSpan.className = 'director'; directorSpan.innerText = `Directed by $movie.director`; const synopsisP = document.createElement('p'); synopsisP.className = 'synopsis'; synopsisP.innerText = movie.synopsis; const taglineP = document.createElement('div'); taglineP.className = 'tagline'; taglineP.innerText = `“$movie.tagline”`; const btn = document.createElement('button'); btn.className = 'btn-detail'; btn.innerHTML = `⚡ learn more ⚡`; // store movie data for modal btn.addEventListener('click', (e) => e.stopPropagation(); openModal(movie); );
body background: radial-gradient(circle at 10% 20%, #0a0c12, #030507); font-family: 'Inter', sans-serif; color: #ede7dd; line-height: 1.5; scroll-behavior: smooth;
/* stats / tribute */ .stats-panel display: flex; flex-wrap: wrap; justify-content: center; gap: 2rem; margin-top: 1.5rem; margin-bottom: 3rem; .stat background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); padding: 1rem 2rem; border-radius: 60px; border: 1px solid #c9a03d40; font-weight: 500; .stat strong font-size: 1.8rem; font-weight: 800; color: #e2bc6e; margin-right: 8px;
// poster container with background image (safe cross-origin) const posterDiv = document.createElement('div'); posterDiv.className = 'poster'; // set background-image, fallback to gradient if image fails const imgUrl = movie.posterBg; posterDiv.style.backgroundImage = `url($imgUrl)`; posterDiv.style.backgroundSize = 'cover'; posterDiv.style.backgroundPosition = 'center 20%'; // add overlay for year const overlaySpan = document.createElement('div'); overlaySpan.className = 'overlay'; const yearSpan = document.createElement('span'); yearSpan.className = 'year'; yearSpan.innerText = movie.year; overlaySpan.appendChild(yearSpan); posterDiv.appendChild(overlaySpan);
/* film grid */ .film-grid display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; margin: 3rem 0 5rem; .film-card background: rgba(15, 18, 24, 0.75); backdrop-filter: blur(2px); border-radius: 2rem; overflow: hidden; transition: all 0.35s cubic-bezier(0.2, 0.9, 0.4, 1.1); border: 1px solid rgba(201, 160, 61, 0.2); box-shadow: 0 20px 35px -15px rgba(0,0,0,0.6); .film-card:hover transform: translateY(-12px); border-color: rgba(201, 160, 61, 0.6); box-shadow: 0 30px 40px -18px black; background: rgba(20, 24, 32, 0.9); .poster position: relative; height: 400px; background-size: cover; background-position: center top; transition: transform 0.5s ease; .film-card:hover .poster transform: scale(1.02); .overlay position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(to top, #030507ee, transparent); padding: 1.5rem 1rem 0.8rem; .year font-size: 0.8rem; font-weight: 500; background: #c9a03dcc; display: inline-block; padding: 0.2rem 0.8rem; border-radius: 30px; backdrop-filter: blur(2px); letter-spacing: 0.5px; color: #0a0c12; font-weight: 700; .film-info padding: 1.5rem; .film-title font-size: 1.6rem; font-weight: 700; font-family: 'Cormorant Garamond', serif; letter-spacing: -0.3px; margin-bottom: 0.5rem; display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; .film-title span:first-child background: linear-gradient(135deg, #f3e0b0, #dbb85c); background-clip: text; -webkit-background-clip: text; color: transparent; .director font-size: 0.8rem; color: #c9aa6e; margin-bottom: 0.75rem; text-transform: uppercase; letter-spacing: 1px; .synopsis font-size: 0.9rem; color: #cec6b5; margin: 0.8rem 0 1rem; line-height: 1.45; .tagline font-style: italic; font-size: 0.85rem; border-left: 3px solid #c9a03d; padding-left: 0.75rem; margin: 0.8rem 0; color: #e7cf9e; .btn-detail background: none; border: 1.5px solid #c9a03d; color: #c9a03d; padding: 0.5rem 1.2rem; border-radius: 40px; font-weight: 600; font-size: 0.75rem; cursor: pointer; transition: 0.25s; margin-top: 0.5rem; display: inline-flex; align-items: center; gap: 6px; background: rgba(0,0,0,0.4); .btn-detail:hover background: #c9a03d; color: #0a0c12; border-color: #c9a03d;
/* modal lightbox for extra details */ .modal display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(2, 4, 8, 0.95); backdrop-filter: blur(10px); align-items: center; justify-content: center; z-index: 1000; opacity: 0; transition: opacity 0.3s ease; .modal.show display: flex; opacity: 1; .modal-content background: #12161f; max-width: 500px; width: 90%; border-radius: 2rem; padding: 2rem; border: 1px solid #c9a03d; box-shadow: 0 25px 40px rgba(0,0,0,0.6); transform: scale(0.95); transition: transform 0.2s; text-align: center; .modal.show .modal-content transform: scale(1); .modal-content h3 font-size: 2rem; font-family: 'Cormorant Garamond', serif; margin-bottom: 1rem; color: #f1d997; .modal-content p margin: 0.8rem 0; color: #cfc7b6; .close-modal background: #c9a03d; border: none; padding: 0.5rem 1.5rem; border-radius: 40px; font-weight: bold; margin-top: 1.5rem; cursor: pointer; color: #111; footer text-align: center; margin-top: 5rem; font-size: 0.8rem; color: #6b5e48; border-top: 1px solid #2a241c; padding-top: 2rem;
// fallback high-res images if TMDB fails (for offline/resilience we embed some backup style gradient) // but we use actual poster URLs as background images, plus fallback color. const fallbackColors = [ "linear-gradient(135deg, #3b2b1f, #1a1c23), url('https://placehold.co/400x600/2c241a/c9a03d?text=Hunger+Games')", "linear-gradient(145deg, #2f3e46, #0f1722)", "linear-gradient(120deg, #1f2a2e, #0a0e17)", "linear-gradient(160deg, #261e17, #050b12)", "radial-gradient(ellipse at top, #2c2b26, #03050a)" ];
/* custom scrollbar */ ::-webkit-scrollbar width: 6px; ::-webkit-scrollbar-track background: #1e1a14; ::-webkit-scrollbar-thumb background: #c9a03d; border-radius: 6px;
// info block const infoDiv = document.createElement('div'); infoDiv.className = 'film-info'; const titleDiv = document.createElement('div'); titleDiv.className = 'film-title'; titleDiv.innerHTML = `<span>$movie.title</span><span style="font-size:0.9rem; font-weight:400;">🎬</span>`; const directorSpan = document.createElement('div'); directorSpan.className = 'director'; directorSpan.innerText = `Directed by $movie.director`; const synopsisP = document.createElement('p'); synopsisP.className = 'synopsis'; synopsisP.innerText = movie.synopsis; const taglineP = document.createElement('div'); taglineP.className = 'tagline'; taglineP.innerText = `“$movie.tagline”`; const btn = document.createElement('button'); btn.className = 'btn-detail'; btn.innerHTML = `⚡ learn more ⚡`; // store movie data for modal btn.addEventListener('click', (e) => e.stopPropagation(); openModal(movie); );