Trending Now
-
- {% for movie in trending_movies %}
-
-
+
+
-
-
Top Rated
-
- {% for movie in top_rated_movies %}
-
-
+
+ {% if featured_movie %}
+
+
+ {% endif %}
-
+
+
+
+
-{% endblock %}
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/static/css/custom.css b/static/css/custom.css
index 2ed0fd7..98b8b5b 100644
--- a/static/css/custom.css
+++ b/static/css/custom.css
@@ -1,3 +1,4 @@
+@import url('https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css');
body {
background-color: #141414;
@@ -10,20 +11,49 @@ h1, h2, h3, h4, h5, h6 {
color: #fff;
}
+.page-wrapper {
+ background-color: #141414;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+}
+
+/* --- Navigation --- */
+.navbar {
+ background-color: rgba(20, 20, 20, 0.8);
+ backdrop-filter: blur(10px);
+ transition: background-color 0.3s ease;
+}
+
+.navbar.scrolled {
+ background-color: #141414;
+}
+
.navbar-brand {
font-family: 'Bebas Neue', sans-serif;
color: #E50914 !important;
font-size: 2.5rem;
+ letter-spacing: 1px;
}
+.nav-link {
+ color: #a9a9a9 !important;
+ font-weight: 500;
+ transition: color 0.2s ease;
+}
+
+.nav-link:hover, .nav-link.active {
+ color: #fff !important;
+}
+
+/* --- Hero Section --- */
.hero-section {
position: relative;
- height: 80vh;
+ height: 90vh;
background-size: cover;
- background-position: center;
+ background-position: center top;
display: flex;
- align-items: flex-end;
- padding: 40px;
+ align-items: center;
}
.hero-section::after {
@@ -33,31 +63,41 @@ h1, h2, h3, h4, h5, h6 {
left: 0;
right: 0;
bottom: 0;
- background: linear-gradient(to top, rgba(20, 20, 20, 1) 10%, rgba(20, 20, 20, 0) 50%);
+ background: linear-gradient(to top, #141414 15%, rgba(20, 20, 20, 0) 50%), linear-gradient(to right, rgba(20, 20, 20, 0.5) 0%, rgba(20, 20, 20, 0) 30%);
+}
+
+.hero-content-wrapper {
+ position: relative;
+ z-index: 1;
+ padding: 0 5%;
}
.hero-content {
- position: relative;
- z-index: 1;
- max-width: 50%;
+ max-width: 550px;
}
.hero-title {
font-size: 5rem;
font-weight: bold;
- margin-bottom: 1rem;
+ text-shadow: 2px 2px 8px rgba(0,0,0,0.7);
}
.hero-description {
font-size: 1.2rem;
- margin-bottom: 1.5rem;
- max-width: 700px;
+ line-height: 1.5;
+ margin: 1rem 0 2rem;
+ text-shadow: 1px 1px 4px rgba(0,0,0,0.7);
}
.hero-buttons .btn {
- margin-right: 10px;
+ margin-right: 1rem;
font-weight: bold;
- padding: 10px 30px;
+ padding: 0.75rem 2rem;
+ border-radius: 5px;
+ font-size: 1.1rem;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
}
.btn-play {
@@ -65,7 +105,6 @@ h1, h2, h3, h4, h5, h6 {
color: #000;
border: none;
}
-
.btn-play:hover {
background-color: rgba(255, 255, 255, 0.8);
}
@@ -75,24 +114,33 @@ h1, h2, h3, h4, h5, h6 {
color: #fff;
border: none;
}
-
.btn-more-info:hover {
background-color: rgba(109, 109, 110, 0.5);
}
-.movie-carousel-section {
- padding: 20px 40px;
+/* --- Movie Carousels --- */
+.movie-sections {
+ margin-top: -10vh; /* Pulls the carousels up into the hero gradient */
+ position: relative;
+ z-index: 2;
}
-.movie-carousel-section h2 {
- font-size: 2rem;
+.section-title {
+ font-size: 1.8rem;
+ font-weight: 500;
margin-bottom: 1rem;
+ padding: 0 5%;
+}
+
+.movie-carousel-wrapper {
+ position: relative;
}
.movie-carousel {
display: flex;
- overflow-x: auto;
- padding-bottom: 20px;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ padding: 0 5% 20px;
scrollbar-width: none; /* Firefox */
}
@@ -102,13 +150,38 @@ h1, h2, h3, h4, h5, h6 {
.movie-card {
flex: 0 0 auto;
- width: 220px;
- margin-right: 15px;
- background-color: #181818;
+ width: 16vw; /* Responsive width */
+ max-width: 280px;
+ min-width: 180px;
+ margin-right: 10px;
border-radius: 5px;
overflow: hidden;
+ position: relative;
transition: transform 0.3s ease, box-shadow 0.3s ease;
cursor: pointer;
+ background-color: #181818;
+}
+
+.movie-card img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ display: block;
+}
+
+.movie-card-overlay {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0) 100%);
+ padding: 2rem 1rem 1rem;
+ opacity: 0;
+ transition: opacity 0.3s ease;
+}
+
+.movie-card:hover .movie-card-overlay {
+ opacity: 1;
}
.movie-card:hover {
@@ -116,8 +189,35 @@ h1, h2, h3, h4, h5, h6 {
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.5);
}
-.movie-card img {
- width: 100%;
- height: 330px;
- object-fit: cover;
+.movie-card-title {
+ font-family: 'Roboto', sans-serif;
+ font-size: 1rem;
+ font-weight: bold;
+ margin-bottom: 0.5rem;
}
+
+.movie-card-actions {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.btn-play-icon {
+ color: #fff;
+ font-size: 2rem;
+}
+.btn-play-icon:hover {
+ color: #E50914;
+}
+
+.movie-rating {
+ font-size: 0.8rem;
+ color: #a9a9a9;
+}
+
+/* --- Footer --- */
+.main-footer {
+ background-color: #181818;
+ color: #a9a9a9;
+ font-size: 0.9rem;
+}
\ No newline at end of file
+
-
-
+
+
- {% endfor %}
{{ featured_movie.title }}
+{{ featured_movie.description|truncatewords:30 }}
+Trending Now
+
+
+
+ {% for movie in trending_movies %}
+
+
+
+
+
+ {% endfor %}
+ Top Rated
+
+
+
+ {% for movie in top_rated_movies %}
+
+
+
+
+
+ {% endfor %}
+