Shuya Feng
feat: Implement DP-SGD Explorer web application with Flask backend, interactive frontend, and easy deployment script
6640531
| /* Learning Hub Container */ | |
| .learning-container { | |
| display: flex; | |
| gap: 2rem; | |
| padding: 2rem; | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| } | |
| /* Sidebar Styles */ | |
| .learning-sidebar { | |
| flex: 0 0 300px; | |
| background: #f8f9fa; | |
| border-radius: 8px; | |
| padding: 1.5rem; | |
| box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | |
| height: fit-content; | |
| position: sticky; | |
| top: 2rem; | |
| } | |
| .learning-steps { | |
| list-style: none; | |
| padding: 0; | |
| margin: 1rem 0; | |
| } | |
| .learning-step { | |
| padding: 0.75rem 1rem; | |
| margin: 0.5rem 0; | |
| border-radius: 6px; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| font-size: 0.95rem; | |
| color: #495057; | |
| } | |
| .learning-step:hover { | |
| background: #e9ecef; | |
| color: #212529; | |
| } | |
| .learning-step.active { | |
| background: #007bff; | |
| color: white; | |
| font-weight: 500; | |
| } | |
| /* Content Area Styles */ | |
| .learning-content { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .step-content { | |
| display: none; | |
| animation: fadeIn 0.3s ease; | |
| } | |
| .step-content.active { | |
| display: block; | |
| } | |
| /* Typography */ | |
| .section-title { | |
| font-size: 2.5rem; | |
| color: #212529; | |
| margin-bottom: 2rem; | |
| text-align: center; | |
| } | |
| .panel-title { | |
| font-size: 1.25rem; | |
| color: #343a40; | |
| margin-bottom: 1rem; | |
| } | |
| .step-content h2 { | |
| font-size: 2rem; | |
| color: #212529; | |
| margin-bottom: 1.5rem; | |
| } | |
| .step-content h3 { | |
| font-size: 1.5rem; | |
| color: #343a40; | |
| margin: 2rem 0 1rem; | |
| } | |
| .step-content p { | |
| font-size: 1rem; | |
| line-height: 1.6; | |
| color: #495057; | |
| margin-bottom: 1rem; | |
| } | |
| /* Concept Box Styles */ | |
| .concept-box { | |
| display: flex; | |
| gap: 1.5rem; | |
| margin: 2rem 0; | |
| } | |
| .box1, .box2 { | |
| flex: 1; | |
| background: #f8f9fa; | |
| padding: 1.5rem; | |
| border-radius: 8px; | |
| box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | |
| } | |
| .concept-highlight { | |
| background: #e9ecef; | |
| padding: 1.5rem; | |
| border-radius: 8px; | |
| margin: 1.5rem 0; | |
| border-left: 4px solid #007bff; | |
| } | |
| /* Formula Styles */ | |
| .formula { | |
| background: #f8f9fa; | |
| padding: 1.5rem; | |
| border-radius: 8px; | |
| margin: 1rem 0; | |
| text-align: center; | |
| font-family: 'Times New Roman', serif; | |
| font-size: 1.2rem; | |
| } | |
| /* List Styles */ | |
| .step-content ul, .step-content ol { | |
| padding-left: 1.5rem; | |
| margin: 1rem 0; | |
| } | |
| .step-content li { | |
| margin-bottom: 0.5rem; | |
| color: #495057; | |
| line-height: 1.5; | |
| } | |
| /* Animation */ | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 1024px) { | |
| .learning-container { | |
| flex-direction: column; | |
| } | |
| .learning-sidebar { | |
| flex: none; | |
| position: static; | |
| width: 100%; | |
| } | |
| .concept-box { | |
| flex-direction: column; | |
| } | |
| } | |
| /* Code and Math Styles */ | |
| code { | |
| background: #f8f9fa; | |
| padding: 0.2rem 0.4rem; | |
| border-radius: 4px; | |
| font-family: 'Courier New', monospace; | |
| font-size: 0.9rem; | |
| } | |
| sub { | |
| font-size: 0.75em; | |
| vertical-align: sub; | |
| } | |
| /* Links */ | |
| .step-content a { | |
| color: #007bff; | |
| text-decoration: none; | |
| transition: color 0.2s ease; | |
| } | |
| .step-content a:hover { | |
| color: #0056b3; | |
| text-decoration: underline; | |
| } | |
| /* Strong Text */ | |
| strong { | |
| color: #212529; | |
| font-weight: 600; | |
| } |