diff --git a/frontend/src/lib/components/SearchPalette.svelte b/frontend/src/lib/components/SearchPalette.svelte index cf6f348..5670c6d 100644 --- a/frontend/src/lib/components/SearchPalette.svelte +++ b/frontend/src/lib/components/SearchPalette.svelte @@ -271,129 +271,175 @@ position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 9998; - background: rgba(0, 0, 0, 0.5); - backdrop-filter: blur(4px); + background: rgba(0, 0, 0, 0.55); + backdrop-filter: blur(8px) saturate(120%); + -webkit-backdrop-filter: blur(8px) saturate(120%); } .sp-container { position: fixed; - top: 20vh; + top: 18vh; left: 50%; transform: translateX(-50%); z-index: 9999; - width: min(500px, 90vw); - background: var(--color-card); - border: 1px solid var(--color-border); - border-radius: 0.75rem; - box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4); + width: min(640px, 92vw); + background: color-mix(in srgb, var(--color-background) 92%, transparent); + backdrop-filter: blur(28px) saturate(160%); + -webkit-backdrop-filter: blur(28px) saturate(160%); + border: 1px solid var(--color-rule-strong); + border-radius: 18px; + box-shadow: var(--shadow-card), 0 30px 80px -20px rgba(0, 0, 0, 0.6); overflow: hidden; } + .sp-container::after { + content: ''; + position: absolute; + inset: 0; + border-radius: inherit; + pointer-events: none; + background: linear-gradient(180deg, var(--color-highlight), transparent 30%); + opacity: 0.4; + } .sp-input-row { display: flex; align-items: center; - gap: 0.5rem; - padding: 0.75rem 1rem; + gap: 0.65rem; + padding: 0.95rem 1.15rem; border-bottom: 1px solid var(--color-border); color: var(--color-muted-foreground); + position: relative; + z-index: 1; } .sp-input { flex: 1; border: none; outline: none; background: transparent; - font-size: 0.9rem; + font-size: 0.95rem; color: var(--color-foreground); + font-family: var(--font-sans); + letter-spacing: -0.005em; } + .sp-input::placeholder { color: var(--color-muted-foreground); } .sp-kbd { - font-size: 0.6rem; + font-size: 0.62rem; font-family: var(--font-mono); - padding: 0.15rem 0.35rem; - border-radius: 0.25rem; - background: var(--color-muted); - color: var(--color-muted-foreground); + padding: 0.2rem 0.45rem; + border-radius: 6px; + background: var(--color-glass-strong); + color: var(--color-foreground); border: 1px solid var(--color-border); } .sp-results { - max-height: 50vh; + max-height: 52vh; overflow-y: auto; scrollbar-width: thin; - padding: 0.25rem; + padding: 0.35rem; + position: relative; + z-index: 1; } .sp-empty { display: flex; align-items: center; justify-content: center; - gap: 0.5rem; - padding: 2rem; + gap: 0.55rem; + padding: 2.5rem 2rem; color: var(--color-muted-foreground); font-size: 0.85rem; } .sp-group-header { display: flex; align-items: center; - gap: 0.375rem; - padding: 0.375rem 0.75rem; - font-size: 0.65rem; + gap: 0.45rem; + padding: 0.6rem 0.85rem 0.35rem; + font-size: 0.6rem; font-weight: 600; text-transform: uppercase; - letter-spacing: 0.04em; + letter-spacing: 0.16em; color: var(--color-muted-foreground); font-family: var(--font-mono); - margin-top: 0.25rem; + } + .sp-group-header::after { + content: ''; + flex: 1; + height: 1px; + background: var(--color-border); + margin-left: 0.35rem; } .sp-item { display: flex; align-items: center; - gap: 0.5rem; + gap: 0.65rem; width: 100%; - padding: 0.5rem 0.75rem; - border-radius: 0.375rem; - border: none; + padding: 0.55rem 0.85rem; + border-radius: 10px; + border: 1px solid transparent; background: transparent; color: var(--color-foreground); - font-size: 0.85rem; + font-size: 0.88rem; cursor: pointer; text-align: left; - transition: background 0.1s; + transition: background 0.12s, border-color 0.12s; + font-family: var(--font-sans); } .sp-item:hover, .sp-item.sp-active { - background: var(--color-muted); + background: var(--color-glass-strong); + border-color: var(--color-border); + } + .sp-item.sp-active { + background: linear-gradient(135deg, + color-mix(in srgb, var(--color-primary) 14%, transparent), + color-mix(in srgb, var(--color-orchid) 14%, transparent)); + border-color: color-mix(in srgb, var(--color-primary) 40%, var(--color-border)); + box-shadow: inset 0 1px 0 var(--color-highlight); } .sp-item-icon { flex-shrink: 0; color: var(--color-muted-foreground); + width: 28px; height: 28px; + display: grid; place-items: center; + border-radius: 8px; + background: var(--color-glass-strong); + border: 1px solid var(--color-border); } .sp-item.sp-active .sp-item-icon { color: var(--color-primary); + background: var(--color-glass-elev); } .sp-item-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + font-weight: 500; } .sp-item-detail { font-size: 0.7rem; font-family: var(--font-mono); color: var(--color-muted-foreground); - padding: 0.1rem 0.35rem; + padding: 0.12rem 0.5rem; border-radius: 9999px; - background: var(--color-muted); + background: var(--color-glass-strong); + border: 1px solid var(--color-border); white-space: nowrap; } .sp-footer { display: flex; gap: 1rem; - padding: 0.5rem 1rem; + padding: 0.6rem 1.15rem; border-top: 1px solid var(--color-border); font-size: 0.65rem; color: var(--color-muted-foreground); + position: relative; + z-index: 1; + background: var(--color-glass-strong); } .sp-footer kbd { font-family: var(--font-mono); - padding: 0.05rem 0.25rem; - border-radius: 0.2rem; - background: var(--color-muted); + padding: 0.1rem 0.35rem; + border-radius: 5px; + background: var(--color-glass); border: 1px solid var(--color-border); - font-size: 0.6rem; + font-size: 0.62rem; + color: var(--color-foreground); } diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 506cb6a..284a760 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -367,16 +367,16 @@