@mixin transitions() {
  button {
    transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);

    &:backdrop { transition: 200ms ease-out; }

    &:active, &:checked { transition-duration: 50ms; }

    &.flat {
      transition: none;

      &:hover {
        transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
        transition-duration: 500ms;
      }

      &:active { transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); }
    }
  }

  spinbutton button:backdrop { transition: 200ms ease-out; }

  entry {
    transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);

    &:backdrop { transition: 200ms ease-out; }
  }

  toolbar, .inline-toolbar { transition: 200ms ease-out; }

  headerbar:backdrop, .titlebar:backdrop { transition: 200ms ease-out; }

  treeview.view header button:hover, treeview.view header button:active { transition: none; }

  button.dnd, header.button.dnd { transition: none; }

  scrollbar {
    transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94);

    &:backdrop { transition: 200ms ease-out; }
    slider { transition: 200ms ease-out; transition-property: min-height, min-width, color; }
    button { transition-property: min-height, min-width, color; }
    
    &.fine-tune slider { transition: none; }
  }
  
  scrolledwindow junction:backdrop { transition: 200ms ease-out; }

  switch {
    &:backdrop { transition: 200ms ease-out; }

    slider {
      transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
      transition-property: background, border, box-shadow;
    }

    &:backdrop slider { transition: 200ms ease-out; }
  }

  check, radio {
    transition: 200ms;

    &:backdrop { transition: 200ms ease-out; }

    &:checked:not(:backdrop), &:indeterminate:not(:backdrop) { transition: 400ms; }
  }
  
  menu menuitem check, menu menuitem radio {
    transition: none;
  
    &:checked:not(:backdrop), &:indeterminate:not(:backdrop) { transition: none; }
  }

  scale {
    &:backdrop { transition: 200ms ease-out; }

    slider {
      transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
      transition-property: background, border, box-shadow;
    }
  }

  progressbar:backdrop, levelbar:backdrop { transition: 200ms ease-out; }

  row {
    transition: all 150ms cubic-bezier(0.25, 0.46, 0.45, 0.94);

    &:hover { transition: none; }
    &:backdrop { transition: 200ms ease-out; }
  }

  .app-notification, .app-notification.frame {
    &:backdrop { transition: 200ms ease-out; }
  }

  .sidebar:backdrop { transition: 200ms ease-out; }

  placesview {
    .server-list-button {
      > image {
        transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
        -gtk-icon-transform: rotate(0turn);
      }

      &:checked > image {
        transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
        -gtk-icon-transform: rotate(-0.5turn);
      }
    }
  }

  decoration:backdrop { transition: 200ms ease-out; }
}
