:root {
/* header measurements */
--header-height-on-desktop: 10rem;
--header-height-on-mobile: 10rem;
--header-h1-font-size: clamp(2rem, 5vw, 2.8125rem);
--header-h2-font-size: clamp(0.875rem, 3vw, 0.9375rem);
--logo-image: url("https://nu-scptheme.github.io/Black-Highlighter/img/logo.svg");
}
#header {
--search-textbox-text-color: var(--swatch-secondary-color);
background: none;
}
#header::before {
content: " ";
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0.75rem;
background-image: var(--logo-image);
background-repeat: no-repeat;
background-position: center 0;
background-size: auto calc(var(--header-height-on-desktop) - 1.5rem);
opacity: 0.8;
pointer-events: none;
}
#header h1,
#header h2 {
margin: 0;
padding: 0;
width: 100%;
height: var(--header-height-on-desktop);
display: flex;
align-items: center;
justify-content: center;
display: flex;
align-items: center;
justify-content: center;
}
#header h1 a,
#header h1 a::before,
#header h2 span,
#header h2 span::before {
margin: 0;
padding: 0;
z-index: 0;
display: block;
text-align: center;
}
#header h1 {
z-index: 1;
}
#header h1 a::before,
#header h1 a::after {
content: var(--header-title);
}
#header h1 a::before {
color: rgb(var(--swatch-text-tertiary-color));
z-index: -1;
-webkit-text-stroke: 0.325rem rgb(var(--swatch-text-dark));
}
#header h1 a::after {
color: rgb(var(--swatch-headerh1-color));
z-index: 1;
}
#header h2 {
z-index: 0;
text-transform: uppercase;
pointer-events: none;
}
#header h2 span {
margin-top: calc(var(--header-height-on-mobile)/2 + var(--header-h1-font-size)/2 - 2em);
}
#header h2 span::before,
#header h2 span::after {
--wght: 600;
content: var(--header-subtitle);
position: absolute;
left: 50%;
transform: translateY(-50%) translateX(-50%);
width: 100%;
text-align: center;
}
#header h2 span::before {
-webkit-text-stroke: 0.25rem rgb(var(--swatch-text-dark));
}
#header h2 span::after {
color: rgb(var(--swatch-headerh2-color));
z-index: 1;
}
#search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="text"] {
color: rgba(0, 0, 0, 0);
}
@media (min-width: 36rem) {
#login-status {
flex-grow: 1;
left: 3%;
right: initial;
}
#login-status::before {
--mask-image: none;
background-color: transparent;
}
#login-status:not(:focus-within) {
color: rgb(var(--login-line-divider-color));
-webkit-user-select: initial;
-moz-user-select: initial;
-ms-user-select: initial;
user-select: initial;
}
#login-status #account-topbutton,
#login-status:not(:focus-within) #account-topbutton {
--clip-path:
polygon( 0 0, 100% 0, 100% 100%, 0 100% );
background-color: rgba(var(--login-arrow-color), 0);
}
#login-status #account-topbutton::before{
--clip-path:
polygon( 30% 35%, 70% 35%, 50% 60%, 50% 60% );
--mask-image: initial;
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(var(--login-arrow-color), 1);
-webkit-clip-path: var(--clip-path);
clip-path: var(--clip-path);
}
#login-status #account-topbutton::before,
#login-status:not(:focus-within) #account-topbutton::before,
#login-status:not(:focus-within) #account-topbutton:hover::before {
--clip-path:
polygon( 30% 35%, 70% 35%, 50% 60%, 50% 60% );
--mask-image: initial;
}
#login-status:not(:focus-within) #account-topbutton::after {
display: none;
}
#login-status:not(:focus-within) *:not(#account-topbutton):not([href*="account/messages"]) {
--clip-path:
polygon(
0 0,
100% 0,
100% 100%,
0 100%
);
pointer-events: all;
-webkit-clip-path: var(--clip-path);
clip-path: var(--clip-path);
}
#login-status:not(:focus-within) *:not(#account-topbutton):not(#account-options):not([href*="account/messages"]) {
opacity: 1;
}
#login-status #my-account {
--wght: 300;
}
#account-options {
background: var(--gradient-header);
}
#search-top-box {
top: 1.5em;
right: 3%;
background: rgba(var(--search-focus-textbox-bg-color), 0.4);
}
#search-top-box:focus-within ~ #login-status {
opacity: 1;
}
#search-top-box::after {
transition:
background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
-webkit-clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1);
transition:
background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1);
transition:
background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1),
-webkit-clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
#search-top-box:not(:focus-within)::after {
--clip-path:
polygon(
0 0,
100% 0,
100% 100%,
0% 100%
);
background-color: rgba(var(--search-icon-bg-color, --dark-accent), 1);
-webkit-clip-path: var(--clip-path);
clip-path: var(--clip-path);
}
#search-top-box:not(:focus-within):hover::after {
--clip-path:
polygon(
0 0,
100% 0,
100% 100%,
0 100%
);
background-color: rgb(var(--search-icon-hover-bg-color));
}
#search-top-box form[id="search-top-box-form"]:not(:focus-within) {
max-width: var(--search-width);
}
#search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="text"] {
max-width: var(--search-width);
padding: 0 var(--search-height) 0 1em;
outline-width: 0;
background-color: rgb(var(--search-focus-textbox-bg-color), 0.35);
color: rgba(var(--search-textbox-text-color), 0.4);
cursor: pointer;
}
#search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="submit"],
#search-top-box form[id="search-top-box-form"]:focus-within input[type="submit"] {
pointer-events: all;
border: none;
}
}
#page-title::after,
.meta-title::after,
#page-title::before,
.meta-title::before {
content: "";
flex-grow: 1;
height: 0.0625rem;
background: rgb(var(--swatch-primary));
}
#page-title::before,
.meta-title::before {
margin: auto 1.25rem auto auto;
}
@supports(display: grid) {
:root {
--sidebar-width-on-desktop: calc((var(--base-font-size) * (14 / 15)) * 19);
--body-width-on-desktop: 45.75rem;
}
@media only screen and (min-width: 769px) {
#side-bar .close-menu {
display: block;
position: fixed;
top: 0.5rem;
left: 0.5rem;
width: 3rem;
height: 3rem;
background: unset;
opacity: 1;
pointer-events: all;
z-index: -1;
}
#side-bar .close-menu img {
color: transparent;
}
#side-bar .close-menu::before,
#side-bar .close-menu::after {
content: "";
box-sizing: border-box;
position: fixed;
display: block;
top: 0.5rem;
left: 0.5rem;
width: 3rem;
height: 3rem;
padding: 0;
margin: 0;
text-align: center;
pointer-events: all;
cursor: pointer;
transition:
opacity var(--sidebar-transition-timing);
}
#side-bar .close-menu::before {
--mask:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='Hamburger' x='0' y='0' baseProfile='tiny' overflow='visible' version='1.2' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M4 10h24c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm24 4H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2zm0 8H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2z'/%3E%3C/svg%3E");
z-index: -1;
background-color: var(--toggle-icon-color, rgb(var(--sidebar-links-text))) !important;
-webkit-mask: var(--mask);
mask: var(--mask);
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
-webkit-mask-position: 50% 50%;
mask-position: 50% 50%;
-webkit-mask-size: 60%;
mask-size: 60%;
}
#side-bar .close-menu::after {
z-index: -2;
background-color: var(--toggle-button-bg, rgb(var(--sidebar-bg-color))) !important;
border-radius: var(--toggle-roundness, 50%);
border: var(--toggle-border-color, rgb(var(--sidebar-links-text))) var(--toggle-border-width, 0.25rem) solid;
}
#side-bar:focus-within .close-menu,
#side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu {
pointer-events: none;
}
#side-bar:focus-within .close-menu::before,
#side-bar:focus-within .close-menu::after {
opacity: 0;
pointer-events: none;
}
#side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::before,
#side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::after {
opacity: 0;
pointer-events: none;
}
#side-bar {
display: block;
position: fixed;
top: 0;
left: calc(var(--sidebar-width-on-desktop)*-1);
z-index: 10;
transition:
left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
margin-top: 0;
}
#side-bar:focus-within {
left: 0;
}
#side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover {
left: 0;
}
#side-bar .side-block {
margin-top: 1rem;
background-color: rgb(0, 0, 0, 0);
border-radius: 0;
border-left-width: 0px;
border-right-width: 0px;
}
#main-content::before {
content: "";
display: block;
position: fixed;
top: 0;
right: 0;
z-index: -1;
opacity: 0;
transition:
opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms,
width 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms;
margin-left: var(--sidebar-width-on-desktop);
background: rgba(var(--swatch-menubg-black-color), .3) 1px 1px repeat;
padding-right: 0;
width: 100%;
height: 100vh;
pointer-events: none;
z-index: 99;
}
#side-bar:focus-within ~ #main-content::before {
width: calc(100% - var(--sidebar-width-on-desktop));
opacity: 1;
pointer-events: all;
}
#side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover ~ #main-content::before {
width: calc(100% - var(--sidebar-width-on-desktop));
opacity: 1;
pointer-events: all;
}
@supports (-moz-appearance:none) and (background-attachment:local) and (not (-moz-osx-font-smoothing:auto)) { #side-bar {
padding: inherit;
} }
#content-wrap {
display: flex;
flex-direction: row;
width: calc(100vw - (100vw - 100%));
min-height: calc(100vh - calc(var(--final-header-height-on-desktop, 10.125rem)));
flex-grow: 2;
height: auto;
position: relative;
margin: 0 auto;
max-width: inherit;
}
#main-content {
width: 100%;
position: initial;
max-height: 100%;
padding: 2rem 1rem;
max-width: var(--body-width-on-desktop, 45.75rem);
margin: 0 auto;
}
#page-content {
max-width: min(90vw, var(--body-width-on-desktop, 45.75rem));
}
@supports (-webkit-hyphens:none) {
#side-bar {
transition:
left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms,
padding-right 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms,
background-color 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms;
padding-right: 0;
background-color: rgb(0, 0, 0, 0);
pointer-events: all;
overflow-x: visible;
overflow-y: visible;
z-index: 999;
}
#side-bar::-webkit-scrollbar {
opacity: 0;
-webkit-transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms;
transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms;
}
#side-bar .close-menu::before {
z-index: 999;
}
#side-bar .close-menu::after {
z-index: 998;
}
#side-bar:hover .close-menu::before,
#side-bar:hover .close-menu::after {
opacity: 0;
}
#side-bar:hover {
left: 0;
background-color: rgba(var(--swatch-menubg-color), 1);
padding-right: 0;
}
#side-bar:hover::-webkit-scrollbar {
opacity: 1;
}
#side-bar:hover~#main-content::before {
width: calc(100% - var(--sidebar-width-on-desktop));
opacity: 1;
pointer-events: all;
}
}
}
}
昔奉三神,兴彼三城,
碎散零落,在四海之隅。
黄沙漫漫,耀耀金属光辉,
麦卡恩Mekhane横卧,第一座伟大赖姆负在她脊背。
果木幽幽,见证契约订立,
术士与深红Scarlet,他使玛珠Mamjul与客来Korar崛起两地。
内殿边缘,尸肉腐烂蜷曲,
此为亚大伯斯Yaldaboath,顽劣恶奴将她误释而出。
然则亦有第四者,对其我等不置一词。
—
阿摩尼-赖姆壁画上的诗歌,译自机神语。
黑星俯瞰他的军团。远方,阿摩尼-赖姆的雄伟城墙已然破碎。他皱眉。
光景诡异。阿摩尼-赖姆的金色高塔依旧闪耀在炮击的烟尘中。军营所在离城墙稍远,士兵围聚在营火边,痛饮作乐,庆祝几小时前东城门刚被炮火攻破。其中,多半还是人的士兵已躺下,带着恐惧准备明日攻城。见长官走出营帐,士兵皆站起立正。
沉滞的晚风拂过沙漠,乱了他的头发,散了他的胡须。他坐上沙丘,背对战场。阿摩尼·赖姆城门已破,但在今夜,攻城还未结束。
他抬头望向他的月亮。太阳仍在天上,还将多挂几时。而他看的月亮则并非几小时后才会升起的那个月亮。是那个高高在上的,丑陋的东西——极圆、极黑,就像朝无底洞里看一样,柔柔的红色光冕环绕着它,透过自城墙氤氲直上的烟雾发亮。遥望着,他听见血液涌向耳朵。
他合十、俯首、祈祷,想起他初次看见那个东西的时候。
应该是他年轻的时候吧。已经不是小孩,但也还不是大人。睡过了女人,但还没徒手杀过人。那时他是个农夫,又或许是个渔夫。太久了,回忆月亮之前的生活,就好像回忆昨晚的梦。几许枝节已在恍惑间沉沦,如雾里看花。
他的父亲死时也很年轻,未曾教导过他若不幸与神相遇当如何应对。如此当然,神与他不期而遇。那是在野外,他正做着凡人普通的营生,而时间离他远去。
刹那间,日将落未落,家无处可寻,周边万物忽显得怪异非常,凶险可怖——恐惧,紧抓住他,冻结了他。仿佛被捕食者的眼睛盯着,他了无防备。急急攀上岩壁,钻进山洞。从洞口能俯看沙滩。此夜水平如镜,波澜不惊。太阳沉去深渊,在洞中,疲惫不堪的神经渐渐将他拖入睡眠。他坚持、坚持,但在意识到时他已然沉沉睡去。
他入梦。梦见久远的过去,梦见初获火焰的人类。也梦见未来,梦见未知之地的壮丽宫殿,梦见规模之大闻所未闻的战争,梦见大群军团与钢铁军队在山脚下交战,而那山将崩裂,倾落在两方头上。梦见他自己,手持黑剑,颠覆大地,沉陷世界。梦见无穷无尽的毁灭与痛苦。
在梦中,他笑了。
睁开双眼,一切已不同。他躺在滩边。太阳不在,夜已黑。并非照着月光的那种幽蓝的黑,而是一种更冷、更警觉的黑。他朝水看去,海面映照的月亮狰狞扭曲,像将死之人的手一样伸开。抬头看天,亦是如此。
扭曲的月亮一屈一伸,俯视着他,红光弥漫。月亮邀他前去,他便踩着沙子,在温暖的海水中跋涉,走向月亮的倒影。越来越近,他感到月光蛇行爬过他的胸膛,缠住了他的喉咙。
一臂伸出,在他耳边轻语,向他解释梦中之所见。告诉他,他命中注定将是伟人,注定要成为比渔夫伟大得多的人。告诉他,这个世界需要一位战士,一位勇士,一位护卫者,需要一位能为其厮杀的人。而它,将予他礼物,将为他献上安全、权力、控制。
他想起了几分钟前黑暗如何令他畏惧,令他觉得自己必死无疑。
他想起了人类。蹒跚学步的种族,分散在世界各地,一直到遥远东方的日出之地。
他想起童年听过的传说。想起听到那无人敢应的呼唤却站起身的英雄们。那些能按自己的想象塑造世界的勇敢的少数人。国王们,征服者们。
在震耳欲聋的寂静中,他只听见漆黑的水在岸边激起的音律。红光笼罩,头上黑色的圆球似乎更加近了。闪烁的触手紧紧扼住他的身体。
他轻声道出回答,月亮笑了。一瞬间,它后退了。在这一瞬间,他突然听到了别的声音——迅捷、愤怒,在水中冲荡——这声音在他脚下。
那东西绕上他的脚踝,将他拖下水去。
夜的安宁忽然被打破。他奋力击水,什么也看不见,像瞎狗一样,胡乱挥舞着手臂,翻腾不止。他的肺在尖叫,而水灌进口中、鼻中、耳中。他与激流搏斗,心思忽然清晰起来。心中,他听见了一个声音。
没错,挣扎吧。它说。挣扎是创生的本相。
于是他挣扎。以拳痛殴拉住他脚踝的那不论何物。
此乃原初子宫之混沌。忘掉那些道德、原则、律法吧。
他感觉手指好像刮到一个硬物。也许是鳞片?他捏住那东西的边缘。
它们都无关紧要。唯有那无可逃离的暴力斗争之循环。此乃我们生于世界之方。此乃世界之本质。
他用力撕扯。他的肌肉如将死般悲鸣。他的视界渐渐隐入黑暗。直到一声恶心的“噗”声,硬物被扯下,而拽着他的那股力量也松开了。
生存是唯一的法则。
他感觉到身体上浮。头面部破出水面,他便大口吸气。水面平静,一如既往——毫无一点生死相搏的痕迹。
看,孩子。以血立约吧。
一个东西漂在他面前,湿漉漉的身体映着红色微光。他没见过这样的生物——一团畸形的血肉,只比他的躯干稍大。它咕哝着,徒劳地挥舞着残肢。它的眼睛在月光下闪烁。
他感觉到了手中东西的重量。一把黑色的短刀,玻璃般的质地。他高举刀刃,看着那怪物的眼睛。
杀。踏进那暴力的循环中去。去取得你生来便应有的地位。
约立下了。
他醒来,又回到了那山洞里。太阳从地平线升起,光芒照亮四周。他看见,在洞穴里边有一堆燃尽的篝火,一把黑色的短刀在余烬中冷却。
刀向他歌唱,歌中有一寓言,唱起日升与月落,月升与日落。他手握刀柄,感觉到苍穹之上的高远存在。那个存在向他低语:“欢迎,黑星。”
数百年后,他坐在沙丘上,卫兵守在较远处。他向月祈祷,祈求指引,祈求他能确信,用军队和赠予他的力量所做的一切屠杀都是他想做的。
月亮静静凝视着他。他又显露出软弱和畏惧了,岂能如此?
再无应答。黑星眯起眼睛,目光坚毅。他站起身,背对空廓的沙漠。地平线上,阿摩尼-拉姆在燃烧。
机神帝国必亡。黑星将征服它。
古神尚未争战时,天穹尚未破毁时,
地上文明尚未曾奠基时,
彼时有四:四神,四城。
然而那第四者,犯下异端之罪,
忤逆支撑世界的那最古老的律法。
眼看世界分崩离析,三神联手将他逐离,
远远流放,称以不洁之名,
恶憎者,怪恶者,第一叛教者,
他堕下诸天,落入西方大海,
他沉没,而诸天上的战争愈演愈烈。
—
诗歌的较前一节,从陶瓷壁画残片复原。
Cite this page as:
For more information, see Licensing Guide.
Licensing Disclosures
Filename: SIEGE.png
Name: Siege of Lisbon by Roque Gameiro.jpg
Author: Roque Gameiro
License: Public Domain
Source Link: Wikimedia Commons
For more information about on-wiki content, visit the Licensing Master List.