.photo-stream-grid {
    columns: 4;
    column-gap: 8px;
}

.photo-stream-item {
    break-inside: avoid;
    margin-bottom: 8px;
}

.photo-stream-item img {
    width: 100%;
    border-radius: 4px;
    cursor: pointer;
    transition: opacity 0.2s;
    display: block;
}

.photo-stream-item img:hover {
    opacity: 0.85;
}

.photo-stream-item.is-loading img {
    opacity: 0;
}

.photo-stream-item.is-loaded img {
    animation: fadeIn 0.3s ease;
}

.photo-stream-loader {
    height: 1px;
    margin-top: 2rem;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 1024px) {
    .photo-stream-grid {
        columns: 3;
    }
}

@media (max-width: 768px) {
    .photo-stream-grid {
        columns: 2;
        column-gap: 6px;
    }

    .photo-stream-item {
        margin-bottom: 6px;
    }
}
