墓园,梵妮莎的故事
墓园,梵妮莎的故事
Byㅤ Hg-labHg-lab
Published on 28 Jun 2022 16:28
评分: +3+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.

Usage

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;
}
 
@media (min-width: 768px) {
 
    #top-bar .mobile-top-bar {
        display: block;
    }
 
    #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-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;
    }
 
    /* FIREFOX-SPECIFIC COMPATIBILITY METHOD */
    @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;
    }
    }
}

墓园,梵妮莎的故事

旅者抵达了墓园锈迹斑斑的大门。一贯悬在门上的煤气灯已经破碎,唯有满月的血光照亮脚下的路。

何以至此?旅者沉思着。何故徘徊在这垂死的世界?你在寻找什么?这些问题没有答案。但旅者从未停下脚步,为了一种冥冥之间的感觉。某物…某人的召唤,仿佛高位者正引领着他。

沿着小路蜿蜒前行,穿过墓地,经过的每块墓碑都被藤蔓缠绕,盛开着微微发光的白色花朵。纵使只有死者带着他们的记忆长眠此地,旅行者却在前方听到了微弱的歌吟。

接近声音的源头,旅者得以看清它的来源。一名戴头巾的女子跪在一块墓碑旁,柔声哼唱着。她身披精致的白色斗篷,脸上沾染血迹,伸出苍白瘦剔的手,轻抚着墓碑。

藤蔓破土而出,缠绕上墓碑,点点白花开始绽放。女子头颅低垂,默默坐了一会儿,起身走向下一处坟墓。

歌声仍在继续。

旅者走近了女子。他确信对方注意到了自己,却没有表现出恶意。反之,她以如炬的目光迎向旅者,继续手中的工作。

“叨扰。”旅者开口。

没有回应。片刻,柔弱的声音响起。

“流浪者?”她问,似乎正注视着对方。

旅者解下武器,放在地上,随后在女子身旁坐下。“这样的地方很危险,到处都是亡灵。”他说。

“…我想这不是什么问题。”女子将手放在墓碑上,催开了更多藤蔓和花朵,似乎自她掌中生出。花儿柔软而娇嫩——一缕微风就能把花瓣吹落。然而,那些花朵生长在遍布荆棘的藤蔓上。女子低下头,轻声道,“他们不想再奔波了。

她面向旅者,促狭地微笑。

“流浪者,你是谁?”

“无名无姓。”旅者回答,“你会是谁?”

“梵妮莎。我来自旱叶Xerophylla中部。”

旅者顿了顿,那是个远离城市中心的地方。他转向女子。

“为什么来这儿?”

“尽我的义务罢了。”梵妮莎平静地说,语调流露出一丝悲怆。

她站定,拂去斗篷上的尘土,示意脚边的那座墓碑,上面刻着“雅各布·莱恩哈特”。

“这个男人,莱恩哈特先生,来自从这里往北走一小段路的伊尔卡纳Ilcana,于几十年前去世……连同他的家人、妻子和两个女儿。”她停顿片刻,低头沉思。 “如他们这样的人,已经没有在世者能记住他们了,战后更是如此。”

梵妮莎转头面向旅者。“流浪者,第一次奥术战争时,你也在这里吗?”

“我没有家。”旅者说。

“那是多年以前的事了。旱叶在伊尔卡纳与北方人交战。有人提出主意,要控制女巫,利用她们的奥术和技能赢下对北方的战争。年轻的女巫们被带离家族,接受了旱叶军团的训练。她们和士兵一同驻扎在前线。”

她再次停顿,深深叹了口气,继续讲诉。

“我便是…其中一员。我是女巫之皇萨拉琳的长女,也是旱叶最强大的女巫。”

梵妮莎走向附近一座坟墓,将手轻轻放在墓碑之上。

“战火只持续了三个晚上,那是历史上最短的战争。北方寡不敌众。旱叶迁入都城,只留下了毁灭和死亡。”

她转身面向旅者。“这是…大屠杀……它不适合我们任何一人。不是女巫,不是士兵。但我们继续前进,一直到伊尔卡纳的首都。

“围攻都城的那段日子里,我领悟了很多。我看到一个孩子抱着母亲的遗体,双眼噙满泪水;我看到一位母亲不顾一切保护她的孩子;我看到家人们在生命的最后时刻彼此相拥,接受自己的命运。”

梵妮莎的手滑过墓碑顶部,表情变得肃穆。

“北方人并不邪恶。他们并非如领袖所言,是无情的恶魔。”

藤蔓拔地而起,白花将坟墓重重覆盖。

“他们有家人,有朋友,有喜悦,也有悲伤。他们怀有同情之心,他们都是人类。”她的声音有些哽咽,“领袖曾告诉我们,我们是阻挡黑暗的光明,保护那些无法护佑自己的人。而这一切都是谎言。”

“我曾了结过无数人的生命,为了一个谎言。”

梵妮莎指向那些在坟墓上盛开的花朵。

“那些人皆埋葬于此,所有被我杀死的,无辜的人。我种下的花会让他们的灵魂得到安宁,即使最后的太阳已然落下。”

她朝下一座坟墓走去,忽然身形不稳,踉跄摔倒在地。

“你还好吗?”旅者忙伸手相助。

梵妮莎的斗篷敞开了,露出连日粒米未进的消瘦躯体。

“没事的,流浪者,我——”

她咳嗽起来,洁白的衣服洒上了深蓝的血迹。

“我可以帮你,我知道有人可以治好你,如果你需要食物的话我能——”

旅者的话被打断了,“不必,流浪者。这是我的惩罚。”

梵妮莎向他伸出手,掌心绽放着一朵白花。

“我大限已至。请求您,将这朵花放在那座墓上,让他们去吧。”

旅者拿起花放在了墓上。他环顾墓园,每一座坟墓都有明亮的白花正在盛放。

被他放下的花朵亦在微微发光。

“流浪者。”梵妮莎喃喃道,抬起目光。

“我所祈求的,只是再一眼繁星……最后一次。”

她虚弱得无力动弹,旅者将沾满血迹的布从她眼前掀开,那双眼睛闪烁着明亮的蓝光,凝视着夜空中成千上万颗星星,这是她多年从未见过的景象。

梵妮莎微笑着,闭上了双眼。

除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License