если у сайта не одна страница, то для каждой нужно писать css в отдельном файле?
нет
но ведь на страницах много одинаковых элементов, таких как header, footer.
вот и ответ на твой вопрос.
Делаешь много разных файликов input, textarea, button, footer, header и т.д. После с помощью gulp или webpack склеиваешь их в один.
Зайди на github и посмотри сборки, многое прояснится.
Вот одна из многих
статей.