/* Enhanced CSS for NLP Ultimate Tutorial - Component Specific Styles */ /* Vector Embeddings Page Enhancements */ .vector-embeddings-page { background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); min-height: 100vh; padding: 20px 0; } .model-info-cards .card { transition: all 0.3s ease; border: none; box-shadow: 0 4px 8px rgba(0,0,0,0.1); overflow: hidden; position: relative; } .model-info-cards .card:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0,0,0,0.15); } .model-info-cards .card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); } .model-info-cards .card-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; border: none; padding: 20px; position: relative; } .model-info-cards .card-header.bg-primary { background: linear-gradient(135deg, #4e73df 0%, #224abe 100%) !important; } .model-info-cards .card-header.bg-success { background: linear-gradient(135deg, #1cc88a 0%, #13855c 100%) !important; } .model-info-cards .card-header.bg-info { background: linear-gradient(135deg, #36b9cc 0%, #258391 100%) !important; } .model-info-cards .card-body { padding: 25px; background: rgba(255,255,255,0.95); } .model-info-cards .list-unstyled li { padding: 8px 0; border-bottom: 1px solid rgba(0,0,0,0.05); transition: all 0.2s ease; } .model-info-cards .list-unstyled li:hover { background: rgba(0,0,0,0.02); padding-left: 10px; } .model-info-cards .list-unstyled li:last-child { border-bottom: none; } /* Visualization Cards */ .visualization-card { background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); border: none; box-shadow: 0 6px 20px rgba(0,0,0,0.1); border-radius: 15px; overflow: hidden; transition: all 0.3s ease; } .visualization-card:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(0,0,0,0.15); } .visualization-card .card-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border: none; padding: 20px; color: white; } .visualization-card .card-body { padding: 30px; } /* Semantic Search Enhancement */ .semantic-search-card { background: linear-gradient(135deg, #ffeaa7 0%, #fab1a0 100%); border: none; box-shadow: 0 8px 25px rgba(255,193,7,0.3); border-radius: 15px; overflow: hidden; transition: all 0.3s ease; } .semantic-search-card:hover { transform: translateY(-2px); box-shadow: 0 12px 35px rgba(255,193,7,0.4); } .semantic-search-card .card-header { background: linear-gradient(135deg, #fdcb6e 0%, #e17055 100%) !important; border: none; padding: 25px; color: white; } .semantic-search-card .card-body { background: rgba(255,255,255,0.9); padding: 30px; } .semantic-search-card .form-control-lg { border: 2px solid #fdcb6e; border-radius: 10px; transition: all 0.3s ease; box-shadow: 0 2px 10px rgba(253,203,110,0.2); } .semantic-search-card .form-control-lg:focus { border-color: #e17055; box-shadow: 0 4px 15px rgba(225,112,85,0.3); transform: translateY(-2px); } .semantic-search-card .btn-warning { background: linear-gradient(135deg, #fdcb6e 0%, #e17055 100%); border: none; border-radius: 10px; font-weight: 600; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(253,203,110,0.4); } .semantic-search-card .btn-warning:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(225,112,85,0.5); } /* Example Search Buttons */ .example-search-card { background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%); border: none; box-shadow: 0 6px 20px rgba(168,237,234,0.3); border-radius: 15px; overflow: hidden; } .example-search-card .card-header { background: linear-gradient(135deg, #74b9ff 0%, #0984e3 100%) !important; border: none; padding: 20px; color: white; } .example-search-card .card-body { background: rgba(255,255,255,0.8); padding: 25px; } .example-search-card .btn-outline-secondary { border: 2px solid #74b9ff; color: #0984e3; background: rgba(255,255,255,0.9); border-radius: 25px; padding: 10px 20px; margin: 5px; font-weight: 500; transition: all 0.3s ease; box-shadow: 0 2px 10px rgba(116,185,255,0.2); } .example-search-card .btn-outline-secondary:hover { background: linear-gradient(135deg, #74b9ff 0%, #0984e3 100%); color: white; transform: translateY(-2px); box-shadow: 0 4px 15px rgba(116,185,255,0.4); } /* Process Flow Cards */ .process-flow-card { background: linear-gradient(135deg, #e8f4fd 0%, #d1ecf1 100%); border: none; border-radius: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); transition: all 0.3s ease; overflow: hidden; } .process-flow-card:hover { transform: translateY(-3px); box-shadow: 0 8px 25px rgba(0,0,0,0.15); } .process-flow-card h4 { color: #0984e3; font-weight: 600; margin-bottom: 15px; } .process-flow-card p { color: #636e72; line-height: 1.6; } /* Info Alert Enhancements */ .vector-embeddings-page .alert-info { background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%); border: none; border-left: 5px solid #2196f3; border-radius: 10px; box-shadow: 0 3px 10px rgba(33,150,243,0.2); } .vector-embeddings-page .alert-success { background: linear-gradient(135deg, #e8f5e8 0%, #c8e6c9 100%); border: none; border-left: 5px solid #4caf50; border-radius: 10px; box-shadow: 0 3px 10px rgba(76,175,80,0.2); } /* Chart Container Enhancements */ .chart-container { background: white; border-radius: 15px; padding: 20px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); margin: 20px 0; transition: all 0.3s ease; } .chart-container:hover { box-shadow: 0 8px 25px rgba(0,0,0,0.15); } /* Animation for page load */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .vector-embeddings-page .card { animation: fadeInUp 0.6s ease forwards; } .vector-embeddings-page .card:nth-child(1) { animation-delay: 0.1s; } .vector-embeddings-page .card:nth-child(2) { animation-delay: 0.2s; } .vector-embeddings-page .card:nth-child(3) { animation-delay: 0.3s; } .vector-embeddings-page .card:nth-child(4) { animation-delay: 0.4s; } /* Enhanced Vector Embeddings Components */ .feature-list .d-flex { transition: all 0.2s ease; border-radius: 8px; padding: 8px; margin: 0 -8px 8px -8px; } .feature-list .d-flex:hover { background: rgba(0,0,0,0.02); transform: translateX(5px); } .process-step-icon { transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(0,0,0,0.1); } .process-step-icon:hover { transform: scale(1.1); box-shadow: 0 8px 25px rgba(0,0,0,0.2); } .progress-bar { transition: width 1s ease-in-out; } .bg-gradient-primary { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; } .bg-gradient-info { background: linear-gradient(135deg, #36b9cc 0%, #258391 100%) !important; } /* Model Information Cards Enhancement */ .model-info-cards .card { transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); border-radius: 12px; } .model-info-cards .card:hover { transform: translateY(-8px) scale(1.02); box-shadow: 0 15px 40px rgba(0,0,0,0.15); } .model-info-cards .card-header { border-radius: 12px 12px 0 0; } /* Process Flow Enhancement */ .process-flow-card h5 { position: relative; } .process-flow-card h5::after { content: ''; position: absolute; bottom: -8px; left: 50%; transform: translateX(-50%); width: 40px; height: 2px; background: currentColor; opacity: 0.3; } /* Interactive Elements */ .btn-outline-secondary:hover { transform: translateY(-2px) scale(1.05); box-shadow: 0 6px 20px rgba(0,0,0,0.15); } /* Chart Container Improvements */ .chart-container { position: relative; overflow: hidden; } .chart-container::before { content: ''; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; background: linear-gradient(45deg, #667eea, #764ba2, #36b9cc, #1cc88a); border-radius: 17px; z-index: -1; opacity: 0; transition: opacity 0.3s ease; } .chart-container:hover::before { opacity: 0.1; } /* Responsive Improvements */ @media (max-width: 768px) { .model-info-cards .card { margin-bottom: 1.5rem; } .process-step-icon { width: 50px !important; height: 50px !important; } .feature-list .d-flex:hover { transform: none; } } /* POS Tagging specific styles */ .pos-token { display: inline-block; margin: 2px; padding: 4px 8px; border-radius: 4px; font-size: 0.9em; transition: all 0.2s ease; } .pos-token:hover { transform: scale(1.05); box-shadow: 0 2px 4px rgba(0,0,0,0.2); } /* Named Entity Recognition specific styles */ .entity-token { display: inline-block; margin: 2px; padding: 4px 8px; border-radius: 4px; font-size: 0.9em; transition: all 0.2s ease; cursor: pointer; } .entity-token:hover { transform: scale(1.05); box-shadow: 0 2px 4px rgba(0,0,0,0.2); } /* Sentiment Analysis specific styles */ .sentiment-gauge { position: relative; width: 200px; height: 200px; margin: 0 auto; } .sentiment-score { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 2rem; font-weight: bold; } .sentiment-label { position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); font-size: 1.2rem; font-weight: 600; } /* Text Generation specific styles */ .generated-text { background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); border-left: 4px solid var(--primary-color); padding: 15px; margin: 10px 0; border-radius: 8px; font-family: 'Georgia', serif; line-height: 1.6; } .prompt-text { color: #666; font-style: italic; } .generated-content { color: var(--primary-color); font-weight: 500; } /* Translation specific styles */ .translation-pair { display: flex; gap: 20px; margin: 20px 0; } .source-text, .target-text { flex: 1; padding: 15px; border-radius: 8px; border: 2px solid #e0e0e0; } .source-text { background: linear-gradient(135deg, #E3F2FD 0%, #BBDEFB 100%); border-color: var(--primary-color); } .target-text { background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%); border-color: var(--success-color); } .language-badge { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 0.8em; font-weight: 600; margin-bottom: 10px; } /* Classification specific styles */ .classification-result { display: flex; align-items: center; padding: 10px; margin: 5px 0; border-radius: 8px; background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); transition: all 0.2s ease; } .classification-result:hover { transform: translateX(5px); box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .classification-label { flex: 1; font-weight: 600; } .classification-score { font-size: 1.2rem; font-weight: bold; margin-left: 10px; } /* Vector Embeddings specific styles */ .embedding-visualization { text-align: center; margin: 20px 0; } .similarity-matrix { display: grid; gap: 2px; margin: 20px 0; } .similarity-cell { padding: 10px; text-align: center; border-radius: 4px; font-weight: 600; transition: all 0.2s ease; } .similarity-cell:hover { transform: scale(1.1); z-index: 10; position: relative; } /* Search results specific styles */ .search-result { padding: 15px; margin: 10px 0; border-radius: 8px; border-left: 4px solid var(--primary-color); background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); transition: all 0.2s ease; } .search-result:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .search-score { font-size: 0.9em; color: var(--primary-color); font-weight: 600; margin-top: 5px; } /* Chart containers */ .chart-wrapper { position: relative; margin: 20px 0; padding: 20px; background: white; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } [data-theme="dark"] .chart-wrapper { background: #2d2d2d; } /* Loading animations */ .loading-dots { display: inline-block; } .loading-dots::after { content: ''; animation: dots 1.5s steps(4, end) infinite; } @keyframes dots { 0%, 20% { content: ''; } 40% { content: '.'; } 60% { content: '..'; } 80%, 100% { content: '...'; } } /* Pulse animation for important elements */ .pulse { animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } /* Slide animations */ .slide-in-left { animation: slideInLeft 0.5s ease-out; } .slide-in-right { animation: slideInRight 0.5s ease-out; } @keyframes slideInLeft { from { transform: translateX(-100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slideInRight { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* Bounce animation for success states */ .bounce-in { animation: bounceIn 0.6s ease-out; } @keyframes bounceIn { 0% { transform: scale(0.3); opacity: 0; } 50% { transform: scale(1.05); } 70% { transform: scale(0.9); } 100% { transform: scale(1); opacity: 1; } } /* Shake animation for error states */ .shake { animation: shake 0.5s ease-in-out; } @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); } 20%, 40%, 60%, 80% { transform: translateX(5px); } } /* Gradient text effects */ .gradient-text { background: linear-gradient(135deg, var(--primary-color) 0%, var(--success-color) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-weight: 700; } /* Custom scrollbar for specific containers */ .custom-scrollbar { scrollbar-width: thin; scrollbar-color: var(--primary-color) #f1f1f1; } .custom-scrollbar::-webkit-scrollbar { width: 6px; } .custom-scrollbar::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 3px; } .custom-scrollbar::-webkit-scrollbar-thumb { background: var(--primary-color); border-radius: 3px; } .custom-scrollbar::-webkit-scrollbar-thumb:hover { background: var(--primary-hover); } /* Responsive design enhancements */ @media (max-width: 576px) { .translation-pair { flex-direction: column; } .classification-result { flex-direction: column; text-align: center; } .classification-score { margin-left: 0; margin-top: 5px; } .sentiment-gauge { width: 150px; height: 150px; } .sentiment-score { font-size: 1.5rem; } } /* Print styles */ @media print { .navbar, .btn, .alert { display: none !important; } .card { border: 1px solid #000 !important; box-shadow: none !important; } body { background: white !important; color: black !important; } } /* High contrast mode support */ @media (prefers-contrast: high) { :root { --primary-color: #0000FF; --success-color: #008000; --warning-color: #FF8000; --danger-color: #FF0000; } .card { border: 2px solid #000; } .btn { border: 2px solid #000; } } /* Reduced motion support */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* Focus styles for accessibility */ .btn:focus, .form-control:focus, .form-select:focus { outline: 3px solid var(--primary-color); outline-offset: 2px; } /* Skip link for screen readers */ .skip-link { position: absolute; top: -40px; left: 6px; background: var(--primary-color); color: white; padding: 8px; text-decoration: none; border-radius: 4px; z-index: 1000; } .skip-link:focus { top: 6px; } /* ARIA live region for dynamic content */ .aria-live { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; } /* Prevent horizontal scrolling in text containers */ .card-body { overflow-x: hidden; max-width: 100%; } .text-content { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; font-size: 14px; color: #333; word-wrap: break-word; word-break: break-word; overflow-wrap: break-word; white-space: normal; max-width: 100%; overflow-x: hidden; overflow-y: auto; padding: 15px; background-color: #f8f9fa; border-radius: 5px; border: 1px solid #e9ecef; margin-bottom: 15px; } [data-theme="dark"] .text-content { background-color: #2d2d2d !important; color: #e0e0e0 !important; border-color: #555 !important; } /* Responsive text containers */ .text-container { max-width: 100%; overflow-x: auto; } @media (max-width: 768px) { .text-content { font-size: 13px; padding: 10px !important; max-height: 150px !important; } } /* Additional text wrapping rules */ * { box-sizing: border-box; } .container, .container-fluid { overflow-x: hidden; max-width: 100%; } /* Ensure all text elements wrap properly */ p, div, span, pre, code { word-wrap: break-word; word-break: break-word; overflow-wrap: break-word; max-width: 100%; } /* Enhanced table styling for multi-column layouts */ .table-responsive { border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .table th { font-weight: 600; font-size: 0.9em; padding: 12px 8px; text-align: center !important; vertical-align: middle !important; background-color: var(--primary-color) !important; color: white !important; border: none !important; } .table td { padding: 10px 8px; text-align: center !important; vertical-align: middle !important; font-size: 0.9em; border: 1px solid #dee2e6; } .table td code { background-color: #f8f9fa; padding: 2px 6px; border-radius: 4px; font-size: 0.85em; color: #e83e8c; display: inline-block; } [data-theme="dark"] .table td code { background-color: #2d2d2d; color: #ff6b9d; } .table td .badge { font-size: 0.8em; padding: 4px 8px; display: inline-block; } /* Fix table header alignment */ .table thead th { text-align: center !important; vertical-align: middle !important; white-space: nowrap; } /* Ensure proper table structure */ .table { margin-bottom: 0; width: 100%; table-layout: fixed; } .table tbody tr:nth-of-type(odd) { background-color: rgba(0,0,0,.02); } .table tbody tr:hover { background-color: rgba(0,0,0,.075); } /* Responsive table adjustments */ @media (max-width: 768px) { .table th, .table td { padding: 8px 4px; font-size: 0.8em; } .table td code { font-size: 0.75em; padding: 1px 4px; } .table td .badge { font-size: 0.7em; padding: 2px 6px; } } /* Additional table header fixes */ .table-primary th { background-color: var(--primary-color) !important; color: white !important; text-align: center !important; vertical-align: middle !important; font-weight: 600 !important; border: none !important; padding: 12px 8px !important; } /* Override Bootstrap table styles */ .table thead th { border-bottom: 2px solid #dee2e6 !important; text-align: center !important; vertical-align: middle !important; } /* Ensure consistent column widths */ .table th[style*="width"] { text-align: center !important; } /* Fix any alignment issues */ .table td, .table th { text-align: center !important; vertical-align: middle !important; } /* ===== VERTICAL SPACING AND TITLE HIERARCHY ===== */ /* Main section headers */ .task-subheader { font-size: 1.5rem; font-weight: 600; color: var(--primary-color); margin-top: 2rem; margin-bottom: 1.5rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--primary-color); position: relative; } .task-subheader:first-child { margin-top: 1rem; } .task-subheader::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 50px; height: 2px; background-color: var(--accent-color); } /* Subsection headers */ h4 { font-size: 1.25rem; font-weight: 600; color: #2c3e50; margin-top: 1.5rem; margin-bottom: 1rem; padding-left: 0.5rem; border-left: 4px solid var(--primary-color); background-color: #f8f9fa; padding: 0.75rem 1rem; border-radius: 0 5px 5px 0; } [data-theme="dark"] h4 { color: #e0e0e0; background-color: #2d2d2d; border-left-color: var(--primary-color); } /* Card spacing */ .card { margin-bottom: 1.5rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); border: none; border-radius: 8px; } .card-header { background-color: var(--primary-color); color: white; border-radius: 8px 8px 0 0 !important; padding: 1rem 1.25rem; border-bottom: none; } .card-header h5 { margin: 0; font-weight: 600; font-size: 1.1rem; } .card-body { padding: 1.25rem; background-color: white; border-radius: 0 0 8px 8px; } [data-theme="dark"] .card-body { background-color: #2d2d2d; } /* Row spacing */ .row { margin-bottom: 1.5rem; } .row:last-child { margin-bottom: 0; } /* Alert boxes spacing */ .alert { margin: 1.5rem 0; padding: 1rem 1.25rem; border-radius: 8px; border: none; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .alert h4 { margin-top: 0; margin-bottom: 0.75rem; font-size: 1.1rem; } .alert ul { margin-bottom: 0; } .alert li { margin-bottom: 0.5rem; } /* Statistics boxes */ .stats-container { margin: 1.5rem 0; } .stats-container .col-md-4 { margin-bottom: 1rem; } /* Base stats card layout */ .stats-container .card { text-align: center; } /* Dark-mode stats styling (gradient + white text) */ [data-theme="dark"] .stats-container .card { background: linear-gradient(135deg, var(--primary-color), var(--accent-color)) !important; color: #fff !important; border: none !important; } .stats-container .card-body { background: transparent !important; padding: 1.5rem 1rem; } /* Text colors for dark-mode stats */ [data-theme="dark"] .stats-container .card-body h3, [data-theme="dark"] .stats-container .card-body p, [data-theme="dark"] .stats-container .card-body h2, [data-theme="dark"] .stats-container .card-title { color: #fff !important; } .stats-container .card-body h3 { font-size: 2rem; font-weight: 700; margin-bottom: 0.5rem; } .stats-container .card-body p { margin: 0; font-size: 0.9rem; opacity: 0.9; } /* Table spacing */ .table-responsive { margin: 1rem 0 1.5rem 0; } /* Chart spacing */ .chart-container { margin: 1.5rem 0; padding: 1rem; background-color: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); text-align: center; } [data-theme="dark"] .chart-container { background-color: #2d2d2d; } .chart-container img { max-width: 100%; height: auto; border-radius: 4px; } /* Paragraph spacing */ p { margin-bottom: 1rem; line-height: 1.6; } p:last-child { margin-bottom: 0; } /* Small text spacing */ small { margin-top: 0.5rem; display: block; color: #6c757d; } [data-theme="dark"] small { color: #adb5bd; } /* Button spacing */ .btn { margin: 0.25rem; border-radius: 6px; } /* List spacing */ ul, ol { margin-bottom: 1rem; padding-left: 1.5rem; } ul li, ol li { margin-bottom: 0.5rem; line-height: 1.6; } /* Collapsible content spacing */ .collapse { margin-top: 0.5rem; } /* Section dividers */ .section-divider { height: 2px; background: linear-gradient(90deg, var(--primary-color), var(--accent-color), var(--primary-color)); margin: 2rem 0; border-radius: 1px; } /* Responsive spacing adjustments */ @media (max-width: 768px) { .task-subheader { font-size: 1.3rem; margin-top: 1.5rem; margin-bottom: 1rem; } h4 { font-size: 1.1rem; margin-top: 1.25rem; margin-bottom: 0.75rem; } .card { margin-bottom: 1rem; } .alert { margin: 1rem 0; } .stats-container .card-body h3 { font-size: 1.5rem; } } /* Quick Navigation styling (scoped) */ .quick-nav.card { border: none; box-shadow: 0 6px 18px rgba(0,0,0,0.08); border-radius: 12px; overflow: hidden; } .quick-nav .card-header { background: linear-gradient(135deg, var(--primary-color), var(--accent-color)) !important; color: #fff !important; border-radius: 12px 12px 0 0 !important; padding: 0.875rem 1.25rem; } .quick-nav .card-header h5 { margin: 0; font-weight: 700; letter-spacing: .2px; } .quick-nav h6 { color: #2c3e50; font-weight: 700; margin: .75rem 0 .5rem 0; display: flex; align-items: center; gap: .5rem; } .quick-nav .btn { border-width: 2px; font-weight: 600; border-radius: 28px; padding: 10px 16px; display: inline-flex; align-items: center; gap: .35rem; transition: all .15s ease; } .quick-nav .btn i { margin: 0; font-size: .95rem; } .quick-nav .btn:hover { transform: translateY(-1px); box-shadow: 0 6px 12px rgba(0,0,0,.08); } /* subtle background so outline buttons look like chips */ .quick-nav .btn-outline-primary, .quick-nav .btn-outline-success, .quick-nav .btn-outline-info { background-color: #f8f9fa; } /* layout tweaks */ .quick-nav .row { row-gap: .75rem; } @media (max-width: 768px) { .quick-nav .btn { width: 100%; justify-content: center; } } /* WORD FREQUENCY OVERLAP FIX - Force vertical stacking */ .wf-chart-section { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-bottom: 4rem !important; overflow: hidden !important; page-break-inside: avoid !important; } .wf-table-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-top: 4rem !important; overflow: visible !important; page-break-inside: avoid !important; } /* Force chart container to be completely separate */ .wf-chart-section .chart-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin: 0 !important; } .chart-container { display: block !important; width: 100% !important; height: auto !important; min-height: auto !important; max-height: none !important; margin: 1.5rem 0 !important; position: static !important; z-index: auto !important; clear: both !important; overflow: visible !important; } .chart-container img, .chart-container canvas, .chart-container svg { display: block !important; width: 100% !important; max-width: 100% !important; height: auto !important; margin: 0 auto !important; } /* Kill all floats in word frequency section */ .wf-table-container .table-responsive { float: none !important; clear: both !important; display: block !important; width: 100% !important; position: static !important; } /* POS DISTRIBUTION OVERLAP FIX - Force vertical stacking */ .pos-chart-section { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-bottom: 3rem !important; overflow: hidden !important; page-break-inside: avoid !important; } .pos-table-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-top: 3rem !important; overflow: visible !important; page-break-inside: avoid !important; } /* Force POS chart container to be completely separate */ .pos-chart-section .chart-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin: 0 !important; } /* ENTITY DISTRIBUTION OVERLAP FIX - Force vertical stacking */ .entity-chart-section { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-bottom: 3rem !important; overflow: hidden !important; page-break-inside: avoid !important; } .entity-table-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-top: 3rem !important; overflow: visible !important; page-break-inside: avoid !important; } /* Force entity chart container to be completely separate */ .entity-chart-section .chart-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin: 0 !important; } /* Entity Badge Styling for Better Visibility */ .entity-badge { display: inline-block !important; padding: 0.5rem 0.75rem !important; margin: 0.2rem !important; border-radius: 8px !important; font-size: 0.9rem !important; font-weight: 600 !important; text-shadow: 1px 1px 2px rgba(0,0,0,0.5) !important; border: 2px solid #ffffff !important; box-shadow: 0 3px 6px rgba(0,0,0,0.3) !important; transition: all 0.2s ease !important; cursor: help !important; } .entity-badge:hover { transform: translateY(-1px) !important; box-shadow: 0 4px 8px rgba(0,0,0,0.4) !important; } /* Ensure entity text container has clean white background */ .entity-text-container { background-color: #ffffff !important; padding: 1.5rem !important; border-radius: 8px !important; border: 1px solid #dee2e6 !important; line-height: 2 !important; margin: 1rem 0 !important; box-shadow: 0 2px 4px rgba(0,0,0,0.05) !important; } /* POS Legend Button Styling */ .pos-legend-buttons { margin: 1rem 0; } .pos-legend-buttons .btn { font-weight: 700 !important; border-radius: 8px !important; padding: 0.875rem 2.5rem !important; margin: 0 0.5rem; transition: all 0.3s ease; box-shadow: 0 4px 12px rgba(0,0,0,0.2) !important; font-size: 1.1rem !important; } /* Active button - white background with dark text for high contrast */ .pos-legend-buttons .btn.active { background-color: #ffffff !important; color: #1a365d !important; border: 3px solid #ffffff !important; transform: none; box-shadow: 0 4px 16px rgba(0,0,0,0.3) !important; } /* Inactive button - dark background with white text */ .pos-legend-buttons .btn:not(.active) { background-color: rgba(0,0,0,0.3) !important; color: #ffffff !important; border: 3px solid rgba(255,255,255,0.5) !important; } .pos-legend-buttons .btn:hover { transform: translateY(-2px) !important; box-shadow: 0 6px 20px rgba(0,0,0,0.3) !important; } /* Ensure text is always visible */ .pos-legend-buttons .btn.active:hover { color: #1a365d !important; background-color: #f8f9fa !important; } .pos-legend-buttons .btn:not(.active):hover { background-color: rgba(0,0,0,0.5) !important; color: #ffffff !important; border-color: #ffffff !important; } .pos-tags-section { animation: fadeIn 0.3s ease-in; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* SENTIMENT ANALYSIS METHOD CARDS - Modern Design */ .sentiment-method-card { border: none !important; border-radius: 16px !important; box-shadow: 0 8px 32px rgba(0,0,0,0.1) !important; overflow: hidden !important; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important; position: relative !important; } .sentiment-method-card:hover { transform: translateY(-8px) !important; box-shadow: 0 16px 48px rgba(0,0,0,0.15) !important; } /* Method Header with Gradients */ .method-header { padding: 2rem 1.5rem 1rem !important; text-align: center !important; position: relative !important; color: white !important; } .vader-card .method-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; } .distilbert-card .method-header { background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%) !important; } .roberta-card .method-header { background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%) !important; } .method-icon { width: 80px !important; height: 80px !important; border-radius: 50% !important; background: rgba(255,255,255,0.2) !important; display: flex !important; align-items: center !important; justify-content: center !important; margin: 0 auto 1rem !important; backdrop-filter: blur(10px) !important; } .method-icon i { font-size: 2.5rem !important; color: white !important; } .method-title { font-size: 1.5rem !important; font-weight: 700 !important; margin: 0 0 0.5rem 0 !important; color: white !important; text-shadow: 2px 2px 4px rgba(0,0,0,0.3) !important; } .method-subtitle { font-size: 0.9rem !important; opacity: 1 !important; margin: 0 !important; font-weight: 500 !important; color: white !important; text-shadow: 1px 1px 2px rgba(0,0,0,0.3) !important; } /* Method Body */ .method-body { padding: 1.5rem !important; background: white !important; color: #333333 !important; } .method-description { font-size: 0.95rem !important; color: #6c757d !important; margin-bottom: 1.5rem !important; line-height: 1.6 !important; } .method-features { display: flex !important; flex-direction: column !important; gap: 0.75rem !important; } .feature-item { display: flex !important; align-items: center !important; gap: 0.75rem !important; } .feature-item i { color: #28a745 !important; font-size: 0.9rem !important; flex-shrink: 0 !important; } .feature-item span { font-size: 0.9rem !important; color: #495057 !important; font-weight: 500 !important; } /* Responsive adjustments */ @media (max-width: 768px) { .method-header { padding: 1.5rem 1rem 0.75rem !important; } .method-icon { width: 60px !important; height: 60px !important; } .method-icon i { font-size: 2rem !important; } .method-title { font-size: 1.25rem !important; } } /* SENTIMENT ANALYSIS OVERLAP FIX - Force vertical stacking */ .emotion-chart-section, .sentence-chart-section { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-bottom: 3rem !important; overflow: hidden !important; page-break-inside: avoid !important; } .emotion-result-container, .sentence-analysis-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin-top: 3rem !important; overflow: visible !important; page-break-inside: avoid !important; } /* Force sentiment chart containers to be completely separate */ .emotion-chart-section .chart-container, .sentence-chart-section .chart-container { display: block !important; width: 100% !important; float: none !important; clear: both !important; position: static !important; margin: 0 !important; } /* Stats cards - high contrast in light mode */ .stats-card { background: #eef5ff !important; /* light blue background for readability */ border: 1px solid #d6e4ff !important; color: #0b3d91 !important; box-shadow: 0 4px 12px rgba(0,0,0,.06) !important; min-height: 110px; } /* Force dark text for all children in light mode */ .stats-card *, .stats-card .card-body *, .stats-card .card-body { color: #0b3d91 !important; } .stats-card .card-body { background: transparent !important; display: flex; flex-direction: column; align-items: center; justify-content: center; } .stats-card h3 { font-size: 2rem !important; margin: 0 0 .25rem 0 !important; } .stats-card p, .stats-card .card-title { font-weight: 700 !important; margin: 0 !important; opacity: 1; } /* Dark mode variant keeps white text on gradient */ [data-theme="dark"] .stats-card { background: linear-gradient(135deg, var(--primary-color), var(--accent-color)) !important; border: none !important; color: #fff !important; } [data-theme="dark"] .stats-card *, [data-theme="dark"] .stats-card .card-body * { color: #fff !important; } /* Quick Navigation button color fixes */ .quick-nav .btn-outline-primary { color: #0d6efd; border-color: #0d6efd; } .quick-nav .btn-outline-primary:hover, .quick-nav .btn-outline-primary:focus, .quick-nav .btn-outline-primary:active { color: #fff; background-color: #0d6efd; border-color: #0d6efd; box-shadow: none; } .quick-nav .btn-outline-success { color: #198754; border-color: #198754; } .quick-nav .btn-outline-success:hover, .quick-nav .btn-outline-success:focus, .quick-nav .btn-outline-success:active { color: #fff; background-color: #198754; border-color: #198754; box-shadow: none; } .quick-nav .btn-outline-info { color: #0dcaf0; border-color: #0dcaf0; } .quick-nav .btn-outline-info:hover, .quick-nav .btn-outline-info:focus, .quick-nav .btn-outline-info:active { color: #0b2a2f; background-color: #0dcaf0; border-color: #0dcaf0; box-shadow: none; } /* Ensure readable default text color on chip background */ .quick-nav .btn { color: inherit; } /* Quick Nav title color fixes */ .quick-nav .card-header { background: transparent !important; /* keep card bg */ color: #0d6efd !important; /* visible in light mode */ border-bottom: 2px solid rgba(13,110,253,.15) !important; } [data-theme="dark"] .quick-nav .card-header { color: #ffffff !important; border-bottom: 2px solid rgba(255,255,255,.2) !important; } /* Dark mode quick navigation fixes */ [data-theme="dark"] .quick-nav .card { background-color: rgba(255,255,255,0.1) !important; border: 1px solid rgba(255,255,255,0.2) !important; } [data-theme="dark"] .quick-nav .btn-outline-primary { color: #6ea8fe !important; border-color: #6ea8fe !important; background-color: rgba(110,168,254,0.1) !important; } [data-theme="dark"] .quick-nav .btn-outline-primary:hover, [data-theme="dark"] .quick-nav .btn-outline-primary:focus, [data-theme="dark"] .quick-nav .btn-outline-primary:active { color: #000 !important; background-color: #6ea8fe !important; border-color: #6ea8fe !important; } [data-theme="dark"] .quick-nav .btn-outline-success { color: #75b798 !important; border-color: #75b798 !important; background-color: rgba(117,183,152,0.1) !important; } [data-theme="dark"] .quick-nav .btn-outline-success:hover, [data-theme="dark"] .quick-nav .btn-outline-success:focus, [data-theme="dark"] .quick-nav .btn-outline-success:active { color: #000 !important; background-color: #75b798 !important; border-color: #75b798 !important; } [data-theme="dark"] .quick-nav .btn-outline-info { color: #6edff6 !important; border-color: #6edff6 !important; background-color: rgba(110,223,246,0.1) !important; } [data-theme="dark"] .quick-nav .btn-outline-info:hover, [data-theme="dark"] .quick-nav .btn-outline-info:focus, [data-theme="dark"] .quick-nav .btn-outline-info:active { color: #000 !important; background-color: #6edff6 !important; border-color: #6edff6 !important; }