/* Cards with an uploaded label image — used in sessions, batches, places, etc.
   Pairs with markup that sets --label-url on the card and contains
   .card-label-thumb (the sharp 88px square) and .card-label-row/.card-label-body. */

.has-label {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}
.has-label::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: var(--label-url);
    background-size: cover;
    background-position: center;
    filter: blur(34px) saturate(1.4);
    opacity: 0.22;
    z-index: -2;
    transform: scale(1.2);
    transition: opacity var(--transition), transform var(--transition);
}
.has-label::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0) 0%, var(--color-bg-surface) 80%);
    z-index: -1;
}
.has-label:hover::before {
    opacity: 0.32;
    transform: scale(1.25);
}

.card-label-row {
    display: flex;
    gap: var(--space-3);
    align-items: flex-start;
}
.card-label-thumb {
    flex: 0 0 88px;
    width: 88px;
    aspect-ratio: 1 / 1;
    background-size: cover;
    background-position: center;
    border-radius: var(--radius-md);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.08) inset;
    transform: rotate(-2deg);
    transition: transform var(--transition);
}
.has-label:hover .card-label-thumb {
    transform: rotate(0deg) scale(1.04);
}
.card-label-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}
