lolakd's picture
Создай полноценный frontend для проекта **LobsterTube** — полной копии YouTube, с современным дизайном, максимально приближённым к оригиналу YouTube (2025 года).
9f82044 verified
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96%;
--secondary-foreground: 222.2 84% 4.9%;
--muted: 210 40% 96%;
--muted-foreground: 215.4 16.3% 46.9%;
--accent: 210 40% 96%;
--accent-foreground: 222.2 84% 4.9%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
--radius: 0.5rem;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--accent: 217.2 32.6% 17.5%;
--accent-foreground: 210 40% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
}
}
/* YouTube-specific styles */
.youtube-container {
@apply w-full h-screen bg-youtube-light dark:bg-youtube-dark;
}
.youtube-sidebar {
@apply w-64 bg-youtube-light dark:bg-youtube-dark border-r border-gray-200 dark:border-gray-800;
}
.youtube-content {
@apply flex-1 overflow-hidden;
}
.video-grid {
@apply grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 gap-4 p-6;
}
.video-card {
@apply cursor-pointer group;
}
.video-thumbnail {
@apply w-full aspect-video object-cover rounded-lg group-hover:rounded-none transition-all duration-200;
}
.video-info {
@apply flex space-x-3 mt-3;
}
.channel-avatar {
@apply w-9 h-9 rounded-full flex-shrink-0;
}
.video-title {
@apply text-sm font-medium text-youtube-text-primary dark:text-white line-clamp-2 leading-5;
}
.video-meta {
@apply text-sm text-youtube-text-secondary dark:text-gray-400 hover:text-youtube-text-primary dark:hover:text-white cursor-pointer;
}
/* Scrollbar styles */
.custom-scrollbar::-webkit-scrollbar {
width: 8px;
}
.custom-scrollbar::-webkit-scrollbar-track {
@apply bg-gray-100 dark:bg-gray-800;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
@apply bg-gray-300 dark:bg-gray-600 rounded;
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
@apply bg-gray-400 dark:bg-gray-500;
}
/* Animation classes */
.slide-up {
animation: slideUp 0.3s ease-out;
}
@keyframes slideUp {
from {
transform: translateY(100%);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
.fade-in {
animation: fadeIn 0.5s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Skeleton loading */
.skeleton {
@apply animate-pulse bg-gray-300 dark:bg-gray-700 rounded;
}
.skeleton-text {
@apply skeleton h-4 w-3/4 mb-2;
}
.skeleton-avatar {
@apply skeleton w-10 h-10 rounded-full;
}
.skeleton-thumbnail {
@apply skeleton w-full aspect-video rounded-lg;
}
/* Search highlight */
.search-highlight {
@apply bg-yellow-200 dark:bg-yellow-800 px-1 rounded;
}
/* Hide scrollbar for Chrome, Safari and Opera */
.hide-scrollbar::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
.hide-scrollbar {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}