diff --git a/app/templates/content/manage_playlist_content.html b/app/templates/content/manage_playlist_content.html index 57849df..0e9695e 100644 --- a/app/templates/content/manage_playlist_content.html +++ b/app/templates/content/manage_playlist_content.html @@ -39,7 +39,11 @@ .content-grid { display: grid; - grid-template-columns: 2fr 1fr; + /* minmax(0, …) is required: a bare `2fr 1fr` track has an automatic + min-content floor, so the long, unbreakable media filenames in the + Add Content card forced the track wider than the viewport and gave + the whole page a horizontal scrollbar. */ + grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 20px; } @@ -87,6 +91,56 @@ display: flex; justify-content: space-between; align-items: center; + gap: 12px; + /* On a narrow viewport the thumbnail + name + button no longer fit on + one line; wrapping drops the Add button below instead of squeezing + the name under it. */ + flex-wrap: wrap; + } + + /* Left group: thumbnail + name/size. min-width:0 lets long names ellipsise + instead of pushing the Add button out of the card. */ + .avail-main { + display: flex; + align-items: center; + gap: 12px; + min-width: 0; + } + .avail-thumb { + width: 52px; + height: 52px; + flex: 0 0 auto; + border-radius: 6px; + overflow: hidden; + background: #e9ecef; + border: 1px solid #dee2e6; + display: flex; + align-items: center; + justify-content: center; + font-size: 22px; + line-height: 1; + } + .avail-thumb img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + } + .avail-info { + min-width: 0; + } + .avail-name { + font-size: 14px; + /* Long media filenames carry the meaningful part at the END + (…_slide_003.png), so breaking mid-word is better than ellipsis, + which would hide the distinguishing characters. `anywhere` allows + breaks inside the unbroken run and keeps min-content width tiny. */ + overflow-wrap: anywhere; + word-break: break-word; + } + .avail-meta { + font-size: 12px; + color: #999; } /* Audio toggle styles */ @@ -215,6 +269,15 @@ body.dark-mode .available-content { color: #e2e8f0; } + + body.dark-mode .avail-thumb { + background: #2d3748; + border-color: #4a5568; + } + + body.dark-mode .avail-meta { + color: #a0aec0; + } /* Dark mode for duration spinner */ body.dark-mode .duration-display { @@ -428,21 +491,32 @@