Спрайт должен быть не из symbol, а либо из набора symbol+view+use либо из svg.
Вот пример с вашим флагом и спрайтом из svg. https://jsfiddle.net/g7t1nf0r/
Хотя последнее время я в большинстве случаев стала инлайнить прямо в css предварительно конвертнув с помощью URL-encoder for SVG
Обычный градиент под нужным вам углом. https://jsfiddle.net/ma20jnf6/
Либо треугольный псевдоэлемент.
Либо clip-path.
Либо transform skew и задвинуть за край окна и обратный для текста.
Ещё что-нибудь, что я забыла.
Зачем там псевдоэлементы?
Просто два фона, один прибит к верху body, другой к низу, остальное цвет.
Множественные фоны пишутся через запятую.
На всякий случай, потому что когда-то вам всё таки придется использовать и псевдо.
Во-первых, отрицательный z-index.
Во-вторых, свойство pointer-events.
И не правда, полоса прокрутки у вас появилась гораздо раньше, чем были добавлены псевдо.
В тот момент, когда вы задали width: 100vw; для .experts_body.
Зачем?
Отступы у body убираются с помощью обнуления этих самый отступов margin: 0.
Заодно ещё почитайте про box-sizing, тоже скоро пригодится.
Такие вопросы решаются с помощью цветных рамок (outline, outline-offset, box-shadow) для элементов и псевдоэлементов.
Вы серьезно сплошной оранжевый цвет собрались задавать картинкой?
Варианта два:
1. Если логотип включает в себя оранжевую часть, то это одна картинка, желательно в формате SVG. Причем это <img>
Судя по тому, как написаны буквы названия, то и они являются частью лого.
2. Если логотип это только "буква", то оранжевое это background-color и border-radius. А сам логотип это снова тег <img>
Если всё же вам встретится необходимость сделать множественные фоны, то они просто пишутся через запятую.
Самый первый - верхний, последний - нижний. В серединке соответственно.
Убрать float left.
И вообще не использовать его не по назначению.
А назначение - обтекание одного элемента другими.
Для построение сеток используйте флексы или гриды.