Spaces:
Sleeping
Sleeping
| /* === MODERN DARK THEME - ENHANCED === */ | |
| :root { | |
| /* Deep Dark Palette */ | |
| --bg-primary: #0a0a0f; | |
| --bg-secondary: #12121a; | |
| --bg-tertiary: #1a1a24; | |
| --surface: #1e1e2e; | |
| --surface-elevated: #252538; | |
| /* Accent Colors */ | |
| --accent-primary: #00e5ff; | |
| --accent-secondary: #7c3aed; | |
| --accent-gradient: linear-gradient(135deg, #00e5ff 0%, #7c3aed 100%); | |
| --accent-glow: 0 0 20px rgba(0, 229, 255, 0.3); | |
| /* Semantic Colors */ | |
| --success: #00f5a0; | |
| --warning: #fbbf24; | |
| --danger: #f87171; | |
| --info: #60a5fa; | |
| /* Text Colors */ | |
| --text-primary: #e4e4e7; | |
| --text-secondary: #a1a1aa; | |
| --text-tertiary: #71717a; | |
| --text-highlight: #fafafa; | |
| /* Border & Shadow */ | |
| --border: rgba(255, 255, 255, 0.08); | |
| --border-hover: rgba(255, 255, 255, 0.15); | |
| --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.4); | |
| --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.5); | |
| --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.6); | |
| --shadow-glow: 0 0 40px rgba(0, 229, 255, 0.15); | |
| /* Typography */ | |
| --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; | |
| --font-mono: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace; | |
| /* Transitions */ | |
| --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1); | |
| --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* === GLOBAL STYLES === */ | |
| * { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| html { | |
| scroll-behavior: smooth; | |
| } | |
| body { | |
| font-family: var(--font-sans); | |
| background: var(--bg-primary); | |
| background-image: | |
| radial-gradient(circle at 20% 30%, rgba(124, 58, 237, 0.05) 0%, transparent 50%), | |
| radial-gradient(circle at 80% 70%, rgba(0, 229, 255, 0.05) 0%, transparent 50%), | |
| radial-gradient(circle at 50% 50%, rgba(0, 229, 255, 0.02) 0%, transparent 100%); | |
| color: var(--text-primary); | |
| font-size: 16px; | |
| line-height: 1.6; | |
| overflow-x: hidden; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| /* === TYPOGRAPHY === */ | |
| h1, | |
| h2, | |
| h3, | |
| h4, | |
| h5, | |
| h6 { | |
| font-weight: 700; | |
| letter-spacing: -0.03em; | |
| line-height: 1.2; | |
| color: var(--text-highlight); | |
| } | |
| h1 { | |
| font-size: clamp(2rem, 4vw, 3rem); | |
| background: var(--accent-gradient); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| h2 { | |
| font-size: clamp(1.75rem, 3vw, 2.25rem); | |
| margin-bottom: 1.5rem; | |
| position: relative; | |
| } | |
| h2::after { | |
| content: ''; | |
| position: absolute; | |
| left: 0; | |
| bottom: -8px; | |
| width: 60px; | |
| height: 3px; | |
| background: var(--accent-gradient); | |
| border-radius: 2px; | |
| } | |
| h3 { | |
| font-size: clamp(1.25rem, 2.5vw, 1.5rem); | |
| color: var(--accent-primary); | |
| margin-bottom: 1rem; | |
| } | |
| h4 { | |
| font-size: 1.125rem; | |
| color: var(--text-highlight); | |
| margin-bottom: 0.75rem; | |
| } | |
| p { | |
| margin-bottom: 1rem; | |
| color: var(--text-secondary); | |
| line-height: 1.7; | |
| } | |
| strong, | |
| b { | |
| color: var(--text-highlight); | |
| font-weight: 600; | |
| } | |
| em, | |
| i { | |
| color: var(--accent-primary); | |
| font-style: italic; | |
| } | |
| code { | |
| font-family: var(--font-mono); | |
| background: var(--surface); | |
| padding: 0.2em 0.4em; | |
| border-radius: 4px; | |
| font-size: 0.875em; | |
| color: var(--accent-primary); | |
| border: 1px solid var(--border); | |
| } | |
| /* === MARKDOWN CONTENT === */ | |
| .markdown-content { | |
| line-height: 1.8; | |
| } | |
| .markdown-content h1, | |
| .markdown-content h2, | |
| .markdown-content h3 { | |
| margin-top: 2rem; | |
| margin-bottom: 1rem; | |
| } | |
| .markdown-content ul, | |
| .markdown-content ol { | |
| margin-left: 1.5rem; | |
| margin-bottom: 1rem; | |
| } | |
| .markdown-content li { | |
| margin-bottom: 0.5rem; | |
| color: var(--text-secondary); | |
| } | |
| .markdown-content li::marker { | |
| color: var(--accent-primary); | |
| } | |
| .markdown-content a { | |
| color: var(--accent-primary); | |
| text-decoration: none; | |
| border-bottom: 1px solid transparent; | |
| transition: var(--transition-fast); | |
| } | |
| .markdown-content a:hover { | |
| border-bottom-color: var(--accent-primary); | |
| } | |
| .markdown-content blockquote { | |
| border-left: 3px solid var(--accent-primary); | |
| padding-left: 1rem; | |
| margin: 1.5rem 0; | |
| color: var(--text-secondary); | |
| font-style: italic; | |
| } | |
| /* === LAYOUT === */ | |
| .app-container { | |
| display: grid; | |
| grid-template-columns: 280px 1fr; | |
| min-height: 100vh; | |
| } | |
| /* === SIDEBAR === */ | |
| .sidebar { | |
| background: var(--bg-secondary); | |
| border-right: 1px solid var(--border); | |
| padding: 2rem 1.5rem; | |
| position: sticky; | |
| top: 0; | |
| height: 100vh; | |
| overflow-y: auto; | |
| } | |
| .sidebar::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .sidebar::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .sidebar::-webkit-scrollbar-thumb { | |
| background: var(--surface); | |
| border-radius: 3px; | |
| } | |
| .app-header { | |
| margin-bottom: 3rem; | |
| padding-bottom: 2rem; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .app-header h1 { | |
| font-size: 2rem; | |
| margin-bottom: 0.5rem; | |
| letter-spacing: -0.02em; | |
| } | |
| .app-header p { | |
| font-size: 0.75rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.1em; | |
| color: var(--text-tertiary); | |
| font-weight: 600; | |
| } | |
| .main-nav ul { | |
| list-style: none; | |
| } | |
| .main-nav li { | |
| margin-bottom: 0.5rem; | |
| } | |
| .nav-link { | |
| display: flex; | |
| align-items: center; | |
| padding: 0.875rem 1rem; | |
| color: var(--text-secondary); | |
| text-decoration: none; | |
| border-radius: 10px; | |
| font-weight: 500; | |
| font-size: 0.9375rem; | |
| transition: var(--transition-base); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .nav-link::before { | |
| content: ''; | |
| position: absolute; | |
| left: 0; | |
| top: 0; | |
| height: 100%; | |
| width: 3px; | |
| background: var(--accent-gradient); | |
| transform: scaleY(0); | |
| transition: var(--transition-base); | |
| } | |
| .nav-link:hover { | |
| background: var(--surface); | |
| color: var(--text-highlight); | |
| transform: translateX(4px); | |
| } | |
| .nav-link.active { | |
| background: var(--surface-elevated); | |
| color: var(--accent-primary); | |
| font-weight: 600; | |
| } | |
| .nav-link.active::before { | |
| transform: scaleY(1); | |
| } | |
| /* === MAIN CONTENT === */ | |
| .main-content { | |
| padding: 2rem 3rem; | |
| overflow-y: auto; | |
| height: 100vh; | |
| } | |
| .main-content::-webkit-scrollbar { | |
| width: 8px; | |
| } | |
| .main-content::-webkit-scrollbar-track { | |
| background: var(--bg-secondary); | |
| } | |
| .main-content::-webkit-scrollbar-thumb { | |
| background: var(--surface); | |
| border-radius: 4px; | |
| } | |
| .main-content::-webkit-scrollbar-thumb:hover { | |
| background: var(--surface-elevated); | |
| } | |
| /* === TOP BAR === */ | |
| .top-bar { | |
| display: flex; | |
| gap: 1.5rem; | |
| align-items: flex-end; | |
| background: var(--surface); | |
| backdrop-filter: blur(16px); | |
| padding: 1.5rem 2rem; | |
| border-radius: 16px; | |
| margin-bottom: 2.5rem; | |
| border: 1px solid var(--border); | |
| box-shadow: var(--shadow-md); | |
| } | |
| .input-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| flex: 1; | |
| } | |
| .input-group label { | |
| font-size: 0.8125rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: var(--text-tertiary); | |
| } | |
| /* === INPUTS & BUTTONS === */ | |
| input[type="text"], | |
| select { | |
| background: var(--bg-secondary); | |
| border: 1px solid var(--border); | |
| color: var(--text-primary); | |
| padding: 0.875rem 1rem; | |
| border-radius: 10px; | |
| font-family: var(--font-sans); | |
| font-size: 0.9375rem; | |
| transition: var(--transition-base); | |
| min-width: 280px; | |
| } | |
| input[type="text"]:focus, | |
| select:focus { | |
| outline: none; | |
| border-color: var(--accent-primary); | |
| box-shadow: 0 0 0 3px rgba(0, 229, 255, 0.1); | |
| } | |
| input[type="text"]::placeholder { | |
| color: var(--text-tertiary); | |
| } | |
| .btn { | |
| padding: 0.875rem 1.5rem; | |
| border: none; | |
| border-radius: 10px; | |
| font-weight: 600; | |
| font-size: 0.9375rem; | |
| cursor: pointer; | |
| transition: var(--transition-base); | |
| letter-spacing: 0.01em; | |
| font-family: var(--font-sans); | |
| white-space: nowrap; | |
| } | |
| .btn-primary { | |
| background: var(--accent-gradient); | |
| color: var(--bg-primary); | |
| box-shadow: var(--accent-glow); | |
| } | |
| .btn-primary:hover:not(:disabled) { | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 24px rgba(0, 229, 255, 0.4); | |
| } | |
| .btn-secondary { | |
| background: var(--surface-elevated); | |
| color: var(--text-highlight); | |
| border: 1px solid var(--border-hover); | |
| } | |
| .btn-secondary:hover:not(:disabled) { | |
| background: var(--surface); | |
| border-color: var(--accent-primary); | |
| color: var(--accent-primary); | |
| } | |
| .btn:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| } | |
| /* === CARDS === */ | |
| .card { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: 20px; | |
| padding: 2rem; | |
| margin-bottom: 2rem; | |
| box-shadow: var(--shadow-md); | |
| transition: var(--transition-base); | |
| backdrop-filter: blur(8px); | |
| } | |
| .card:hover { | |
| border-color: var(--border-hover); | |
| box-shadow: var(--shadow-lg), var(--shadow-glow); | |
| } | |
| /* === STUDENT PROFILE === */ | |
| .student-profile-card { | |
| background: var(--surface-elevated); | |
| } | |
| .student-header { | |
| display: flex; | |
| gap: 2rem; | |
| align-items: center; | |
| } | |
| .student-photo img { | |
| width: 120px; | |
| height: 120px; | |
| border-radius: 50%; | |
| object-fit: cover; | |
| border: 4px solid var(--accent-primary); | |
| box-shadow: var(--accent-glow); | |
| } | |
| .student-info h2 { | |
| margin: 0 0 0.5rem 0; | |
| font-size: 2rem; | |
| } | |
| .student-id { | |
| color: var(--text-tertiary); | |
| font-size: 0.9375rem; | |
| font-weight: 500; | |
| margin-bottom: 1rem; | |
| } | |
| .student-contact { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| } | |
| .contact-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| color: var(--text-secondary); | |
| font-size: 0.9375rem; | |
| } | |
| .contact-item .icon { | |
| font-size: 1.25rem; | |
| filter: grayscale(0.3); | |
| } | |
| /* === TABS === */ | |
| .section-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 2rem; | |
| padding-bottom: 1rem; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .section-header h2 { | |
| margin-bottom: 0; | |
| } | |
| .section-header h2::after { | |
| display: none; | |
| } | |
| .report-tabs, | |
| .suggestion-tabs { | |
| display: flex; | |
| gap: 0.5rem; | |
| background: var(--bg-secondary); | |
| padding: 0.375rem; | |
| border-radius: 10px; | |
| } | |
| .tab-btn { | |
| padding: 0.625rem 1.25rem; | |
| border: none; | |
| background: transparent; | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| border-radius: 8px; | |
| font-weight: 500; | |
| font-size: 0.875rem; | |
| transition: var(--transition-fast); | |
| font-family: var(--font-sans); | |
| } | |
| .tab-btn:hover { | |
| color: var(--text-highlight); | |
| background: var(--surface); | |
| } | |
| .tab-btn.active { | |
| background: var(--accent-primary); | |
| color: var(--bg-primary); | |
| font-weight: 600; | |
| } | |
| .tab-content { | |
| display: none; | |
| animation: fadeIn 0.3s ease-in-out; | |
| } | |
| .tab-content.active { | |
| display: block; | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* === SUMMARY TAB === */ | |
| .summary-content { | |
| margin-bottom: 2rem; | |
| padding: 1.5rem; | |
| background: var(--bg-secondary); | |
| border-radius: 12px; | |
| border-left: 4px solid var(--accent-primary); | |
| } | |
| .summary-content h4 { | |
| color: var(--accent-primary); | |
| margin-bottom: 1rem; | |
| font-size: 1.125rem; | |
| } | |
| .summary-content p { | |
| font-size: 1rem; | |
| line-height: 1.8; | |
| color: var(--text-secondary); | |
| } | |
| .strengths-weaknesses { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .strengths, | |
| .weaknesses { | |
| padding: 1.5rem; | |
| background: var(--bg-secondary); | |
| border-radius: 12px; | |
| border: 1px solid var(--border); | |
| } | |
| .strengths { | |
| border-left: 4px solid var(--success); | |
| } | |
| .weaknesses { | |
| border-left: 4px solid var(--danger); | |
| } | |
| .strengths h4 { | |
| color: var(--success); | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| margin-bottom: 1rem; | |
| } | |
| .weaknesses h4 { | |
| color: var(--danger); | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| margin-bottom: 1rem; | |
| } | |
| .strengths ul, | |
| .weaknesses ul { | |
| list-style: none; | |
| padding: 0; | |
| } | |
| .strengths li, | |
| .weaknesses li { | |
| margin-bottom: 1rem; | |
| padding-left: 1.5rem; | |
| position: relative; | |
| color: var(--text-secondary); | |
| line-height: 1.6; | |
| } | |
| .strengths li::before { | |
| content: '✓'; | |
| position: absolute; | |
| left: 0; | |
| color: var(--success); | |
| font-weight: bold; | |
| } | |
| .weaknesses li::before { | |
| content: '!'; | |
| position: absolute; | |
| left: 0.25rem; | |
| color: var(--danger); | |
| font-weight: bold; | |
| } | |
| /* === SKILLS TABLE === */ | |
| .skills-table { | |
| margin-top: 1rem; | |
| } | |
| .table-header { | |
| display: grid; | |
| grid-template-columns: 2fr 1.5fr 2fr; | |
| gap: 1rem; | |
| padding: 1rem 1.5rem; | |
| background: var(--bg-secondary); | |
| border-radius: 10px; | |
| margin-bottom: 0.5rem; | |
| font-weight: 600; | |
| font-size: 0.875rem; | |
| color: var(--text-tertiary); | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .skill-row { | |
| display: grid; | |
| grid-template-columns: 2fr 1.5fr 2fr; | |
| gap: 1rem; | |
| padding: 1.25rem 1.5rem; | |
| background: var(--surface-elevated); | |
| border-radius: 10px; | |
| margin-bottom: 0.5rem; | |
| transition: var(--transition-base); | |
| } | |
| .skill-row:hover { | |
| background: var(--bg-secondary); | |
| transform: translateX(4px); | |
| } | |
| .skill-cell { | |
| display: flex; | |
| align-items: center; | |
| color: var(--text-secondary); | |
| font-size: 0.9375rem; | |
| } | |
| .skill-cell:first-child { | |
| color: var(--text-highlight); | |
| font-weight: 500; | |
| } | |
| .skill-cell:last-child { | |
| gap: 1rem; | |
| } | |
| .progress-bar { | |
| flex: 1; | |
| height: 8px; | |
| background: var(--bg-secondary); | |
| border-radius: 4px; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .progress { | |
| height: 100%; | |
| background: var(--accent-gradient); | |
| border-radius: 4px; | |
| transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); | |
| box-shadow: 0 0 10px rgba(0, 229, 255, 0.5); | |
| } | |
| .percentage { | |
| font-weight: 600; | |
| color: var(--accent-primary); | |
| min-width: 45px; | |
| text-align: right; | |
| font-size: 0.875rem; | |
| } | |
| /* === PERFORMANCE CHARTS === */ | |
| .performance-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); | |
| gap: 2rem; | |
| } | |
| .chart-container { | |
| background: var(--bg-secondary); | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| border: 1px solid var(--border); | |
| min-height: 320px; | |
| } | |
| .chart-container h4 { | |
| margin-bottom: 1.5rem; | |
| color: var(--accent-primary); | |
| } | |
| /* === ACTION ITEMS === */ | |
| .action-item, | |
| .path-item { | |
| margin-bottom: 2rem; | |
| padding: 2rem; | |
| background: var(--surface-elevated); | |
| border-radius: 16px; | |
| border: 1px solid var(--border); | |
| transition: var(--transition-base); | |
| } | |
| .action-item:hover, | |
| .path-item:hover { | |
| border-color: var(--accent-primary); | |
| box-shadow: var(--shadow-glow); | |
| } | |
| .action-item h4, | |
| .path-item h4 { | |
| color: var(--accent-primary); | |
| margin-bottom: 1rem; | |
| font-size: 1.25rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| } | |
| .action-item p, | |
| .path-item p { | |
| margin-bottom: 1.5rem; | |
| line-height: 1.8; | |
| color: var(--text-secondary); | |
| } | |
| /* === FLOWCHART === */ | |
| .flowchart-container { | |
| width: 100%; | |
| height: 650px; | |
| min-height: 650px; | |
| position: relative; | |
| border: 2px solid var(--accent-primary); | |
| border-radius: 16px; | |
| margin: 2rem 0; | |
| background: var(--bg-primary); | |
| overflow: hidden; | |
| box-shadow: var(--shadow-glow); | |
| } | |
| .flowchart-canvas { | |
| width: 100% ; | |
| height: 100% ; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .flowchart-canvas svg { | |
| width: 100% ; | |
| height: 100% ; | |
| max-width: none ; | |
| max-height: none ; | |
| display: block; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| } | |
| .flowchart-instructions { | |
| position: absolute; | |
| top: 20px; | |
| right: 20px; | |
| background: var(--accent-primary); | |
| color: var(--bg-primary); | |
| padding: 0.75rem 1.25rem; | |
| border-radius: 10px; | |
| font-size: 0.8125rem; | |
| font-weight: 600; | |
| z-index: 1000; | |
| pointer-events: none; | |
| box-shadow: var(--shadow-md); | |
| letter-spacing: 0.02em; | |
| } | |
| /* === LEARNING RESOURCES === */ | |
| .recommended-resources { | |
| margin-top: 1.5rem; | |
| padding-top: 1.5rem; | |
| border-top: 1px solid var(--border); | |
| } | |
| .recommended-resources h5 { | |
| margin-bottom: 1.25rem; | |
| color: var(--text-highlight); | |
| font-size: 1rem; | |
| } | |
| .resource-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| gap: 1.5rem; | |
| padding: 1.25rem; | |
| background: var(--bg-secondary); | |
| border-radius: 12px; | |
| margin-bottom: 1rem; | |
| border: 1px solid var(--border); | |
| transition: var(--transition-base); | |
| } | |
| .resource-item:hover { | |
| border-color: var(--accent-primary); | |
| transform: translateY(-2px); | |
| box-shadow: var(--shadow-md); | |
| } | |
| .resource-info h6 { | |
| margin-bottom: 0.5rem; | |
| color: var(--text-highlight); | |
| font-size: 0.9375rem; | |
| font-weight: 600; | |
| } | |
| .resource-info p { | |
| color: var(--text-tertiary); | |
| font-size: 0.875rem; | |
| margin: 0; | |
| } | |
| .start-learning-btn { | |
| padding: 0.625rem 1.25rem; | |
| font-size: 0.875rem; | |
| white-space: nowrap; | |
| } | |
| /* === LOADING SPINNER === */ | |
| .loading-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(10, 10, 15, 0.9); | |
| backdrop-filter: blur(8px); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 9999; | |
| } | |
| .spinner { | |
| width: 60px; | |
| height: 60px; | |
| border: 4px solid var(--surface); | |
| border-top-color: var(--accent-primary); | |
| border-radius: 50%; | |
| animation: spin 0.8s linear infinite; | |
| margin-bottom: 1.5rem; | |
| } | |
| @keyframes spin { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| .loading-overlay p { | |
| color: var(--text-primary); | |
| font-size: 1.125rem; | |
| font-weight: 500; | |
| } | |
| /* === CHAT === */ | |
| .chat-container { | |
| display: flex; | |
| flex-direction: column; | |
| height: 70vh; | |
| padding: 0; | |
| overflow: hidden; | |
| } | |
| #chat-history { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding: 2rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| #chat-history::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| #chat-history::-webkit-scrollbar-thumb { | |
| background: var(--surface); | |
| border-radius: 3px; | |
| } | |
| #chat-form { | |
| display: flex; | |
| gap: 1rem; | |
| padding: 1.5rem; | |
| border-top: 1px solid var(--border); | |
| background: var(--bg-secondary); | |
| } | |
| .chat-message { | |
| padding: 1rem 1.25rem; | |
| border-radius: 16px; | |
| max-width: 80%; | |
| animation: slideIn 0.3s ease-out; | |
| } | |
| @keyframes slideIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .user-message { | |
| background: var(--accent-gradient); | |
| color: var(--bg-primary); | |
| align-self: flex-end; | |
| border-bottom-right-radius: 4px; | |
| font-weight: 500; | |
| } | |
| .ai-message { | |
| background: var(--surface-elevated); | |
| color: var(--text-primary); | |
| align-self: flex-start; | |
| border-bottom-left-radius: 4px; | |
| border: 1px solid var(--border); | |
| } | |
| .ai-message strong { | |
| color: var(--accent-primary); | |
| } | |
| /* === UTILITIES === */ | |
| .hidden { | |
| display: none ; | |
| } | |
| .metric { | |
| font-size: 3rem; | |
| font-weight: 700; | |
| background: var(--accent-gradient); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| /* === RESPONSIVE === */ | |
| @media (max-width: 1200px) { | |
| .app-container { | |
| grid-template-columns: 240px 1fr; | |
| } | |
| .main-content { | |
| padding: 2rem; | |
| } | |
| } | |
| @media (max-width: 992px) { | |
| .app-container { | |
| grid-template-columns: 1fr; | |
| } | |
| .sidebar { | |
| display: none; | |
| } | |
| .top-bar { | |
| flex-direction: column; | |
| align-items: stretch; | |
| } | |
| .student-header { | |
| flex-direction: column; | |
| text-align: center; | |
| } | |
| .strengths-weaknesses, | |
| .performance-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .section-header { | |
| flex-direction: column; | |
| align-items: flex-start; | |
| gap: 1rem; | |
| } | |
| } | |
| @media (max-width: 640px) { | |
| .main-content { | |
| padding: 1rem; | |
| } | |
| .card { | |
| padding: 1.5rem; | |
| } | |
| .table-header, | |
| .skill-row { | |
| grid-template-columns: 1fr; | |
| gap: 0.5rem; | |
| } | |
| } | |
| /* === CHAT LAYOUT === */ | |
| .chat-layout { | |
| display: flex; | |
| gap: 1.5rem; | |
| height: 600px; | |
| } | |
| .chat-sidebar { | |
| width: 280px; | |
| display: flex; | |
| flex-direction: column; | |
| padding: 1rem; | |
| background: var(--surface); | |
| border-radius: 16px; | |
| border: 1px solid var(--border); | |
| } | |
| .chat-container { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| margin-bottom: 0; | |
| /* Override previous margin */ | |
| } | |
| .chat-sessions-list { | |
| flex: 1; | |
| overflow-y: auto; | |
| margin-top: 1rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .session-item { | |
| padding: 0.75rem 1rem; | |
| border-radius: 8px; | |
| cursor: pointer; | |
| transition: var(--transition-base); | |
| border: 1px solid transparent; | |
| } | |
| .session-item:hover { | |
| background: var(--bg-secondary); | |
| } | |
| .session-item.active { | |
| background: rgba(0, 229, 255, 0.1); | |
| border-color: var(--accent-primary); | |
| } | |
| .session-title { | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| color: var(--text-primary); | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| .session-date { | |
| font-size: 0.75rem; | |
| color: var(--text-tertiary); | |
| margin-top: 0.25rem; | |
| } | |
| .full-width { | |
| width: 100%; | |
| } | |
| /* Responsive Chat */ | |
| @media (max-width: 768px) { | |
| .chat-layout { | |
| flex-direction: column; | |
| height: auto; | |
| } | |
| .chat-sidebar { | |
| width: 100%; | |
| height: 200px; | |
| } | |
| .chat-container { | |
| height: 500px; | |
| } | |
| } | |
| .chart-container { | |
| position: relative; | |
| height: 300px; | |
| width: 100%; | |
| margin-bottom: 2rem; | |
| } | |
| /* === REPORT HISTORY MODAL === */ | |
| .modal { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(0, 0, 0, 0.7); | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| z-index: 1000; | |
| backdrop-filter: blur(5px); | |
| } | |
| .modal.hidden { | |
| display: none; | |
| } | |
| .modal-content { | |
| background: var(--surface); | |
| padding: 2rem; | |
| border-radius: 16px; | |
| width: 90%; | |
| max-width: 500px; | |
| border: 1px solid var(--border); | |
| box-shadow: var(--shadow-lg); | |
| position: relative; | |
| max-height: 80vh; | |
| overflow-y: auto; | |
| } | |
| .close-modal { | |
| position: absolute; | |
| top: 1rem; | |
| right: 1.5rem; | |
| font-size: 1.5rem; | |
| cursor: pointer; | |
| color: var(--text-tertiary); | |
| transition: var(--transition-base); | |
| } | |
| .close-modal:hover { | |
| color: var(--accent-primary); | |
| } | |
| .header-controls { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .btn-sm { | |
| padding: 0.5rem 1rem; | |
| font-size: 0.85rem; | |
| } | |
| #report-history-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| margin-top: 1.5rem; | |
| } | |
| .report-item { | |
| padding: 1rem; | |
| background: var(--bg-secondary); | |
| border-radius: 8px; | |
| cursor: pointer; | |
| border: 1px solid var(--border); | |
| transition: var(--transition-base); | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .report-item:hover { | |
| border-color: var(--accent-primary); | |
| transform: translateY(-2px); | |
| } | |
| .report-title { | |
| font-weight: 500; | |
| color: var(--text-primary); | |
| } | |
| .report-date { | |
| font-size: 0.8rem; | |
| color: var(--text-tertiary); | |
| } | |
| /* === APPLY & RESUME MODALS === */ | |
| .large-modal { | |
| max-width: 800px; | |
| width: 90%; | |
| height: 90vh; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .job-description-scroll { | |
| max-height: 300px; | |
| overflow-y: auto; | |
| background: var(--bg-secondary); | |
| padding: 1rem; | |
| border-radius: 8px; | |
| margin: 1rem 0; | |
| font-size: 0.9rem; | |
| color: var(--text-secondary); | |
| border: 1px solid var(--border); | |
| } | |
| .markdown-content { | |
| flex: 1; | |
| overflow-y: auto; | |
| background: var(--bg-secondary); | |
| padding: 2rem; | |
| border-radius: 8px; | |
| margin: 1rem 0; | |
| font-family: 'Inter', sans-serif; | |
| color: var(--text-primary); | |
| line-height: 1.6; | |
| } | |
| .markdown-content h1 { | |
| font-size: 1.8rem; | |
| margin-bottom: 1rem; | |
| color: var(--accent-primary); | |
| border-bottom: 1px solid var(--border); | |
| padding-bottom: 0.5rem; | |
| } | |
| .markdown-content h2 { | |
| font-size: 1.4rem; | |
| margin-top: 1.5rem; | |
| margin-bottom: 0.8rem; | |
| color: var(--text-primary); | |
| } | |
| .markdown-content ul { | |
| padding-left: 1.5rem; | |
| margin-bottom: 1rem; | |
| } | |
| .markdown-content li { | |
| margin-bottom: 0.5rem; | |
| } | |
| .modal-actions { | |
| display: flex; | |
| justify-content: flex-end; | |
| gap: 1rem; | |
| margin-top: 1rem; | |
| } | |
| /* === JOB LISTINGS GRID === */ | |
| .job-listings-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 2rem; | |
| } | |
| /* === DETAILED JOB MODAL === */ | |
| .modal-header { | |
| border-bottom: 1px solid var(--border); | |
| padding-bottom: 1rem; | |
| margin-bottom: 1rem; | |
| } | |
| .modal-header h2 { | |
| font-size: 1.8rem; | |
| margin-bottom: 0.2rem; | |
| color: var(--text-primary); | |
| } | |
| /* === DASHBOARD OVERVIEW STYLES === */ | |
| .metric-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 1.5rem; | |
| padding: 1.5rem; | |
| } | |
| .metric-icon { | |
| font-size: 2.5rem; | |
| background: rgba(0, 229, 255, 0.1); | |
| width: 60px; | |
| height: 60px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: 12px; | |
| } | |
| .metric-info h3 { | |
| font-size: 0.9rem; | |
| color: var(--text-tertiary); | |
| margin-bottom: 0.2rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| } | |
| .metric-info .metric { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| margin: 0; | |
| } | |
| .table-container { | |
| margin-top: 2rem; | |
| padding: 1.5rem; | |
| } | |
| .student-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin-top: 1rem; | |
| } | |
| .student-table th { | |
| text-align: left; | |
| padding: 1rem; | |
| color: var(--text-secondary); | |
| font-weight: 600; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .student-table td { | |
| padding: 1rem; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.05); | |
| color: var(--text-primary); | |
| vertical-align: middle; | |
| } | |
| .student-table tr:hover { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .student-name-cell { | |
| font-weight: 500; | |
| color: var(--text-primary); | |
| } | |
| .badge { | |
| padding: 0.35rem 0.75rem; | |
| border-radius: 20px; | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| display: inline-block; | |
| } | |
| .badge-success { | |
| background: rgba(16, 185, 129, 0.15); | |
| color: var(--success); | |
| border: 1px solid rgba(16, 185, 129, 0.3); | |
| } | |
| .badge-pending { | |
| background: rgba(255, 255, 255, 0.1); | |
| color: var(--text-tertiary); | |
| border: 1px solid var(--border); | |
| } | |
| .badge-neutral { | |
| background: rgba(0, 229, 255, 0.1); | |
| color: var(--accent-primary); | |
| border: 1px solid rgba(0, 229, 255, 0.3); | |
| } | |
| .skill-tag-mini { | |
| display: inline-block; | |
| background: var(--bg-secondary); | |
| color: var(--text-secondary); | |
| padding: 0.2rem 0.5rem; | |
| border-radius: 4px; | |
| font-size: 0.75rem; | |
| margin-right: 0.3rem; | |
| border: 1px solid var(--border); | |
| } | |
| .text-success { | |
| color: var(--success); | |
| } | |
| .text-warning { | |
| color: #F59E0B; | |
| } | |
| .text-danger { | |
| color: #EF4444; | |
| } | |
| .company-name { | |
| font-size: 1.1rem; | |
| color: var(--text-secondary); | |
| font-weight: 500; | |
| } | |
| /* === VIDEO RECOMMENDATIONS STYLES === */ | |
| .video-topic-section { | |
| margin-bottom: 2rem; | |
| background: var(--bg-secondary); | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| border: 1px solid var(--border); | |
| } | |
| .video-topic-title { | |
| font-size: 1.2rem; | |
| color: var(--accent-primary); | |
| margin-bottom: 0.5rem; | |
| border-left: 3px solid var(--accent-primary); | |
| padding-left: 0.75rem; | |
| } | |
| .video-topic-reason { | |
| font-size: 0.95rem; | |
| color: var(--text-secondary); | |
| margin-bottom: 1.5rem; | |
| font-style: italic; | |
| } | |
| .video-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .youtube-card { | |
| background: var(--surface); | |
| border-radius: 8px; | |
| overflow: hidden; | |
| border: 1px solid var(--border); | |
| transition: var(--transition-base); | |
| } | |
| .youtube-card:hover { | |
| transform: translateY(-3px); | |
| border-color: var(--accent-primary); | |
| box-shadow: var(--shadow-md); | |
| } | |
| .video-wrapper { | |
| position: relative; | |
| padding-bottom: 56.25%; | |
| /* 16:9 Aspect Ratio */ | |
| height: 0; | |
| overflow: hidden; | |
| background: #000; | |
| } | |
| .video-wrapper iframe { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| border: 0; | |
| } | |
| .video-info { | |
| padding: 1rem; | |
| } | |
| .video-info h5 { | |
| font-size: 1rem; | |
| margin-bottom: 0.5rem; | |
| color: var(--text-primary); | |
| line-height: 1.4; | |
| } | |
| .video-info p { | |
| font-size: 0.85rem; | |
| color: var(--text-tertiary); | |
| display: -webkit-box; | |
| -webkit-line-clamp: 2; | |
| line-clamp: 2; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| } | |
| .salary-tag { | |
| display: inline-block; | |
| background: rgba(16, 185, 129, 0.1); | |
| color: var(--success); | |
| padding: 0.25rem 0.75rem; | |
| border-radius: 20px; | |
| font-size: 0.9rem; | |
| font-weight: 600; | |
| margin-top: 0.5rem; | |
| } | |
| .modal-body-scroll { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding-right: 0.5rem; | |
| } | |
| .job-section { | |
| margin-bottom: 1.5rem; | |
| } | |
| .job-section h4 { | |
| font-size: 1.1rem; | |
| margin-bottom: 0.5rem; | |
| color: var(--text-primary); | |
| border-left: 3px solid var(--accent-primary); | |
| padding-left: 0.5rem; | |
| } | |
| .job-section p, | |
| .job-section li { | |
| color: var(--text-secondary); | |
| line-height: 1.6; | |
| font-size: 0.95rem; | |
| } | |
| .job-section ul { | |
| padding-left: 1.2rem; | |
| } | |
| .job-section li { | |
| margin-bottom: 0.3rem; | |
| } | |
| .sticky-footer { | |
| border-top: 1px solid var(--border); | |
| padding-top: 1rem; | |
| margin-top: auto; | |
| background: var(--surface); | |
| } | |
| /* === JOB CARD UPDATES === */ | |
| .card-actions { | |
| display: flex; | |
| gap: 0.5rem; | |
| margin-top: 1rem; | |
| } | |
| .btn-outline { | |
| background: transparent; | |
| border: 1px solid var(--border); | |
| color: var(--text-primary); | |
| } | |
| .btn-outline:hover { | |
| border-color: var(--accent-primary); | |
| color: var(--accent-primary); | |
| } | |
| .salary-preview { | |
| font-size: 0.9rem; | |
| color: var(--success); | |
| font-weight: 600; | |
| margin-bottom: 0.5rem; | |
| } |