Why doesn't this script work?

Trying to code a script for my character where if the crouch button is pressed while he’s running his run speed slowly decreases over time to simulate losing speed as he slides but nothing happens. Also if I was to get it to work how would I get the run speed to stop decreasing when it hits 0 instead of starting to go into minus and get the run speed to reset once the crouch button is released?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;

public class Player : MonoBehaviour
{
//Config
[SerializeField] float runSpeed = 5f;
float slideDrag = 1f;

//Cached components references
Rigidbody2D myRigidBody;
Animator myAnimator;

// Start is called before the first frame update
void Start()
{
    myRigidBody = GetComponent<Rigidbody2D>();
    myAnimator = GetComponent<Animator>();
}

// Update is called once per frame
void Update()
{
    Run();
    Slide();
}
private void Run()
{
    float controlThrow = CrossPlatformInputManager.GetAxisRaw("Horizontal");
    Vector2 playerVelocity = new Vector2(controlThrow * runSpeed, myRigidBody.velocity.y);
    myRigidBody.velocity = playerVelocity;

    bool playerHasHorizontalSpeed = Mathf.Abs(myRigidBody.velocity.x) > Mathf.Epsilon;
    myAnimator.SetBool("Running", playerHasHorizontalSpeed);
}
private void Slide()
{
    if (CrossPlatformInputManager.GetButtonDown("Crouch"))
    {
        runSpeed -= slideDrag * Time.deltaTime;
    }
}

}

I’ve never used CrossPlatformInputManager, but I would try

[SerializeField] 
float runSpeed = 5f;
float maxRunSpeed;

 void Start()
 {
     myRigidBody = GetComponent<Rigidbody2D>();
     myAnimator = GetComponent<Animator>();
     maxRunSpeed = runSpeed ;
 }

private void Slide()
 {
     if (CrossPlatformInputManager.GetButton("Crouch"))
     {
         runSpeed -= slideDrag * Time.deltaTime;
     }
     else
     {
         runSpeed += slideDrag * Time.deltaTime;
     }
     runSpeed = Mathf.Clamp( runSpeed, 0, maxRunSpeed ) ;
 }