diff --git a/public/style.css b/public/style.css index ee42fe07..ea0e803a 100644 --- a/public/style.css +++ b/public/style.css @@ -106,7 +106,7 @@ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible .nav-brand { display: flex; align-items: center; gap: 8px; text-decoration: none; color: var(--nav-text); font-weight: 700; font-size: 16px; } .brand-icon { font-size: 20px; } .live-dot { - width: 8px; height: 8px; border-radius: 50%; background: #555; + width: 8px; height: 8px; border-radius: 50%; background: var(--text-muted); display: inline-block; margin-left: 4px; transition: background .3s; } @keyframes pulse-ring { @@ -125,7 +125,7 @@ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible } .nav-link:hover { color: var(--nav-text); } .nav-link.active { - color: #fff; + color: var(--nav-text); border-bottom-color: transparent; background: rgba(74, 158, 255, 0.15); border-radius: 6px; @@ -136,7 +136,7 @@ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible .nav-dropdown { position: relative; } .dropdown-menu { display: none; position: absolute; top: 100%; left: 0; - background: var(--nav-bg2); border: 1px solid #333; border-radius: 6px; + background: var(--nav-bg2); border: 1px solid var(--border); border-radius: 6px; min-width: 140px; padding: 4px 0; box-shadow: 0 8px 24px rgba(0,0,0,.4); } .nav-dropdown:hover .dropdown-menu { display: block; } @@ -147,14 +147,14 @@ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible .nav-right { display: flex; align-items: center; gap: 8px; } .nav-btn { - background: none; border: 1px solid #444; color: var(--nav-text-muted); padding: 6px 12px; + background: none; border: 1px solid var(--border); color: var(--nav-text-muted); padding: 6px 12px; border-radius: 6px; cursor: pointer; font-size: 14px; transition: all .15s; min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; } -.nav-btn:hover { background: #333; color: var(--nav-text); } +.nav-btn:hover { background: var(--nav-bg2); color: var(--nav-text); } /* === Nav Stats === */ .nav-stats { - display: flex; gap: 12px; align-items: center; font-size: 12px; color: #94a3b8; + display: flex; gap: 12px; align-items: center; font-size: 12px; color: var(--nav-text-muted); font-family: var(--mono); margin-right: 4px; } .nav-stats .stat-val { color: var(--nav-text); font-weight: 600; transition: color 0.3s ease; } @@ -263,7 +263,7 @@ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible .badge-region { display: inline-block; padding: 2px 6px; border-radius: 4px; font-size: 10px; font-weight: 700; font-family: var(--mono); - background: var(--nav-bg); color: #fff; letter-spacing: .5px; + background: var(--nav-bg); color: var(--nav-text); letter-spacing: .5px; } .badge-obs { display: inline-block; padding: 1px 6px; border-radius: 10px; @@ -324,7 +324,7 @@ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible width: 100%; border-collapse: collapse; font-size: 11px; margin-bottom: 12px; } .field-table th { - text-align: left; padding: 6px 8px; background: var(--nav-bg); color: #fff; + text-align: left; padding: 6px 8px; background: var(--nav-bg); color: var(--nav-text); font-size: 11px; text-transform: uppercase; letter-spacing: .3px; } .field-table td { @@ -651,7 +651,7 @@ button.ch-item.selected { background: var(--selected-bg); } border-radius: 4px; font-family: var(--mono); font-size: 12px; font-weight: 600; } .trace-path-arrow { color: var(--text-muted); font-size: 16px; } -.trace-path-label { color: #94a3b8; font-size: 12px; font-style: italic; } +.trace-path-label { color: var(--text-muted); font-size: 12px; font-style: italic; } .trace-path-info { font-size: 12px; color: var(--text-muted); } /* Timeline */ @@ -686,7 +686,7 @@ button.ch-item.selected { background: var(--selected-bg); } ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; } -::-webkit-scrollbar-thumb:hover { background: #94a3b8; } +::-webkit-scrollbar-thumb:hover { background: var(--text-muted); } /* === Observers Page === */ .observers-page { padding: 20px; max-width: 1200px; margin: 0 auto; overflow-y: auto; height: calc(100vh - 56px); } @@ -1239,7 +1239,7 @@ button.ch-item.ch-item-encrypted .ch-badge { filter: grayscale(0.6); } .subpath-selfloop td:first-child::after { content: ''; } /* Hop prefix in subpath routes */ -.hop-prefix { color: #9ca3af; font-size: 0.8em; } +.hop-prefix { color: var(--text-muted); font-size: 0.8em; } /* Subpath split layout */ .subpath-layout { display: flex; gap: 0; flex: 1; min-height: 0; overflow: auto; position: relative; } @@ -1247,7 +1247,7 @@ button.ch-item.ch-item-encrypted .ch-badge { filter: grayscale(0.6); } .subpath-detail { width: 420px; min-width: 360px; max-width: 50vw; border-left: 1px solid var(--border, #e5e7eb); overflow-y: auto; padding: 16px; transition: width 0.2s; } .subpath-detail.collapsed { width: 0; min-width: 0; padding: 0; overflow: hidden; border: none; } .subpath-detail-inner h4 { margin: 0 0 4px; word-break: break-word; } -.subpath-meta { display: flex; flex-direction: column; gap: 2px; margin-bottom: 12px; color: #9ca3af; font-size: 0.9em; } +.subpath-meta { display: flex; flex-direction: column; gap: 2px; margin-bottom: 12px; color: var(--text-muted); font-size: 0.9em; } .subpath-section { margin: 16px 0; } .subpath-section h5 { margin: 0 0 6px; font-size: 0.9em; } .subpath-selected { background: var(--accent, #3b82f6) !important; color: #fff; } @@ -1257,7 +1257,7 @@ tr[data-hops]:hover { background: rgba(59,130,246,0.1); } /* Hour distribution chart */ .hour-chart { display: flex; align-items: flex-end; gap: 2px; height: 60px; } .hour-bar { flex: 1; background: var(--accent, #3b82f6); border-radius: 2px 2px 0 0; min-width: 4px; } -.hour-labels { display: flex; justify-content: space-between; font-size: 0.7em; color: #9ca3af; } +.hour-labels { display: flex; justify-content: space-between; font-size: 0.7em; color: var(--text-muted); } /* Parent paths */ .parent-path { padding: 3px 0; border-bottom: 1px solid var(--border, #e5e7eb); } @@ -1277,7 +1277,7 @@ tr[data-hops]:hover { background: rgba(59,130,246,0.1); } /* Subpath jump nav */ .subpath-jump-nav { display: flex; gap: 8px; align-items: center; margin-bottom: 16px; font-size: 0.9em; flex-wrap: wrap; } -.subpath-jump-nav span { color: #9ca3af; } +.subpath-jump-nav span { color: var(--text-muted); } .subpath-jump-nav a { padding: 4px 12px; border-radius: 4px; background: var(--accent, #3b82f6); color: #fff; text-decoration: none; font-size: 0.85em; } .subpath-jump-nav a:hover { opacity: 0.8; }