CSS кажется сложным, потому что он одновременно прост в изучении (написать цвет и размер легко) и невероятно труден в освоении на профессиональном уровне. Сложность возникает из-за каскадной природы (правила конфликтуют и переопределяют друг друга), специфичности (веса селекторов), блочной модели, которая работает не интуитивно, контекста отображения в разных браузерах, а также из-за того, что CSS — это декларативный язык, где вы описываете "что" должно быть, но не "как" это вычислять. В отличие от привычного программирования, в CSS нет отладчика в классическом понимании, и ошибка часто проявляется в виде непредсказуемого поведения вёрстки, а не явного сообщения о проблеме.