.toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    background: var(--c-black);
    color: #fff;
    padding: 12px 22px;
    border-radius: 999px;
    font-size: 13px;
    z-index: 100;
    opacity: 0;
    transition: all .25s ease;
    pointer-events: none;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

.spinner {
    width: 16px; height: 16px; border: 2px solid rgba(255,255,255,0.4);
    border-top-color: #fff; border-radius: 50%; display: inline-block;
    animation: spin .6s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.sticky-add-bar { display: none; }
@media (max-width: 768px) {
    .sticky-add-bar.visible { display: flex; }
}

.image-drop-zone {
    border: 2px dashed var(--c-border, #ccc);
    border-radius: 10px;
    padding: 30px;
    text-align: center;
    color: #888;
    cursor: pointer;
    font-size: 13px;
}
.image-drop-zone.dragover { border-color: #17171a; background: #f5f5f5; }
.image-thumb-list { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.image-thumb-item { position: relative; width: 90px; height: 112px; border-radius: 8px; overflow: hidden; border: 1px solid #ddd; cursor: grab; }
.image-thumb-item img { width: 100%; height: 100%; object-fit: cover; }
.image-thumb-item .primary-badge { position: absolute; top: 4px; left: 4px; background: #17171a; color: #fff; font-size: 10px; padding: 2px 6px; border-radius: 4px; }
.image-thumb-item .del-btn { position: absolute; top: 4px; right: 4px; background: rgba(0,0,0,0.6); color: #fff; border: none; width: 20px; height: 20px; border-radius: 50%; font-size: 12px; line-height: 1; }
.image-thumb-item.dragging { opacity: 0.4; }
