Agradeço ao @NateDhaliwal. Essa foi minha abordagem original, mas encontrei o erro 500 acima e não consegui superá-lo por um bom tempo, então voltei para uma abordagem apenas com CSS.
Eu poderia reverter para aquela tentativa abandonada e ver se carrega agora que acho que tenho controle sobre o erro 500. Vou tentar.