| |
|
|
| |
| :root { |
| --primary-color: #007bff; |
| --secondary-color: #6c757d; |
| --success-color: #28a745; |
| --danger-color: #dc3545; |
| --warning-color: #ffc107; |
| --info-color: #17a2b8; |
| --light-color: #f8f9fa; |
| --dark-color: #343a40; |
| --epitope-b-color: #ff6b6b; |
| --epitope-t-color: #4ecdc4; |
| } |
|
|
| body { |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; |
| line-height: 1.6; |
| color: #333; |
| } |
|
|
| |
| .navbar-brand { |
| font-weight: bold; |
| font-size: 1.5rem; |
| } |
|
|
| .navbar-brand img { |
| transition: transform 0.3s ease; |
| } |
|
|
| .navbar-brand:hover img { |
| transform: scale(1.05); |
| } |
|
|
| .navbar-nav .nav-link { |
| font-weight: 500; |
| transition: color 0.3s ease; |
| } |
|
|
| .navbar-nav .nav-link:hover { |
| color: rgba(255, 255, 255, 0.8) !important; |
| } |
|
|
| |
| .logo-header { |
| max-height: 80px; |
| width: auto; |
| transition: transform 0.3s ease; |
| } |
|
|
| .logo-header:hover { |
| transform: scale(1.02); |
| } |
|
|
| .logo-footer { |
| max-height: 40px; |
| width: auto; |
| filter: brightness(0.9); |
| transition: filter 0.3s ease; |
| } |
|
|
| .logo-footer:hover { |
| filter: brightness(1.1); |
| } |
|
|
| |
| .bg-light { |
| background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) !important; |
| } |
|
|
| .display-6 { |
| font-weight: 600; |
| color: var(--dark-color); |
| } |
|
|
| .lead { |
| font-size: 1.1rem; |
| } |
|
|
| |
| .card { |
| border: none; |
| border-radius: 10px; |
| transition: transform 0.2s ease, box-shadow 0.2s ease; |
| } |
|
|
| .card:hover { |
| transform: translateY(-2px); |
| box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1) !important; |
| } |
|
|
| .card-header { |
| border-radius: 10px 10px 0 0 !important; |
| font-weight: 600; |
| border-bottom: none; |
| } |
|
|
| .card-body { |
| padding: 1.5rem; |
| } |
|
|
| |
| .form-control { |
| border-radius: 8px; |
| border: 2px solid #e9ecef; |
| transition: border-color 0.3s ease, box-shadow 0.3s ease; |
| } |
|
|
| .form-control:focus { |
| border-color: var(--primary-color); |
| box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); |
| } |
|
|
| textarea.form-control { |
| resize: vertical; |
| min-height: 120px; |
| } |
|
|
| .form-label { |
| font-weight: 600; |
| color: var(--dark-color); |
| margin-bottom: 0.75rem; |
| } |
|
|
| .form-text { |
| font-size: 0.875rem; |
| color: var(--secondary-color); |
| } |
|
|
| |
| .btn { |
| border-radius: 8px; |
| font-weight: 500; |
| padding: 0.5rem 1.5rem; |
| transition: all 0.3s ease; |
| border: none; |
| } |
|
|
| .btn-lg { |
| padding: 0.75rem 2rem; |
| font-size: 1.1rem; |
| } |
|
|
| .btn-primary { |
| background: linear-gradient(135deg, #007bff 0%, #0056b3 100%); |
| box-shadow: 0 4px 15px rgba(0, 123, 255, 0.3); |
| } |
|
|
| .btn-primary:hover { |
| background: linear-gradient(135deg, #0056b3 0%, #004085 100%); |
| transform: translateY(-1px); |
| box-shadow: 0 6px 20px rgba(0, 123, 255, 0.4); |
| } |
|
|
| .btn-success { |
| background: linear-gradient(135deg, #28a745 0%, #1e7e34 100%); |
| box-shadow: 0 4px 15px rgba(40, 167, 69, 0.3); |
| } |
|
|
| .btn-success:hover { |
| background: linear-gradient(135deg, #1e7e34 0%, #155724 100%); |
| transform: translateY(-1px); |
| box-shadow: 0 6px 20px rgba(40, 167, 69, 0.4); |
| } |
|
|
| .btn-outline-secondary { |
| border: 2px solid var(--secondary-color); |
| color: var(--secondary-color); |
| } |
|
|
| .btn-outline-secondary:hover { |
| background-color: var(--secondary-color); |
| border-color: var(--secondary-color); |
| transform: translateY(-1px); |
| } |
|
|
| |
| .alert { |
| border-radius: 8px; |
| border: none; |
| font-weight: 500; |
| } |
|
|
| .alert-info { |
| background: linear-gradient(135deg, #d1ecf1 0%, #bee5eb 100%); |
| color: #0c5460; |
| } |
|
|
| .alert-success { |
| background: linear-gradient(135deg, #d4edda 0%, #c3e6cb 100%); |
| color: #155724; |
| } |
|
|
| .alert-danger { |
| background: linear-gradient(135deg, #f8d7da 0%, #f5c6cb 100%); |
| color: #721c24; |
| } |
|
|
| |
| .sequence-display { |
| font-family: 'Courier New', 'Monaco', 'Menlo', monospace; |
| font-size: 14px; |
| line-height: 1.6; |
| word-break: break-all; |
| background: #f8f9fa; |
| padding: 20px; |
| border-radius: 8px; |
| border: 2px solid #e9ecef; |
| max-height: 300px; |
| overflow-y: auto; |
| white-space: pre-wrap; |
| } |
|
|
| .epitope-b { |
| background-color: var(--epitope-b-color); |
| color: white; |
| padding: 2px 3px; |
| border-radius: 3px; |
| font-weight: bold; |
| margin: 0 1px; |
| } |
|
|
| .epitope-t { |
| background-color: var(--epitope-t-color); |
| color: white; |
| padding: 2px 3px; |
| border-radius: 3px; |
| font-weight: bold; |
| margin: 0 1px; |
| } |
|
|
| .non-epitope { |
| color: var(--secondary-color); |
| opacity: 0.7; |
| } |
|
|
| |
| .confidence-bar { |
| height: 20px; |
| background: linear-gradient(90deg, #dc3545 0%, #ffc107 50%, #28a745 100%); |
| border-radius: 10px; |
| position: relative; |
| overflow: hidden; |
| box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1); |
| } |
|
|
| .confidence-indicator { |
| position: absolute; |
| top: 0; |
| left: 0; |
| height: 100%; |
| background: rgba(255, 255, 255, 0.4); |
| border-radius: 10px; |
| transition: width 0.3s ease; |
| box-shadow: 0 0 10px rgba(255, 255, 255, 0.5); |
| } |
|
|
| |
| .table { |
| border-radius: 8px; |
| overflow: hidden; |
| box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); |
| } |
|
|
| .table thead th { |
| background-color: var(--light-color); |
| border-bottom: 2px solid #dee2e6; |
| font-weight: 600; |
| color: var(--dark-color); |
| } |
|
|
| .table tbody tr { |
| transition: background-color 0.2s ease; |
| } |
|
|
| .table tbody tr:hover { |
| background-color: rgba(0, 123, 255, 0.05); |
| } |
|
|
| |
| .form-range { |
| height: 8px; |
| background: linear-gradient(90deg, #dc3545 0%, #ffc107 50%, #28a745 100%); |
| border-radius: 4px; |
| outline: none; |
| } |
|
|
| .form-range::-webkit-slider-thumb { |
| width: 20px; |
| height: 20px; |
| background: #007bff; |
| border-radius: 50%; |
| border: 3px solid white; |
| box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); |
| cursor: pointer; |
| transition: transform 0.2s ease; |
| } |
|
|
| .form-range::-webkit-slider-thumb:hover { |
| transform: scale(1.1); |
| } |
|
|
| .form-range::-moz-range-thumb { |
| width: 20px; |
| height: 20px; |
| background: #007bff; |
| border-radius: 50%; |
| border: 3px solid white; |
| box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); |
| cursor: pointer; |
| } |
|
|
| |
| .badge { |
| font-size: 0.8rem; |
| padding: 0.5rem 0.75rem; |
| border-radius: 20px; |
| } |
|
|
| |
| .modal-content { |
| border-radius: 10px; |
| border: none; |
| box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); |
| } |
|
|
| .modal-header { |
| border-bottom: 2px solid #e9ecef; |
| background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); |
| border-radius: 10px 10px 0 0; |
| } |
|
|
| .modal-title { |
| font-weight: 600; |
| color: var(--dark-color); |
| } |
|
|
| |
| pre { |
| background: #f8f9fa; |
| border: 2px solid #e9ecef; |
| border-radius: 8px; |
| padding: 1rem; |
| font-size: 0.9rem; |
| line-height: 1.4; |
| } |
|
|
| code { |
| color: #e83e8c; |
| font-size: 0.9rem; |
| } |
|
|
| |
| footer { |
| background: linear-gradient(135deg, #343a40 0%, #212529 100%) !important; |
| } |
|
|
| footer h5 { |
| color: #fff; |
| font-weight: 600; |
| } |
|
|
| footer p { |
| color: #adb5bd; |
| } |
|
|
| |
| @media (max-width: 768px) { |
| .display-6 { |
| font-size: 1.5rem; |
| } |
| |
| .lead { |
| font-size: 1rem; |
| } |
| |
| .card-body { |
| padding: 1rem; |
| } |
| |
| .sequence-display { |
| font-size: 12px; |
| padding: 15px; |
| } |
| |
| .btn-lg { |
| padding: 0.6rem 1.5rem; |
| font-size: 1rem; |
| } |
| |
| .logo-header { |
| max-height: 60px; |
| } |
| |
| .navbar-brand img { |
| height: 25px; |
| } |
| } |
|
|
| @media (max-width: 576px) { |
| .container { |
| padding-left: 15px; |
| padding-right: 15px; |
| } |
| |
| .sequence-display { |
| font-size: 11px; |
| padding: 10px; |
| max-height: 200px; |
| } |
| |
| .table-responsive { |
| font-size: 0.875rem; |
| } |
| |
| .logo-header { |
| max-height: 50px; |
| } |
| |
| .navbar-brand img { |
| height: 20px; |
| } |
| |
| .logo-footer { |
| max-height: 30px; |
| } |
| } |
|
|
| |
| .spinner-border-sm { |
| width: 1rem; |
| height: 1rem; |
| } |
|
|
| |
| .shadow-sm { |
| box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08) !important; |
| } |
|
|
| .text-monospace { |
| font-family: 'Courier New', 'Monaco', 'Menlo', monospace !important; |
| } |
|
|
| |
| .epitope-card { |
| transition: all 0.3s ease; |
| } |
|
|
| .epitope-card:hover { |
| transform: translateY(-3px); |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15) !important; |
| } |
|
|
| |
| .sequence-display::-webkit-scrollbar { |
| width: 8px; |
| } |
|
|
| .sequence-display::-webkit-scrollbar-track { |
| background: #f1f1f1; |
| border-radius: 4px; |
| } |
|
|
| .sequence-display::-webkit-scrollbar-thumb { |
| background: #c1c1c1; |
| border-radius: 4px; |
| } |
|
|
| .sequence-display::-webkit-scrollbar-thumb:hover { |
| background: #a8a8a8; |
| } |
|
|