/* --- Imports de Polices Google Fonts --- */ @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;600;700&family=Oswald:wght@500;700&display=swap'); /* --- Variables CSS pour la facilité --- */ :root { --primary-color: #e50914; /* Rouge Netflix */ --secondary-color: #f4f4f4; /* Blanc/Gris clair */ --dark-bg: #141414; /* Fond très sombre */ --medium-bg: #1f1f1f; /* Fond un peu moins sombre */ --light-bg: #2b2b2b; /* Fond légèrement plus clair */ --text-color: #ffffff; --text-light: #cccccc; --font-heading: 'Oswald', sans-serif; --font-body: 'Montserrat', sans-serif; } /* --- Reset & Global --- */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: var(--font-body); background-color: var(--dark-bg); color: var(--text-color); line-height: 1.6; scroll-behavior: smooth; } a { color: var(--primary-color); text-decoration: none; transition: color 0.3s ease; } a:hover { color: var(--secondary-color); } ul { list-style: none; } /* --- Header Global --- */ .main-header { background: var(--dark-bg); padding: 15px 5%; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #333; position: sticky; /* Reste en haut au scroll */ top: 0; z-index: 1000; } .main-header .logo { display: flex; align-items: center; } .main-header .logo img { height: 40px; /* Taille du logo */ margin-right: 10px; } .main-header .logo span { font-family: var(--font-heading); font-size: 1.8rem; color: var(--primary-color); letter-spacing: 1px; font-weight: 700; } .main-header nav ul { display: flex; gap: 30px; } .main-header nav a { color: var(--text-light); font-size: 1.1rem; font-weight: 600; position: relative; } .main-header nav a::after { /* Soulignement animé */ content: ''; position: absolute; width: 0; height: 2px; background-color: var(--primary-color); left: 0; bottom: -5px; transition: width 0.3s ease-out; } .main-header nav a:hover::after, .main-header nav a.active::after { width: 100%; } /* --- Boutons --- */ .btn { display: inline-block; padding: 12px 25px; border-radius: 5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; transition: all 0.3s ease; cursor: pointer; border: none; } .btn-primary { background-color: var(--primary-color); color: var(--text-color); box-shadow: 0 4px 15px rgba(229, 9, 20, 0.4); } .btn-primary:hover { background-color: #ff0b1d; transform: translateY(-2px); box-shadow: 0 6px 20px rgba(229, 9, 20, 0.6); } .btn-secondary { background-color: transparent; color: var(--text-color); border: 2px solid var(--text-color); margin-left: 15px; } .btn-secondary:hover { background-color: rgba(255, 255, 255, 0.1); border-color: var(--primary-color); transform: translateY(-2px); } /* --- Conteneur principal du contenu --- */ .content-wrapper { max-width: 1400px; margin: 30px auto; padding: 0 20px; } .section-title { font-family: var(--font-heading); font-size: 2.5rem; color: var(--primary-color); text-align: center; margin-bottom: 40px; position: relative; padding-bottom: 15px; } .section-title::after { /* Ligne sous le titre */ content: ''; position: absolute; width: 80px; height: 3px; background-color: var(--primary-color); left: 50%; transform: translateX(-50%); bottom: 0; border-radius: 2px; } /* --- Section Héro (Accueil) --- */ .hero-section { width: 100%; height: 600px; /* Hauteur de la bannière */ background-size: cover; background-position: center; display: flex; align-items: center; justify-content: flex-start; position: relative; padding: 0 5%; } .hero-section::before { /* Overlay sombre sur l'image de fond */ content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to right, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.4) 50%, transparent 100%); z-index: 1; } .hero-content { position: relative; z-index: 2; max-width: 600px; } .hero-content .hero-text h2 { font-family: var(--font-heading); font-size: 3.8rem; line-height: 1.1; margin-bottom: 20px; color: var(--text-color); text-shadow: 2px 2px 8px rgba(0,0,0,0.7); } .hero-content .hero-text p { font-size: 1.2rem; color: var(--text-light); margin-bottom: 30px; } .hero-actions { display: flex; gap: 15px; } /* --- Grille des films --- */ .movie-section { margin-top: 50px; } .movie-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); /* Responsive grid */ gap: 30px; justify-content: center; } .movie-card { position: relative; background-color: var(--medium-bg); border-radius: 10px; overflow: hidden; box-shadow: 0 6px 15px rgba(0,0,0,0.5); transition: transform 0.3s ease, box-shadow 0.3s ease; text-decoration: none; color: inherit; display: block; /* Pour que la carte prenne toute la largeur de sa grille */ } .movie-card:hover { transform: translateY(-10px) scale(1.02); box-shadow: 0 15px 30px rgba(0,0,0,0.7), 0 0 20px var(--primary-color); } .movie-card img { width: 100%; height: 420px; /* Hauteur fixe pour les affiches */ object-fit: cover; /* Recadre l'image pour qu'elle remplisse */ display: block; } .card-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); display: flex; justify-content: center; align-items: center; opacity: 0; transition: opacity 0.3s ease; } .movie-card:hover .card-overlay { opacity: 1; } .overlay-content { text-align: center; padding: 20px; } .overlay-content h3 { font-family: var(--font-heading); font-size: 1.8rem; margin-bottom: 10px; color: var(--primary-color); } .overlay-content p { font-size: 0.9rem; color: var(--text-light); margin-bottom: 20px; } .play-icon { font-size: 3rem; color: var(--primary-color); background: rgba(255, 255, 255, 0.1); border-radius: 50%; width: 60px; height: 60px; display: flex; justify-content: center; align-items: center; margin: 0 auto; border: 2px solid var(--primary-color); transition: background 0.3s ease, transform 0.3s ease; } .play-icon:hover { background: var(--primary-color); color: var(--dark-bg); transform: scale(1.1); } /* --- Footer Global --- */ .main-footer { background-color: var(--dark-bg); color: var(--text-light); text-align: center; padding: 30px 20px; margin-top: 50px; border-top: 1px solid #333; font-size: 0.9rem; } .main-footer .footer-links a { color: var(--text-light); margin: 0 15px; transition: color 0.3s ease; } .main-footer .footer-links a:hover { color: var(--primary-color); } /* ===================================== */ /* --- Page de Lecture (film1.html) --- */ /* ===================================== */ .player-page { background-color: #000; /* Fond noir total pour l'immersion */ } .player-header { background: var(--dark-bg); padding: 15px 5%; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #333; } .player-header .logo a { display: flex; align-items: center; color: var(--primary-color); text-decoration: none; } .player-header .logo img { height: 40px; margin-right: 10px; } .player-header .logo span { font-family: var(--font-heading); font-size: 1.8rem; letter-spacing: 1px; font-weight: 700; } .back-to-gallery { color: var(--text-light); font-size: 1.1rem; display: flex; align-items: center; gap: 8px; transition: color 0.3s ease; } .back-to-gallery:hover { color: var(--primary-color); } .icon-arrow { font-size: 1.5rem; line-height: 1; } .player-main { max-width: 1200px; margin: 30px auto; padding: 0 20px; } .video-player-section { background-color: #000; border-radius: 10px; overflow: hidden; margin-bottom: 40px; box-shadow: 0 0 30px rgba(0,0,0,0.8); } .main-video { width: 100%; height: 600px; /* Hauteur fixe pour le lecteur */ background-color: #000; display: block; } /* --- Détails du Film --- */ .film-details { display: flex; flex-direction: column; /* Par défaut, les éléments sont en colonne */ gap: 40px; margin-bottom: 40px; } .film-details-content { display: flex; gap: 30px; background-color: var(--medium-bg); padding: 30px; border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,0.5); } .detail-poster { width: 250px; height: auto; border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.4); flex-shrink: 0; /* Empêche l'image de rétrécir */ } .details-text h1 { font-family: var(--font-heading); font-size: 3rem; color: var(--primary-color); margin-bottom: 10px; } .details-text .tagline { font-style: italic; color: var(--text-light); font-size: 1.1rem; margin-bottom: 20px; } .details-text .synopsis { font-size: 1.1rem; margin-bottom: 25px; color: var(--text-light); } .meta-info span { display: inline-block; background-color: var(--light-bg); padding: 5px 12px; border-radius: 20px; margin-right: 10px; margin-bottom: 10px; font-size: 0.9rem; color: var(--text-light); } .call-to-action { margin-top: 25px; } .btn-primary-alt, .btn-secondary-alt { padding: 10px 20px; border-radius: 5px; font-weight: 600; transition: all 0.3s ease; cursor: pointer; border: none; margin-right: 15px; } .btn-primary-alt { background-color: var(--primary-color); color: var(--text-color); } .btn-primary-alt:hover { background-color: #ff0b1d; } .btn-secondary-alt { background-color: var(--light-bg); color: var(--text-color); } .btn-secondary-alt:hover { background-color: #4a4a4a; } /* --- Contenu Similaire (Aside) --- */ .related-content { background-color: var(--medium-bg); padding: 30px; border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,0.5); } .related-content h3 { font-family: var(--font-heading); font-size: 1.8rem; color: var(--primary-color); margin-bottom: 20px; text-align: center; } .related-movies { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 20px; justify-content: center; } .related-card { text-align: center; background-color: var(--light-bg); padding: 10px; border-radius: 8px; transition: transform 0.3s ease, box-shadow 0.3s ease; } .related-card:hover { transform: translateY(-5px); box-shadow: 0 8px 15px rgba(0,0,0,0.6); } .related-card img { width: 100%; height: 225px; /* Proportion 2:3 */ object-fit: cover; border-radius: 5px; margin-bottom: 10px; } .related-card h4 { font-size: 1rem; color: var(--text-color); margin: 0; } /* --- Media Queries (pour la responsivité) --- */ @media (min-width: 768px) { .film-details { flex-direction: row; /* En ligne sur les écrans plus larges */ } .related-content { flex: 1; /* Prend l'espace restant */ } } @media (max-width: 768px) { .main-header { flex-direction: column; gap: 15px; } .main-header nav ul { flex-wrap: wrap; justify-content: center; } .hero-section { height: 400px; justify-content: center; text-align: center; padding: 0 5%; } .hero-section::before { background: rgba(0,0,0,0.8); /* Overlay plus fort sur mobile */ } .hero-content { max-width: 90%; } .hero-content .hero-text h2 { font-size: 2.5rem; } .hero-content .hero-text p { font-size: 1rem; } .hero-actions { flex-direction: column; } .btn-secondary { margin-left: 0; margin-top: 10px; } .player-header { flex-direction: column; gap: 15px; } .player-header .logo { margin-bottom: 10px; } .main-video { height: 300px; /* Moins haut sur mobile */ } .film-details-content { flex-direction: column; align-items: center; text-align: center; } .detail-poster { width: 180px; } .details-text h1 { font-size: 2.2rem; } .meta-info span { margin: 5px; } .related-movies { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); } .related-card img { height: 180px; } } @media (max-width: 480px) { .main-header .logo span { font-size: 1.5rem; } .hero-content .hero-text h2 { font-size: 2rem; } .section-title { font-size: 2rem; } .movie-card { width: 100%; /* Cartes prennent toute la largeur sur très petits écrans */ } }