| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
|
|
| .toast-stack { |
| position: fixed; |
| top: 24px; |
| right: 24px; |
| display: flex; |
| flex-direction: column; |
| gap: 12px; |
| z-index: 2000; |
| } |
|
|
| .toast { |
| min-width: 260px; |
| background: #ffffff; |
| border-radius: 12px; |
| border: 1px solid var(--ui-border); |
| padding: 14px 18px; |
| box-shadow: var(--ui-shadow); |
| display: flex; |
| gap: 12px; |
| align-items: center; |
| animation: toast-in 220ms ease; |
| } |
|
|
| .toast.success { border-color: rgba(22, 163, 74, 0.4); } |
| .toast.error { border-color: rgba(220, 38, 38, 0.4); } |
| .toast.info { border-color: rgba(37, 99, 235, 0.4); } |
|
|
| .toast strong { |
| font-size: 0.95rem; |
| color: var(--ui-text); |
| } |
|
|
| .toast small { |
| color: var(--ui-text-muted); |
| display: block; |
| } |
|
|
| @keyframes toast-in { |
| from { opacity: 0; transform: translateY(-10px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
|
|
| |
|
|
| .loading-indicator { |
| display: inline-flex; |
| align-items: center; |
| gap: 10px; |
| color: var(--ui-text-muted); |
| font-size: 0.9rem; |
| } |
|
|
| .loading-indicator::before { |
| content: ""; |
| width: 14px; |
| height: 14px; |
| border: 2px solid var(--ui-border); |
| border-top-color: var(--ui-primary); |
| border-radius: 50%; |
| animation: spin 0.8s linear infinite; |
| } |
|
|
| @keyframes spin { |
| to { transform: rotate(360deg); } |
| } |
|
|
| .fade-in { |
| animation: fade 250ms ease; |
| } |
|
|
| @keyframes fade { |
| from { opacity: 0; } |
| to { opacity: 1; } |
| } |
|
|
| |
|
|
| .badge { |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| padding: 4px 12px; |
| border-radius: 999px; |
| font-size: 0.8rem; |
| letter-spacing: 0.06em; |
| text-transform: uppercase; |
| border: 1px solid transparent; |
| } |
|
|
| .badge.info { |
| color: var(--ui-primary); |
| border-color: var(--ui-primary); |
| background: rgba(37, 99, 235, 0.08); |
| } |
|
|
| .badge.success { |
| color: var(--ui-success); |
| border-color: rgba(22, 163, 74, 0.3); |
| background: rgba(22, 163, 74, 0.08); |
| } |
|
|
| .badge.warning { |
| color: var(--ui-warning); |
| border-color: rgba(217, 119, 6, 0.3); |
| background: rgba(217, 119, 6, 0.08); |
| } |
|
|
| .badge.danger { |
| color: var(--ui-danger); |
| border-color: rgba(220, 38, 38, 0.3); |
| background: rgba(220, 38, 38, 0.08); |
| } |
|
|
| .badge.source-fallback { |
| border-color: rgba(220, 38, 38, 0.3); |
| color: var(--ui-danger); |
| background: rgba(220, 38, 38, 0.06); |
| } |
|
|
| .badge.source-live { |
| border-color: rgba(22, 163, 74, 0.3); |
| color: var(--ui-success); |
| background: rgba(22, 163, 74, 0.08); |
| } |
|
|
| |
|
|
| .empty-state { |
| padding: 20px; |
| border-radius: 12px; |
| text-align: center; |
| border: 1px dashed var(--ui-border); |
| color: var(--ui-text-muted); |
| background: #fff; |
| } |
|
|
| |
|
|
| .ws-stream { |
| display: flex; |
| flex-direction: column; |
| gap: 12px; |
| max-height: 300px; |
| overflow-y: auto; |
| } |
|
|
| .stream-item { |
| border: 1px solid var(--ui-border); |
| border-radius: 12px; |
| padding: 12px 14px; |
| background: var(--ui-panel-muted); |
| } |
|
|
| |
|
|
| .alert { |
| border-radius: 12px; |
| padding: 12px 16px; |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| } |
|
|
| .alert.info { |
| background: rgba(37, 99, 235, 0.08); |
| color: var(--ui-primary); |
| border: 1px solid rgba(37, 99, 235, 0.2); |
| } |
|
|
| .alert.success { |
| background: rgba(22, 163, 74, 0.08); |
| color: var(--ui-success); |
| border: 1px solid rgba(22, 163, 74, 0.2); |
| } |
|
|
| .alert.warning { |
| background: rgba(217, 119, 6, 0.08); |
| color: var(--ui-warning); |
| border: 1px solid rgba(217, 119, 6, 0.2); |
| } |
|
|
| .alert.danger, |
| .alert.error { |
| background: rgba(220, 38, 38, 0.08); |
| color: var(--ui-danger); |
| border: 1px solid rgba(220, 38, 38, 0.2); |
| } |
|
|