diff --git a/LICENSE b/LICENSE.txt
similarity index 98%
rename from LICENSE
rename to LICENSE.txt
index 2a6bac3..f713b33 100644
--- a/LICENSE
+++ b/LICENSE.txt
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2025 AQSA CHOUDHARY
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+MIT License
+
+Copyright (c) 2025 AQSA CHOUDHARY
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/index.html b/index.html
index fd1cdb8..61cad47 100644
--- a/index.html
+++ b/index.html
@@ -1,497 +1,19 @@
-
-
-
- Netflix India-Watch TV Shows Online, Watch Movies Online
-
-
-
-
-
-
-
-
-
☀️
-
-
-
- English
- Hindi
-
-
-
-
-
Sign_In
-
-
-
-
-
Unlimited movies, TV shows and more
-
Starts at ₹149. Cancel at any time.
-
- Ready to watch? Enter your email to create or restart your
- membership
-
-
-
- Get Started >
-
-
-
-
-
-
- Enjoy on your TV
- Watch on smart TVs, PlayStations, XBox, Chromecast, Apple TV, Blu-ray
- Players and more.
-
-
-
-
-
-
-
-
-
-
-
-
- Download your shows to watch offline
- Save your favourites easily and always have something to watch.
-
-
-
-
-
- Create profiles for kids
- Send children on adventures with their favourite characters in a
- space made just for them-free with your membership.
-
-
-
-
-
-
-
-
- Frequently Asked Questions
-
-
-
-
What is Netflix?
-
-
-
-
-
-
- Netflix is a streaming service that offers a wide variety of
- award-winning TV shows, movies and documentaries on thousands of
- internet-connected devices. You can watch as much as you want,
- whenever you want without a single commercial-all for one low
- monthly price.
-
-
-
-
-
-
How much does Netflix cost?
-
-
-
-
-
-
- Watch Netflix on your smartphone, tablet, Smart TV, laptop, or
- streaming device, all for one fixed monthly fee. Plans range from ₹149
- to ₹649 a month. No extra costs, no contracts.
-
-
-
-
-
-
Where can I watch?
-
-
-
-
-
-
- Watch anywhere, anytime. Sign in with your Netflix account to watch
- instantly on the web at netflix.com from your personal computer or on
- any internet-connected device that offers the Netflix app, including
- smart TVs, smartphones, tablets, streaming media players and game
- consoles.
-
-
-
-
-
-
How can I cancel?
-
-
-
-
-
-
- Netflix is flexible. There are no pesky contracts and no commitments.
- You can easily cancel your account online in two clicks. There are no
- cancellation fees – start or stop your account anytime.
-
-
-
-
-
-
What can I watch on Netflix?
-
-
-
-
-
-
- Netflix has an extensive library of feature films, documentaries, TV
- shows, anime, award-winning Netflix originals, and more. Watch as much
- as you want, anytime you want.
-
-
-
-
-
-
Is Netflix good for kids?
-
-
-
-
-
-
- The Netflix Kids experience is included in your membership to give
- parents control while kids enjoy family-friendly TV shows and movies
- in their own space. Kids profiles come with PIN-protected parental
- controls.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Netflix Clone
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/script.js b/script.js
new file mode 100644
index 0000000..800d48b
--- /dev/null
+++ b/script.js
@@ -0,0 +1,333 @@
+document.addEventListener('DOMContentLoaded', () => {
+ const appRoot = document.getElementById('app-root');
+ const TMDB_API_KEY = "Your api key";
+ const TMDB_BASE_URL = "https://api.themoviedb.org/3";
+ const TMDB_IMAGE_BASE_URL = "https://image.tmdb.org/t/p/";
+
+ // --- DATA MANAGEMENT ---
+ let myList = JSON.parse(localStorage.getItem('myList')) || [];
+ let profiles = JSON.parse(localStorage.getItem('profiles')) || [
+ { id: 1, name: 'Ashish', avatar: 'https://placehold.co/150x150/E50914/FFFFFF?text=A' },
+ { id: 2, name: 'Kids', avatar: 'https://placehold.co/150x150/333/FFFFFF?text=K' }
+ ];
+ let manageMode = false;
+
+ // --- CATEGORY & GENRE DEFINITIONS ---
+ const HOME_CATEGORIES = { "Popular on Netflix": "trending/all/week", "Trending Now": "movie/popular", "Top Rated Movies": "movie/top_rated", "Top Rated TV Shows": "tv/top_rated" };
+ const MOVIE_CATEGORIES = { "Popular Movies": "movie/popular", "Trending Movies": "trending/movie/week", "Action": "discover/movie?with_genres=28", "Comedy": "discover/movie?with_genres=35", "Horror": "discover/movie?with_genres=27" };
+ const TV_CATEGORIES = { "Popular TV Shows": "tv/popular", "Top Rated TV": "tv/top_rated", "Sci-Fi & Fantasy": "discover/tv?with_genres=10765", "Dramas": "discover/tv?with_genres=18", "Comedies": "discover/tv?with_genres=35" };
+
+ // --- HTML TEMPLATES ---
+ const landingPageTemplate = `
+
+
+
+ Sign In
+
+
+
Unlimited movies, TV shows and more.
+
Watch anywhere. Cancel anytime.
+
Ready to watch? Enter your email to create or restart your membership.
+
+
+
`;
+
+ const browsePageTemplate = `
+
+
+
+
`;
+
+ const searchPageTemplate = `
+
+
`;
+
+ function getProfilesPageTemplate() {
+ return `
+
+
Who's watching?
+
+ ${profiles.map(p => `
+
+
+ ${manageMode && profiles.length > 1 ? '
' : ''}
+
+
${p.name}
+
`).join('')}
+
+
+
+ ${manageMode ? 'Done' : 'Manage Profiles'}
+ Logout
+
+
`;
+ }
+
+ // --- ROUTER & NAVIGATION ---
+ function navigate(path) {
+ if (path === 'profiles') {
+ appRoot.innerHTML = getProfilesPageTemplate();
+ addProfilePageListeners();
+ } else {
+ const routes = { 'landing': landingPageTemplate, 'browse': browsePageTemplate };
+ appRoot.innerHTML = routes[path] || routes['landing'];
+ }
+
+ window.history.pushState({path}, path, `#${path}`);
+ if (path === 'browse') initBrowsePage();
+ addNavigationListeners();
+ }
+ function addNavigationListeners() {
+ document.querySelectorAll('[data-route]').forEach(el => el.addEventListener('click', (e) => {
+ e.preventDefault();
+ navigate(el.dataset.route);
+ }));
+ }
+
+ // --- PROFILE PAGE LOGIC ---
+ function addProfilePageListeners() {
+ document.querySelectorAll('.profile[data-profile-id]').forEach(el => {
+ el.addEventListener('click', () => {
+ const profileId = parseInt(el.dataset.profileId);
+ if (manageMode) {
+ if (profiles.length > 1) { // Prevent deleting the last profile
+ deleteProfile(profileId);
+ }
+ } else {
+ navigate('browse');
+ }
+ });
+ });
+ document.getElementById('add-profile-btn')?.addEventListener('click', addProfile);
+ document.querySelector('.btn-manage-profiles')?.addEventListener('click', toggleManageMode);
+ }
+ function saveProfiles() { localStorage.setItem('profiles', JSON.stringify(profiles)); }
+ function addProfile() {
+ const name = prompt("Enter a name for the new profile:");
+ if (name && name.trim() !== '') {
+ const newProfile = {
+ id: Date.now(),
+ name: name.trim(),
+ avatar: `https://placehold.co/150x150/${Math.floor(Math.random()*16777215).toString(16)}/FFFFFF?text=${name.charAt(0).toUpperCase()}`
+ };
+ profiles.push(newProfile);
+ saveProfiles();
+ navigate('profiles');
+ }
+ }
+ function deleteProfile(id) {
+ profiles = profiles.filter(p => p.id !== id);
+ saveProfiles();
+ navigate('profiles');
+ }
+ function toggleManageMode() {
+ manageMode = !manageMode;
+ navigate('profiles');
+ }
+
+ // --- BROWSE PAGE LOGIC ---
+ function initBrowsePage() {
+ renderHomePage();
+ addSidebarNavListeners();
+ }
+ function addSidebarNavListeners() {
+ document.getElementById('home-btn')?.addEventListener('click', (e) => { e.preventDefault(); renderHomePage(); });
+ document.getElementById('tv-btn')?.addEventListener('click', (e) => { e.preventDefault(); renderContentPage(TV_CATEGORIES, 'tv', 'tv-btn'); });
+ document.getElementById('movies-btn')?.addEventListener('click', (e) => { e.preventDefault(); renderContentPage(MOVIE_CATEGORIES, 'movie', 'movies-btn'); });
+ document.getElementById('my-list-btn')?.addEventListener('click', (e) => { e.preventDefault(); renderMyListPage(); });
+ document.getElementById('search-btn')?.addEventListener('click', (e) => { e.preventDefault(); renderSearchPage(); });
+ document.querySelector('.sidebar-logout a')?.addEventListener('click', (e) => { e.preventDefault(); navigate('profiles'); });
+ }
+
+ // --- PAGE RENDERING FUNCTIONS ---
+ async function renderContentPage(categories, type = 'movie', activeId) {
+ updateActiveLink(activeId);
+ const mainContent = document.querySelector('.main-content');
+ if (!mainContent) return;
+ mainContent.innerHTML = `
`;
+
+ const heroContent = await fetchMovies(type === 'tv' ? 'tv/popular' : 'movie/popular');
+ if (heroContent?.results?.length > 0) {
+ displayHero(heroContent.results[Math.floor(Math.random() * heroContent.results.length)]);
+ }
+
+ const rowsContainer = mainContent.querySelector('.movie-rows-container');
+ for (const [title, endpoint] of Object.entries(categories)) {
+ const items = await fetchMovies(endpoint);
+ if (items?.results?.length > 0) {
+ rowsContainer.appendChild(createMovieRow(title, items.results));
+ }
+ }
+ }
+ function renderHomePage() { renderContentPage(HOME_CATEGORIES, 'movie', 'home-btn'); }
+ async function renderMyListPage() {
+ updateActiveLink('my-list-btn');
+ const mainContent = document.querySelector('.main-content');
+ if (!mainContent) return;
+ mainContent.innerHTML = `
`;
+
+ const rowsContainer = mainContent.querySelector('.movie-rows-container');
+ if (myList.length === 0) {
+ rowsContainer.innerHTML = `My List is empty. Add shows and movies to see them here! `;
+ return;
+ }
+
+ const myListDetails = await Promise.all(myList.map(item => fetchMovies(`${item.type}/${item.id}`)));
+
+ const movies = myListDetails.filter(item => item && item.title);
+ const tvShows = myListDetails.filter(item => item && item.name);
+
+ rowsContainer.innerHTML = ''; // Clear for new content
+ if (movies.length > 0) {
+ rowsContainer.appendChild(createMovieRow("Movies", movies));
+ }
+ if (tvShows.length > 0) {
+ rowsContainer.appendChild(createMovieRow("TV Shows", tvShows));
+ }
+ }
+ async function renderSearchPage() {
+ updateActiveLink('search-btn');
+ const mainContent = document.querySelector('.main-content');
+ if (!mainContent) return;
+ mainContent.innerHTML = searchPageTemplate;
+
+ const searchInput = document.getElementById('search-input');
+ const resultsGrid = document.querySelector('.search-results-grid');
+
+ const initialResults = await fetchMovies('trending/all/week');
+ displaySearchResults(initialResults, resultsGrid, "Top Searches");
+
+ let debounceTimer;
+ searchInput.addEventListener('input', () => {
+ clearTimeout(debounceTimer);
+ debounceTimer = setTimeout(async () => {
+ const query = searchInput.value.trim();
+ if (query) {
+ const searchResults = await fetchMovies(`search/multi`, `&query=${encodeURIComponent(query)}`);
+ displaySearchResults(searchResults, resultsGrid, "Results");
+ } else {
+ displaySearchResults(initialResults, resultsGrid, "Top Searches");
+ }
+ }, 500);
+ });
+ }
+ function displaySearchResults(results, container, title) {
+ container.innerHTML = `${title} `;
+ if (results?.results?.length > 0) {
+ results.results
+ .filter(item => item.poster_path)
+ .forEach(item => container.appendChild(createMovieCard(item)));
+ } else if (title === "Results") {
+ container.innerHTML += `No results found.
`;
+ }
+ }
+
+ // --- CORE HELPER FUNCTIONS ---
+ async function fetchMovies(endpoint, queryParams = '') {
+ const url = `${TMDB_BASE_URL}/${endpoint}?api_key=${TMDB_API_KEY}&language=en-US${queryParams}`;
+ try {
+ const response = await fetch(url);
+ if (!response.ok) { console.error(`API Error: ${response.status} for ${url}`); return null; }
+ return await response.json();
+ } catch (error) { console.error(`Fetch Error for ${url}:`, error); return null; }
+ }
+ function createMovieRow(title, items) {
+ const row = document.createElement('section');
+ row.className = 'movie-row';
+ row.innerHTML = `${title}
`;
+ const carousel = row.querySelector('.carousel-inner');
+ if (Array.isArray(items)) {
+ items.forEach(item => carousel.appendChild(createMovieCard(item)));
+ }
+ return row;
+ }
+ function createMovieCard(item) {
+ const card = document.createElement('div');
+ card.className = 'movie-card-browse';
+ card.dataset.itemId = item.id;
+ const posterPath = item.poster_path ? `${TMDB_IMAGE_BASE_URL}w342${item.poster_path}` : 'https://placehold.co/220x330/222/FFF?text=No+Image';
+ card.innerHTML = ` `;
+ const myListBtn = document.createElement('button');
+ myListBtn.className = 'my-list-btn-card';
+ updateMyListButtonState(myListBtn, item.id);
+ myListBtn.onclick = (e) => {
+ e.stopPropagation();
+ toggleMyList(item, myListBtn);
+ if (document.querySelector('.sidebar-nav-links li a.active')?.id === 'my-list-btn') {
+ renderMyListPage();
+ }
+ };
+ card.appendChild(myListBtn);
+ card.onclick = () => displayHero(item);
+ return card;
+ }
+ function displayHero(item) {
+ const heroSection = document.querySelector('.hero-section');
+ if (!heroSection || !item) return;
+ const backdropPath = item.backdrop_path ? `${TMDB_IMAGE_BASE_URL}original${item.backdrop_path}` : '';
+ heroSection.innerHTML = `
+
+
+
${item.title || item.name}
+
${item.overview}
+
+ Play
+
+
+
`;
+ const heroMyListButton = heroSection.querySelector('.btn-my-list');
+ updateMyListButtonState(heroMyListButton, item.id);
+ heroMyListButton.addEventListener('click', () => toggleMyList(item, heroMyListButton));
+ }
+ function toggleMyList(item, button) {
+ const itemId = item.id;
+ const itemType = item.media_type || (item.title ? 'movie' : 'tv');
+ const index = myList.findIndex(i => i.id === itemId);
+ if (index > -1) { myList.splice(index, 1); } else { myList.push({ id: itemId, type: itemType }); }
+ localStorage.setItem('myList', JSON.stringify(myList));
+ updateMyListButtonState(button, itemId);
+ const cardButton = document.querySelector(`.movie-card-browse[data-item-id='${itemId}'] .my-list-btn-card`);
+ if (cardButton) updateMyListButtonState(cardButton, itemId);
+ }
+ function updateMyListButtonState(button, itemId) {
+ if (!button) return;
+ const isInList = myList.some(i => i.id === itemId);
+ const icon = isInList ? 'fa-check' : 'fa-plus';
+ if (button.classList.contains('my-list-btn-card')) {
+ button.innerHTML = ` `;
+ } else {
+ button.innerHTML = ` My List`;
+ }
+ }
+ function updateActiveLink(activeId) {
+ document.querySelectorAll('.sidebar-nav-links li a').forEach(link => {
+ link.classList.remove('active');
+ });
+ const linkToActivate = document.getElementById(activeId);
+ if (linkToActivate) {
+ linkToActivate.classList.add('active');
+ }
+ }
+
+ // --- INITIAL APPLICATION LOAD ---
+ const initialPath = window.location.hash.replace('#', '') || 'landing';
+ navigate(initialPath);
+});
diff --git a/style.css b/style.css
index 04512b5..5cc3744 100644
--- a/style.css
+++ b/style.css
@@ -1,871 +1,190 @@
-@import url("https://fonts.googleapis.com/css2?family=Martel+Sans:wght@200;300;400;600;700;800;900&display=swap");
-@font-face {
- font-family: "Netflix Sans Bolder";
- src: url("fonts/NetflixSans-Bold.otf") format("opentype");
-}
+@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Martel+Sans:wght@200;300;400;600;700;800;900&display=swap");
:root {
- --main-page-bg: black;
- --main-text-color: white;
-
- --section-bg: black;
- --section-text-color: white;
-
- --faq-box-bg: rgb(84, 83, 83);
- --faq-box-hover-bg:rgb(147, 146, 146);
- --faq-svg-filter: invert(1);
-
- --first-image-filter: none;
-
- --btn-text-on-light-bg:white;
- --btn-lang-svg-filter: invert(1);
-
- --separation-color:rgb(248, 38, 38);
- --btn-default-bg: rgb(117, 115, 115);
- --btn-default-text:white;
- --btn-red-bg: rgb(228, 15, 15);
- --btn-red-text: white;
- --input-bg-color: rgba(23, 23, 23, 0.7);
- --input-border-color: rgba(126, 122, 122, 0.5);
+ --netflix-red: #e50914;
+ --netflix-black: #141414;
+ --text-primary: #fff;
+ --text-secondary: #b3b3b3;
+ --background-dark: #111;
}
-/* Light Mode Overrides for the variables */
-body[data-theme="light"] {
- --main-page-bg: white;
- --main-text-color: black;
-
- --section-bg: #f0f0f0;
- --section-text-color: black;
-
- --faq-box-bg: whitesmoke;
- --faq-box-hover-bg: lightgray;
- --faq-svg-filter: none;
-
- --first-image-filter: brightness(1.5) grayscale(0.5);
-
- --btn-text-on-light-bg:black;
- --btn-lang-svg-filter: none;
-}
* {
padding: 0;
margin: 0;
- font-family: "Netflix Sans Bolder", "Poppins", sans-serif;
+ box-sizing: border-box;
+ font-family: "Poppins", "Martel Sans", sans-serif;
}
body {
- background-color: var(--main-page-bg);
- transition: background-color 0.3s ease;
+ background-color: var(--background-dark);
+ color: var(--text-primary);
+ overflow-x: hidden;
}
-.main {
-
- background-image: url('https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/f562aaf4-5dbb-4603-a32b-6ef6c2230136/dh0w8qv-9d8ee6b2-b41a-4681-ab9b-8a227560dc75.jpg/v1/fill/w_1280,h_720,q_75,strp/the_netflix_login_background__canada__2024___by_logofeveryt_dh0w8qv-fullview.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7ImhlaWdodCI6Ijw9NzIwIiwicGF0aCI6IlwvZlwvZjU2MmFhZjQtNWRiYi00NjAzLWEzMmItNmVmNmMyMjMwMTM2XC9kaDB3OHF2LTlkOGVlNmIyLWI0MWEtNDY4MS1hYjliLThhMjI3NTYwZGM3NS5qcGciLCJ3aWR0aCI6Ijw9MTI4MCJ9XV0sImF1ZCI6WyJ1cm46c2VydmljZTppbWFnZS5vcGVyYXRpb25zIl19.LOYKSxIDqfPwWHR0SSJ-ugGQ6bECF0yO6Cmc0F26CQs');
- height: 70vh;
+/* === 1. LANDING PAGE STYLES === */
+.landing-page-container {
+ background-image: linear-gradient(to top, rgba(0, 0, 0, 0.8) 0, rgba(0, 0, 0, 0.4) 60%, rgba(0, 0, 0, 0.8) 100%), url('home_page_background_image.jpg');
+ min-height: 100vh;
position: relative;
- background-position: center center;
+ background-position: center;
background-repeat: no-repeat;
- background-size: max(1200px, 100vw);
-}
-
-.main .box {
- height: 70vh;
- width: 100%;
- opacity: 0.7;
- background-color: black;
- position: absolute;
- top: 0;
-
- background-image: url(home_page_background_image.jpg), 0.7;
- height: 99vh;
- width: 100%;
- position: relative;
- background-position: center center;
- background-repeat: no-repeat;
- background-size: max(1200px, 100vw);
-}
-
-.main .box {
- height: 99vh;
- width: 100%;
- opacity: 0.79;
- background-color: var(--main-page-bg);
- position: absolute;
- top: 0;
-}
-
-nav {
- display: flex;
- justify-content: space-between;
- align-items: center;
- max-width: 65vw;
- margin: auto;
- height: 85px;
- padding:0 145px;
-}
-
-nav img {
- color: rgb(255, 0, 0);
- padding: 20px;
- width: 130px;
- position: relative;
- z-index: 10;
-}
-
-nav button {
- position: relative;
- z-index: 10;
- margin:5%;
-}
-
-.hero {
- height: calc(100% - 100px);
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- color: var(--main-text-color);
- position: relative;
- font-family: "Martel Sans", serif;
- gap: 23px;
- padding: 0 30px;
-}
-
-.hero > :first-child {
- font-weight: bolder;
- font-size: 48px;
- text-align: center;
-}
-
-.hero > :nth-child(2) {
- font-weight: 400;
- font-size: 24px;
- text-align: center;
-}
-
-.hero > :nth-child(3) {
- font-weight: 400;
- font-size: 20px;
- text-align: center;
-}
-
-.separation {
- height: 6px;
- background-color: var(--separation-color);
- position: relative;
- z-index: 20;
-}
-
-.nav-btn {
- width: 186px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- gap:10px;
-}
-
-.btn {
- background: #666;
- color: rgb(255, 255, 255);
- padding:5px 25px;
- margin: 10px 12px;
- border: none;
- border-radius: 4px;
- cursor:pointer;
- text-decoration: none;
- transition: transform 0.3s ease, box-shadow 0.3s ease;
-}
-
-.btn:hover {
-transform: scale(1.05);
- box-shadow: 0 6px 15px rgba(0, 0, 0, 0.25);
-}
-
-.btn-red {
- background:rgb(228, 15, 15);
- font-size:15px;
- font-weight:lighter;
-}
-
-.btn-red:hover {
- box-shadow:0px 6px 20px rgb(171, 212, 171);
- transform: scale(1.08);
-}
-
-#theme-toggle {
- font-size: 1.2rem;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
- line-height: 1;
-}
-
-.language-switch {
- width: 15px;
- padding: 2px;
-}
-#language-select {
- background: transparent;
- color: white;
- border: none;
- font-size: 16px;
- appearance: none;
- padding: 8px;
- cursor: pointer;
-}
-
-.down-arrow {
- width: 8px;
- padding: 0 2px;
-}
-
-.hero-buttons {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 14px;
-}
-
-.main input {
- padding: 7px 101px 8px 14px;
- color: var(--btn-default-text);
- font-size: 12px;
- font-weight: 900;
- border-radius: 4px;
- background-color: var(--input-bg-color);
- border: 1px solid var(--input-border-color);
-}
-
-.btn-lang {
- background-color: var(--section-bg);
- border: 1px solid var(--btn-default-text);
- color: var(--btn-text-on-light-bg);
- display: flex;
- align-items: center;
-}
-
-.english {
- padding: 0 5px;
-}
-
-.btn-red-sm {
- background-color: var(--btn-red-bg);
- color: var(--btn-red-text);
- display: flex;
- align-items: center;
- margin:3px;
-}
-
-.btn-lang .language-switch,
-.btn-lang .down-arrow {
- filter: var(--btn-lang-svg-filter);
-}
-.first {
- display: flex;
- justify-content: center;
- align-items: center;
- max-width: 100vw;
- margin: 0;
- background-color: var(--section-bg);
- color: var(--section-text-color);
- padding: 34px 0;
-}
-@media screen and (max-width: 1300px) {
- .first {
- flex-wrap: wrap;
- }
- .secImg img {
- width: 305px;
- position: relative;
- z-index: 10;
- }
- .hero > :first-child {
- font-size: 32px;
- }
- .hero > :nth-child(2) {
- font-size: 18px;
- }
- .hero > :nth-child(3) {
- font-size: 18px;
- }
- nav {
- max-width: 90vw;
- }
- .main input {
- padding: 7px 53px 8px 14px;
- }
- .hero-buttons {
- display: flex;
-
- justify-content: center;
- max-width: 70vw;
- margin: auto;
- color: white;
- align-items: center;
- padding: 70px 0;
- flex-wrap: wrap;
-}
-
-.second {
- flex-direction: row-reverse;
-}
-
-section.first > div {
- display: flex;
- flex-direction: column;
- padding: 0 34px;
- flex: 1;
- min-width: 300px;
- text-align: left;
- gap: 15px;
-}
-
-section.first > div :first-child {
- font-size: 48px;
- font-weight: bolder;
- line-height: 1.1;
-}
-
-section.first > div :nth-child(2) {
- font-size: 24px;
- line-height: 1.2;
-}
-
-.secImg {
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-@media screen and (max-width:1300px){
- .first{
- flex-wrap: wrap;
- }
- .secImg img {
- width: 305px;
- position: relative;
- z-index: 10;
- }
- .hero> :first-child {
- font-size: 32px;
- }
- .hero> :nth-child(2){
- font-size: 18px;
- }
- .hero> :nth-child(3){
- font-size: 18px;
- }
- nav{
- max-width: 90vw;
- }
- .main input{
- padding: 7px 53px 8px 14px;
- }
- .hero-buttons {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- gap: 14px;
- }
- .faq h2{
- text-align: center;
- font-size: 32px;
- }
- footer{
- max-width: 90vw;
- }
- .footer-item{
- align-items: center;
- }
- .footer{
- display: grid;
- grid-template-columns: 1fr 1fr;
- color: white;
- gap: 25px;
- }
- flex-direction: column;
- align-items: center;
- justify-content: center;
- gap: 14px;
- }
- .faq h2 {
- text-align: center;
- font-size: 32px;
- }
-}
-
-.secImg img {
- filter: var(--first-image-filter);
- width: 400px;
- position: relative;
- z-index: 10;
-}
-
-.secImg {
- position: relative;
-}
-section.first > div {
- display: flex;
- flex-direction: column;
-}
-
-section.first > div :nth-child(1) {
- font-size: 30px;
- font-weight: bolder;
-}
-
-section.first > div :nth-child(2) {
- font-size: 24px;
-}
-.faq h2 {
- text-align: center;
- font-size: 48px;
-}
-.faq {
- background-color: var(--section-bg);
- color: var(--section-text-color);
- padding: 34px;
+ background-size: cover;
+ border-bottom: 8px solid #222;
}
-.faqbox{
+.landing-nav {
display: flex;
- transition: all 0.5s ease-out;
- background-color: rgb(84, 83, 83);
justify-content: space-between;
- padding: 24px;
- max-width: 60vw;
- font-size: 20px;
- margin: 20px auto;
- cursor: pointer;
- border-radius: 15px;
-}
-footer{
- color: white;
- max-width: 60vw;
- margin: auto;
- padding: 14px;
-}
-.footer{
- display: grid;
- grid-template-columns: 1fr 1fr 1fr 1fr;
- color: white;
-}
-.footer-item{
- display: flex;
- flex-direction: column;
- gap: 23px;
-.faqbox:hover {
- background-color: var(--faq-box-hover-bg);
-
-}
-.faqbox svg {
- filter: var(--faq-svg-filter);
-}
-.faqbox {
- display: flex;
- transition: all 0.5s ease-out;
- background-color: var(--faq-box-bg);
- justify-content: space-between;
- padding: 24px;
- max-width: 60vw;
- font-size: 24px;
- margin: 20px auto;
- cursor: pointer;
-}
-
-#chatbot-widget {
- position: fixed;
- bottom: 30px;
- right: 30px;
- z-index: 1000;
- font-family: "Segoe UI", Arial, sans-serif;
-}
-#chatbot-toggle {
- background: #e50914;
- color: #fff;
- border: none;
- border-radius: 50%;
- width: 56px;
- height: 56px;
- font-size: 2rem;
- cursor: pointer;
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
- transition: background 0.2s;
-}
-#chatbot-toggle:hover {
- background: #b0060f;
-}
-#chatbot-window {
- width: 340px;
- min-height: 420px;
- max-height: 70vh;
- background: #181818;
- color: #fff;
- border-radius: 18px;
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
- position: absolute;
- bottom: 70px;
- right: 0;
- display: flex;
- flex-direction: column;
- overflow: hidden;
- animation: fadeIn 0.3s;
-}
-@keyframes fadeIn {
- from {
- opacity: 0;
- transform: translateY(30px);
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
-}
-#chatbot-header {
- background: #e50914;
- color: #fff;
- padding: 14px 18px;
- font-weight: bold;
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: 1.1rem;
- letter-spacing: 0.5px;
-}
-#chatbot-close {
- cursor: pointer;
- font-size: 1.4rem;
- transition: color 0.2s;
-}
-#chatbot-close:hover {
- color: #ffd700;
-}
-#chatbot-messages {
- flex: 1;
- padding: 18px 12px 8px 12px;
- overflow-y: auto;
- background: #222;
- display: flex;
- flex-direction: column;
- gap: 10px;
-}
-.chat-message {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
-}
-.chat-message.user {
- align-items: flex-end;
-}
-.bubble {
- max-width: 80%;
- padding: 12px 16px;
- border-radius: 18px;
- font-size: 1rem;
- line-height: 1.5;
- margin-bottom: 2px;
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
- word-break: break-word;
-}
-.chat-message.user .bubble {
- background: #e50914;
- color: #fff;
- border-bottom-right-radius: 6px;
- border-bottom-left-radius: 18px;
- border-top-left-radius: 18px;
- border-top-right-radius: 18px;
-}
-.chat-message.bot .bubble {
- background: #333;
- color: #fff;
- border-bottom-left-radius: 6px;
- border-bottom-right-radius: 18px;
- border-top-left-radius: 18px;
- border-top-right-radius: 18px;
-}
-#chatbot-loading {
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 10px 0;
- background: #222;
-}
-.spinner {
- border: 4px solid #444;
- border-top: 4px solid #e50914;
- border-radius: 50%;
- width: 28px;
- height: 28px;
- animation: spin 1s linear infinite;
-}
-@keyframes spin {
- 0% {
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(360deg);
- }
-}
-#chatbot-form {
- display: flex;
- border-top: 1px solid #333;
- background: #181818;
- padding: 10px 12px;
- gap: 8px;
-}
-#chatbot-input {
- flex: 1;
- padding: 10px 14px;
- border: none;
- background: #222;
- color: #fff;
- font-size: 1rem;
- border-radius: 12px;
- outline: none;
- transition: box-shadow 0.2s;
-}
-#chatbot-input:focus {
- box-shadow: 0 0 0 2px #e50914;
-}
-#chatbot-form button {
- background: #e50914;
- color: #fff;
- border: none;
- padding: 0 18px;
- font-size: 1.2rem;
- border-radius: 12px;
- cursor: pointer;
- transition: background 0.2s;
-}
-#chatbot-form button:hover {
- background: #b0060f;
-}
-@media (max-width: 500px) {
- #chatbot-window {
- width: 98vw;
- min-width: 0;
- right: 1vw;
- left: 1vw;
- bottom: 80px;
- max-height: 80vh;
- }
- #chatbot-toggle {
- right: 10px;
- bottom: 10px;
- }
-}
-/* <<<<<<< feature/light-dark-mode
-======= */
-
-@import url("https://fonts.googleapis.com/css2?family=Martel+Sans:wght@200;300;400;600;700;800;900&display=swap");
-
-* {
- padding: 0;
- margin: 0;
- font-family: "Netflix Sans Bolder", "Poppins", sans-serif;
-}
-
-body {
- background-color: black;
- padding: 20px;
-}
-
-.faq h2 {
- text-align: center;
- font-size: 48px;
- color: white;
- margin-bottom: 30px;
-}
-
-.faq {
- background-color: black;
- color: white;
- padding: 34px;
-}
-
-.faqbox:hover {
- background-color: rgb(147, 146, 146);
-}
-
-.faqbox svg {
- filter: invert(1);
- transition: transform 0.3s ease;
-}
-
-.faqbox.active svg {
- transform: rotate(45deg);
-}
-
-.faqbox {
- display: flex;
- transition: all 0.5s ease-out;
- background-color: rgb(84, 83, 83);
- justify-content: space-between;
- align-items: center;
- padding: 24px;
- max-width: 60vw;
- font-size: 24px;
- margin: 20px auto;
- cursor: pointer;
- flex-direction: column;
-}
-
-.faq-question {
- display: flex;
- justify-content: space-between;
- align-items: center;
- width: 100%;
-}
-
-.faq-answer {
- width: 100%;
- max-height: 0;
- overflow: hidden;
- transition: max-height 0.3s ease, padding 0.3s ease;
- font-size: 18px;
- line-height: 1.5;
-}
-
-.faqbox.active .faq-answer {
- max-height: 200px;
- padding-top: 20px;
-}
-
-@media screen and (max-width: 1300px) {
- .faq h2 {
- text-align: center;
- font-size: 32px;
- }
- .faqbox {
+ align-items: center;
max-width: 90vw;
- font-size: 20px;
- }
- .faq-answer {
- font-size: 16px;
- }
-}
-/* >>>>>>> main */
-
-/* FOOTER SIGNUP */
-.footer-signup {
- text-align: center;
- margin: 40px auto;
- max-width: 600px;
-}
-
-.footer-signup p {
- font-size: 18px;
- margin-bottom: 20px;
- color:white;
-}
-
-.footer-signup-box {
- display: flex;
- justify-content: center;
- gap: 10px;
- flex-wrap: wrap;
-}
-
-/* Floating label for footer input */
-.input-container {
- position: relative;
- display: inline-block;
- flex: 1;
- min-width: 280px;
- padding-right: 25px;
-}
-
-.footer-input-container{
- padding: 16px 14px 8px 14px;
- font-size: 16px;
- border-radius: 4px;
- border: 1px solid rgba(137, 134, 134, 0.7);
- background: rgba(23, 23, 23, 0.7);
- color:white;
- width: 100%;
-}
-
-.input-container label {
- position: absolute;
- left: 14px;
- top: 50%;
- transform: translateY(-50%);
- color: #aaa;
- font-size: 16px;
- pointer-events: none;
- transition: 0.3s ease all;
-}
-
-.input-container input:focus + label,
-.input-container input:not(:placeholder-shown) + label {
- top: 6px;
- font-size: 12px;
- color: #aaa; /* keep same grey color */
-}
-
-/* FOOTER LINKS & LANGUAGE */
-footer {
- max-width: 75vw;
- margin: auto;
- padding: 40px 0;
- color: #b3b3b3;
- font-size: 14px;
-}
-
-footer .questions {
- margin: 20px 0;
-}
-
-footer .questions a {
- color: #b3b3b3;
- text-decoration: underline;
-}
-
-.footer-links {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
- gap: 20px;
- margin-bottom: 30px;
-}
-
-.footer-links ul {
- list-style: none;
-}
-
-.footer-links li {
- margin-bottom: 12px;
-}
-
-.footer-links a {
- color: #b3b3b3;;
- text-decoration: none;
-}
-
-.footer-links a:hover {
- text-decoration: underline;
-}
-
-.footer-bottom {
- display: flex;
- flex-direction: column; /* stack vertically */
- align-items: flex-start;
- gap: 10px;
- margin-top: 20px;
-}
-
-.language-select {
- background: rgba(0, 0, 0, 0.7);
- color: #b3b3b3;
- border: 1px solid #333;
- border-radius: 4px;
- padding: 8px 14px;
- font-size: 14px;
- cursor: pointer;
-}
-
-.netflix-india {
- font-size: 14px;
- color: #b3b3b3;
- padding-top: 20px;
+ margin: auto;
+ padding: 20px 0;
+}
+.landing-nav .logo { width: 150px; height: auto; }
+.landing-nav .btn-signin {
+ background-color: var(--netflix-red); color: white; padding: 8px 17px;
+ border-radius: 5px; text-decoration: none; font-weight: 500;
+}
+.hero-card {
+ min-height: 80vh; display: flex; align-items: center; justify-content: center;
+ flex-direction: column; text-align: center; color: white; gap: 20px; padding: 0 30px;
+}
+.hero-card h1 { font-size: 3rem; font-weight: 900; }
+.hero-card h3 { font-size: 1.5rem; font-weight: 400; }
+.hero-card p { font-size: 1.2rem; font-weight: 400; }
+.email-form { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 20px; }
+.email-form input {
+ padding: 15px; font-size: 1rem; min-width: 450px; border-radius: 5px;
+ border: 1px solid #888; background: rgba(0,0,0,0.7); color: white;
+}
+.email-form .btn-get-started {
+ background-color: var(--netflix-red); color: white; padding: 15px 30px;
+ font-size: 1.5rem; font-weight: 600; border: none; border-radius: 5px; cursor: pointer;
+}
+
+/* === 2. PROFILES PAGE STYLES === */
+.profiles-container {
+ display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh;
+}
+.profiles-container h1 { font-size: 3.5rem; font-weight: 400; margin-bottom: 30px; }
+.profile-list { display: flex; gap: 30px; flex-wrap: wrap; justify-content: center; }
+.profile { cursor: pointer; text-align: center; color: var(--text-secondary); transition: color 0.2s; position: relative; }
+.profile:hover { color: var(--text-primary); }
+.profile .profile-avatar {
+ width: 150px; height: 150px; border-radius: 5px; background-color: #333;
+ margin-bottom: 10px; background-size: cover; border: 3px solid transparent; transition: border-color 0.2s;
+}
+.profile:hover .profile-avatar { border-color: white; }
+.profile .profile-name { font-size: 1.3rem; }
+.profile-buttons { display: flex; gap: 20px; margin-top: 50px; }
+.btn-manage-profiles, .btn-logout {
+ background: transparent; border: 1px solid var(--text-secondary);
+ color: var(--text-secondary); padding: 10px 25px; font-size: 1.2rem; cursor: pointer;
+}
+.btn-manage-profiles:hover, .btn-logout:hover { color: white; border-color: white; }
+.delete-overlay {
+ position: absolute; top: 0; left: 0; width: 150px; height: 150px;
+ background-color: rgba(0,0,0,0.7); border-radius: 5px; display: flex;
+ align-items: center; justify-content: center; font-size: 3rem;
+ opacity: 0; transition: opacity 0.2s;
+}
+.profile.manage-mode:hover .delete-overlay { opacity: 1; }
+
+/* === 3. BROWSE PAGE STYLES === */
+.browse-page-container { display: flex; }
+.sidebar {
+ width: 90px; height: 100vh; background-color: #000; position: fixed;
+ top: 0; left: 0; display: flex; flex-direction: column; align-items: center;
+ padding: 20px 0; z-index: 100;
+}
+.sidebar-logo { width: 40px; margin-bottom: 40px; }
+.sidebar-nav-links { list-style: none; width: 100%; margin: 0; }
+.sidebar-nav-links li a {
+ display: flex; align-items: center; color: var(--text-secondary);
+ text-decoration: none; padding: 15px 30px; font-size: 1.5rem; position: relative;
+}
+.sidebar-nav-links li a:hover { color: var(--text-primary); }
+.sidebar-nav-links li a.active { color: var(--text-primary); }
+.sidebar-nav-links li a.active::before {
+ content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
+ width: 4px; height: 70%; background-color: var(--netflix-red); border-radius: 0 5px 5px 0;
+}
+.sidebar-logout { margin-top: auto; }
+
+.main-content { margin-left: 90px; width: calc(100% - 90px); }
+.hero-section { height: 80vh; position: relative; display: flex; align-items: center; }
+.hero-background {
+ position: absolute; top: 0; left: 0; width: 100%; height: 100%;
+ background-size: cover; background-position: center top; z-index: 1;
+}
+.hero-background::after {
+ content: ''; position: absolute; bottom: 0; left: 0;
+ width: 100%; height: 150px; background: linear-gradient(to top, var(--background-dark), transparent);
+}
+.hero-content { position: relative; z-index: 2; padding: 0 5%; max-width: 50%; }
+.hero-title { font-size: 3.5rem; font-weight: bold; margin-bottom: 20px; text-shadow: 2px 2px 4px rgba(0,0,0,0.7); }
+.hero-description { font-size: 1.2rem; line-height: 1.5; margin-bottom: 30px; max-width: 600px; }
+.hero-buttons .btn-hero {
+ border: none; padding: 15px 35px; border-radius: 5px; font-size: 1.1rem;
+ font-weight: bold; cursor: pointer; margin-right: 15px; transition: opacity 0.2s;
+}
+.hero-buttons .btn-play { background-color: #fff; color: #000; }
+.hero-buttons .btn-my-list { background-color: rgba(109, 109, 110, 0.7); color: #fff; }
+.hero-buttons .btn-hero:hover { opacity: 0.8; }
+.btn-hero i { margin-right: 10px; }
+.movie-rows-container { padding: 0 5%; margin-top: -100px; position: relative; z-index: 10; }
+
+.movie-row {
+ margin-bottom: 20px;
+ padding: 30px 0;
+}
+.movie-row h2 { font-size: 1.4rem; margin-bottom: 15px; }
+.carousel-inner {
+ display: flex; gap: 10px; overflow-x: auto;
+ overflow-y: visible;
+ padding-top: 15px;
+ padding-bottom: 15px;
+ margin-top: -15px;
+ margin-bottom: -15px;
+ scrollbar-width: none;
+}
+.carousel-inner::-webkit-scrollbar { display: none; }
+.movie-card-browse {
+ flex: 0 0 auto; width: 220px; border-radius: 5px; overflow: visible;
+ cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease;
+ position: relative; background-color: #222;
+}
+.movie-card-browse:hover {
+ transform: scale(1.1);
+ z-index: 20;
+ box-shadow: 0 8px 24px rgba(0,0,0,0.7);
+}
+.movie-card-browse img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 5px; }
+.my-list-btn-card {
+ position: absolute; top: 10px; right: 10px; background-color: rgba(0,0,0,0.7);
+ color: white; border: 2px solid white; border-radius: 50%; width: 34px; height: 34px;
+ font-size: 1rem; cursor: pointer; display: none; align-items: center; justify-content: center;
+ transition: background-color 0.2s;
+}
+.movie-card-browse:hover .my-list-btn-card { display: flex; }
+.my-list-btn-card:hover { background-color: rgba(255,255,255,0.2); }
+
+/* === 4. SEARCH & MY LIST PAGE STYLES === */
+.search-container { padding: 20px 5%; }
+#search-input {
+ width: 100%; padding: 15px 20px; font-size: 1.2rem;
+ background-color: #333; border: none; border-radius: 5px; color: white; outline: none;
+}
+.search-results-grid {
+ display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
+ gap: 35px;
+ padding: 20px 5%;
+}
+.search-results-grid h2, .my-list-page-header {
+ grid-column: 1 / -1; font-size: 1.8rem; margin-bottom: 10px;
+}
+.my-list-page-header {
+ padding: 40px 5% 0;
+ font-size: 2.5rem;
}