fix(local-library): hover ring above img, scrollbar height + style match

Three follow-ups from the 2026-05-12 user call:

  - Hover ring on AlbumCardLibraryLite was set up as a
    `.cover-wrap::after` pseudo with a transparent → accent border,
    but the cover `<img>` lives at `z-index: 1` while the pseudo
    inherited `auto` z-index — so the img painted on top of the
    ring. `z-index: 2` on the pseudo lifts it above the artwork.

  - Scrollbar in `.grid-pool` and `.virtual-container` was styled at
    10px wide with a non-standard track / thumb / hover palette,
    which read as a one-off vs the global `::-webkit-scrollbar`
    rule in app.css. Aligned to the app convention: 8px, transparent
    track, `var(--bg-tertiary)` thumb with `border-radius: 9999px`,
    `var(--text-muted)` on hover. `scrollbar-width: thin` for the
    standard property path.

  - `.album-sections.virtualized { height: calc(100vh - 280px) }`
    over-extended past the NowPlayingBar (104px) once the scrollbar
    was forced always visible — the gutter ran to viewport bottom
    instead of ending at the player. Bumped to `100vh - 360px` so
    the scroll area ends where the player starts.

cc
This commit is contained in:
vicrodh committed 2026-05-12 15:32:57 -06:00
1 parent 87d1692663
commit 4bc1b0faea
4 files changed
+33 -17

No files matched your search

+10 -8
View File
@@ -393,23 +393,25 @@
position: relative;
/* Force the scrollbar visible (some WebKitGTK builds default to
overlay scrollbars that only paint on active hover). Standard
`scrollbar-*` + pseudo-elements for cross-config safety. */
scrollbar-width: auto;
scrollbar-color: var(--text-muted) var(--bg-secondary);
`scrollbar-*` + pseudo-elements for cross-config safety.
Values match the global app.css scrollbar styling. */
scrollbar-width: thin;
scrollbar-color: var(--bg-tertiary) transparent;
}
.virtual-container::-webkit-scrollbar {
width: 10px;
width: 8px;
height: 8px;
}
.virtual-container::-webkit-scrollbar-track {
background: var(--bg-secondary);
background: transparent;
}
.virtual-container::-webkit-scrollbar-thumb {
background: var(--text-muted);
border-radius: 5px;
background: var(--bg-tertiary);
border-radius: 9999px;
}
.virtual-container::-webkit-scrollbar-thumb:hover {
background: var(--text-primary);
background: var(--text-muted);
}
.virtual-content {
@@ -8014,7 +8014,13 @@
.album-sections.virtualized {
flex: 1;
height: calc(100vh - 280px); /* Adjust based on header/controls height */
/* `100vh - 280` over-extended past the NowPlayingBar (104px tall
at the bottom) once we forced the scrollbar always visible —
the bar ran to viewport-bottom instead of ending at the player.
Bumped subtraction to 360 to clear the player + controls
above the grid; the min-height keeps the area reasonable on
small windows. */
height: calc(100vh - 360px);
min-height: 400px;
}
@@ -319,6 +319,11 @@
border-radius: 8px;
pointer-events: none;
box-sizing: border-box;
/* The cover img sits at z-index: 1 (set below). The pseudo's
implicit auto z-index would put it BELOW the img, hiding the
border ring under the artwork on hover. z-index: 2 lifts it
above the img so the accent border is actually visible. */
z-index: 2;
}
.card:hover .cover-wrap::after {
+11 -8
View File
@@ -215,23 +215,26 @@
/* Belt-and-suspenders: the standard `scrollbar-*` properties +
the `::-webkit-scrollbar*` pseudo-elements below. Some
WebKitGTK builds honour one but not the other depending on
overlay-scrollbar settings, so we set both. */
scrollbar-width: auto;
scrollbar-color: var(--text-muted) var(--bg-secondary);
overlay-scrollbar settings, so we set both. Values match the
global app.css scrollbar styling so the bar reads as part of
the app and not a one-off. */
scrollbar-width: thin;
scrollbar-color: var(--bg-tertiary) transparent;
}
.grid-pool::-webkit-scrollbar {
width: 10px;
width: 8px;
height: 8px;
}
.grid-pool::-webkit-scrollbar-track {
background: var(--bg-secondary);
background: transparent;
}
.grid-pool::-webkit-scrollbar-thumb {
background: var(--text-muted);
border-radius: 5px;
background: var(--bg-tertiary);
border-radius: 9999px;
}
.grid-pool::-webkit-scrollbar-thumb:hover {
background: var(--text-primary);
background: var(--text-muted);
}
.grid-spacer {