Тимофей Гусев, float'ы нужны для одного, Flexbox -- для другого. Друг друга они полностью не заменяют. Просто нужно уметь работать со всеми видами. И не использовать float для разметки (если не нужно поддерживать совсем старые браузеры).
А как это поможет одновременно растянуть элемент и сократить его (label) зону действия? Ему обёртку нужно делать для каждого элемента, которую он будет растягивать flex'ом.
Считать строки на CSS — невозможно. Можно только высчитать максимальную высоту по формуле: высоту строки (в em) умножить на 20. Плюс, немного подстроить, добавляя/убавляя десятые доли em, чтобы не было обрезания букв типа «р» в последней строке.
К примеру, если высота строки 1,5, нужно прописать так: max-height: 30em (1,5*20). Но добавить разделительную линию в случае, если блок достиг максимальной высоты, — невозможно. Её можно либо добавить, либо убрать для всех случаев.
Transition-delay?