body {
    background-color: #7cbcf2;
}

#bike {
    position: relative;
    width: 410px;
    height: 250px;
    margin: 50px auto;
    overflow: hidden;
}

#wheel {
    /* Tire */
    position: absolute;
    bottom: 0;
    width: 150px;
    height: 150px;
    border-radius: 150px;
    border: 5px solid #111;
    animation: spinCCW 8s linear infinite;
    -webkit-animation: spinCCW 8s linear infinite;
}

#wheel:before {
    /* Rim outline */
    position: absolute;
    top: 5px;
    left: 5px;
    width: 136px;
    height: 136px;
    border-radius: 134px;
    border: 2px solid #111;
    content: '';
}

#wheel:after {
    /* Hub */
    position: absolute;
    top: 65px;
    left: 65px;
    width: 20px;
    height: 20px;
    border-radius: 40px;
    background: #111;
    content: '';
}

#valve {
    position: absolute;
    bottom: 5px;
    left: 70px;
    width: 3px;
    height: 10px;
    background: #111;
    border-radius: 3px 3px 0px 0px;
    transform: rotate(2deg);
    -webkit-transform: rotate(2deg);
}

#spokeCW {
    position: relative;
    width: 150px;
    height: 150px;
}

#spokeCW:before {
    position: absolute;
    top: 83px;
    left: 6px;
    width: 70px;
    height: 1px;
    background: #111;
    transform: rotate(-30deg);
    -webkit-transform: rotate(-30deg);
    content: '';
}

#spokeCW:after {
    position: absolute;
    top: 100px;
    left: 15px;
    width: 68px;
    height: 1px;
    background: #111;
    transform: rotate(-60deg);
    -webkit-transform: rotate(-60deg);
    content: '';
}

#spokeCCW {
    position: relative;
    width: 150px;
    height: 150px;
}

#spokeCCW:before {
    position: absolute;
    top: 53px;
    left: 66px;
    width: 70px;
    height: 1px;
    background: #111;
    transform: rotate(-25deg);
    -webkit-transform: rotate(-25deg);
    content: '';
}

#spokeCCW:after {
    position: absolute;
    top: 68px;
    left: 74px;
    width: 70px;
    height: 1px;
    background: #111;
    transform: rotate(5deg);
    -webkit-transform: rotate(5deg);
    content: '';
}

#spokeCCW .rotate {
    transform: rotate(-60deg);
    -webkit-transform: rotate(-60deg);
}

#wheel .front {
    left: 0px;
}

#wheel .rear {
    right: 0px;
}

#frame {
    position: absolute;
    bottom: 65px;
    left: 95px;
    width: 153px;
    height: 115px;
    border-top: 8px solid #111;
    border-right: 8px solid #111;
    transform: skewX(-15deg);
    -webkit-transform: skewX(-15deg);
}

#frame:before {
    position: absolute;
    top: 3px;
    right: -52px;
    width: 85px;
    height: 102px;
    border-bottom: 4px solid #111;
    border-right: 4px solid #111;
    transform: skew(40deg, -10deg);
    -webkit-transform: skew(40deg, -10deg);
    content: '';
}

#frame:after {
    position: absolute;
    top: 56px;
    left: -10px;
    width: 170px;
    height: 8px;
    background: #111;
    transform: skewX(15deg) rotate(40deg);
    -webkit-transform: skewX(15deg) rotate(40deg);
    content: '';
}

#fork {
    position: absolute;
    bottom: 77px;
    left: 90px;
    width: 8px;
    height: 110px;
    background: #111;
    transform: rotate(15deg);
    -webkit-transform: rotate(15deg);
}

#fork:before {
    position: absolute;
    top: -5px;
    left: -1px;
    width: 10px;
    height: 30px;
    background: #111;
    content: '';
}

#stem {
    position: absolute;
    bottom: 175px;
    left: 90px;
    width: 15px;
    height: 20px;
    border-top: 8px solid #111;
    border-right: 8px solid #111;
    transform: skew(-15deg, -5deg);
    -webkit-transform: skew(-15deg, -5deg);
}

#bars {
    position: absolute;
    bottom: 194px;
    left: 58px;
    width: 35px;
    height: 7px;
    border-radius: 7px;
    background: #111;
    transform: rotate(-3deg);
    -webkit-transform: rotate(-3deg);
}

#bars:before {
    position: absolute;
    top: -2px;
    left: -10px;
    width: 15px;
    height: 7px;
    border-radius: 0px 8px 8px 0;
    background: #111;
    transform: rotate(30deg);
    -webkit-transform: rotate(30deg);
    content: '';
}

#bars:after {
    position: absolute;
    top: -2px;
    left: 30px;
    width: 12px;
    height: 12px;
    border-radius: 10px;
    background: #111;
    content: '';
}

#cranks {
    position: absolute;
    bottom: 45px;
    left: 214px;
    width: 34px;
    height: 34px;
    border-radius: 34px;
    border: 5px solid #111;
    animation: spinCCW 5s linear infinite;
    -webkit-animation: spinCCW 5s linear infinite;
}

#cranks:before {
    position: absolute;
    top: 7px;
    left: 7px;
    width: 20px;
    height: 20px;
    border-radius: 20px;
    background: #111;
    content: '';
}

#crank-spider {
    position: absolute;
    width: 34px;
    height: 34px;
}

#crank-spider:before {
    position: absolute;
    top: 14px;
    left: -2px;
    width: 15px;
    height: 6px;
    background: #111;
    content: '';
}

#crank-arm {
    position: absolute;
    top: -18px;
    left: 14px;
    width: 6px;
    height: 72px;
    border-radius: 6px;
    background: #111;
}

#chain {
    position: absolute;
    bottom: 86px;
    left: 235px;
    width: 95px;
    height: 2px;
    background: #111;
}

#chain:before {
    position: absolute;
    top: 28px;
    width: 95px;
    height: 2px;
    background: #111;
    transform: rotate(-15deg);
    -webkit-transform: rotate(-15deg);
    content: '';
}

#pedal1 {
    position: absolute;
    top: -20px;
    left: 8px;
}

#pedal1:before {
    position: absolute;
    width: 18px;
    height: 6px;
    background: #111;
    transform: skewX(10deg);
    -webkit-transform: skewX(10deg);
    animation: spinCW 5s linear infinite;
    -webkit-animation: spinCW 5s linear infinite;
    content: '';
}

#pedal2 {
    position: absolute;
    bottom: -14px;
    left: 8px;
}

#pedal2:before {
    position: absolute;
    width: 18px;
    height: 6px;
    background: #111;
    transform: skewX(10deg);
    -webkit-transform: skewX(10deg);
    animation: spinCW 5s linear infinite;
    -webkit-animation: spinCW 5s linear infinite;
    content: '';
}

#saddle {
    position: absolute;
    bottom: 180px;
    left: 266px;
    width: 6px;
    height: 20px;
    border-radius: 20px;
    background: #111;
    transform: rotate(15deg);
    -webkit-transform: rotate(15deg);
}

#saddle:before {
    position: absolute;
    top: -6px;
    left: 1px;
    width: 6px;
    height: 14px;
    border-radius: 20px;
    background: #111;
    transform: rotate(20deg);
    -webkit-transform: rotate(20deg);
    content: '';
}

#saddle:after {
    position: absolute;
    top: -12px;
    left: -20px;
    width: 44px;
    height: 10px;
    border-radius: 55px 8px 20px 50px / 10px 5px 10px 3px;
    background: #111;
    transform: rotate(-12deg);
    -webkit-transform: rotate(-12deg);
    content: '';
}

@keyframes spinCCW {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(-360deg);
    }
}

@-webkit-keyframes spinCCW {
    from {
        -webkit-transform: rotate(0deg);
    }

    to {
        -webkit-transform: rotate(-360deg);
    }
}

@keyframes spinCW {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@-webkit-keyframes spinCW {
    from {
        -webkit-transform: rotate(0deg);
    }

    to {
        -webkit-transform: rotate(360deg);
    }
}