A Necromantic Prelude

Trespass into our pit, will you? Tsk tsk. Now you will pay! The body pit spoke through many voices, each in the Forgotten Tongue — Selachian, unmistakably. Come.

A Necromantic Prelude
By: Lt FlopsLt Flops
Published on 31 Oct 2019 22:10
rating: +35+x

What this is

A bunch of miscellaneous CSS 'improvements' that I, CroquemboucheCroquembouche, use on a bunch of pages because I think it makes them easier to deal with.

The changes this component makes are bunch of really trivial modifications to ease the writing experience and to make documenting components/themes a bit easier (which I do a lot). It doesn't change anything about the page visually for the reader — the changes are for the writer.

I wouldn't expect translations of articles that use this component to also use this component, unless the translator likes it and would want to use it anyway.

This component probably won't conflict with other components or themes, and even if it does, it probably won't matter too much.


On any wiki:

[[include :scp-wiki:component:croqstyle]]

This component is designed to be used on other components. When using on another component, be sure to add this inside the component's [[iftags]] block, so that users of your component are not forced into also using Croqstyle.

Related components

Other personal styling components (which change just a couple things):

Personal styling themes (which are visual overhauls):

CSS changes

Reasonably-sized footnotes

Stops footnotes from being a million miles wide, so that you can actually read them.

.hovertip { max-width: 400px; }

Monospace edit/code

Makes the edit textbox monospace, and also changes all monospace text to Fira Code, the obviously superior monospace font.

@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;700&display=swap');
:root { --mono-font: "Fira Code", Cousine, monospace; }
#edit-page-textarea, .code pre, .code p, .code, tt, .page-source { font-family: var(--mono-font); }
.code pre * { white-space: pre; }
.code *, .pre * { font-feature-settings: unset; }

Teletype backgrounds

Adds a light grey background to <tt> elements ({{text}}), so code snippets stand out more.

tt {
  background-color: var(--swatch-something-bhl-idk-will-fix-later, #f4f4f4);
  font-size: 85%;
  padding: 0.2em 0.4em;
  margin: 0;
  border-radius: 6px;

No more bigfaces

Stops big pictures from appearing when you hover over someone's avatar image, because they're stupid and really annoying and you can just click on them if you want to see the big version.

.avatar-hover { display: none !important; }

Breaky breaky

Any text inside a div with class nobreak has line-wrapping happen between every letter.

.nobreak { word-break: break-all; }

Code colours

Add my terminal's code colours as variables. Maybe I'll change this to a more common terminal theme like Monokai or something at some point, but for now it's just my personal theme, which is derived from Tomorrow Night Eighties.

Also, adding the .terminal class to a fake code block as [[div class="code terminal"]] gives it a sort of pseudo-terminal look with a dark background. Doesn't work with [[code]], because Wikidot inserts a bunch of syntax highlighting that you can't change yourself without a bunch of CSS. Use it for non-[[code]] code snippets only.

Quick tool to colourise a 'standard' Wikidot component usage example with the above vars: link

:root {
  --c-bg: #393939;
  --c-syntax: #e0e0e0;
  --c-comment: #999999;
  --c-error: #f2777a;
  --c-value: #f99157;
  --c-symbol: #ffcc66;
  --c-string: #99cc99;
  --c-operator: #66cccc;
  --c-builtin: #70a7df;
  --c-keyword: #cc99cc;
.terminal, .terminal > .code {
  color: var(--c-syntax);
  background: var(--c-bg);
  border: 0.4rem solid var(--c-comment);
  border-radius: 1rem;

Debug mode

Draw lines around anything inside .debug-mode. The colour of the lines is red but defers to CSS variable --debug-colour.

You can also add div.debug-info.over and div.debug-info.under inside an element to annotate the debug boxes — though you'll need to make sure to leave enough vertical space that the annotation doesn't overlap the thing above or below it.

…like this!

.debug-mode, .debug-mode *, .debug-mode *::before, .debug-mode *::after {
  outline: 1px solid var(--debug-colour, red);
  position: relative;
.debug-info {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Fira Code', monospace;
  font-size: 1rem;
  white-space: nowrap;
.debug-info.over { top: -2.5rem; }
.debug-info.under { bottom: -2.5rem; }
.debug-info p { margin: 0; }
/* source: http://ah-sandbox.wikidot.com/component:collapsible-sidebar-x1 */
#top-bar .open-menu a {
        position: fixed;
        top: 0.5em;
        left: 0.5em;
        z-index: 5;
        font-family: 'Nanum Gothic', san-serif;
        font-size: 30px;
        font-weight: 700;
        width: 30px;
        height: 30px;
        line-height: 0.9em;
        text-align: center;
        border: 0.2em solid #888;
        background-color: #fff;
        border-radius: 3em;
        color: #888;
        pointer-events: auto;
@media not all and (max-width: 767px) {
    #top-bar .mobile-top-bar {
        display: block;
        pointer-events: none;
    #top-bar .mobile-top-bar li {
        display: none;
    #main-content {
        max-width: 708px;
        margin: 0 auto;
        padding: 0;
        transition: max-width 0.2s ease-in-out;
    #side-bar {
        display: block;
        position: fixed;
        top: 0;
        left: -20em;
        width: 17.75em;
        height: 100%;
        margin: 0;
        overflow-x: hidden;
        overflow-y: auto;
        z-index: 10;
        padding: 1em 1em 0 1em;
        background-color: rgba(0,0,0,0.1);
        transition: left 0.4s ease-in-out;
        scrollbar-width: thin;
    #side-bar:target {
        left: 0;
    #side-bar:focus-within:not(:target) {
        left: 0;
    #side-bar:target .close-menu {
        display: block;
        position: fixed;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
        margin-left: 19.75em;
        opacity: 0;
        z-index: -1;
        visibility: visible;
    #side-bar:not(:target) .close-menu { display: none; }
    #top-bar .open-menu a:hover {
        text-decoration: none;
    @supports (-moz-appearance:none) {
    #top-bar .open-menu a {
        pointer-events: none;
    #side-bar:not(:target) .close-menu {
        display: block;
        pointer-events: none;
        user-select: none;
    /* This pseudo-element is meant to overlay the regular sidebar button
    so the fixed positioning (top, left, right and/or bottom) has to match */
    #side-bar .close-menu::before {
        content: "";
        position: fixed;
        z-index: 5;
        display: block;
        top: 0.5em;
        left: 0.5em;
        border: 0.2em solid transparent;
        width: 30px;
        height: 30px;
        font-size: 30px;
        line-height: 0.9em;
        pointer-events: all;
        cursor: pointer;
    #side-bar:focus-within {
        left: 0;
    #side-bar:focus-within .close-menu::before {
        pointer-events: none;

rating: +35+x

A Necromantic Prelude

SPC Hub » A Necromantic Prelude

A moonlit figure oozed red in trails. He clutched his ruptured spleen, winced, and glanced behind; hoping nobody followed. In his final hour of life, he clawed forward and reflected back…

The man was an artificer who reanimated bodies of the damned. He spent his workweeks pulling aristocrat's corpses from ornate, peasant-crafted coffins. Once under his hex, he traded these inferi for inferior payouts from rich Deviant buyers.

Of course, the work environment was toxic, and Dreadlords had no HR. Worse still, OSHA guidelines for the Necromancer's Guild were rooted firmly in the 1300s.

Having tendered his resignation that evening, he bid his job adieu. Unfortunately, his employers were Abyssal Sharkics, and he was no Boxer. They wouldn't sit idle while he sold his talents to the competition. In this trade, your job was lost with your life.

… Soon enough, here he was, squeezing his crimson-coated side as blood spewed from a lacerated maw, yelping with every step. He had one unfulfilled obligation, and then he could be free.

Ahead, a deep, dark, and dank pit stretched on and swallowed the horizon. At the bottom lay corpses in the hundreds of thousands: Victims slain in some long forgotten war, now strewn with haphazard. Had some old war god collected and set them here? To act as threatening ornaments for their front lawn, perhaps? It didn't matter.

A batter wall jutted up from the sides, to keep the dead in and the living far away. He climbed a fallen section and stepped to the edge. His blood dripped onto day-bleached skulls and sagging, fly-speckled flesh. He looked in, swayed, and vomited. The sight was an abomination, and no necromancer on the planet could have prepared for it.

He reached, trembling, into his rucksack and gripped a jury-rigged clothespin, which he set tight over his nose. He rummaged again, searching for his enchanting equipment. On the face of the embankment, he set down his tools:

  • A prayer to the Leviathan, written in the Deep Tongue.
  • A copy (stolen) of the Book of the Dead, from which he could mumble nonsensical incantations.
  • And chemicals and markings for a resurrection circle, to trap choice forsaken saps in the mortal realm for good.

With his blood as an offering, he could–


Succumb to his wounds and drop, fifty feet down.

In his dying breath, he noticed his blood transform. It surged from his body and rippled away like electrified leeches, glowing and boiling in effervescent sheen. Outside the body, blood was no longer his, and ancient forces unsheathed ancient talons.

Some disembodied gestalt intelligence took the offering and kept the necromancer animated, and alive. His consciousness stayed behind — stayed here — peering through swimming, starry vision as the ground fell beneath him.

Trespass into our pit, will you? Tsk tsk. Now you will pay!

The body pit spoke through many voices, each in the Forgotten Tongue — Selachian, unmistakably.


It croaked, crooned, and cackled to high heaven.

You are ours, child, now come! Get what you came for.

“What I came for…” The necromancer wheezed, spurting more blood onto the waste.

Ah! We can taste it!

Hundreds of limp mandibles clattered as if mocking.

In your blood — we taste your True Name!

If they knew his True Name, he surely would be better off dead…

You are Xander. Yes… How delicious. Not quite the name we would expect from a necromancer such as you, but we are not greedy! You will make a lovely puppet. We have waited decades to play.

Bodies rose from the pit, shepherded by bright, bloodied tendrils. The pit dangled one body close enough to taste.

Xander, do you see? This body once belonged to Captain Shirley, a valiant soldier who fought and fell in the Seventh Deviant Crusade. Come forth, children, we call on you to serve!

Xander's face curled in confusion, and still he hung there, ten feet from the ground.

God's cog spins yet again. There is a war coming, and you will fight in it.

“Oh, no, no no no.” He cast a grim look over the bodies across the pit. The last war had caused all this bloodshed, and yet there was more to come? Xander had intended on casting his sins into this pit, to absolve him for the next life. He did not want to fight on behalf of another war. “Let them go! Let me feel Death's sweet embrace!”

Why, it has already begun! Blame not yourself but your kind, and fight. You will serve under this daring officer of the apocalypse, alongside two of his once-trusted lieutenants, and savour every instant! There is no other choice — we shall see to it!

The body pit roiled in deep, booming laughter.

Tremors shook the waste, rolling and rattling heads and limbs like ships at sea. Xander, the trespasser, rose alongside three decaying corpses. The breath of life filled their empty vessels with renewed spirit.

Now go.

With a thunderclap, Xander and the trio of untimely souls flung from the pit and into the distance, but land they did not. They went away, as the pit proclaimed.

There would be war. The world knew yet who would fight, but they would soon find out.

Neither Man nor Deviant would survive.

rating: +35+x

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License