Для правильного вопроса надо знать половину ответа
Note: The attr() function can be used with any CSS property, but support for properties other than content is experimental, and support for the type-or-unit parameter is sparse.
Для правильного вопроса надо знать половину ответа
Потому что вы написали "элемент с классом .smile, являющийся потомком элемента image с псевдослассом hover".
А надо написать "элемент с классом .smile, следующий за элементом image с псевдослассом hover".
Так не сработает, у вас input расположен внутри label, а селектор соответствует label, идущей сразу после input.
Меняйте расположение элементов и, соответственно, селекторы.
Для правильного вопроса надо знать половину ответа
content содержит строку, которая вставляется в документ именно как строка, а не как HTML-код. Экранировать надо только кавычки и обратный слэш. https://www.w3.org/TR/CSS21/syndata.html#strings