/* Shared motion language: short settling curves, immediate interaction. */
:root {
  --motion-fast: 110ms;
  --motion-panel: 180ms;
  --motion-ease: cubic-bezier(.22, 1, .36, 1);
}
@media (prefers-reduced-motion: no-preference) {
  :is(#app, dialog) :is(.btn, .tab, .nav-link, .workspace-tab, .record-view-switch button, .task-view-switch button, .mobile-app-dock-item, .hr-card-tabs button) {
    transition-property: background-color, border-color, color, box-shadow, scale;
    transition-duration: var(--motion-fast);
    transition-timing-function: var(--motion-ease);
  }
  :is(#app, dialog) :is(.btn, .record-view-switch button, .task-view-switch button, .mobile-app-dock-item):not(:disabled):active {
    scale: .98;
  }
  :is(#app, dialog) :is(input:not([type=range]), textarea, select) {
    transition: border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;
  }
  #app :is(.task-card, .kanban-card, .studio-project-card, tr[data-id]) {
    transition: background-color var(--motion-fast) ease, border-color var(--motion-fast) ease;
  }
  dialog[open] {
    animation: kraken-dialog-enter var(--motion-panel) var(--motion-ease);
  }
  dialog[open]::backdrop { animation: kraken-backdrop-enter var(--motion-panel) ease-out; }
  .toast { animation: kraken-dialog-enter var(--motion-panel) var(--motion-ease); }
}
/* Entry is coordinated by the render lifecycle, so saving never replays it. */
#app .notification-center.is-open,
#app .layout.os-layout-v10 .task-lite-panel { animation: none; }
/* Do not interpolate gesture-driven dimensions or pointer positions. */
#app [data-task-progress-range],
#app [data-task-progress-range]::-webkit-slider-thumb,
#app [data-task-progress-range]::-webkit-slider-runnable-track { transition: none; }
#app [data-task-progress-range]::-moz-range-thumb,
#app [data-task-progress-range]::-moz-range-track { transition: none; }
#app :is(.is-dragging, .drag-ghost, .record-window.is-resizing) { transition: none !important; }
/* Keep drop targets under the pointer; legacy hover scaling moved lane headers. */
#app [data-drop-kind].drag-over { transform: none !important; transition: none !important; }
.task-card-head[data-board-drag-handle] { touch-action: none; }
@keyframes kraken-dialog-enter {
  from { opacity: .65; translate: 0 8px; }
  to { opacity: 1; translate: 0 0; }
}
@keyframes kraken-backdrop-enter { from { opacity: .4; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after, #app *, #app *::before, #app *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}
