@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .meshcore-stream-status-text { color: var(--app-text); font-weight: 500; } .meshcore-view-switch { .btn { border-color: rgba(173, 205, 255, 0.45); color: var(--app-text); } .btn.btn-primary { background: rgba(90, 146, 255, 0.5); border-color: rgba(173, 205, 255, 0.75); } .btn:hover, .btn:focus { color: #ffffff; border-color: rgba(225, 237, 255, 0.8); } } .meshcore-btn-icon { display: inline-flex; align-items: center; gap: 0.25rem; .meshcore-icon { font-size: 1rem; width: 1rem; height: 1rem; } } .meshcore-node-type-cell { display: flex; align-items: center; justify-content: center; padding: 0.25rem !important; border: none !important; .meshcore-node-type-icon { display: inline-flex; align-items: center; justify-content: center; svg { font-size: 1.125rem; width: 1.125rem; height: 1.125rem; color: black; } } } .meshcore-table-card, .meshcore-detail-card { background: rgba(8, 24, 56, 0.5); border: 1px solid rgba(173, 205, 255, 0.2); color: var(--app-text); } .meshcore-table-header { background: rgba(27, 56, 108, 0.45); border-bottom: 1px solid rgba(173, 205, 255, 0.2); color: var(--app-text); font-weight: 600; } .meshcore-table-body { height: 100%; min-height: 0; display: flex; flex-direction: column; } .meshcore-filters { background: rgba(13, 36, 82, 0.6); padding: 0.75rem !important; } .meshcore-filter-dropdown { .meshcore-dropdown-toggle { border-color: rgba(173, 205, 255, 0.35) !important; color: var(--app-text) !important; font-size: 0.875rem; padding: 0.375rem 0.75rem !important; display: inline-flex; align-items: center; gap: 0.25rem; white-space: nowrap; &:hover, &:focus { background: rgba(90, 146, 255, 0.2) !important; border-color: rgba(173, 205, 255, 0.6) !important; color: #ffffff !important; } svg { width: 1rem; height: 1rem; transition: transform 0.2s ease; } &[aria-expanded='true'] svg { transform: rotate(180deg); } } .meshcore-dropdown-menu { background: rgba(8, 24, 56, 0.95); border-color: rgba(173, 205, 255, 0.25); min-width: 200px; .meshcore-dropdown-item { padding: 0.5rem 1rem; color: var(--app-text); &:hover { background: rgba(90, 146, 255, 0.2); } .form-check { margin-bottom: 0; } .form-check-input { background: rgba(8, 24, 56, 0.8); border-color: rgba(173, 205, 255, 0.3); cursor: pointer; &:checked { background: rgba(90, 146, 255, 0.6); border-color: rgba(173, 205, 255, 0.75); } &:focus { border-color: rgba(173, 205, 255, 0.5); box-shadow: 0 0 0 0.25rem rgba(90, 146, 255, 0.25); } } .form-check-label { color: var(--app-text); cursor: pointer; margin-bottom: 0; } } .dropdown-divider { border-color: rgba(173, 205, 255, 0.2); } } } .meshcore-checkbox-group { display: flex; flex-direction: column; gap: 0.5rem; max-height: 200px; overflow-y: auto; padding-right: 0.25rem; &::-webkit-scrollbar { width: 6px; } &::-webkit-scrollbar-track { background: rgba(173, 205, 255, 0.05); border-radius: 3px; } &::-webkit-scrollbar-thumb { background: rgba(173, 205, 255, 0.2); border-radius: 3px; &:hover { background: rgba(173, 205, 255, 0.4); } } } .meshcore-filter-check { font-size: 0.875rem; .form-check-input { background: rgba(8, 24, 56, 0.8); border-color: rgba(173, 205, 255, 0.25); cursor: pointer; &:checked { background: rgba(90, 146, 255, 0.6); border-color: rgba(173, 205, 255, 0.75); } &:focus { border-color: rgba(173, 205, 255, 0.5); box-shadow: 0 0 0 0.25rem rgba(90, 146, 255, 0.25); } } .form-check-label { color: var(--app-text); cursor: pointer; margin-bottom: 0; } } .meshcore-table-scroll { height: 100%; max-height: 100%; overflow-y: auto; } .meshcore-table { color: var(--app-text); thead th { position: sticky; top: 0; z-index: 2; background: rgba(13, 36, 82, 0.95); border-color: rgba(173, 205, 255, 0.18); color: var(--app-text); } td { border-color: rgba(173, 205, 255, 0.12); vertical-align: middle; } tr.is-selected td { background: rgba(102, 157, 255, 0.16); } tr.meshcore-packet-green td { border-left: 3px solid #22c55e; &:nth-child(4) svg { color: #22c55e !important; } &:nth-child(5) { color: #22c55e; font-weight: 500; } } tr.meshcore-packet-purple td { border-left: 3px solid #a855f7; &:nth-child(4) svg { color: #a855f7 !important; } &:nth-child(5) { color: #a855f7; font-weight: 500; } } tr.meshcore-packet-amber td { border-left: 3px solid #f59e0b; &:nth-child(4) svg { color: #f59e0b !important; } &:nth-child(5) { color: #f59e0b; font-weight: 500; } } } .meshcore-hash-button { appearance: none; border: 0; background: transparent; color: #b8d1ff; font-family: monospace; padding: 0; &:hover { color: #f2f7ff; text-decoration: underline; } } .meshcore-expand-button { appearance: none; border: 0; background: transparent; color: #b8d1ff; padding: 0; margin: 0; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: color 0.15s ease-in-out; &:hover { color: #f2f7ff; } svg { transition: transform 0.2s ease-in-out; } } .meshcore-duplicate-badge { display: inline-block; margin-left: 0.375rem; padding: 0.125rem 0.375rem; font-size: 0.6875rem; font-weight: 600; color: #b8d1ff; background: rgba(102, 157, 255, 0.16); border: 1px solid rgba(173, 205, 255, 0.25); border-radius: 0.25rem; } .meshcore-duplicate-row { td { border-color: rgba(173, 205, 255, 0.08); background: rgba(13, 36, 82, 0.2); font-size: 0.875rem; color: var(--app-text-muted); } } .meshcore-detail-stack { overflow-y: auto; padding-right: 0.25rem; } .meshcore-fact-row { display: grid; grid-template-columns: 120px 1fr; gap: 8px; padding: 4px 0; } .meshcore-fact-label { color: var(--app-text-muted); } .meshcore-fact-value { color: var(--app-text); word-break: break-all; } .meshcore-message-item { padding: 0.75rem; border: 1px solid rgba(173, 205, 255, 0.12); border-radius: 0.375rem; background: rgba(13, 36, 82, 0.3); color: var(--app-text); } .meshcore-message-sender { color: #b8d1ff; } .meshcore-message-text { color: var(--app-text); word-break: break-word; line-height: 1.5; } .meshcore-hash-code { font-family: monospace; color: #82aeff; font-size: 0.8125rem; word-break: break-all; } .meshcore-map-view { min-height: 0; } .meshcore-map-canvas { position: relative; width: 100%; min-height: 220px; border: 1px solid rgba(173, 205, 255, 0.25); border-radius: 0.5rem; background: radial-gradient(circle at 20% 20%, rgba(130, 174, 255, 0.18), transparent 45%), linear-gradient(180deg, rgba(13, 35, 79, 0.9), rgba(8, 24, 56, 0.9)); overflow: hidden; } .meshcore-map-dot { position: absolute; width: 10px; height: 10px; border-radius: 50%; background: #a8c9ff; box-shadow: 0 0 10px rgba(168, 201, 255, 0.9); transform: translate(-50%, -50%); }