#css crimes
There used to be this website called Cohost. For all its warts and faults, one unique fascination was that it allowed users to include arbitrary HTML and CSS markup in their posts. While this was a great convenience for modifying standard elements like blockquotes, it also created a canvas for mischief. It was a power too weak to embed a music player, but just powerful enough to take your glasses off, and soon enough, users were celebrating their achievements as #css crimes.
CSS crime on Cohost was strictly regulated. All styles had to be defined inline for each element, which meant repeating elements made it easy to knock up against a post’s 200 KiB limit. The only animations available were those defined within the theme, so new keyframes couldn’t be declared and heavy use of transforms was needed to do anything more complex than a simple spin. Embedding additional assets usually involved abusing draft posts to get published CDN links or choosing to host them externally, if you were up to no good. As users found ways to jailbreak their crimes out of the post container, new “ages” of posting were declared that maintained rendering for old posts while preventing new posts from using the same exploits. Third-party tools like prechoster helped navigate these limitations, but also emboldened advanced crime with the help of templates and pipelines.
From my Cohost data export, here’s an archive of some of my CSS crimes, largely unmodified from how they were initially published. Some effort was made to make them acceptable for mobile viewports, but you’ll have a better time viewing them on desktop!