Historically, CSS has been very bad at supporting responsive layouts. This became increasingly problematic as the range of devices that access the web has increased. Developers have been forced to rely on third-party tools, like Bootstrap, and media queries based on "average" device sizes.Today, however, CSS provides a number of tools that support responsive designs natively. We’re going have a look at CSS columns, flexbox, and grid. We’ll see how each one works individually, then we’ll see how we can combine flexbox and grid to create a truly flexible layout, that works across all device sizes, without relying on device-based breakpoints.