/* ==================== VARIABLES & GLOBAL RESETS ==================== */ :root { --main-bg-color: #0B0C10; --secondary-bg-color: #1F2833; --border-color: #7009e5; --accent-color: #7009e5; --text-color: #C5C6C7; --text-color-bright: #FFFFFF; --main-padding: 0 5%; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; background-color: var(--main-bg-color); color: var(--text-color); line-height: 1.6; overflow-x: hidden; } a { color: var(--text-color); text-decoration: none; transition: color 0.3s ease; } i { margin-right: 8px; } /* ==================== STYLES POUR LE POPUP D'AVERTISSEMENT ==================== */ .popup-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(10px); z-index: 10000; display: none; /* Changé de flex à none pour commencer masqué */ justify-content: center; align-items: center; animation: fadeIn 0.3s ease-out; } /* Quand le popup doit être visible */ .popup-overlay.active { display: flex; } .popup-container { background: linear-gradient(145deg, #1a1a2e, #16213e); border-radius: 20px; padding: 40px; max-width: 500px; width: 90%; text-align: center; box-shadow: 0 20px 40px rgba(112, 9, 229, 0.3); border: 1px solid rgba(112, 9, 229, 0.2); animation: slideIn 0.4s ease-out; position: relative; } .popup-logo { font-size: 2.5rem; font-weight: 700; color: #fff; margin-bottom: 30px; text-shadow: 0 0 20px rgba(112, 9, 229, 0.5); } .popup-logo span { color: #7009e5; } .popup-icon { font-size: 4rem; color: #7009e5; margin-bottom: 20px; animation: pulse 2s infinite; } .popup-title { font-size: 1.8rem; font-weight: 600; color: #fff; margin-bottom: 20px; } .popup-message { font-size: 1rem; line-height: 1.6; color: #ccc; margin-bottom: 30px; text-align: left; } .popup-warning { background: rgba(255, 193, 7, 0.1); border: 1px solid rgba(255, 193, 7, 0.3); border-radius: 10px; padding: 15px; margin-bottom: 30px; color: #ffc107; font-size: 0.9rem; } .popup-warning i { margin-right: 10px; } .popup-buttons { display: flex; gap: 15px; justify-content: center; flex-wrap: wrap; } .popup-btn { padding: 15px 30px; border: none; border-radius: 50px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; text-decoration: none; display: inline-flex; align-items: center; gap: 10px; min-width: 180px; justify-content: center; } .popup-btn.btn-primary { background: linear-gradient(45deg, #7009e5, #9c4ae5); color: white; box-shadow: 0 4px 15px rgba(112, 9, 229, 0.4); } .popup-btn.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(112, 9, 229, 0.6); } .popup-btn.btn-secondary { background: rgba(255, 255, 255, 0.1); color: #ccc; border: 1px solid rgba(255, 255, 255, 0.2); } .popup-btn.btn-secondary:hover { background: rgba(255, 255, 255, 0.2); color: #fff; } /* S'assurer que le body n'est pas flouté par défaut */ body { filter: none; transition: filter 0.3s ease; } /* Classe pour flouter le contenu */ .content-blurred { filter: blur(5px); pointer-events: none; user-select: none; } @keyframes slideIn { from { opacity: 0; transform: translateY(-50px) scale(0.9); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } /* ==================== LOADER & ANIMATIONS ==================== */ .loader { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--main-bg-color); display: flex; justify-content: center; align-items: center; z-index: 9999; transition: opacity 0.5s ease, visibility 0.5s ease; } .spinner { width: 60px; height: 60px; border: 5px solid rgba(255, 255, 255, 0.3); border-top-color: var(--accent-color); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } body.loaded .loader { opacity: 0; visibility: hidden; } .fade-in { animation: fadeIn 0.75s ease-out forwards; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .card-animation { opacity: 0; animation: fadeIn 0.5s ease-out forwards; } /* =================================== NAVIGATION MOBILE EN HAUT =================================== */ /* Barre de navigation mobile (cachée par défaut sur desktop) */ .mobile-nav { display: none; position: fixed; top: 0; left: 0; width: 100%; background-color: var(--main-bg-color); border-bottom: 1px solid var(--border-color); z-index: 1001; padding: 10px 0; box-shadow: 0 2px 10px rgba(0,0,0,0.5); } /* Navigation mobile modifiée - Menu hamburger à droite */ .mobile-nav-container { display: grid; grid-template-columns: 1fr 2fr 1fr; /* Garde la même structure */ align-items: center; padding: 0 4%; gap: 10px; } /* Logo mobile - reste à gauche */ .mobile-logo { font-size: 1.2rem; font-weight: 700; color: var(--text-color-bright); justify-self: start; /* Force le logo à gauche */ } .mobile-logo span { color: var(--accent-color); } /* Recherche mobile centrée */ .mobile-search { display: flex; justify-content: center; } .mobile-search input { background-color: rgba(255, 255, 255, 0.1); border: 1px solid var(--border-color); border-radius: 20px; padding: 8px 15px; color: var(--text-color-bright); width: 100%; max-width: 250px; font-size: 0.9rem; } .mobile-search input::placeholder { color: var(--text-color); } .mobile-search input:focus { outline: none; background-color: rgba(255, 255, 255, 0.2); border-color: var(--accent-color); } /* Bouton menu hamburger - forcé à droite */ .mobile-menu-btn { background: none; border: none; color: var(--text-color-bright); font-size: 1.5rem; cursor: pointer; padding: 5px; display: flex; justify-content: flex-end; justify-self: end; /* Force le menu à droite */ } /* Menu déroulant - s'ouvre depuis la droite */ .mobile-nav-menu { position: absolute; top: 100%; right: 0; /* Changé de left: 0 à right: 0 */ width: 250px; /* Largeur fixe au lieu de 100% */ background-color: var(--main-bg-color); border-bottom: 1px solid var(--border-color); border-left: 1px solid var(--border-color); /* Ajout d'une bordure gauche */ transform: translateX(100%); /* Animation depuis la droite */ opacity: 0; visibility: hidden; transition: all 0.3s ease; box-shadow: -4px 4px 10px rgba(0,0,0,0.3); /* Ombre à gauche */ border-radius: 8px 0 8px 8px; /* Coins arrondis sauf en haut à droite */ } .mobile-nav-menu.active { transform: translateX(0); /* Glisse vers la gauche */ opacity: 1; visibility: visible; } .mobile-nav-list { list-style: none; padding: 0; margin: 0; } .mobile-nav-list li { border-bottom: 1px solid rgba(255,255,255,0.1); } .mobile-nav-list li:last-child { border-bottom: none; } .mobile-nav-list li a { display: block; padding: 15px 4%; color: var(--text-color); font-weight: 500; transition: all 0.3s ease; position: relative; } .mobile-nav-list li a:hover, .mobile-nav-list li a.active { background-color: rgba(112, 9, 229, 0.1); color: var(--text-color-bright); } .mobile-nav-list li a.active::before { content: ''; position: absolute; left: 0; top: 0; width: 4px; height: 100%; background-color: var(--accent-color); } .mobile-nav-list li a i { margin-right: 12px; color: var(--accent-color); width: 20px; text-align: center; } /* ==================== HEADER ==================== */ .main-header { position: absolute; top: 0; left: 0; width: 100%; z-index: 1000; padding: 20px 0; background: linear-gradient(to bottom, rgba(0,0,0,0.7), transparent); transition: background-color 0.3s ease; } body.scrolled .main-header { position: fixed; background-color: var(--main-bg-color); box-shadow: 0 2px 10px rgba(0,0,0,0.5); } .header-container { display: flex; justify-content: space-between; align-items: center; padding: var(--main-padding); } .header-left, .header-right { display: flex; align-items: center; gap: 30px; } .logo a { font-size: 1.8rem; font-weight: 700; color: var(--text-color-bright); } .logo span { color: var(--accent-color); } .main-nav ul { list-style: none; display: flex; gap: 25px; } .main-nav ul li a { font-weight: 500; font-size: 1rem; color: var(--text-color); position: relative; padding-bottom: 5px; } .main-nav ul li a:hover, .main-nav ul li a.active { color: var(--text-color-bright); } .main-nav ul li a.active::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 3px; background-color: var(--accent-color); border-radius: 2px; } .search-box { position: relative; display: flex; align-items: center; } .search-box input { background-color: rgba(255, 255, 255, 0.1); border: 1px solid var(--border-color); border-radius: 20px; padding: 8px 15px; color: var(--text-color-bright); width: 220px; transition: all 0.3s ease; } .search-box input::placeholder { color: var(--text-color); } .search-box input:focus { outline: none; background-color: rgba(255, 255, 255, 0.2); border-color: var(--accent-color); } .search-box button { background: none; border: none; color: var(--text-color); position: absolute; right: 15px; cursor: pointer; font-size: 1rem; } .search-box button i { margin: 0; } .user-actions .user-icon { font-size: 1.5rem; color: var(--text-color-bright); } /* ==================== HERO SECTION ==================== */ .hero-section { position: relative; height: 100vh; display: flex; align-items: center; overflow: hidden; } .hero-backdrop { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-size: cover; background-position: center; filter: brightness(0.6); z-index: -2; transition: background-image 0.5s ease-in-out; } .hero-section::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to right, rgba(11, 12, 16, 1) 20%, rgba(11, 12, 16, 0.5) 50%, rgba(11, 12, 16, 1) 100%); z-index: -1; } .hero-content-container { width: 100%; padding: var(--main-padding); } .hero-content { max-width: 50%; } #hero-title { font-size: 4rem; font-weight: 700; color: var(--text-color-bright); margin-bottom: 20px; } .hero-meta { display: flex; gap: 20px; align-items: center; margin-bottom: 20px; font-size: 1rem; } .hero-meta .meta-item { display: flex; align-items: center; gap: 5px; color: var(--text-color); } .hero-meta .meta-item i { color: var(--accent-color); margin: 0; } .description { font-size: 1.1rem; line-height: 1.7; margin-bottom: 30px; max-width: 600px; } .actions { display: flex; gap: 15px; } .btn { padding: 12px 25px; border: none; border-radius: 5px; font-size: 1.1rem; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; font-weight: 600; } .btn-primary { background-color: var(--accent-color); color: white; } .btn-primary:hover { transform: scale(1.05); filter: brightness(1.2); } .btn-secondary { background-color: rgba(197, 198, 199, 0.2); color: var(--text-color-bright); } .btn-secondary:hover { background-color: rgba(197, 198, 199, 0.4); } /* ==================== CONTENT & CAROUSELS ==================== */ .content-wrapper { padding: 0 0 50px 0; margin-top: -150px; position: relative; z-index: 10; } .content-carousel-section { margin-bottom: 50px; } .section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding: var(--main-padding); } .section-header h2 { font-size: 1.8rem; color: var(--text-color-bright); } .section-header .view-all-link { color: var(--accent-color); font-weight: 500; } .carousel-container { position: relative; padding: 0; } .carousel-inner { display: flex; overflow-x: auto; scroll-behavior: smooth; gap: 20px; padding: 10px 5%; -ms-overflow-style: none; scrollbar-width: none; } .carousel-inner::-webkit-scrollbar { display: none; } .carousel-button { position: absolute; top: 50%; transform: translateY(-50%); background-color: rgba(0, 0, 0, 0.5); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--text-color-bright); width: 50px; height: 50px; border-radius: 50%; font-size: 1.5rem; cursor: pointer; z-index: 20; opacity: 0; transition: opacity 0.3s ease, background-color 0.3s ease; } .carousel-container:hover .carousel-button { opacity: 1; } .carousel-button:hover { background-color: var(--accent-color); color: white; } .carousel-button.prev { left: 15px; } .carousel-button.next { right: 15px; } .carousel-button i { margin: 0; } /* ==================== MOVIE CARD (Utilisé partout) ==================== */ .movie-card { aspect-ratio: 2 / 3; position: relative; border-radius: 8px; overflow: hidden; transition: transform 0.3s ease, box-shadow 0.3s ease; cursor: pointer; background-color: var(--secondary-bg-color); min-height: 200px; } .carousel-inner .movie-card { flex: 0 0 16%; min-width: 200px; } .movie-card:hover { transform: scale(1.05); z-index: 5; box-shadow: 0 10px 30px rgba(0,0,0,0.7); } .movie-card img { width: 100%; height: 100%; object-fit: cover; } .card-overlay { position: absolute; bottom: 0; left: 0; width: 100%; padding: 20px; background: linear-gradient(to top, rgba(0,0,0,0.9), transparent); opacity: 0; transition: opacity 0.3s ease; } .movie-card:hover .card-overlay { opacity: 1; } .card-overlay h3 { font-size: 1.2rem; color: var(--text-color-bright); margin-bottom: 5px; } .card-overlay p { font-size: 0.9rem; color: var(--text-color); } .movie-card .progress-bar-container { position: absolute; bottom: 0; left: 0; width: 100%; height: 5px; background-color: rgba(255, 255, 255, 0.3); } .movie-card .progress-bar { width: 0%; height: 100%; background-color: var(--accent-color); } /* ==================== PAGE SECTION (Films, Séries, Recherche, Catalogue) ==================== */ .page-section { padding: 120px 0 50px 0; min-height: 100vh; } .page-container { padding: var(--main-padding); } .page-container h2 { font-size: 2.5rem; color: var(--text-color-bright); margin-bottom: 40px; text-align: center; } /* GRILLE RESPONSIVE OPTIMISÉE */ .movie-grid { display: grid; gap: 25px; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); } /* ==================== CATALOGUE PAGE ==================== */ .catalogue-filters { margin-bottom: 40px; padding: 20px; background-color: rgba(0,0,0,0.2); border-radius: 8px; } .type-toggle { display: flex; justify-content: center; gap: 15px; margin-bottom: 25px; } .type-toggle .btn { background-color: var(--secondary-bg-color); color: var(--text-color); border: 1px solid var(--secondary-bg-color); } .type-toggle .btn.active { background-color: var(--accent-color); color: white; border-color: var(--accent-color); } .genre-tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; } .genre-tag { background-color: #2a3545; color: var(--text-color); padding: 8px 15px; border-radius: 20px; cursor: pointer; transition: all 0.3s ease; border: 1px solid transparent; } .genre-tag:hover { background-color: var(--accent-color); color: white; } .genre-tag.active { background-color: var(--accent-color); color: white; font-weight: 600; border-color: rgba(255,255,255,0.5); } /* ==================== DETAILS PAGE ==================== */ #content-details-section { padding-top: 0; } .details-backdrop { position: absolute; top: 0; left: 0; width: 100%; height: 60vh; background-size: cover; background-position: center top; z-index: -1; } .details-backdrop::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to top, var(--main-bg-color) 5%, transparent 100%); } .details-page-container { position: relative; z-index: 2; } .back-button { margin-top: 80px; margin-bottom: 20px; background-color: rgba(255,255,255,0.1); color: white; border: 1px solid rgba(255,255,255,0.2); } .details-content { display: flex; gap: 40px; align-items: flex-start; } .details-poster { flex: 0 0 300px; } .details-poster img { width: 100%; border-radius: 8px; box-shadow: 0 5px 25px rgba(0,0,0,0.5); } .details-info #details-title { font-size: 3rem; margin-bottom: 10px; } .details-info #details-meta { font-size: 1.1rem; color: var(--text-color); margin-bottom: 20px; display: flex; align-items: center; flex-wrap: wrap; gap: 15px; } .details-info #details-description { font-size: 1rem; line-height: 1.8; } .players-section { margin-top: 50px; background-color: rgba(0,0,0,0.2); padding: 30px; border-radius: 8px; } .seasons-selector { margin-bottom: 30px; } .seasons-selector label { font-size: 1.2rem; margin-right: 15px; } #season-select { background-color: var(--secondary-bg-color); color: var(--text-color-bright); padding: 10px; border-radius: 5px; border: 1px solid var(--border-color); font-size: 1rem; } /* ==================== PAGINATION ==================== */ .pagination { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 50px; } .pagination button { background-color: var(--secondary-bg-color); border: 1px solid var(--border-color); color: var(--text-color); padding: 10px 18px; border-radius: 5px; font-size: 1rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; } .pagination button:hover { background-color: var(--accent-color); border-color: var(--accent-color); color: white; } .pagination button.active { background-color: var(--accent-color); border-color: var(--accent-color); color: white; font-weight: 700; cursor: default; } .pagination button:disabled { opacity: 0.5; cursor: not-allowed; background-color: var(--secondary-bg-color); color: var(--text-color); } .pagination span { color: var(--text-color); font-size: 1.2rem; padding: 0 10px; } /* ==================== AFFICHAGE AMÉLIORÉ DES LECTEURS & ÉPISODES ==================== */ .players-container h3 { font-size: 1.5rem; margin-bottom: 20px; border-bottom: 2px solid var(--accent-color); padding-bottom: 10px; display: inline-block; } .player-buttons { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 15px; } .player-button { background-color: var(--secondary-bg-color); color: var(--text-color); border: 1px solid transparent; border-radius: 5px; padding: 15px; text-align: center; cursor: pointer; transition: all 0.3s ease; font-size: 1rem; font-weight: 600; } .player-button:hover { transform: translateY(-5px); border-color: var(--accent-color); color: var(--text-color-bright); box-shadow: 0 5px 15px rgba(0,0,0,0.3); } .player-button i { display: block; font-size: 1.8rem; margin: 0 auto 10px auto; color: var(--accent-color); } .episodes-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; } .episode-card { background-color: var(--secondary-bg-color); border-radius: 8px; overflow: hidden; position: relative; cursor: pointer; transition: all 0.3s ease; border: 2px solid transparent; } .episode-card:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0,0,0,0.5); } .episode-card.active { border-color: var(--accent-color); box-shadow: 0 0 20px var(--accent-color); } .episode-card-image { width: 100%; aspect-ratio: 16 / 9; background-color: #111; } .episode-card-image img { width: 100%; height: 100%; object-fit: cover; } .episode-card-info { padding: 15px; } .episode-card-info .ep-number { font-weight: 700; color: var(--accent-color); margin-right: 10px; } .episode-card-info .ep-title { color: var(--text-color-bright); font-weight: 500; } .episode-card .play-icon-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); display: flex; justify-content: center; align-items: center; font-size: 3rem; color: white; opacity: 0; transition: opacity 0.3s ease; } .episode-card:hover .play-icon-overlay { opacity: 1; } /* ==================== BOUTON "MA LISTE" AMÉLIORÉ (PAGE DÉTAILS) ==================== */ .details-info .actions { margin-top: 30px; display: flex; gap: 15px; } #details-actions .btn-secondary { padding: 12px 20px; background-color: transparent; border: 2px solid rgba(255, 255, 255, 0.4); color: rgba(255, 255, 255, 0.8); font-weight: 600; min-width: 210px; } #details-actions .btn-secondary:hover { background-color: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.8); color: white; } #details-actions .btn-secondary i.fa-check { color: var(--accent-color); } #details-actions .btn-secondary:hover i.fa-check { color: white; } /* ==================== FOOTER & RESPONSIVE ==================== */ .main-footer { padding: 50px 0; background-color: #0B0C10; border-top: 1px solid rgba(255,255,255,0.1); text-align: center; } .footer-container { padding: var(--main-padding); } .footer-logo { font-size: 1.8rem; font-weight: 700; color: var(--text-color-bright); margin-bottom: 20px; } .footer-logo span { color: var(--accent-color); } .footer-nav ul { list-style: none; display: flex; justify-content: center; gap: 30px; margin-bottom: 30px; flex-wrap: wrap; } .social-links { margin-bottom: 30px; display: flex; justify-content: center; gap: 20px; } .social-links a { font-size: 1.5rem; color: var(--text-color); } .social-links a:hover { color: var(--accent-color); } .copyright { font-size: 0.9rem; color: #6a6a6a; } .hidden { display: none !important; } /* ======================================== CSS POUR LE LECTEUR INTÉGRÉ ======================================== */ .embedded-player-section { margin-top: 40px; padding: 10px; background-color: #000; border-radius: 8px; border: 1px solid var(--border-color); box-shadow: 0 0 20px rgba(112, 9, 229, 0.3); animation: fadeIn 0.5s ease-out; } .player-wrapper { position: relative; width: 100%; padding-top: 56.25%; /* Ratio 16:9 */ background-color: #000; border-radius: 8px; overflow: hidden; } #embedded-player-iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; } .btn-close-player { display: block; margin: 20px auto 0 auto; background-color: var(--secondary-bg-color); color: var(--text-color); border: 1px solid var(--border-color); } .btn-close-player:hover { background-color: #c0392b; /* Rouge */ color: white; border-color: #c0392b; } /* =================================== MENUS HAMBURGER À DROITE SUR MOBILE (Pour le lecteur vidéo) =================================== */ /* Déplacer les menus hamburger à droite sur mobile */ @media (max-width: 768px) { /* Pour les menus déroulants du lecteur vidéo */ .vjs-menu-button-popup { right: 0 !important; left: auto !important; } .vjs-menu-button-popup .vjs-menu { right: 0 !important; left: auto !important; } .vjs-menu-button-popup .vjs-menu .vjs-menu-content { right: 0 !important; left: auto !important; } /* Forcer l'alignement à droite pour tous les menus Video.js sur mobile */ .video-js .vjs-menu-button .vjs-menu { right: 0 !important; left: auto !important; } .video-js .vjs-menu-button .vjs-menu .vjs-menu-content { right: 0 !important; left: auto !important; } /* Styles spécifiques pour le sélecteur de qualité */ .vjs-quality-selector .vjs-menu { right: 0 !important; left: auto !important; } .vjs-quality-selector .vjs-menu-content { right: 0 !important; left: auto !important; transform: translateX(0) !important; } /* Menu des vitesses de lecture */ .vjs-playback-rate .vjs-menu { right: 0 !important; left: auto !important; } .vjs-playback-rate .vjs-menu-content { right: 0 !important; left: auto !important; } } /* =================================== RESPONSIVE BREAKPOINTS =================================== */ /* Tablettes (768px - 992px) */ @media (max-width: 992px) { .main-nav { display: none; } .hero-content { max-width: 80%; } #hero-title { font-size: 3rem; } .carousel-inner .movie-card { flex-basis: 25%; } .details-content { flex-direction: column; align-items: center; text-align: center; } .details-poster { flex-basis: auto; width: 60%; max-width: 300px; } /* Afficher la navigation mobile uniquement sur mobile */ .mobile-nav { display: block; } /* Pousser le contenu vers le bas pour faire place à la nav mobile */ body { padding-top: 70px; } /* Masquer la navigation desktop sur mobile */ .main-header { display: none; } /* Ajuster le hero pour compenser la nav mobile */ .hero-section { height: calc(100vh - 70px); } /* Ajuster les sections pour compenser */ .page-section { padding-top: 90px; } } @media (max-width: 992px) and (min-width: 769px) { .movie-grid { grid-template-columns: repeat(4, 1fr); gap: 20px; } } /* Mobile Large (576px - 768px) */ @media (max-width: 768px) { body { --main-padding: 0 4%; } .header-left, .header-right { gap: 15px; } .search-box input { width: 150px; } .hero-section { height: calc(100vh - 70px); } .hero-content { max-width: 100%; text-align: center; } .actions { justify-content: center; } .content-wrapper { margin-top: -100px; } .carousel-inner .movie-card { flex-basis: 33.33%; } /* Adaptations navigation mobile */ .mobile-nav-container { padding: 0 3%; } .mobile-search input { max-width: 200px; font-size: 0.85rem; padding: 6px 12px; } .mobile-logo { font-size: 1.1rem; } /* Cartes optimisées pour mobile */ .movie-card:hover { transform: scale(1.02); } .card-overlay { opacity: 0.9; background: linear-gradient(to top, rgba(0,0,0,0.9), rgba(0,0,0,0.3)); } .card-overlay h3 { font-size: 1rem; line-height: 1.2; } .card-overlay p { font-size: 0.8rem; } /* Carousel mobile */ .carousel-inner { gap: 15px; padding: 10px 4%; } .carousel-inner .movie-card { min-width: 140px; flex: 0 0 auto; } .carousel-button { width: 40px; height: 40px; font-size: 1.2rem; } .carousel-button.prev { left: 10px; } .carousel-button.next { right: 10px; } /* Section headers */ .section-header { padding: 0 4%; margin-bottom: 15px; } .section-header h2 { font-size: 1.6rem; } .view-all-link { font-size: 0.9rem; } /* Episodes responsive */ .episodes-grid { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 15px; } /* Popup responsive pour mobile */ .popup-container { padding: 30px 20px; margin: 20px; } .popup-title { font-size: 1.5rem; } .popup-message { font-size: 0.9rem; } .popup-buttons { flex-direction: column; } .popup-btn { min-width: 100%; } } @media (max-width: 768px) and (min-width: 577px) { .movie-grid { grid-template-columns: repeat(3, 1fr); gap: 15px; } } /* Mobile Standard (481px - 576px) */ @media (max-width: 576px) { .header-container { flex-direction: column; gap: 15px; } #hero-title, .details-info #details-title { font-size: 2.5rem; } .description { font-size: 1rem; } .btn { padding: 10px 20px; font-size: 1rem; } .carousel-inner .movie-card { flex-basis: 45%; } .section-header h2 { font-size: 1.5rem; } /* Pagination simplifiée */ .pagination { gap: 5px; } .pagination button { padding: 8px 12px; font-size: 0.9rem; } .pagination button:not(:first-child):not(:last-child) { display: none; } .pagination span { display: none; } /* Episodes en une colonne */ .episodes-grid { grid-template-columns: 1fr; gap: 10px; } } @media (max-width: 576px) and (min-width: 481px) { .movie-grid { grid-template-columns: repeat(3, 1fr); gap: 12px; } } /* Mobile Petit (320px - 480px) */ @media (max-width: 480px) { .movie-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } body { --main-padding: 0 3%; padding-top: 60px; } .header-container { flex-direction: column; gap: 10px; } #hero-title, .details-info #details-title { font-size: 2rem; } .btn { padding: 8px 16px; font-size: 0.9rem; } .carousel-inner .movie-card { flex-basis: 50%; min-width: 140px; } .search-box input { width: 120px; } /* Navigation mobile adaptée */ .mobile-nav { padding: 8px 0; } .hero-section { height: calc(100vh - 60px); } .mobile-nav-container { grid-template-columns: 80px 1fr 40px; gap: 8px; } .mobile-search input { max-width: 150px; font-size: 0.8rem; padding: 5px 10px; } .mobile-logo { font-size: 1rem; } .mobile-menu-btn { font-size: 1.3rem; } } /* ======================================== CSS POUR LES PAGES LÉGALES ======================================== */ .legal-page-content { max-width: 800px; margin: 0 auto; padding: 20px; color: #e0e0e0; line-height: 1.6; } .legal-page-content h1 { font-size: 2.5rem; margin-bottom: 30px; background: linear-gradient(45deg, #7009e5, #9c59ff); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-align: center; } .legal-page-content h2 { font-size: 1.8rem; margin: 30px 0 20px 0; color: #9c59ff; } .legal-page-content h3 { font-size: 1.3rem; margin: 20px 0 15px 0; color: #b8b8b8; } .legal-page-content p { margin-bottom: 20px; font-size: 1.1rem; } .legal-page-content ul { margin: 20px 0; padding-left: 30px; } .legal-page-content li { margin: 10px 0; } .intro-text { font-size: 1.3rem !important; text-align: center; margin-bottom: 40px; color: #9c59ff; font-style: italic; } .highlight-box { background: rgba(112, 9, 229, 0.15); border-left: 4px solid #7009e5; padding: 20px; margin: 25px 0; border-radius: 8px; } .contact-info { background: rgba(156, 89, 255, 0.1); padding: 25px; border-radius: 12px; text-align: center; margin: 30px 0; } .contact-info a { color: #9c59ff; text-decoration: none; font-weight: 600; transition: color 0.3s ease; } .contact-info a:hover { color: #7009e5; } .sub-text { font-size: 0.9rem; color: #b8b8b8; } .contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin: 30px 0; } .features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin: 30px 0; } .feature-card { background: rgba(255, 255, 255, 0.08); padding: 25px; border-radius: 12px; border-left: 4px solid #7009e5; transition: transform 0.3s ease; } .feature-card:hover { transform: translateY(-5px); } .feature-number { font-size: 2rem; font-weight: bold; color: #9c59ff; margin-bottom: 10px; } .security-icons { display: flex; justify-content: space-around; margin: 30px 0; flex-wrap: wrap; } .security-item { text-align: center; margin: 10px; flex: 1; min-width: 200px; } .security-icon { font-size: 3rem; color: #9c59ff; margin-bottom: 10px; } /* Responsive pour les pages légales */ @media (max-width: 768px) { .legal-page-content { padding: 15px; } .legal-page-content h1 { font-size: 2rem; } .features-grid, .contact-grid { grid-template-columns: 1fr; } .security-icons { flex-direction: column; } .security-item { min-width: auto; } } /* Animation pour l'apparition des pages */ .page-section.fade-in { animation: fadeInUp 0.5s ease-out; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .player-button.hls-player { border-left: 4px solid #4caf50; } .player-button.direct-player { border-left: 4px solid #2196f3; } .player-button small { opacity: 0.7; font-size: 0.8em; } /* MODIFICATIONS POUR LE POPUP MOBILE GLISSABLE */ /* Modifications pour les mobiles */ @media (max-width: 768px) { .popup-overlay { align-items: flex-start; padding-top: 80px; } .popup-container { max-width: 100%; width: 100%; margin: 0; border-radius: 20px 20px 0 0; padding: 20px; max-height: 70vh; overflow-y: auto; position: relative; touch-action: pan-y; transform: translateY(0); transition: transform 0.3s ease-out; } /* Indicateur de glissement */ .popup-container::before { content: ''; position: absolute; top: 10px; left: 50%; transform: translateX(-50%); width: 40px; height: 4px; background: rgba(255, 255, 255, 0.3); border-radius: 2px; } /* Ajuster le padding pour l'indicateur */ .popup-container { padding-top: 30px; } /* Réduire la taille du contenu sur mobile */ .popup-logo { font-size: 1.8rem !important; margin-bottom: 20px !important; } .popup-icon { font-size: 2.5rem !important; margin-bottom: 15px !important; } .popup-title { font-size: 1.4rem !important; margin-bottom: 15px !important; } .popup-message { font-size: 0.9rem !important; margin-bottom: 20px !important; } .popup-message p { margin-bottom: 12px !important; } .popup-warning { padding: 12px !important; margin-bottom: 20px !important; font-size: 0.85rem !important; } .popup-buttons { flex-direction: column !important; gap: 12px !important; } .popup-btn { padding: 12px 20px !important; font-size: 0.9rem !important; min-width: 100% !important; } } /* Pour les très petits écrans */ @media (max-width: 480px) { .popup-container { padding: 15px; padding-top: 25px; max-height: 60vh; } .popup-logo { font-size: 1.5rem !important; margin-bottom: 15px !important; } .popup-icon { font-size: 2rem !important; margin-bottom: 12px !important; } .popup-title { font-size: 1.2rem !important; margin-bottom: 12px !important; } .popup-message { font-size: 0.85rem !important; margin-bottom: 15px !important; } .popup-message p { margin-bottom: 10px !important; } .popup-warning { padding: 10px !important; margin-bottom: 15px !important; font-size: 0.8rem !important; } .popup-buttons { gap: 10px !important; } .popup-btn { padding: 10px 16px !important; font-size: 0.85rem !important; } } /* --- CSS POUR LE NOUVEL EN-TÊTE DU LECTEUR --- */ /* Style pour le bouton Lecteur Suivant */ #next-player-btn { background-color: #5d2de2; border: none; color: white; padding: 12px 15px; /* Un peu plus de hauteur pour un meilleur look */ cursor: pointer; font-size: 16px; font-weight: 600; transition: background-color 0.2s; /* Modifications pour la pleine largeur */ width: 100%; /* Fait en sorte que le bouton prenne toute la largeur */ margin: 0; /* Supprime les marges extérieures */ border-radius: 0; /* Supprime les coins arrondis pour un aspect net */ box-sizing: border-box; /* S'assure que le padding ne fait pas déborder le bouton */ } #next-player-btn:hover { background-color: #4a24b5; } #next-player-btn:disabled { background-color: #555; cursor: not-allowed; opacity: 0.6; } /* =================================== STYLES POUR LA SECTION TOP 10 ================================== */ .top10-filters { display: flex; justify-content: center; gap: 15px; margin-bottom: 30px; } .top10-filters .btn { padding: 12px 30px; background: rgba(255, 255, 255, 0.1); color: white; border: 2px solid transparent; border-radius: 25px; font-weight: 600; transition: all 0.3s ease; cursor: pointer; } .top10-filters .btn:hover { background: rgba(112, 9, 229, 0.3); border-color: rgba(112, 9, 229, 0.5); transform: translateY(-2px); } .top10-filters .btn.active { background: linear-gradient(135deg, #7009e5, #9d4edd); border-color: #7009e5; box-shadow: 0 4px 15px rgba(112, 9, 229, 0.4); } /* Styles spéciaux pour les cartes Top 10 */ .top10-card { position: relative; overflow: hidden; } .top10-rank { position: absolute; top: 10px; left: 10px; background: linear-gradient(135deg, #ff6b6b, #ee5a52); color: white; font-weight: bold; font-size: 1.2em; padding: 8px 12px; border-radius: 15px; z-index: 3; box-shadow: 0 2px 10px rgba(255, 107, 107, 0.4); } .top10-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.3s ease; z-index: 2; } .top10-card:hover .top10-overlay { opacity: 1; } .top10-actions { display: flex; gap: 15px; } .top10-actions .btn-play, .top10-actions .btn-info { width: 50px; height: 50px; border-radius: 50%; border: none; color: white; font-size: 1.2em; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; } .top10-actions .btn-play { background: linear-gradient(135deg, #7009e5, #9d4edd); } .top10-actions .btn-info { background: rgba(255, 255, 255, 0.2); border: 2px solid white; } .top10-actions .btn-play:hover, .top10-actions .btn-info:hover { transform: scale(1.1); } /* Métadonnées enrichies pour Top 10 */ .top10-meta { display: flex; align-items: center; gap: 15px; margin: 8px 0; font-size: 0.9em; } .top10-meta .rating { display: flex; align-items: center; gap: 5px; color: #ffd700; font-weight: 600; } .top10-meta .year { color: rgba(255, 255, 255, 0.8); } .vote-count { font-size: 0.8em; color: rgba(255, 255, 255, 0.6); margin-top: 5px; } /* Animation d'entrée pour les cartes Top 10 */ .top10-card.card-animation { opacity: 0; transform: translateY(30px) scale(0.9); animation: slideInScale 0.6s ease forwards; } @keyframes slideInScale { to { opacity: 1; transform: translateY(0) scale(1); } } /* Responsive pour Top 10 */ @media (max-width: 768px) { .top10-filters { gap: 10px; margin-bottom: 20px; } .top10-filters .btn { padding: 10px 20px; font-size: 0.9em; } .top10-rank { font-size: 1em; padding: 6px 10px; top: 8px; left: 8px; } .top10-actions { gap: 10px; } .top10-actions .btn-play, .top10-actions .btn-info { width: 40px; height: 40px; font-size: 1em; } .top10-meta { gap: 10px; font-size: 0.8em; } } /* Effets visuels supplémentaires */ .top10-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(45deg, rgba(112, 9, 229, 0.1), rgba(157, 78, 221, 0.1)); opacity: 0; transition: opacity 0.3s ease; z-index: 1; } .top10-card:hover::before { opacity: 1; } /* Indicateur spécial pour contenu TMDB uniquement */ .top10-card.tmdb-only { position: relative; } .top10-card.tmdb-only::after { content: 'TMDB'; position: absolute; bottom: 10px; right: 10px; background: rgba(111, 0, 255, 0.9); color: white; font-size: 0.7em; font-weight: bold; padding: 4px 8px; border-radius: 10px; z-index: 3; } /* --- Style pour le bouton de suppression "Reprendre la lecture" --- */ .movie-card { position: relative; /* Nécessaire pour bien positionner la croix */ } .remove-from-cw-btn { position: absolute; top: 8px; right: 8px; background-color: rgba(20, 20, 20, 0.8); color: #fff; border: 1px solid rgba(255, 255, 255, 0.7); border-radius: 50%; width: 28px; height: 28px; cursor: pointer; font-size: 16px; font-weight: bold; line-height: 26px; text-align: center; z-index: 10; /* Par défaut, la croix est cachée sur ordinateur */ opacity: 0; transform: scale(0.8); transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out; } /* La croix apparaît au survol sur ordinateur */ .movie-card:hover .remove-from-cw-btn { opacity: 1; transform: scale(1); } .remove-from-cw-btn:hover { background-color: #7009e5; /* Couleur principale du site */ border-color: #7009e5; } /* ▼▼▼ OPTIMISATION MOBILE AJOUTÉE ICI ▼▼▼ */ /* Pour les écrans de 768px de large ou moins */ @media (max-width: 768px) { .remove-from-cw-btn { /* On force la croix à être toujours visible sur mobile */ opacity: 1; transform: scale(1); } } /* ▲▲▲ FIN DE L'OPTIMISATION MOBILE ▲▲▲ */ /* Petite animation de disparition de la carte */ @keyframes fadeOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.8); } }