.task-card-chip-row {
  /* Matches current board action button height so wrapped chip rows align to the button box. */
  --task-card-action-row-height: 30px;
}

.task-card-chip-slot {
  height: var(--task-card-action-row-height);
}

.task-card-body-preview {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
}

.board-card-drag-image {
  position: fixed;
  top: -10000px;
  left: -10000px;
  z-index: 2147483647;
  pointer-events: none;
  opacity: 0.94;
}

.board-card-motion-clone {
  position: fixed;
  z-index: 2147483647;
  box-sizing: border-box;
  pointer-events: none;
}

.board-horizontal-scrollbar {
  height: 16px;
  margin: 0;
  appearance: none;
  background: transparent;
  color: var(--color-muted);
}

.board-horizontal-scrollbar:focus-visible {
  outline: none;
}

.board-horizontal-scrollbar::-webkit-slider-runnable-track {
  height: 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--color-muted) 32%, transparent);
}

.board-horizontal-scrollbar::-webkit-slider-thumb {
  width: 96px;
  height: 8px;
  margin-top: 0;
  appearance: none;
  border-radius: 999px;
  background: color-mix(in srgb, var(--color-on-island) 72%, transparent);
}

.board-horizontal-scrollbar:focus-visible::-webkit-slider-runnable-track {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary) 55%, transparent);
}

.board-horizontal-scrollbar::-moz-range-track {
  height: 8px;
  border: 0;
  border-radius: 999px;
  background: color-mix(in srgb, var(--color-muted) 32%, transparent);
}

.board-horizontal-scrollbar::-moz-range-thumb {
  width: 96px;
  height: 8px;
  border: 0;
  border-radius: 999px;
  background: color-mix(in srgb, var(--color-on-island) 72%, transparent);
}

.board-horizontal-scrollbar:focus-visible::-moz-range-track {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary) 55%, transparent);
}

.board-column-drop-allowed {
  --board-column-drop-color: color-mix(in srgb, var(--color-primary) 70%, var(--color-outline));

  border-color: var(--board-column-drop-color);
}

.board-column-drop-blocked {
  --board-column-drop-color: color-mix(in srgb, var(--color-error) 60%, var(--color-outline));

  border-color: var(--board-column-drop-color);
  opacity: 0.72;
}

.board-column-scroll {
  /* Cards scroll behind the text-only overlay header and dissolve into the
     column glass via a top mask fade. The fade and the first-card offset
     (padding-top) are both exactly the header height, so the rest gap matches a
     plain header and nothing is faded at rest. The bare interpolation hint
     places the 50% alpha point at ~58% of the fade — a non-linear power curve
     (mirroring the app-chrome contrast scrim) so cards stay mostly hidden until
     they are well clear of the header rather than fading on a weak linear
     ramp. */
  --board-column-fade: var(--board-column-header-height);

  padding-top: var(--board-column-fade);
  -webkit-mask-image: linear-gradient(
    to bottom,
    transparent 0,
    calc(var(--board-column-fade) * 0.58),
    #000 var(--board-column-fade)
  );
  mask-image: linear-gradient(
    to bottom,
    transparent 0,
    calc(var(--board-column-fade) * 0.58),
    #000 var(--board-column-fade)
  );
}

.board-column-collapsed-label {
  position: absolute;
  top: 0;
  left: calc(50% + 0.5rem);
  width: min(280px, calc(100vh - 180px));
  height: 1rem;
  transform: rotate(90deg);
  transform-origin: left top;
}

.board-hover-menu-morph {
  --board-menu-padding: var(--space-1);
  --board-menu-icon-row-size: 40px;
  --board-menu-icon-gap: 0px;
  --board-menu-content-gap: var(--space-2);
  --board-menu-content-inline-padding: var(--space-0);
  --board-menu-collapsed-height: calc(
    var(--board-menu-icon-row-size) + (var(--board-menu-padding) * 2) + 2px
  );
  --board-menu-collapsed-width: calc(
    (var(--board-menu-icon-row-size) * 1) + var(--board-menu-icon-gap) + (var(--board-menu-padding) * 2) + 2px
  );
}

.workflow-issues-list li::before {
  position: absolute;
  left: 0;
  content: "•";
  color: var(--color-error);
  list-style: none;
}

@keyframes board-card-enter-reveal {
  from {
    opacity: 0;
    transform: translateY(10%);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: no-preference) {
  .view-transition-board-card::view-transition-old(root),
  .view-transition-board-card::view-transition-new(root) {
    animation: none;
  }

  .view-transition-board-card::view-transition-group(*) {
    animation-duration: var(--motion-normal);
    animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  }

  .view-transition-board-card::view-transition-image-pair(*) {
    isolation: isolate;
  }

  .view-transition-board-card::view-transition-old(*),
  .view-transition-board-card::view-transition-new(*) {
    animation-duration: var(--motion-normal);
    animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  }

  .board-card-enter-reveal {
    animation: board-card-enter-reveal var(--motion-normal) cubic-bezier(0.16, 1, 0.3, 1) both;
  }

  .board-column-drop-idle,
  .board-column-drop-allowed,
  .board-column-drop-blocked {
    transition:
      border-color var(--motion-fast),
      opacity var(--motion-fast);
  }

  .board-column-morph {
    transition:
      width var(--motion-morph),
      padding var(--motion-morph),
      grid-template-rows var(--motion-morph),
      background-color var(--motion-morph);
  }

  .board-hover-menu-morph {
    transform-origin: left bottom;
    transition:
      width var(--motion-morph),
      grid-template-rows var(--motion-morph),
      padding var(--motion-morph),
      background-color var(--motion-morph);
  }

  .board-hover-menu-content {
    transition: opacity var(--motion-fast);
  }

  .board-hover-menu-expanded .board-hover-menu-content {
    transition-delay: 180ms;
  }

  .board-hover-menu-collapsed .board-hover-menu-content {
    transition-delay: 0ms;
  }
}
