192 lines
9.4 KiB
CSS
192 lines
9.4 KiB
CSS
body { font-family: -apple-system, Segoe UI, sans-serif; font-size: 13px; width: 420px; margin: 0; padding: 8px; background: #1a1a1a; color: #ddd; }
|
|
#header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
|
|
#search-bar { display: flex; gap: 4px; margin-bottom: 6px; }
|
|
#search-bar input { flex: 1; background: #0d0d0d; color: #ddd; border: 1px solid #444; border-radius: 3px; padding: 4px 8px; font-size: 12px; font-family: Consolas, monospace; box-sizing: border-box; min-width: 0; }
|
|
#search-bar input:focus { outline: none; border-color: #6ec1ff; }
|
|
#search-bar button { padding: 3px 8px; font-size: 12px; }
|
|
#header strong { font-size: 14px; }
|
|
#header-controls { display: flex; align-items: center; gap: 6px; }
|
|
#mode-toggle { display: flex; border: 1px solid #444; border-radius: 3px; overflow: hidden; background: #181818; }
|
|
#mode-toggle button {
|
|
border: 0;
|
|
border-right: 1px solid #444;
|
|
border-radius: 0;
|
|
background: #222;
|
|
color: #888;
|
|
padding: 3px 7px;
|
|
width: 48px;
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.4px;
|
|
text-align: center;
|
|
}
|
|
#mode-toggle button:last-child { border-right: 0; }
|
|
#mode-toggle button:hover { background: #2a2a2a; color: #ddd; }
|
|
#mode-toggle button.active {
|
|
background: #1a2a3a;
|
|
color: #6ec1ff;
|
|
}
|
|
#mode-toggle button.active[data-mode="cache"] {
|
|
background: #1a3a1a;
|
|
color: #afa;
|
|
}
|
|
#pause-scan {
|
|
width: 28px;
|
|
height: 24px;
|
|
padding: 0;
|
|
font-size: 12px;
|
|
line-height: 22px;
|
|
}
|
|
#pause-scan.paused {
|
|
background: #3a2f13;
|
|
border-color: #66551f;
|
|
color: #ffdd77;
|
|
}
|
|
button { background: #333; color: #ddd; border: 1px solid #555; border-radius: 3px; padding: 3px 8px; cursor: pointer; font-size: 12px; }
|
|
button:hover { background: #444; }
|
|
button.scanning { background: #3a1a1a; border-color: #722; color: #faa; }
|
|
button.scanning:hover { background: #4a1a1a; }
|
|
#status { padding: 8px 10px; border-radius: 3px; background: #222; margin-bottom: 6px; font-size: 13px; display: flex; align-items: center; gap: 8px; }
|
|
#status.hit { background: #1e3a1e; color: #afa; }
|
|
#status.miss { background: #3a1e1e; color: #faa; }
|
|
#status.err { background: #3a3a1e; color: #ffa; }
|
|
#status.loading { background: #1a2a3a; color: #6ec1ff; }
|
|
#status .spinner {
|
|
width: 14px; height: 14px; border-radius: 50%;
|
|
border: 2px solid rgba(110, 193, 255, 0.25);
|
|
border-top-color: #6ec1ff;
|
|
animation: spin 0.7s linear infinite;
|
|
flex-shrink: 0;
|
|
}
|
|
@keyframes spin { to { transform: rotate(360deg); } }
|
|
@keyframes pulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 0.9; } }
|
|
#output .skeleton {
|
|
background: #161616;
|
|
border: 1px solid #2a2a2a;
|
|
border-radius: 4px;
|
|
padding: 10px;
|
|
margin-bottom: 6px;
|
|
animation: pulse 1.2s ease-in-out infinite;
|
|
}
|
|
#output .skeleton .bar { height: 10px; background: #2a2a2a; border-radius: 2px; margin: 4px 0; }
|
|
#output .skeleton .bar.short { width: 50%; }
|
|
#output .skeleton .bar.long { width: 90%; }
|
|
#output .skeleton .bar.tiny { width: 30%; height: 8px; }
|
|
#output { background: #0d0d0d; padding: 6px; border-radius: 3px; margin: 0; color: #bbb; }
|
|
#output:empty { display: none; }
|
|
#output .hit { background: #161616; border: 1px solid #2a2a2a; border-radius: 4px; padding: 10px; margin-bottom: 6px; }
|
|
#output > *:last-child, #output .hit:last-child { margin-bottom: 0; }
|
|
#output .hit > *:first-child { margin-top: 0; }
|
|
#output .hit > *:last-child { margin-bottom: 0; }
|
|
#output .hit .file { color: #fff; font-weight: 600; font-size: 13px; word-break: break-all; margin: 0 0 4px; }
|
|
#output .hit .path { color: #aaa; font-size: 13px; font-family: Consolas, monospace; word-break: break-all; margin: 0 0 6px; line-height: 1.45; }
|
|
#output .hit .plabel { color: #555; font-weight: 600; }
|
|
#output .hit .meta { display: flex; align-items: center; gap: 8px; font-size: 11px; line-height: 1; }
|
|
#output .hit .size { color: #6ec1ff; font-weight: 600; }
|
|
#output .hit .src { background: #2a2a1a; color: #ffcc44; padding: 1px 6px; border-radius: 10px; font-size: 10px; font-weight: 600; letter-spacing: 0.3px; }
|
|
#output .hit .src.source { background: #1a3a1a; color: #66dd66; }
|
|
#output .hit .src.catalog { background: #1a2a3a; color: #66bbff; }
|
|
#output .hit .reason { background: #202a32; color: #9dccff; border: 1px solid #314453; padding: 1px 6px; border-radius: 10px; font-size: 10px; font-weight: 600; }
|
|
#output .empty { color: #888; font-style: italic; padding: 6px; }
|
|
#output .no-match-detail { font-style: normal; line-height: 1.45; background:#17170f; border:1px solid #3d3a1f; border-radius:4px; margin-bottom:6px; color:#bcb58a; }
|
|
#output .no-match-detail strong { display:block; color:#ffe08a; font-size:11px; margin-bottom:2px; }
|
|
#output .err { color: #faa; font-family: Consolas, monospace; white-space: pre-wrap; padding: 4px; }
|
|
#output .setup-guide { background:#17170f; border:1px solid #4a4420; border-radius:4px; color:#ffdd77; padding:9px; line-height:1.45; margin-bottom:6px; }
|
|
#output .setup-guide strong { display:block; color:#fff0a5; margin-bottom:3px; }
|
|
#output .setup-guide .detail { color:#bcb58a; font-size:11px; }
|
|
#output .setup-guide .actions { display:flex; gap:6px; margin-top:7px; }
|
|
#output .setup-guide button { font-size:11px; padding:3px 7px; }
|
|
#output .timings {
|
|
color: #777;
|
|
font-family: Consolas, monospace;
|
|
font-size: 10px;
|
|
padding: 4px 2px 0;
|
|
}
|
|
.timing-strip {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 6px;
|
|
margin-top: 6px;
|
|
padding: 7px 6px;
|
|
background: #111;
|
|
border: 1px solid #262626;
|
|
border-radius: 4px;
|
|
}
|
|
.timing-metric {
|
|
min-width: 0;
|
|
text-align: center;
|
|
}
|
|
.timing-label {
|
|
color: #666;
|
|
font-size: 9px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.5px;
|
|
line-height: 1.2;
|
|
}
|
|
.timing-value {
|
|
color: #aaa;
|
|
font-family: Consolas, monospace;
|
|
font-size: 11px;
|
|
line-height: 1.35;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
#filter-bar { display: flex; gap: 4px; margin-bottom: 4px; flex-wrap: wrap; }
|
|
.filter-chip { background: #1e1e1e; border: 1px solid #444; color: #aaa; border-radius: 10px; padding: 2px 8px; font-size: 11px; cursor: pointer; }
|
|
.filter-chip:hover { background: #2a2a2a; }
|
|
.filter-chip.active { background: #1a2a3a; border-color: #6ec1ff; color: #6ec1ff; }
|
|
#history-bar { display: flex; align-items: flex-start; gap: 4px; margin-bottom: 6px; }
|
|
#history-chips { display: flex; flex-wrap: wrap; gap: 4px; flex: 1; min-width: 0; }
|
|
.history-chip { background: #1a1a2a; border: 1px solid #334; color: #88aaff; border-radius: 10px; padding: 2px 8px; font-size: 11px; font-family: Consolas, monospace; cursor: pointer; white-space: nowrap; }
|
|
.history-chip:hover { background: #22223a; border-color: #557; }
|
|
#history-clear { background: none; border: none; color: #555; font-size: 13px; cursor: pointer; padding: 2px 4px; flex-shrink: 0; }
|
|
#history-clear:hover { color: #aaa; }
|
|
#cache-banner { background: #2a2500; border: 1px solid #554400; color: #ffcc44; font-size: 11px; padding: 4px 8px; border-radius: 3px; margin-bottom: 6px; line-height: 1.45; }
|
|
#cache-banner.no-cache { background: #1a1a2a; border-color: #334; color: #88aaff; }
|
|
#actions { margin-top: 8px; display: flex; gap: 6px; align-items: center; }
|
|
#actions #ping { margin-left: auto; }
|
|
#actions #delete-btn { margin-left: auto; }
|
|
|
|
/* Modal row — same look as result cards */
|
|
#modal-list .hit {
|
|
background: #161616;
|
|
border: 1px solid #2a2a2a;
|
|
border-radius: 4px;
|
|
padding: 10px;
|
|
margin-bottom: 6px;
|
|
cursor: pointer;
|
|
transition: background 0.1s, border-color 0.1s;
|
|
}
|
|
#modal-list .hit:last-child { margin-bottom: 0; }
|
|
#modal-list .hit:hover { background: #1e1e1e; border-color: #444; }
|
|
#modal-list .hit.selected { background: #3a1e1e; border-color: #722; }
|
|
#modal-list .hit .file { color: #fff; font-weight: 600; font-size: 13px; word-break: break-all; margin: 0 0 4px; }
|
|
#modal-list .hit .path { color: #aaa; font-size: 13px; font-family: Consolas, monospace; word-break: break-all; margin: 0 0 6px; line-height: 1.45; }
|
|
#modal-list .hit .plabel { color: #555; font-weight: 600; }
|
|
#modal-list .hit .meta { display: flex; align-items: center; gap: 8px; font-size: 11px; line-height: 1; }
|
|
#modal-list .hit .size { color: #6ec1ff; font-weight: 600; }
|
|
#modal-list .hit .src { background: #2a2a1a; color: #ffcc44; padding: 1px 6px; border-radius: 10px; font-size: 10px; font-weight: 600; letter-spacing: 0.3px; }
|
|
#modal-list .hit .src.source { background: #1a3a1a; color: #66dd66; }
|
|
#modal-list .hit .src.catalog { background: #1a2a3a; color: #66bbff; }
|
|
#status:not(.loading) + #output:empty + #actions,
|
|
#status + #output:empty + #actions { margin-top: 0; }
|
|
|
|
/* Undo modal entries */
|
|
#undo-list .undo-entry {
|
|
background: #161616;
|
|
border: 1px solid #2a2a2a;
|
|
border-radius: 4px;
|
|
padding: 10px;
|
|
margin-bottom: 6px;
|
|
}
|
|
#undo-list .undo-entry:last-child { margin-bottom: 0; }
|
|
#undo-list .undo-entry .file { color: #fff; font-weight: 600; font-size: 13px; word-break: break-all; margin: 0 0 4px; }
|
|
#undo-list .undo-entry .path { color: #aaa; font-size: 11px; font-family: Consolas, monospace; word-break: break-all; margin: 0 0 3px; line-height: 1.4; }
|
|
#undo-list .undo-entry .plabel { color: #555; font-weight: 600; }
|
|
#undo-list .undo-meta { display: flex; align-items: center; justify-content: space-between; margin-top: 4px; }
|
|
#undo-list .undo-age { color: #777; font-size: 10px; }
|
|
#undo-list .undo-row-btn { background: #1a2a1a; border: 1px solid #3a5a3a; color: #66dd66; border-radius: 3px; padding: 2px 8px; font-size: 11px; cursor: pointer; }
|
|
#undo-list .undo-row-btn:hover { background: #243a24; }
|
|
#undo-list .undo-row-btn:disabled { opacity: 0.5; cursor: default; }
|