Generic type class conformity in C#

class Vehicle {
    public void Test() {
        //Implementation
    }
}

class CarVehicle { }

class Truck {}

class Service<T> where T: Vehicle {
    List<T> list = new List<T>();
    
    public void Add(T item) {
        list.Add(item);
    }
    
    public void Test() {
        foreach (var item in list) {
            item.Test();
        }
    }
}

var vehicle = new Vehicle();
var car = new Car();
var truck = new Truck();

var service = new Service<Vehicle>();
service.Add(vehicle);
service.Add(car);
service.Test();

service.Add(truck);//<- Error