Download static/css/custom.css from dn-scribe/attstore: direct link, hf CLI and curl.
- Browser
- Download file 10.5 kB
-
https://huggingface.co/spaces/dn-scribe/attstore/resolve/main/static/css/custom.css
- Command line
-
hf download hf://spaces/dn-scribe/attstore/static/css/custom.css
-
curl -L -o custom.css https://huggingface.co/spaces/dn-scribe/attstore/resolve/main/static/css/custom.css
10.5 kB
| /* Custom lock icon colors for attestation page */ | |
| .icon-lock-locked { | |
| color: #4fc3f7 ; /* Light blue */ | |
| } | |
| .icon-lock-unlocked { | |
| color: #ba68c8 ; /* Purple */ | |
| } | |
| /* Custom CSS for Attestation Store */ | |
| /* Root variables for consistency */ | |
| :root { | |
| --as-primary: #0066cc; | |
| --as-secondary: #6c757d; | |
| --as-success: #198754; | |
| --as-danger: #dc3545; | |
| --as-warning: #ffc107; | |
| --as-info: #0dcaf0; | |
| --as-light: #f8f9fa; | |
| --as-dark: #212529; | |
| --as-border-radius: 0.375rem; | |
| --as-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); | |
| --as-transition: all 0.2s ease-in-out; | |
| } | |
| /* Reserve space for feather icons to prevent layout shift */ | |
| [data-feather] { | |
| width: 1em; | |
| height: 1em; | |
| display: inline-block; | |
| vertical-align: -.125em; | |
| } | |
| /* Large feather icon (e.g., empty state, spinner) */ | |
| .icon-lg[data-feather] { | |
| width: 4rem; | |
| height: 4rem; | |
| } | |
| /* Global styles */ | |
| body { | |
| font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; | |
| line-height: 1.6; | |
| } | |
| /* Custom navbar styles */ | |
| .navbar-brand { | |
| font-weight: 600; | |
| display: flex; | |
| align-items: center; | |
| } | |
| .navbar-brand svg { | |
| width: 24px; | |
| height: 24px; | |
| } | |
| /* Content spacing */ | |
| .container { | |
| padding-top: 1rem; | |
| padding-bottom: 1rem; | |
| } | |
| /* Reserve space for logs table to prevent CLS */ | |
| #logsContainer { | |
| min-height: 400px; | |
| } | |
| /* Reserve space for stat cards */ | |
| .card .card-body.text-center { | |
| min-height: 80px; | |
| } | |
| /* Card enhancements */ | |
| .card { | |
| border: none; | |
| box-shadow: var(--as-box-shadow); | |
| transition: var(--as-transition); | |
| } | |
| .card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1); | |
| } | |
| .card-header { | |
| background: transparent; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.125); | |
| } | |
| /* Button enhancements */ | |
| .btn { | |
| border-radius: var(--as-border-radius); | |
| transition: var(--as-transition); | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.25rem; | |
| } | |
| .btn svg { | |
| width: 16px; | |
| height: 16px; | |
| } | |
| .btn-group .btn svg { | |
| width: 14px; | |
| height: 14px; | |
| } | |
| .btn-sm svg { | |
| width: 14px; | |
| height: 14px; | |
| } | |
| .btn-lg svg { | |
| width: 20px; | |
| height: 20px; | |
| } | |
| /* Table enhancements */ | |
| .table { | |
| font-size: 0.875rem; | |
| } | |
| .table th { | |
| border-top: none; | |
| font-weight: 600; | |
| color: var(--bs-secondary-color); | |
| text-transform: uppercase; | |
| font-size: 0.75rem; | |
| letter-spacing: 0.05em; | |
| } | |
| .table-hover tbody tr:hover { | |
| background-color: rgba(255, 255, 255, 0.05); | |
| } | |
| /* Badge enhancements */ | |
| .badge { | |
| font-weight: 500; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.25rem; | |
| color: #212529 ; /* dark text, keep original background */ | |
| } | |
| /* Ensure badge text stays dark in dark mode */ | |
| .badge svg { | |
| width: 12px; | |
| height: 12px; | |
| } | |
| /* Alert enhancements */ | |
| .alert { | |
| border: none; | |
| border-radius: var(--as-border-radius); | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 0.5rem; | |
| } | |
| .alert svg { | |
| width: 20px; | |
| height: 20px; | |
| flex-shrink: 0; | |
| margin-top: 2px; | |
| } | |
| /* Modal enhancements */ | |
| .modal-content { | |
| border: none; | |
| box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.175); | |
| } | |
| .modal-header { | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.125); | |
| } | |
| .modal-footer { | |
| border-top: 1px solid rgba(255, 255, 255, 0.125); | |
| } | |
| /* Form enhancements */ | |
| .form-control:focus, | |
| .form-select:focus { | |
| box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.25); | |
| border-color: #0dcaf0; | |
| } | |
| .form-label { | |
| font-weight: 500; | |
| margin-bottom: 0.25rem; | |
| } | |
| /* File input custom styling */ | |
| .file-info { | |
| font-size: 0.8rem; | |
| padding: 0.5rem; | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--as-border-radius); | |
| border: 1px dashed rgba(255, 255, 255, 0.25); | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .file-info svg { | |
| width: 16px; | |
| height: 16px; | |
| color: var(--bs-info); | |
| } | |
| /* Spinner and loading states */ | |
| .spinner-border-sm { | |
| width: 1rem; | |
| height: 1rem; | |
| } | |
| .btn-loading { | |
| position: relative; | |
| pointer-events: none; | |
| } | |
| .btn-loading::before { | |
| content: ''; | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| width: 1rem; | |
| height: 1rem; | |
| border: 2px solid currentColor; | |
| border-right-color: transparent; | |
| border-radius: 50%; | |
| animation: spin 0.75s linear infinite; | |
| } | |
| @keyframes spin { | |
| to { | |
| transform: translate(-50%, -50%) rotate(360deg); | |
| } | |
| } | |
| /* Code and pre styling */ | |
| pre { | |
| font-size: 0.8rem; | |
| line-height: 1.4; | |
| max-height: 300px; | |
| overflow-y: auto; | |
| } | |
| code { | |
| font-size: 0.85em; | |
| color: var(--bs-info); | |
| } | |
| /* JSON Editor container styling */ | |
| #json-editor-container { | |
| position: relative; | |
| margin-bottom: 10px; | |
| } | |
| #json-resize-handle { | |
| position: absolute; | |
| bottom: -10px; | |
| right: -10px; | |
| width: 20px; | |
| height: 20px; | |
| background-color: var(--bs-purple, #6f42c1); | |
| border-radius: 4px; | |
| cursor: nwse-resize; | |
| z-index: 1000; | |
| box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); | |
| transition: transform 0.2s ease-in-out, background-color 0.2s ease-in-out; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| overflow: hidden; | |
| } | |
| #json-resize-handle::before { | |
| content: ''; | |
| width: 14px; | |
| height: 14px; | |
| background-image: linear-gradient(135deg, | |
| transparent 0%, transparent 40%, | |
| rgba(255, 255, 255, 0.7) 40%, rgba(255, 255, 255, 0.7) 50%, | |
| transparent 50%, transparent 75%, | |
| rgba(255, 255, 255, 0.7) 75%, rgba(255, 255, 255, 0.7) 85%, | |
| transparent 85%); | |
| } | |
| #json-resize-handle:hover { | |
| transform: scale(1.1); | |
| background-color: #7952b3; | |
| } | |
| /* Pagination enhancements */ | |
| .pagination .page-link { | |
| border: none; | |
| color: var(--bs-secondary-color); | |
| transition: var(--as-transition); | |
| } | |
| .pagination .page-item.active .page-link { | |
| background-color: var(--bs-primary); | |
| border-color: var(--bs-primary); | |
| } | |
| .pagination .page-link:hover { | |
| color: var(--bs-primary); | |
| background-color: rgba(255, 255, 255, 0.1); | |
| } | |
| /* Progress bars */ | |
| .progress { | |
| height: 0.5rem; | |
| border-radius: var(--as-border-radius); | |
| } | |
| /* Status indicators */ | |
| .status-indicator { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| display: inline-block; | |
| margin-right: 0.5rem; | |
| } | |
| .status-indicator.online { | |
| background-color: var(--as-success); | |
| animation: pulse 2s infinite; | |
| } | |
| .status-indicator.offline { | |
| background-color: var(--as-danger); | |
| } | |
| .status-indicator.warning { | |
| background-color: var(--as-warning); | |
| } | |
| @keyframes pulse { | |
| 0% { | |
| box-shadow: 0 0 0 0 rgba(25, 135, 84, 0.7); | |
| } | |
| 70% { | |
| box-shadow: 0 0 0 8px rgba(25, 135, 84, 0); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(25, 135, 84, 0); | |
| } | |
| } | |
| /* Log severity colors */ | |
| .severity-emergency, | |
| .severity-alert, | |
| .severity-critical, | |
| .severity-error { | |
| color: var(--as-danger); | |
| font-weight: 600; | |
| } | |
| .severity-warning { | |
| color: var(--as-warning); | |
| font-weight: 500; | |
| } | |
| .severity-notice, | |
| .severity-info { | |
| color: var(--as-info); | |
| } | |
| .severity-debug { | |
| color: var(--as-secondary); | |
| } | |
| /* Truncated text with hover expansion */ | |
| .text-truncate-hover { | |
| cursor: pointer; | |
| transition: var(--as-transition); | |
| } | |
| .text-truncate-hover:hover { | |
| white-space: normal; | |
| overflow: visible; | |
| text-overflow: unset; | |
| } | |
| /* Copy button for code blocks */ | |
| .code-container { | |
| position: relative; | |
| } | |
| .code-copy-btn { | |
| position: absolute; | |
| top: 0.5rem; | |
| right: 0.5rem; | |
| z-index: 10; | |
| opacity: 0; | |
| transition: var(--as-transition); | |
| } | |
| .code-container:hover .code-copy-btn { | |
| opacity: 1; | |
| } | |
| /* Empty state styling */ | |
| .empty-state { | |
| padding: 3rem 1rem; | |
| text-align: center; | |
| color: var(--bs-secondary-color); | |
| } | |
| .empty-state svg { | |
| width: 4rem; | |
| height: 4rem; | |
| margin-bottom: 1rem; | |
| opacity: 0.5; | |
| } | |
| /* Search highlight */ | |
| .search-highlight { | |
| background: rgba(255, 193, 7, 0.3); | |
| padding: 0.1rem 0.2rem; | |
| border-radius: 0.2rem; | |
| } | |
| /* Responsive enhancements */ | |
| @media (max-width: 768px) { | |
| .container { | |
| padding-left: 1rem; | |
| padding-right: 1rem; | |
| } | |
| .table-responsive { | |
| font-size: 0.8rem; | |
| } | |
| .btn-group .btn { | |
| padding: 0.25rem 0.5rem; | |
| } | |
| .modal-dialog { | |
| margin: 0.5rem; | |
| } | |
| } | |
| /* Print styles */ | |
| @media print { | |
| .navbar, | |
| .btn, | |
| .pagination, | |
| .modal, | |
| .alert-dismissible .btn-close { | |
| display: none ; | |
| } | |
| .card { | |
| border: 1px solid #dee2e6 ; | |
| box-shadow: none ; | |
| } | |
| .table { | |
| border: 1px solid #dee2e6; | |
| } | |
| .table th, | |
| .table td { | |
| border: 1px solid #dee2e6; | |
| } | |
| } | |
| /* Dark mode specific adjustments */ | |
| [data-bs-theme="dark"] { | |
| .card { | |
| background-color: rgba(255, 255, 255, 0.05); | |
| } | |
| .table-hover tbody tr:hover { | |
| background-color: rgba(255, 255, 255, 0.075); | |
| } | |
| .file-info { | |
| background: rgba(255, 255, 255, 0.1); | |
| border-color: rgba(255, 255, 255, 0.2); | |
| } | |
| .search-highlight { | |
| background: rgba(255, 193, 7, 0.4); | |
| color: #000; | |
| } | |
| } | |
| /* Light mode specific adjustments */ | |
| [data-bs-theme="light"] { | |
| .card { | |
| background-color: #fff; | |
| border: 1px solid rgba(0, 0, 0, 0.125); | |
| } | |
| .table-hover tbody tr:hover { | |
| background-color: rgba(0, 0, 0, 0.075); | |
| } | |
| .file-info { | |
| background: rgba(0, 0, 0, 0.05); | |
| border-color: rgba(0, 0, 0, 0.125); | |
| } | |
| } | |
| /* Custom utilities */ | |
| .text-monospace { | |
| font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; | |
| } | |
| .cursor-pointer { | |
| cursor: pointer; | |
| } | |
| .user-select-all { | |
| user-select: all; | |
| } | |
| .overflow-hidden { | |
| overflow: hidden; | |
| } | |
| .min-vh-50 { | |
| min-height: 50vh; | |
| } | |
| .w-fit { | |
| width: fit-content; | |
| } | |
| /* Animation classes */ | |
| .fade-in { | |
| animation: fadeIn 0.3s ease-in-out; | |
| } | |
| .slide-up { | |
| animation: slideUp 0.3s ease-out; | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes slideUp { | |
| from { | |
| transform: translateY(20px); | |
| opacity: 0; | |
| } | |
| to { | |
| transform: translateY(0); | |
| opacity: 1; | |
| } | |
| } | |
| /* Focus trap for accessibility */ | |
| .focus-trap:focus-within { | |
| outline: 2px solid var(--bs-info); | |
| outline-offset: 2px; | |
| } | |