.container { position: relative; display: flex; flex-direction: column; width: 100%; padding: var(--theme-spacing-md); overflow: hidden; user-select: none; background-color: var(--theme-colors-surface); border-radius: var(--theme-radius-md); } .container.selected { outline: 2px solid var(--theme-colors-primary); outline-offset: var(--card-gap, var(--theme-spacing-md)); } .container.dragging { opacity: 0.5; } .image-container { position: relative; display: block; width: 100%; aspect-ratio: 1; overflow: hidden; color: inherit; text-decoration: none; &::before { position: absolute; top: 0; left: 0; width: 100%; height: 100%; content: ''; background-color: rgb(0 0 0); opacity: 0; transition: all 0.2s ease-in-out; } &:hover { &::before { opacity: 0.7; } } } .image-container.is-round { &::before { border-radius: 50%; } } .favorite-badge { position: absolute; top: 0; left: 0; z-index: 2; width: 0; height: 0; pointer-events: none; border-color: var(--theme-colors-primary) transparent transparent transparent; border-style: solid; border-width: 24px 24px 0 0; } .image { width: 100%; height: 100%; object-fit: var(--theme-image-fit); } .image.is-round { border-radius: 50%; } .detail-container { display: flex; flex-direction: column; gap: var(--theme-spacing-xs); width: 100%; min-width: 0; max-width: 100%; padding-top: var(--theme-spacing-sm); overflow: hidden; } .row { display: block; width: 100%; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; a { display: inline; max-width: 100%; color: inherit; cursor: pointer; &:hover { text-decoration: underline; } } } .row.muted { color: var(--theme-colors-foreground-muted); } .row.align-start { text-align: left; } .row.align-center { text-align: center; } .row.align-end { text-align: right; } .container.poster { padding: 0; background-color: inherit; } .container.compact { position: relative; padding: 0; } .detail-container.compact { position: absolute; bottom: 0; left: 0; width: 100%; padding: var(--theme-spacing-xs); text-shadow: 0 1px 2px rgb(0 0 0 / 80%); background-color: rgb(0 0 0 / 50%); backdrop-filter: blur(2px); transform: translateY(0); transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out; } .image-container:hover .detail-container.compact { opacity: 0; transform: translateY(100%); } .row.muted.compact { color: var(--theme-colors-foreground); }