Css al igual que cualquier otro lenguaje provee soluciones propias para estas circunstancias.
En css sólo hay dos posibilidades donde utilizar caracteres "extraños" al propio lenguaje: en el nombre de los selectores y en el valor de content cuando es una cadena.
Pues al igual que html tiene una solución para cuando se desconoce el destino final de un código: las "html entities", css tiene su propia codificación de esos símbolos "impropios" a él. Porque recordemos que css no procesa el contenido de content. Sólo lo muestra. Así que sólo es cuestión de codificar dichos caracteres para el lenguaje que lo va a tratar: css.
Así en el caso del ejemplo sólo es cuestión de escribir:
Código CSS:
Ver originalelemento::before {content: 'Oferta del m''\00E9''s';}
y tendré la absoluta certeza de que se mostrará bien con independencia de la codificación de la/las páginas por donde pase.
Y no sólo con acentos o caracteres más o menos habituales en español. Casi cualquier símbolo, dingbats, flechas, carácter hebreo o hiragana o cherokee o... se podrá mostrar vía css sea cual sea la codificación del documento o el lenguaje del SO del usuario que lo vea.
Resumiendo todo el tocho, que sí, que se puede declarar charset por defecto en el css, pero la especificación está clara: se han concebido para su uso en hojas de estilo vinculadas y sólo es conveniente cuando el css contiene caracteres no ASCII.
Pero mejor que utilizar un charset u otro es, en los pocos casos que puedan darse, es utilizar solucciones propias de css: codificación css.
Y como nadie va a aprenderse de memoria dicha codificación hay herramientas como la que
menciono aquí.