Files
feishin/src/renderer/components/item-card/item-card.module.css
T
2025-12-28 02:43:31 -08:00

196 lines
3.7 KiB
CSS

.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 {
@mixin dark {
&::before {
opacity: 0.7;
}
}
@mixin light {
&::before {
opacity: 0.5;
}
}
}
}
.image-container.is-round {
border-radius: 50%;
}
.favorite-badge {
position: absolute;
top: -50px;
left: -50px;
width: 80px;
height: 80px;
pointer-events: none;
background-color: var(--theme-colors-primary);
box-shadow: 0 0 10px 8px rgb(0 0 0 / 80%);
opacity: 1;
transform: rotate(-45deg);
transition: opacity 0.2s ease-in-out;
}
.rating-badge {
position: absolute;
top: var(--theme-spacing-sm);
right: var(--theme-spacing-sm);
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
padding: var(--theme-spacing-xs) var(--theme-spacing-sm);
font-size: var(--theme-font-size-md);
font-weight: 600;
color: var(--theme-colors-foreground);
text-shadow: 0 1px 2px rgb(0 0 0 / 80%);
pointer-events: none;
background-color: var(--theme-colors-primary);
border-radius: var(--theme-radius-md);
box-shadow: 0 2px 8px rgb(0 0 0 / 50%);
opacity: 1;
transition: opacity 0.2s ease-in-out;
}
.image-container:hover .favorite-badge,
.image-container:hover .rating-badge {
opacity: 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.bold {
font-weight: 500;
}
.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);
background-color: alpha(var(--theme-colors-background), 0.5);
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);
}