| |
|
|
| |
| :root { |
| --primary: #0056D2; |
| --primary-dark: #0044A8; |
| --primary-light: #E8F0FE; |
| --secondary: #1F1F1F; |
| --accent: #E53935; |
| --success: #2E7D32; |
| --warning: #F9A825; |
| --gray-50: #FAFAFA; |
| --gray-100: #F5F5F5; |
| --gray-200: #EEEEEE; |
| --gray-300: #E0E0E0; |
| --gray-400: #BDBDBD; |
| --gray-500: #9E9E9E; |
| --gray-600: #757575; |
| --gray-700: #616161; |
| --gray-800: #424242; |
| --gray-900: #1F1F1F; |
| --white: #FFFFFF; |
| --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); |
| --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1); |
| --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); |
| --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); |
| --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); |
| --radius: 8px; |
| --radius-lg: 12px; |
| --radius-xl: 16px; |
| } |
|
|
| |
| * { |
| box-sizing: border-box; |
| margin: 0; |
| padding: 0; |
| } |
|
|
| body { |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; |
| background-color: var(--gray-50); |
| color: var(--gray-900); |
| line-height: 1.6; |
| } |
|
|
| |
| .gradio-container { |
| max-width: 1400px !important; |
| margin: 0 auto; |
| padding: 0 !important; |
| background: var(--gray-50) !important; |
| } |
|
|
| |
| .hero-section { |
| background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); |
| color: var(--white); |
| padding: 48px 32px; |
| margin-bottom: 32px; |
| border-radius: 0; |
| } |
|
|
| .hero-title { |
| font-size: 2.5rem; |
| font-weight: 700; |
| margin-bottom: 16px; |
| line-height: 1.2; |
| } |
|
|
| .hero-subtitle { |
| font-size: 1.25rem; |
| opacity: 0.95; |
| margin-bottom: 24px; |
| max-width: 700px; |
| } |
|
|
| |
| .stats-container { |
| display: flex; |
| gap: 16px; |
| flex-wrap: wrap; |
| margin-top: 32px; |
| } |
|
|
| .stat-card { |
| background: rgba(255, 255, 255, 0.15); |
| backdrop-filter: blur(10px); |
| border-radius: var(--radius-lg); |
| padding: 20px 24px; |
| text-align: center; |
| min-width: 120px; |
| border: 1px solid rgba(255, 255, 255, 0.2); |
| } |
|
|
| .stat-number { |
| font-size: 2rem; |
| font-weight: 700; |
| margin-bottom: 4px; |
| } |
|
|
| .stat-label { |
| font-size: 0.875rem; |
| opacity: 0.9; |
| } |
|
|
| |
| .course-card { |
| background: var(--white); |
| border-radius: var(--radius-lg); |
| box-shadow: var(--shadow); |
| overflow: hidden; |
| transition: all 0.3s ease; |
| border: 1px solid var(--gray-200); |
| } |
|
|
| .course-card:hover { |
| box-shadow: var(--shadow-lg); |
| transform: translateY(-4px); |
| } |
|
|
| .course-card-header { |
| padding: 24px; |
| border-bottom: 1px solid var(--gray-200); |
| } |
|
|
| .course-card-body { |
| padding: 24px; |
| } |
|
|
| .course-card-footer { |
| padding: 16px 24px; |
| background: var(--gray-50); |
| border-top: 1px solid var(--gray-200); |
| } |
|
|
| |
| .module-card { |
| background: var(--white); |
| border-radius: var(--radius-lg); |
| box-shadow: var(--shadow); |
| margin-bottom: 16px; |
| overflow: hidden; |
| border: 1px solid var(--gray-200); |
| transition: all 0.3s ease; |
| } |
|
|
| .module-card:hover { |
| box-shadow: var(--shadow-md); |
| border-color: var(--primary); |
| } |
|
|
| .module-header { |
| padding: 20px 24px; |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| cursor: pointer; |
| background: var(--white); |
| } |
|
|
| .module-header:hover { |
| background: var(--gray-50); |
| } |
|
|
| .module-number { |
| width: 40px; |
| height: 40px; |
| background: var(--primary); |
| color: var(--white); |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-weight: 700; |
| font-size: 1.125rem; |
| flex-shrink: 0; |
| } |
|
|
| .module-info { |
| flex: 1; |
| margin-left: 16px; |
| } |
|
|
| .module-title { |
| font-size: 1.125rem; |
| font-weight: 600; |
| color: var(--gray-900); |
| margin-bottom: 4px; |
| } |
|
|
| .module-meta { |
| font-size: 0.875rem; |
| color: var(--gray-600); |
| } |
|
|
| .module-progress { |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| } |
|
|
| .progress-circle { |
| width: 48px; |
| height: 48px; |
| position: relative; |
| } |
|
|
| .progress-bar-container { |
| width: 100px; |
| height: 6px; |
| background: var(--gray-200); |
| border-radius: 3px; |
| overflow: hidden; |
| } |
|
|
| .progress-bar-fill { |
| height: 100%; |
| background: linear-gradient(90deg, var(--primary) 0%, var(--primary-dark) 100%); |
| border-radius: 3px; |
| transition: width 0.5s ease; |
| } |
|
|
| |
| .lesson-item { |
| padding: 16px 24px; |
| border-bottom: 1px solid var(--gray-100); |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| transition: background 0.2s ease; |
| } |
|
|
| .lesson-item:hover { |
| background: var(--gray-50); |
| } |
|
|
| .lesson-item:last-child { |
| border-bottom: none; |
| } |
|
|
| .lesson-info { |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| flex: 1; |
| } |
|
|
| .lesson-icon { |
| width: 36px; |
| height: 36px; |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 1rem; |
| } |
|
|
| .lesson-icon.video { |
| background: #E3F2FD; |
| color: #1565C0; |
| } |
|
|
| .lesson-icon.reading { |
| background: #E8F5E9; |
| color: #2E7D32; |
| } |
|
|
| .lesson-icon.quiz { |
| background: #FFF3E0; |
| color: #EF6C00; |
| } |
|
|
| .lesson-icon.assignment { |
| background: #FCE4EC; |
| color: #C2185B; |
| } |
|
|
| .lesson-status { |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| } |
|
|
| .status-badge { |
| padding: 4px 12px; |
| border-radius: 16px; |
| font-size: 0.75rem; |
| font-weight: 600; |
| } |
|
|
| .status-badge.completed { |
| background: #E8F5E9; |
| color: #2E7D32; |
| } |
|
|
| .status-badge.in-progress { |
| background: #FFF3E0; |
| color: #EF6C00; |
| } |
|
|
| .status-badge.not-started { |
| background: var(--gray-100); |
| color: var(--gray-600); |
| } |
|
|
| |
| .quiz-container { |
| background: var(--white); |
| border-radius: var(--radius-lg); |
| box-shadow: var(--shadow); |
| padding: 32px; |
| margin: 24px 0; |
| } |
|
|
| .quiz-question { |
| font-size: 1.125rem; |
| font-weight: 600; |
| color: var(--gray-900); |
| margin-bottom: 24px; |
| padding-bottom: 16px; |
| border-bottom: 2px solid var(--gray-200); |
| } |
|
|
| .quiz-option { |
| display: flex; |
| align-items: center; |
| padding: 16px 20px; |
| border: 2px solid var(--gray-200); |
| border-radius: var(--radius); |
| margin-bottom: 12px; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| } |
|
|
| .quiz-option:hover { |
| border-color: var(--primary); |
| background: var(--primary-light); |
| } |
|
|
| .quiz-option.selected { |
| border-color: var(--primary); |
| background: var(--primary-light); |
| } |
|
|
| .quiz-option.correct { |
| border-color: var(--success); |
| background: #E8F5E9; |
| } |
|
|
| .quiz-option.incorrect { |
| border-color: var(--accent); |
| background: #FFEBEE; |
| } |
|
|
| |
| .btn-primary { |
| background: var(--primary) !important; |
| color: var(--white) !important; |
| border: none !important; |
| padding: 12px 24px !important; |
| border-radius: var(--radius) !important; |
| font-weight: 600 !important; |
| font-size: 1rem !important; |
| cursor: pointer !important; |
| transition: all 0.2s ease !important; |
| } |
|
|
| .btn-primary:hover { |
| background: var(--primary-dark) !important; |
| transform: translateY(-2px) !important; |
| box-shadow: var(--shadow-md) !important; |
| } |
|
|
| .btn-secondary { |
| background: var(--white) !important; |
| color: var(--primary) !important; |
| border: 2px solid var(--primary) !important; |
| padding: 10px 22px !important; |
| border-radius: var(--radius) !important; |
| font-weight: 600 !important; |
| cursor: pointer !important; |
| transition: all 0.2s ease !important; |
| } |
|
|
| .btn-secondary:hover { |
| background: var(--primary-light) !important; |
| } |
|
|
| |
| .progress-ring { |
| width: 120px; |
| height: 120px; |
| position: relative; |
| } |
|
|
| .progress-ring-circle { |
| transform: rotate(-90deg); |
| } |
|
|
| .progress-ring-bg { |
| fill: none; |
| stroke: var(--gray-200); |
| stroke-width: 8; |
| } |
|
|
| .progress-ring-fill { |
| fill: none; |
| stroke: var(--primary); |
| stroke-width: 8; |
| stroke-linecap: round; |
| transition: stroke-dashoffset 0.5s ease; |
| } |
|
|
| .progress-ring-text { |
| position: absolute; |
| top: 50%; |
| left: 50%; |
| transform: translate(-50%, -50%); |
| text-align: center; |
| } |
|
|
| .progress-ring-number { |
| font-size: 2rem; |
| font-weight: 700; |
| color: var(--gray-900); |
| } |
|
|
| .progress-ring-label { |
| font-size: 0.75rem; |
| color: var(--gray-600); |
| } |
|
|
| |
| .sidebar { |
| background: var(--white); |
| border-radius: var(--radius-lg); |
| box-shadow: var(--shadow); |
| padding: 24px; |
| position: sticky; |
| top: 24px; |
| } |
|
|
| .sidebar-section { |
| margin-bottom: 24px; |
| padding-bottom: 24px; |
| border-bottom: 1px solid var(--gray-200); |
| } |
|
|
| .sidebar-section:last-child { |
| margin-bottom: 0; |
| padding-bottom: 0; |
| border-bottom: none; |
| } |
|
|
| .sidebar-title { |
| font-size: 0.875rem; |
| font-weight: 600; |
| color: var(--gray-600); |
| text-transform: uppercase; |
| letter-spacing: 0.05em; |
| margin-bottom: 16px; |
| } |
|
|
| |
| .instructor-card { |
| display: flex; |
| align-items: center; |
| gap: 16px; |
| padding: 16px; |
| background: var(--gray-50); |
| border-radius: var(--radius); |
| margin-bottom: 12px; |
| } |
|
|
| .instructor-avatar { |
| width: 56px; |
| height: 56px; |
| border-radius: 50%; |
| background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: var(--white); |
| font-weight: 700; |
| font-size: 1.25rem; |
| } |
|
|
| .instructor-name { |
| font-weight: 600; |
| color: var(--gray-900); |
| margin-bottom: 4px; |
| } |
|
|
| .instructor-role { |
| font-size: 0.875rem; |
| color: var(--gray-600); |
| } |
|
|
| |
| .tag { |
| display: inline-block; |
| padding: 4px 12px; |
| border-radius: 16px; |
| font-size: 0.75rem; |
| font-weight: 600; |
| margin-right: 8px; |
| margin-bottom: 8px; |
| } |
|
|
| .tag-beginner { |
| background: #E8F5E9; |
| color: #2E7D32; |
| } |
|
|
| .tag-intermediate { |
| background: #FFF3E0; |
| color: #EF6C00; |
| } |
|
|
| .tag-advanced { |
| background: #FCE4EC; |
| color: #C2185B; |
| } |
|
|
| |
| .accordion { |
| border: 1px solid var(--gray-200); |
| border-radius: var(--radius-lg); |
| overflow: hidden; |
| margin-bottom: 16px; |
| } |
|
|
| .accordion-header { |
| padding: 16px 20px; |
| background: var(--white); |
| cursor: pointer; |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| font-weight: 600; |
| transition: background 0.2s ease; |
| } |
|
|
| .accordion-header:hover { |
| background: var(--gray-50); |
| } |
|
|
| .accordion-content { |
| padding: 0 20px 20px; |
| background: var(--white); |
| } |
|
|
| |
| .rating { |
| display: flex; |
| align-items: center; |
| gap: 4px; |
| } |
|
|
| .rating-star { |
| color: #FFC107; |
| font-size: 1rem; |
| } |
|
|
| .rating-star.empty { |
| color: var(--gray-300); |
| } |
|
|
| .rating-number { |
| font-weight: 600; |
| margin-left: 8px; |
| color: var(--gray-900); |
| } |
|
|
| .rating-count { |
| color: var(--gray-600); |
| font-size: 0.875rem; |
| margin-left: 4px; |
| } |
|
|
| |
| .video-placeholder { |
| background: linear-gradient(135deg, var(--gray-800) 0%, var(--gray-900) 100%); |
| border-radius: var(--radius-lg); |
| aspect-ratio: 16 / 9; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: var(--white); |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .video-play-button { |
| width: 80px; |
| height: 80px; |
| background: rgba(255, 255, 255, 0.2); |
| backdrop-filter: blur(10px); |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 2rem; |
| cursor: pointer; |
| transition: all 0.3s ease; |
| } |
|
|
| .video-play-button:hover { |
| background: rgba(255, 255, 255, 0.3); |
| transform: scale(1.1); |
| } |
|
|
| |
| .certificate-preview { |
| background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); |
| border-radius: var(--radius-lg); |
| padding: 32px; |
| text-align: center; |
| color: var(--gray-900); |
| } |
|
|
| .certificate-title { |
| font-size: 1.5rem; |
| font-weight: 700; |
| margin-bottom: 8px; |
| } |
|
|
| .certificate-subtitle { |
| font-size: 1rem; |
| opacity: 0.9; |
| } |
|
|
| |
| @media (max-width: 768px |
|
|