/* ===== Единый дизайн сортируемых списков =====
   «Якорь»-ручка слева, перетаскивание за неё.
   Подключать вместе с shared/sortable.js. */

.drag-handle {
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;
    color: var(--text-light);
    font-size: 1.2rem;
    letter-spacing: -2px;
    line-height: 1;
    min-width: 28px;
    text-align: center;
    transition: color 0.15s;
}

.drag-handle:hover {
    color: var(--text-muted);
}

.drag-handle:active {
    cursor: grabbing;
}

/* Элемент, который тащат */
.sortable-dragging {
    opacity: 0.4;
    transition: opacity 0.15s ease;
}

/* Место вставки при перетаскивании (запасной вариант, если плейсхолдер используется) */
.sortable-placeholder {
    opacity: 0.35;
    outline: 2px dashed var(--accent) !important;
    background: var(--bg-hover) !important;
}

/* ===== Плавный «призрак», следующий за курсором ===== */
.sortable-ghost {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 10000;
    margin: 0;
    pointer-events: none;
    transform-origin: top left;
    will-change: transform;
    box-shadow: 0 14px 32px rgba(0, 0, 0, 0.28);
    opacity: 0.96;
}

.sortable-ghost > * {
    margin: 0;
}

.sortable-ghost-table {
    width: 100%;
    border-collapse: collapse;
}

/* Бейдж количества при массовом перетаскивании */
.sortable-ghost-badge {
    position: absolute;
    top: -10px;
    right: -10px;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    border-radius: 11px;
    background: var(--accent);
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
    line-height: 22px;
    text-align: center;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}

/* ===== Плавный индикатор места вставки ===== */
.sortable-drop-line {
    position: fixed;
    left: 0;
    top: 0;
    height: 3px;
    border-radius: 2px;
    background: var(--accent);
    pointer-events: none;
    z-index: 9999;
    will-change: transform;
    transition: transform 0.16s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.sortable-drop-line::before {
    content: '';
    position: absolute;
    left: -4px;
    top: 50%;
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: var(--accent);
    transform: translateY(-50%);
    box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.06);
}

/* Во время перетаскивания: глобальный «grabbing»-курсор и запрет выделения текста */
body.is-sorting,
body.is-sorting * {
    cursor: grabbing !important;
    user-select: none !important;
    -webkit-user-select: none !important;
}

/* Выделенные элементы (для массового перетаскивания) */
.selected {
    background: var(--bg-selected);
}

.selected-item.selected {
    background: var(--bg-selected);
    border-color: var(--accent);
}

.field-row.selected {
    background: var(--bg-selected) !important;
    border-color: var(--accent) !important;
}
