/* Native pan stays available on the board, including on top of cards. */
#board, #board .card{touch-action:pan-x pan-y pinch-zoom;}
/* The list, rather than its cards, owns the complete useful drop area. */
#board{align-items:stretch;}
#board .column{display:flex;flex-direction:column;}
#board .cards{
  flex:1 1 auto;
  min-height:max(300px,55vh);
  min-height:max(300px,55dvh);
}
#board .column.kanban-drop-target{
  outline:2px solid rgba(70,104,189,.34);
  outline-offset:2px;
  box-shadow:inset 0 0 0 2px rgba(70,104,189,.12);
}
#board .column.kanban-drop-target .cards{
  background:rgba(70,104,189,.045);
  border-radius:8px;
}
/* Cards are controls: never let Safari/Chrome turn a long press into text
   selection or the native copy callout. This does not block touch scrolling. */
#board .card,
#board .card *{
  user-select:none;
  -webkit-user-select:none;
  -webkit-touch-callout:none;
}
/* Feedback begins only when the 500 ms hold has actually captured the card. */
#board .card{transition:filter 120ms ease,opacity 120ms ease;}
#board .kanban-touch-picked{
  position:relative;
  z-index:20;
  opacity:.98;
  filter:drop-shadow(0 7px 11px #0003);
  will-change:filter;
}
#board .sortable-ghost{
  opacity:.28!important;
  outline:2px dashed rgba(70,104,189,.45);
  outline-offset:-3px;
}
/* Sortable anexa este preview ao body para escapar do containing block criado
   pelo backdrop-filter das colunas. Não aplicar translate/offset aqui. */
body > .kanban-touch-fallback,
body > .kanban-touch-fallback *{
  user-select:none;
  -webkit-user-select:none;
  -webkit-touch-callout:none;
}
body > .kanban-touch-fallback{
  pointer-events:none!important;
  z-index:100000!important;
  opacity:.94!important;
  transition:none!important;
  filter:drop-shadow(0 7px 11px #0003);
}
