-
{title}
+
{title}
@@ -167,6 +167,7 @@ const VideoCard: React.FC<{
src={thumbnailUrl}
alt={title}
className="thumbnail-img"
+ style={{ objectFit: 'cover' }}
loading="lazy"
onError={(e) => {
const img = e.target as HTMLImageElement;
diff --git a/src/pages/broadcasts/video.css b/src/pages/broadcasts/video.css
index 78209cb8..17d05db6 100644
--- a/src/pages/broadcasts/video.css
+++ b/src/pages/broadcasts/video.css
@@ -1,14 +1,55 @@
.video-container {
max-width: 1400px;
margin: 0 auto;
- padding: 2rem 5rem;
+ padding: 4rem 2rem;
background: transparent;
+ position: relative;
+}
+
+.video-container::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: radial-gradient(circle at 20% 30%, rgba(99, 102, 241, 0.05) 0%, transparent 40%),
+ radial-gradient(circle at 80% 70%, rgba(168, 85, 247, 0.04) 0%, transparent 45%);
+ pointer-events: none;
+ z-index: -1;
+}
+
+[data-theme='dark'] .video-container::before {
+ background: radial-gradient(circle at 20% 30%, rgba(99, 102, 241, 0.08) 0%, transparent 40%),
+ radial-gradient(circle at 80% 70%, rgba(168, 85, 247, 0.06) 0%, transparent 45%);
+}
+
+/* Header and title styling */
+.video-container h1 {
+ text-align: center;
+ font-size: 3.5rem;
+ font-weight: 700;
+ margin-bottom: 1rem;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ color: transparent;
+ position: relative;
+}
+
+[data-theme='dark'] .video-container h1 {
+ background: linear-gradient(135deg, #60a5fa 0%, #a78bfa 100%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ color: transparent;
}
.video-subtitle {
color: var(--ifm-color-emphasis-600);
- font-size: 1.25rem;
- margin: 1rem auto 3rem;
+ font-size: 1.35rem;
+ margin: 1rem auto 4rem;
text-align: center;
max-width: 800px;
line-height: 1.6;
@@ -20,64 +61,111 @@
}
.video-section {
- margin-bottom: 4rem;
+ margin-bottom: 5rem;
position: relative;
}
.video-section h2 {
- font-size: 1.8rem;
- margin-bottom: 2rem;
+ font-size: 2.2rem;
+ margin-bottom: 2.5rem;
color: var(--ifm-color-primary);
- padding-bottom: 0.75rem;
+ padding-bottom: 1rem;
position: relative;
- font-weight: 600;
+ font-weight: 700;
+ text-align: center;
+ background: linear-gradient(135deg, var(--ifm-color-primary) 0%, var(--ifm-color-primary-light) 100%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ color: transparent;
}
.video-section h2::after {
content: '';
position: absolute;
bottom: 0;
- left: 0;
- width: 60px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 80px;
height: 4px;
- background: var(--ifm-color-primary);
+ background: linear-gradient(135deg, var(--ifm-color-primary) 0%, var(--ifm-color-primary-light) 100%);
border-radius: 2px;
}
.video-grid {
display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: 2rem;
- margin-top: 1rem;
+ grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
+ gap: 2.5rem;
+ margin-top: 2rem;
+ padding: 0 1rem;
}
.video-card {
- background: #ffffff;
- border-radius: 20px;
+ background: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
+ border-radius: 24px;
overflow: hidden;
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
+ box-shadow:
+ 0 4px 20px rgba(0, 0, 0, 0.08),
+ 0 1px 3px rgba(0, 0, 0, 0.1);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
height: 100%;
cursor: pointer;
padding: 1.5rem;
- border: 1px solid #e9ecef;
+ border: 1px solid rgba(226, 232, 240, 0.8);
position: relative;
isolation: isolate;
+ backdrop-filter: blur(10px);
+}
+
+.video-card::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: linear-gradient(135deg,
+ rgba(99, 102, 241, 0.02) 0%,
+ rgba(168, 85, 247, 0.02) 50%,
+ rgba(59, 130, 246, 0.02) 100%);
+ border-radius: 24px;
+ z-index: -1;
+ opacity: 0;
+ transition: opacity 0.3s ease;
+}
+
+.video-card:hover::before {
+ opacity: 1;
}
[data-theme='dark'] .video-card {
- background: var(--dark-card-bg);
+ background: linear-gradient(145deg, var(--dark-card-bg) 0%, #0c1117 100%);
border-color: var(--dark-border);
- box-shadow: var(--dark-shadow);
+ box-shadow:
+ 0 4px 20px rgba(0, 0, 0, 0.3),
+ 0 1px 3px rgba(0, 0, 0, 0.2);
+}
+
+[data-theme='dark'] .video-card::before {
+ background: linear-gradient(135deg,
+ rgba(99, 102, 241, 0.08) 0%,
+ rgba(168, 85, 247, 0.06) 50%,
+ rgba(59, 130, 246, 0.08) 100%);
}
.video-card:hover {
- transform: translateY(-4px);
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
+ transform: translateY(-8px) scale(1.02);
+ box-shadow:
+ 0 20px 40px rgba(0, 0, 0, 0.15),
+ 0 8px 24px rgba(0, 0, 0, 0.1);
+ border-color: rgba(99, 102, 241, 0.3);
}
[data-theme='dark'] .video-card:hover {
- box-shadow: var(--dark-shadow-lg);
+ box-shadow:
+ 0 20px 40px rgba(0, 0, 0, 0.4),
+ 0 8px 24px rgba(0, 0, 0, 0.3);
+ border-color: rgba(99, 102, 241, 0.5);
}
.video-content {
@@ -87,101 +175,125 @@
}
.video-info {
- padding: 1.25rem;
- background: #ffffff;
- border-radius: 16px;
- margin-bottom: 1rem;
- border: 1px solid #e9ecef;
+ padding: 1.5rem;
+ background: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
+ border-radius: 20px;
+ margin-bottom: 1.5rem;
+ border: 1px solid rgba(226, 232, 240, 0.6);
+ backdrop-filter: blur(10px);
+ position: relative;
+}
+
+.video-info::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: linear-gradient(135deg,
+ rgba(99, 102, 241, 0.03) 0%,
+ rgba(168, 85, 247, 0.02) 100%);
+ border-radius: 20px;
+ z-index: -1;
}
[data-theme='dark'] .video-info {
- background: var(--dark-bg-secondary);
+ background: linear-gradient(145deg, var(--dark-bg-secondary) 0%, #0f1419 100%);
border-color: var(--dark-border);
}
+[data-theme='dark'] .video-info::before {
+ background: linear-gradient(135deg,
+ rgba(99, 102, 241, 0.06) 0%,
+ rgba(168, 85, 247, 0.04) 100%);
+}
+
.video-title {
- margin: 0 0 0.75rem 0;
- font-size: 1.15rem;
- color: var(--ifm-heading-color);
+ margin: 0 0 1rem 0;
+ font-size: 1.25rem;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
line-height: 1.5;
- font-weight: 600;
- letter-spacing: -0.01em;
+ font-weight: 700;
+ letter-spacing: -0.02em;
+ background: linear-gradient(135deg, #333 0%, #666 100%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
}
[data-theme='dark'] .video-title {
- color: var(--dark-text-primary);
+ background: linear-gradient(135deg, #fff 0%, #cbd5e1 100%);
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
}
.video-type {
- font-size: 0.9rem;
- color: #6c757d; /* Neutral gray color */
+ font-size: 0.95rem;
+ color: #6c757d;
display: flex;
align-items: center;
gap: 0.5rem;
- margin-top: 0.5rem;
+ margin-top: 0.75rem;
}
[data-theme='dark'] .video-type {
color: var(--dark-text-secondary);
}
-/* Force the video type tags to use neutral colors */
-.video-card .video-type span,
-.video-card .video-type {
- background: #f8f9fa !important;
- color: #495057 !important;
-}
-
-[data-theme='dark'] .video-card .video-type span,
-[data-theme='dark'] .video-card .video-type {
- background: var(--dark-bg-tertiary) !important;
- color: var(--dark-text-secondary) !important;
-}
-
.video-type span {
display: inline-flex;
align-items: center;
- padding: 0.35rem 0.75rem;
- background: #f8f9fa !important; /* Force light gray background */
- border-radius: 100px;
- font-weight: 500;
- color: #495057 !important; /* Force darker gray for text */
- border: 1px solid #e9ecef !important; /* Force subtle border */
+ padding: 0.4rem 1rem;
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
+ border-radius: 50px;
+ font-weight: 600;
+ color: #475569;
+ border: 1px solid rgba(226, 232, 240, 0.8);
+ font-size: 0.85rem;
+ transition: all 0.3s ease;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
-[data-theme='dark'] .video-type span {
- background: var(--dark-bg-tertiary) !important;
- color: var(--dark-text-secondary) !important;
- border-color: var(--dark-border) !important;
+.video-type span:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
-/* Ensure the emoji and text inside the span are also not green */
-.video-type span *,
-.video-type span {
- color: #495057 !important;
+[data-theme='dark'] .video-type span {
+ background: linear-gradient(135deg, var(--dark-bg-tertiary) 0%, #1e293b 100%);
+ color: var(--dark-text-secondary);
+ border-color: var(--dark-border);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
-[data-theme='dark'] .video-type span *,
-[data-theme='dark'] .video-type span {
- color: var(--dark-text-secondary) !important;
+[data-theme='dark'] .video-type span:hover {
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}
+/* Fixed thumbnail styling - removed black gap issue */
.video-thumbnail {
position: relative;
- width: 600px; /* Set desired width */
- height: 380px; /* Set desired height */
- padding-top: 0;
+ width: 100%;
+ height: 220px;
overflow: hidden;
- background: var(--ifm-color-emphasis-200);
flex-grow: 1;
- border-radius: 12px;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- background-image: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%);
+ border-radius: 16px;
+ transition: all 0.3s ease;
+ /* Removed background that was causing black gap */
+}
+
+[data-theme='dark'] .video-thumbnail {
+ /* Removed background gradient that was causing black gap in dark theme */
+}
+
+.video-card:hover .video-thumbnail {
+ transform: scale(1.02);
}
.thumbnail-container {
@@ -191,25 +303,31 @@
width: 100%;
height: 100%;
display: flex;
- align-items: center;
- justify-content: center;
- background: var(--ifm-color-emphasis-100);
- border-radius: 12px;
+ align-items: stretch;
+ justify-content: stretch;
+ border-radius: 16px;
overflow: hidden;
transition: all 0.3s ease;
+ background: #f8fafc;
+}
+
+[data-theme='dark'] .thumbnail-container {
+ background: #1e293b;
}
.thumbnail-img {
- width: 0%;
+ width: 100%;
height: 100%;
object-fit: cover;
- transition: transform 0.3s ease;
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
background: transparent;
position: relative;
z-index: 1;
+ border-radius: 16px;
+ /* Ensure image covers the entire container without gaps */
+ display: block;
}
-/* Fallback for when image fails to load */
.thumbnail-img[src=""] {
opacity: 0;
}
@@ -222,28 +340,44 @@
width: 100%;
height: 100%;
color: var(--ifm-color-emphasis-600);
- font-size: 0.9rem;
- background: linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%);
- padding: 1rem;
+ font-size: 1rem;
+ background: linear-gradient(145deg, #f8fafc 0%, #e2e8f0 100%);
+ padding: 2rem;
text-align: center;
+ border-radius: 16px;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+[data-theme='dark'] .thumbnail-placeholder {
+ color: var(--dark-text-secondary);
+ background: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);
}
.thumbnail-placeholder::before {
content: '🎥';
- font-size: 2rem;
- margin-bottom: 0.5rem;
+ font-size: 3rem;
+ margin-bottom: 1rem;
opacity: 0.7;
+ display: block;
+ animation: pulse 2s infinite;
+}
+
+@keyframes pulse {
+ 0%, 100% { opacity: 0.7; transform: scale(1); }
+ 50% { opacity: 1; transform: scale(1.1); }
}
.thumbnail-placeholder span {
max-width: 80%;
word-break: break-word;
+ font-weight: 500;
+ letter-spacing: 0.01em;
}
-/* Play button styles removed as per request */
-
-.video-card:hover .thumbnail-img {
- transform: scale(5.02);
+.video-container .video-card:hover .thumbnail-container .thumbnail-img {
+ transform: scale(1.05);
}
.video-embed-large {
@@ -265,49 +399,105 @@
.video-tabs {
display: flex;
justify-content: center;
- gap: 1rem;
- margin-bottom: 2rem;
+ gap: 1.5rem;
+ margin-bottom: 3rem;
+ padding: 0.5rem;
+ background: linear-gradient(145deg, rgba(255, 255, 255, 0.8) 0%, rgba(248, 250, 252, 0.8) 100%);
+ border-radius: 20px;
+ backdrop-filter: blur(10px);
+ border: 1px solid rgba(226, 232, 240, 0.6);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
+ max-width: 400px;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 3rem;
+}
+
+[data-theme='dark'] .video-tabs {
+ background: linear-gradient(145deg, rgba(17, 24, 39, 0.8) 0%, rgba(15, 23, 42, 0.8) 100%);
+ border-color: var(--dark-border);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.tab-button {
- padding: 0.875rem 2rem;
+ padding: 1rem 2rem;
font-size: 1rem;
- border: 1px solid var(--ifm-color-emphasis-300);
- background: var(--ifm-background-surface-color);
+ border: none;
+ background: transparent;
color: var(--ifm-color-emphasis-700);
- border-radius: 100px;
+ border-radius: 16px;
cursor: pointer;
- transition: all 0.3s ease;
- font-weight: 500;
- margin: 0 0.5rem;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+ font-weight: 600;
+ position: relative;
+ overflow: hidden;
+ min-width: 140px;
+}
+
+.tab-button::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(168, 85, 247, 0.1) 100%);
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ border-radius: 16px;
}
[data-theme='dark'] .tab-button {
- background: var(--dark-bg-secondary);
color: var(--dark-text-primary);
- border-color: var(--dark-border);
- box-shadow: var(--dark-shadow);
+}
+
+.tab-button:hover::before {
+ opacity: 1;
}
.tab-button:hover {
- background: var(--ifm-color-primary-lighter);
- color: var(--ifm-color-white);
+ transform: translateY(-2px);
+ color: var(--ifm-color-primary);
}
[data-theme='dark'] .tab-button:hover {
- background: var(--dark-card-hover-bg);
+ color: #60a5fa;
}
.tab-button.active {
- background: var(--ifm-color-primary);
- color: var(--ifm-color-white);
+ background: linear-gradient(135deg, var(--ifm-color-primary) 0%, var(--ifm-color-primary-light) 100%);
+ color: white;
+ transform: translateY(-2px);
+ box-shadow:
+ 0 4px 12px rgba(46, 133, 85, 0.3),
+ 0 2px 4px rgba(46, 133, 85, 0.2);
+}
+
+[data-theme='dark'] .tab-button.active {
+ background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%);
+ box-shadow:
+ 0 4px 12px rgba(59, 130, 246, 0.3),
+ 0 2px 4px rgba(59, 130, 246, 0.2);
+}
+
+.tab-button.active::before {
+ opacity: 0;
}
@media (max-width: 968px) {
.video-grid {
grid-template-columns: repeat(2, 1fr);
}
+
+ .video-tabs {
+ flex-direction: column;
+ gap: 0.5rem;
+ max-width: 300px;
+ }
+
+ .tab-button {
+ min-width: 100%;
+ }
}
@media (max-width: 768px) {
@@ -316,10 +506,126 @@
}
.video-container {
- padding: 1rem;
+ padding: 2rem 1rem;
+ }
+
+ .video-container h1 {
+ font-size: 2.5rem;
}
.video-section h2 {
- font-size: 1.5rem;
+ font-size: 1.8rem;
+ }
+
+ .video-tabs {
+ max-width: 250px;
+ }
+
+ .pagination {
+ flex-direction: column;
+ gap: 0.5rem;
}
+
+ .pagination button,
+ .pagination span {
+ min-width: 200px;
+ }
+}
+
+/* Enhanced pagination */
+.pagination {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 1rem;
+ margin-top: 3rem;
+ padding: 2rem;
+}
+
+.pagination button {
+ padding: 0.75rem 1.5rem;
+ margin: 0;
+ background: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
+ color: var(--ifm-color-emphasis-700);
+ border: 1px solid rgba(226, 232, 240, 0.8);
+ border-radius: 12px;
+ cursor: pointer;
+ font-weight: 600;
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+ min-width: 120px;
+ position: relative;
+ overflow: hidden;
}
+
+.pagination button::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(168, 85, 247, 0.1) 100%);
+ opacity: 0;
+ transition: opacity 0.3s ease;
+}
+
+.pagination button:hover::before {
+ opacity: 1;
+}
+
+.pagination button:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
+ border-color: var(--ifm-color-primary);
+ color: var(--ifm-color-primary);
+}
+
+.pagination button:disabled {
+ background: linear-gradient(145deg, #f1f5f9 0%, #e2e8f0 100%);
+ color: var(--ifm-color-emphasis-400);
+ cursor: not-allowed;
+ transform: none;
+ box-shadow: none;
+ border-color: rgba(226, 232, 240, 0.5);
+}
+
+.pagination button:disabled::before {
+ opacity: 0;
+}
+
+.pagination span {
+ font-weight: 600;
+ color: var(--ifm-color-emphasis-700);
+ padding: 0.75rem 1rem;
+ background: linear-gradient(145deg, rgba(99, 102, 241, 0.1) 0%, rgba(168, 85, 247, 0.1) 100%);
+ border-radius: 12px;
+ border: 1px solid rgba(99, 102, 241, 0.2);
+ min-width: 120px;
+ text-align: center;
+}
+
+[data-theme='dark'] .pagination button {
+ background: linear-gradient(145deg, var(--dark-bg-secondary) 0%, #0f172a 100%);
+ color: var(--dark-text-primary);
+ border-color: var(--dark-border);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+}
+
+[data-theme='dark'] .pagination button:hover {
+ border-color: #3b82f6;
+ color: #60a5fa;
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
+}
+
+[data-theme='dark'] .pagination button:disabled {
+ background: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);
+ color: var(--dark-text-muted);
+ border-color: var(--dark-border);
+}
+
+[data-theme='dark'] .pagination span {
+ color: var(--dark-text-primary);
+ background: linear-gradient(145deg, rgba(59, 130, 246, 0.1) 0%, rgba(168, 85, 247, 0.1) 100%);
+ border-color: rgba(59, 130, 246, 0.3);
+}
\ No newline at end of file