я тупо добавлял внутренние скругления блоками с clip-path:
.clip-bl {
width: 20px;
height: 20px;
clip-path: path("M 0 0 a 20 20 0 0 0 20 20 h -20 v -20");
}
но можно и одним большим clip-path сделать, наверное единственный способ, если там тень или сложный фон. с горсточкой js для формирования размеров, если они динамические.
Если есть возможность указать фон у thead и tbody, то эта задача решается не скроллом body, а position: sticky у thead и tfoot: https://play.tailwindcss.com/AFbTjPofBw (в примере фон полупрозрачный специально)
либо как-то так https://codepen.io/FragsterAt/pen/QwwxEMj
либо, если высота блоков должна быть независима, гуглить масонри, columns и прочее, гридом такое не сделать.
можно вложить элемент с белым в элемент с градиентом
можно сделать множественный бэкграунд https://codepen.io/FragsterAt/pen/raNgpyj
видно, что с вложенным элементом красивее.
.global-catalogue-menu-wrapper .first-level-menu .submenu-wrapper имеет высоту 100% и распирает контейнер от пункта "столы". Но даже если убрать - из-за третьего уровня меню столы->вешалки все равно останется свободное место, хоть и меньше. Нужно использовать абсолютное позиционирование и вычисление положения относительно экрана. Может быть какую-то библиотеку. Что использовать в данном случае - порекомендовать не могу. Сам использую vue + quasar - там попапы открываются +- нормально.
spoiler
скрин с кнопкой-активатором меню у нижнего края окна браузера:
css-only но на скорую руку, без этих ваших :before и прочих https://play.tailwindcss.com/3fXiLqJ5ZL
единственное - у спрятанного текста фиксированная максимальная высота и ограничение должно быть максимально близко к содержимому для красоты. В общем случае - надо с помощью js заполнять.