/* ============================================================
   DRAG & DROP STYLES - Стили для SortableJS
   ============================================================ */

/* ============================================================
   Курсоры
   ============================================================ */
.card {
    cursor: grab;
    user-select: none;
}

.card:active {
    cursor: grabbing;
}

/* ============================================================
   Ghost элемент (на оригинальной позиции)
   ============================================================ */
.card-ghost {
    opacity: 0.4;
    background: #f0f0f0;
    border: 2px dashed #ccc !important;
}

/* ============================================================
   Перетаскиваемый элемент
   ============================================================ */
.card-dragging {
    opacity: 0.9;
    transform: rotate(3deg);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.25) !important;
    cursor: grabbing !important;
    z-index: 1000;
}

/* ============================================================
   Выбранный элемент (при начале drag)
   ============================================================ */
.card-chosen {
    box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3);
    border-color: #2196F3 !important;
}

/* ============================================================
   Контейнеры для карточек при drag
   ============================================================ */
.cards-container {
    min-height: 100px;
    transition: background-color 0.2s ease;
}

/* Подсветка целевого контейнера */
.cards-container:has(.card-ghost) {
    background-color: rgba(33, 150, 243, 0.05);
    border-radius: 8px;
}

/* ============================================================
   Плавные transition для карточек
   ============================================================ */
.card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card:hover:not(.card-dragging) {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

/* ============================================================
   Анимация при возврате карточки
   ============================================================ */
@keyframes cardReturn {
    0% {
        transform: scale(1.05);
    }
    100% {
        transform: scale(1);
    }
}

.card-ghost + .card {
    animation: cardReturn 0.3s ease;
}

/* ============================================================
   Touch устройства - увеличенная область для захвата
   ============================================================ */
@media (hover: none) and (pointer: coarse) {
    .card {
        /* Увеличить padding для touch */
        padding: 1.25rem;
    }

    .card-chosen {
        /* Более явная визуальная обратная связь на touch */
        transform: scale(1.05);
        box-shadow: 0 6px 16px rgba(33, 150, 243, 0.4);
    }
}

/* ============================================================
   Отключение drag для интерактивных элементов
   ============================================================ */
.card-btn,
.card button,
.card input,
.card select,
.card textarea {
    cursor: pointer !important;
}

/* ============================================================
   Индикатор "можно перетащить"
   ============================================================ */
.card::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 4px;
    height: 30px;
    background: transparent;
    border-radius: 0 2px 2px 0;
    transition: background 0.2s ease;
}

.card:hover::before {
    background: rgba(33, 150, 243, 0.3);
}

/* ============================================================
   Адаптивность
   ============================================================ */
@media (max-width: 768px) {
    /* На планшетах - уменьшить rotation для экономии места */
    .card-dragging {
        transform: rotate(1deg);
    }
}

@media (max-width: 480px) {
    /* На телефонах - без rotation */
    .card-dragging {
        transform: rotate(0);
    }

    /* Убрать индикатор на маленьких экранах */
    .card::before {
        display: none;
    }
}

/* ============================================================
   Анимация drop
   ============================================================ */
@keyframes dropAnimation {
    0% {
        transform: scale(1.1);
        opacity: 0.8;
    }
    50% {
        transform: scale(0.95);
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

/* Применяется автоматически SortableJS после drop */
.sortable-fallback {
    opacity: 0.8 !important;
}
