/* ========================================
   DRAG & DROP REORDER STYLES
   ======================================== */

/* === HANDLE === */
.drag-handle {
  opacity: 0.3;
  cursor: grab;
  transition: opacity 0.2s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px;
  margin-right: 6px;
  color: var(--text-secondary);
  user-select: none;
  -webkit-user-select: none;
  flex-shrink: 0;
}

.drag-handle:hover {
  opacity: 1;
  color: var(--text-primary);
}

.draggable-item:hover .drag-handle {
  opacity: 0.7;
}

.drag-handle:active {
  cursor: grabbing;
}

.drag-handle svg {
  pointer-events: none;
}

/* === DRAGGABLE ITEM === */
.draggable-item {
  position: relative;
  transition: opacity 0.2s ease;
  cursor: default; /* L'item n'est pas draggable par defaut */
}

.draggable-item[draggable="true"] {
  cursor: move; /* Devient draggable quand mousedown sur handle */
}

/* === DRAGGING STATE === */
.is-dragging {
  opacity: 0.4;
  cursor: grabbing;
}

.drag-ghost {
  position: fixed;
  pointer-events: none;
  opacity: 0.92;
  z-index: 9999;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  transform: rotate(0.5deg);
  transition: transform 0.08s ease;
}

/* === PLACEHOLDER === */
.drag-placeholder {
  border: 2px dashed var(--primary);
  background: var(--primary-bg);
  border-radius: 6px;
  opacity: 0.4;
  margin: 4px 0;
}

/* === DROP INDICATOR === */
.drop-indicator {
  height: 3px;
  background: var(--primary);
  margin: -1.5px 0;
  border-radius: 2px;
  position: relative;
  z-index: 10;
}

.drop-indicator::before,
.drop-indicator::after {
  content: '';
  position: absolute;
  width: 6px;
  height: 6px;
  background: var(--primary);
  border-radius: 50%;
  top: -1.5px;
}

.drop-indicator::before {
  left: -3px;
}

.drop-indicator::after {
  right: -3px;
}

/* === DISABLED STATE === */
.drag-disabled .drag-handle {
  opacity: 0 !important;
  cursor: not-allowed !important;
  pointer-events: none;
}

.drag-disabled .draggable-item {
  cursor: default !important;
}

.drag-disabled .draggable-item[draggable="true"] {
  cursor: not-allowed !important;
}

/* === MOBILE / TOUCH OPTIMIZATIONS === */
@media (hover: none) and (pointer: coarse) {
  /* Sur mobile, rendre le handle plus visible */
  .drag-handle {
    opacity: 0.4;
    padding: 8px;
  }
  
  .draggable-item:active .drag-handle {
    opacity: 1;
  }
  
  .drag-ghost {
    transform: scale(1.02) rotate(1deg);
  }
}

/* === ACCESSIBILITY === */
.drag-handle:focus {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
  opacity: 1;
}

.drag-handle:focus:not(:focus-visible) {
  outline: none;
}

/* === INTEGRATION WITH EXISTING CHIPS === */

/* Field chips */
.field-chip.draggable-item {
  display: flex;
  align-items: center;
}

.field-chip .drag-handle {
  margin-left: -2px;
  margin-right: 4px;
}

/* Term chips */
.term-chip.draggable-item {
  display: flex;
  align-items: center;
}

.term-chip .drag-handle {
  margin-left: -2px;
  margin-right: 4px;
}

/* === ANIMATIONS === */
@keyframes dragPulse {
  0%, 100% { 
    opacity: 0.4; 
  }
  50% { 
    opacity: 0.32; 
  }
}

.drag-placeholder {
  animation: dragPulse 2.2s ease-in-out infinite;
}

/* === PREVENT TEXT SELECTION DURING DRAG === */
.is-dragging,
.is-dragging * {
  user-select: none !important;
  -webkit-user-select: none !important;
}
