: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://scp-jp.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)/1.6 - 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: unset;
bottom: 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: unset;
bottom: 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;
}
}
}
}
}
クレジット
タイトル: Tale-JP - 最後にそのメスを入れるのは?
著者: Fireflyer
作成年: 2023
何が起きたのか?
サイト-19、研究セクター02内に収容されていた私は、その殺風景な収容セルの中でゆっくりと目を開けた。
眠っていたのか?いつ頃から?
別に眠ることは特段不思議ではない。ただ起きた瞬間にどこか違和感が、収容セル、あるいは頭の中で渦巻いているのを感じた。
違和感はこの煩わしい拘束具でも、ツンと鼻につく精油の匂いでもない。治療の終わった実験被検体でも、死んだような表情の武装警備員共でもない。
いや 今日ばかりは死んだような眼をしていない。正しい目をしている。
……どういうことだ?
そう気づくと、何としてでも理由を知りたい。彼らを治療した記憶は無い。なぜこうなっている?かの悪疫はいったいどこに消えたんだ?
使命感に駆られる。一刻も早く私は確かめたかった。誰か居ないのか?
そう数分間拘束具から四肢を外そうと藻掻いていると、収容セルの扉が開いた。いつもは大層沢山の警備を引き連れて開くはずのドアに、男が一人でいた。そして、男と目があったその一瞬、そいつは微かに笑った。
こいつも正しい……どうしてだ!悪疫が蔓延して以来、こんなことは無かった!
彼は何も話さないまま、拘束具に近寄る。何を考えているんだろうか。
「SCP-049、あんたの 」
「一体どういうことだ!」
マスクにつけられていた防音器具を外されたと同時に、叫ぶ。
「何の話だ?」
「どうして、外にいるあの武器を持った男は正しいんだ?なぜもう救われている?いつからこうなっていた?」
研究員は困惑したような表情を見せる。
「ああ?だから、私はあんたに世界を救って欲しいから来たんだ。救われるも何もないさ。」
拘束具を解かれ、自由の身となる。いつ振りかもわからない解放感を感じる隙無く、研究員は続ける。
「まだ名乗ってなかったな。SCP-049収容担当職員……と言っても、俺はデータとにらめっこするだけで直接は関わらないけどな。名前は……もう汚れて読めないな。ジョー、ジョー研究員とでも呼んでくれ。特に収容担当が、本名をアノマリーに明かすのは財団職員の輩から推奨されてないからね。」
研究員に聞こえるよう、わざとらしく咳払いをする。
「では、ジョー研究員……改めて、さっきはなんと? 」
「ドクター、あんたの出番だ。ドクターにしか世界は救えない。」
私はマスクの下でニヤリと笑うと、こう告げる。
「それでは逆に聞こう!私にどうやってこの世界が救えると思う?君から悪疫は感じない。つまりだ!何かが起こっていると言って差し支えないだろう!……何か知らないか?」
研究員は少し悩み、答える。
「もしかしたら、財団から送られてきたメッセージにヒントがあるのかもしれない。」
「というと?」
「この前、一件のメッセージが全世界に届けられた。もちろん俺のパソコンにも。財団の新たな使命は人類の根絶だと書いてあったんだ。」
私は不思議な納得感と同時に不信感を覚えた。
「それは、そこにいる武装研究員……いや、それだけじゃない。お前もだ!お前らが救われているのと関係はあるのか?」
彼は胸を張って答える。
「ああ!大いにあるとも。」
「それは一体何なんだ?」
「それは、ああ。いや。そんな事はどうでもいいんだ。」
研究員は少し俯く。
「どうでも良くは無い。答えてくれ。今のままではまだ私は何をすればいいのか、私に何が出来るのかも分からないぞ」
研究員は何かにイライラしているような振る舞いを見せる。そして、収容室の端に寄るとブツブツと何かを唱えだした。一体こいつは何を考えているんだ?
「ジョー研究員?一体何をしているんだ?私を何のために解放した?そもそも財団共は私の研究にケチを 」
「黙れ!」
彼は叫んだ。狭い収容室に彼の声が反響する。
「黙れ黙れ黙れ黙れ黙れ!お前は!ただただ人間を治療すればいいんだ!」
「ああ、そうだな。でも今私の見える範囲に居る人間はみんな救済されているじゃないか。その理由を答えてくれと言っているんだよ私は。何、そんなに難しいことかい?」
「全く!ただ、ただ1つ言えるのは」
研究員は顔色を悪くし、汗をだらだらと流している。
「今、財団はお前の言う救済をする為に人を殺しているんだ。財団に居る職員達は特殊な治療を受け、人……いや、悪疫の無い状態に変わったんだ。」
驚きの余り、言葉を失う。
状況を飲み込むのに時間はかかる……ただ、興奮で体が震えていた。
ああ……私が全てを投げて注ぎ込んできた悪疫からの救済がこんな形で人類に降りかかるとは……素晴らしい……!
確かに私には力不足だった。今までは財団に変人だと決めつけられ、排斥され、詰まらない枷をかけられてきたが、この様な形で私の望みを叶えてくれるとは……素晴らしい!見直した!
「ああ、ジョー研究員。」
私はメスを取り出し、拘束具に近寄る。
「い、一体なんだ?何をしている?」
「私は君達の拘束が何の為の仕打ちだと悲しんでいた。私は人類に救済を届けようとしただけなのに……どうしてこの様な愚かな真似をするのだと、苛立つ事も多々あった……」
「ああ、そうさ、だから!」
私は拘束具に一礼し、ジョー研究員の方を向く。
「ジョー研究員、知っているか?」
研究員から先程少し浮かべていた喜びの表情は消え、私への不信感を顕にした。もう、全て終わったのだから、そんな顔をしなくとも良いのに。
「何をだ?」
「私もまた、悪疫の罹患者なのだ。一人の人間なのだよ。ただ少し長生きはするけれど。だから、今から、私も皆のように天国に向かう。」
メスを自分に突き立てる。ようやく解放される時が来たのだ。この辛い使命から。この無限の牢獄から。この古の呪いから。
「被験体諸君!今そちらへ向かうよ!」
「やめろ!お前にはまだやる事が」
ジョー研究員の言葉を無視し、メスを顔に刺す。マスク越しに。ああ、皆このような気持ちだったのか。不完全な治療ですまない。すまない皆。
目の付近に刺さったメスを口の方へゆっくりと下ろす。辛うじて見える左目から、ジョー研究員の悲しそうな顔が伺える。
「どうしたんだ?君も喜べ!遂に我々は悪疫から解放されるのだ!救済の時は遂にやってきたのだ!」
顔からメスを抜くと、心臓のあるはずの位置にメスを突き立てる。
ジョー研究員は泣いていた。何故だかはわからない。もしかしたら、別れを悲しんでいるのかもしれない。当然だ。人間は別れを悲しむものだから。
「ジョー研究員、泣くな。我々は皆で天国へ行くのだ!ああ、ありがとう看守共。ありがとう!」
心臓を一刺しにした。かつて無い痛覚に襲われる。
ただ、その最期に、メスで開いたマスクの切れ目から、私は笑顔を見せようとした。今日は私の生きてきた中で最も幸せな日だった。