Fixes#21135.
There's a height mismatch here because we're setting padding on the labels, while inputs get padding *and* a top+bottom border. This now uses calc to determine the exact height needed to match labels to inputs.
This also fixes#21280. Previously, we were using float and clear on the individual controls, but that meant a computer height of `0` for the parent `.custom-controls-stacked`. No more problem after using flexbox though.
- we need to set margin for space between footer buttons as flexbox doesn't render HTML spaces like inline-block does
- flexbox doesn't have collapsing margins or anything, so we hack it with some :not(:first-child) and :not(:last-child) action
- Adds new flexbox.md file to utilities docs
- Adds a `breakpoints.yml` data file for easier output of responsive classes in the docs. Will put this to use on other pages soon.
- Adds hella flex utils. There are some dupes for now, but they'll get removed in time.
Given move to flexbox, we can make this available for everyone and clean it up some.
- Simplifies the `.nav-justified` styles to build on the flex-powered `.nav` base class.
- Adds the `.nav-fill` to make nav links fill available horizontal space, but not equal width.
- Set an explicit `display: flex` on the base `.nav` class and remove the floats/clearfixes from our navs.
- Set some global styles for `.nav-link`, a departure from the previous solution that featured no predefined padding.
- Move `.nav-link` from `inline-block` to `block` given this setting was added for our tabs and pills anyway.
- Remove horizontal margin from nav tabs; let folks set that on their own from now on.
Turns out we did have the correct height calculation with our custom selects. The problem was we lacked a shared line-height with our buttons and inputs.
This restores the previous `calc` math and adds a line-height that reuses the input line-height.
Sets minimum required flex styles (including an explicit starting alignment) and removes everything else.
- no need for .media-left and .media-right, we have padding utils
- no need for a .media-heading, we have margin
- no need for .media-object, we have display utils
- no need for .media-list, we have .list-unstyled util
- Instead of negative left/right margins, we selectively apply margins to the cards as needed. This way the first and last child never receive a left and right margin (respectively), so we don't need to negative indent those at the .card-deck level.
- Drops the margin-bottom override on the .card because there's no more default margin there.
- Drop the margin-bottom from the .card-deck to match our lack of margins on the card.
This and the previous commit fixes#19883.