悲惨と喜びの呪われたクリスマス

評価: +26+x
blank.png

悲惨と喜びの呪われたクリスマス


「とんだ、クリスマスプレゼントだわ」

臓物と血液と人骨がギッシリ詰められた邪悪なプレゼント箱を手に、津馬 京依つば けいはそう吐き捨てた。サイト-81ETで12月25日に行われる毎年恒例の(さほど盛り上がらないことが多い)クリスマスパーティーも半分が終わろうとしていた時、それは唐突に起こった。

財団職員に確定的な休みはない。実家に戻る帰路で収容違反の連絡を受けたら引き返すし、ビーチでバタフライを楽しんでいる時にアノマリーを見つけたなら水着のまま初期収容を担当する。だから、パーティーの途中でサイトに異常物が送り込まれたのなら当然対応を取る他ない。元々、おかしな異常現象が多いサイトだ。休日だろうとクリスマスだろうとこういったアクシデントは容赦なく天災の如く降りかかってくる。

「……どうします? 取り合えず初期分析チェックかけますか?」

津馬の同僚でありパーティーの参加者──日奉 百合いさなぎ ゆりがそう言った。彼女の手には貴重な呪術的技術物品パラテクノロジーたる“呪符”が握られ、仰々しい真言を光らせていた。サンタ帽と白衣の組み合わせは休暇中とも仕事中とも付かず、どこか器用貧乏な彼女の働きぶりを反映しているかのようだった。

「はぁ、それっきゃないですね……」

認識災害の可能性──確定的にナシ。
現実改変の可能性──恐らくナシ。
呪詛事象の可能性──統計及び性質からしてほぼほぼアリ。

津馬も日奉も腕の立つ呪術学者だ。ものの数分で異常物の“アタリ”を付けた。

「たぶん、いつも通り呪詛絡みでしょうね……分かっていたことではありますが」

「うあー本当に気持ち悪い。聖なる日に見るもんじゃないっての」

「ちょっと揺らさないで下さい! 中身が零れますから──」

びしゃん! 津馬がプレゼント箱から臭う死の香りを遠ざけようと箱を傾けた。その結果、中の幾つかのモツと血が箱から吐き出され飛び散る。運の悪いことにそれは箱の側面を間近で目視していた日奉の顔に直撃した。

「うぅあああ……! ウッ!これヤバい……」

「ああああ! ごめん! ごめんなさい!」

日奉──風呂場へ直行。至極当然の行動を目に津馬は後悔の念を抱く。そして、床に散らされた血と残存物、汚れきり床に落ちたサンタ帽に視線を移しまた後悔。

「……最悪なクリスマス」

「チキン、吐き戻すかと思いました」

「本っ当にごめんなさい……新しい白衣申請しときます」

戻ってきた日奉そして津馬は、取っ散らかったテーブルの上でぬるま湯のような談笑を続けていた。冷えて固まったピザと炭酸の抜けたコーラが腹の中に収まると不思議で不愉快だ。満腹なのに満足感は一切感じない。

ひとまず問題の箱は呪符を貼りつけた上で、サイトの保管倉庫に封じ込めておいた。これ以上の調査は後回し。出来れば来年から取り掛かることを許されて欲しい──そう津馬は思った。最近はやけにメランコリーで憂鬱。研究者としてのやる気が不足気味。

「あの箱、どう思いますか?」

ああ、クソ。どうやらそう都合よくはいかないらしい。クリスマス休暇はもうない。下手すれば今年の年末はこいつに掛かりきりになる。

「あーはい。プレゼントの体を成してるけど中身は悪意……つまり、“クリスマスプレゼント”の構造ないしナラティブだけを借りた呪詛の類かなと漠然と思ってます」

「構造……ですか」

「まぁ、推測だからこんなのなんとでもいえますけど、ね」

津馬は思わずため息を漏らす。億劫から出たただの推測が、気だるさを呼び込み嫌なくらいに染み渡っていく。あぁ、ダルい。とにかくダルい。明日からまた仕事、か──

「それ、凄いです」

「えっ」

「そうですよ、凄い発想です! その観点から新規分析セカンド・チェックを始めましょうよ!」

津馬──唖然。次いでニヤリ。不調は漠然とそして長かったが、好調は突発的な具体として訪れた。倦怠が吹き飛び、心の奥底から知的好奇心&研究欲求が湧きあがる!

私は呪術研究者だ。目の前の呪いを解かずして何を名乗れる!

「賛成! 徹夜しますか!」

「ですね。やっちゃいましょう!」

「何か摘まみたいですね……夜食ってありましたっけ?」

発言と同時に津馬の脳裏に電撃のように“それ”が姿を現す。ある意味必然だった。クリスマスパーティー、不完全燃焼な盛り上がり……つまり、アレが残っている。

「“ケーキ”、食べます? あーでも今何か食べる気分にはなれないですよね……」

「いや、食べたいです! 私甘党なので。別腹ですよ」

聖夜はまだ少し続く。特別な一日とはならずとも、この日が醸し出す熱はきっと誰もに微笑むのだろう。

/* source: http://ah-sandbox.wikidot.com/component:collapsible-sidebar-x1 */
 
#top-bar .open-menu a {
        position: fixed;
        bottom: 0.5em;
        left: 0.5em;
        z-index: 15;
        font-family: san-serif;
        font-size: 30px;
        font-weight: 700;
        width: 30px;
        height: 30px;
        line-height: 0.9em;
        text-align: center;
        border: 0.2em solid #888 !important;
        background-color: #fff !important;
        border-radius: 3em;
        color: #888 !important;
        text-decoration: none!important;
}
 
@media (min-width: 768px) {
 
    .mobile-top-bar {
        display: block;
    }
 
    .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: -25em;
        width: 17em;
        height: 100%;
        background-color: rgb(184, 134, 134);
        overflow-y: auto;
        z-index: 10;
        padding: 1em 1em 0 1em;
        -webkit-transition: left 0.5s ease-in-out 0.1s;
        -moz-transition: left 0.5s ease-in-out 0.1s;
        -ms-transition: left 0.5s ease-in-out 0.1s;
        -o-transition: left 0.5s ease-in-out 0.1s;
        transition: left 0.5s ease-in-out 0.1s;
    }
 
    #side-bar:after {
        content: "";
        position: absolute;
        top: 0;
        width: 0;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.2);
 
    }
 
    #side-bar:target {
        display: block;
        left: 0;
        width: 17em;
        margin: 0;
        border: 1px solid #dedede;
        z-index: 10;
    }
 
    #side-bar:target + #main-content {
        left: 0;
    }
 
    #side-bar:target .close-menu {
        display: block;
        position: fixed;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
        background: rgba(0,0,0,0.3) 1px 1px repeat;
        z-index: -1;
    }
}
:root {
    --timeScale: 1;
    --timeDelay: 0s;
}
 
/* Converting middle divider from box-shadow to ::before pseudo-element */
.anom-bar > .bottom-box { box-shadow: none!important; }
.anom-bar > .bottom-box::before {
    position: absolute;
    content: " ";
    width: 100%;
    height: 0.5rem;
    background-color: rgb(var(--black-monochrome, 12, 12, 12));
    transform: translateY(-0.74rem);
}
 
/* DIVIDER */
.anom-bar > .bottom-box::before {
    animation-name: divider;
    animation-duration: calc(0.74s * var(--timeScale));
    animation-delay: calc(0.1s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(.32,.38,.39,.94);
    animation-fill-mode: backwards;
}
 
/* CLASSIFIED LEVEL BARS */
div.top-center-box  > * {
    animation-name: bar;
    animation-duration: calc(0.45s * var(--timeScale));
    animation-iteration-count: 1;
    animation-timing-function: ease-out;
    animation-fill-mode: backwards;
}
div.top-center-box > :nth-child(1) { animation-delay: calc(0.2s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(2) { animation-delay: calc(0.32s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(3) { animation-delay: calc(0.45s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(4) { animation-delay: calc(0.61s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(5) { animation-delay: calc(0.75s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(6) { animation-delay: calc(0.95s * var(--timeScale) + var(--timeDelay)); }
 
/* TOP TEXT */
div.top-left-box, div.top-right-box {
    clip-path: polygon( 0% -50%, 150% -50%, 150% 100%, 0% 100%);
}
 
div.top-left-box > *, div.top-right-box > * {
    position: relative;
    animation-name: bottomup;
    animation-duration: calc(0.65s * var(--timeScale));
    animation-delay: calc(0.5s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: ease-out;
    animation-fill-mode: backwards;
}
 
/*-----------------------------------*/
/*-----------------------------------*/
 
/* CONTAINMENT, DISRUPTION, RISK CLASSES */
div.text-part > * {
    clip-path: polygon( 0% 0%, 100% 0%, 100% 100%, 0% 100%);
    animation-name: expand2;
    animation-duration: calc(0.5s * var(--timeScale));
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(.12,.41,.27,.99);
    animation-fill-mode: backwards;
}
div.text-part > :nth-child(1) {
    animation-name: expand1;
}
div.text-part > :nth-child(1) { animation-delay: calc(0.6s * var(--timeScale) + var(--timeDelay)); }
div.text-part > :nth-child(2) { animation-delay: calc(0.75s * var(--timeScale) + var(--timeDelay)); }
div.text-part > :nth-child(3) { animation-delay: calc(0.86s * var(--timeScale) + var(--timeDelay)); }
 
div.main-class::before, div.main-class::after {
    animation-name: iconslide;
    animation-duration: calc(0.45s * var(--timeScale));
    animation-delay: calc(0.8s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(.12,.41,.27,.99);
    animation-fill-mode: backwards;
}
 /* BOTTOM TEXT */
div.main-class > *,  div.disrupt-class > *, div.risk-class > * {
    white-space: nowrap;
    animation-name: flowIn;
    animation-duration: calc(0.42s * var(--timeScale));
    animation-delay: calc(0.75s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: ease-out;
    animation-fill-mode: backwards;
}
 
/*-----------------------------------*/
/*-----------------------------------*/
 
/* DIAMOND */
div.arrows {
    animation-name: arrowspin;
    animation-duration: calc(0.7s * var(--timeScale));
    animation-delay: calc(0.6s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(.12,.41,.27,.99);
    animation-fill-mode: backwards;
}
 
div.quadrants > * {
    animation-name: fade;
    animation-duration: calc(0.3s * var(--timeScale));
    animation-delay: calc(1.4s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(.12,.41,.27,.99);
    animation-fill-mode: backwards;
}
 
div.top-icon, div.right-icon, div.left-icon, div.bottom-icon {
    animation-name: nodegrow;
    animation-duration: calc(0.4s * var(--timeScale));
    animation-delay: calc(1.4s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(.12,.41,.27,.99);
    animation-fill-mode: backwards;
}
div.diamond-part {
    clip-path: polygon( -10% 0.37%, 120% 0.37%, 120% 100%, -10% 100%);
    animation-name: diamondBorder;
    animation-duration: calc(0.8s * var(--timeScale));
    animation-delay: calc(0.5s * var(--timeScale) + var(--timeDelay));
    animation-iteration-count: 1;
    animation-timing-function: cubic-bezier(.32,.38,.39,.94);
    animation-fill-mode: backwards;
    will-change: box-shadow;
}
 
/* MOBILE QUERY */
@media (max-width: 480px ) {
    .anom-bar > .bottom-box::before {
        display:none;
    }
    .anom-bar > .bottom-box {
        box-shadow: 0 -0.5rem 0 0 rgb(var(--black-monochrome, 12, 12, 12))!important;
    }
    div.top-center-box  > * {
        animation-name: bar-mobile;
        animation-duration: calc(0.9s * var(--timeScale));
    }
    div.top-center-box > :nth-child(1) { animation-delay: calc(0.1s * var(--timeScale) + var(--timeDelay)); }
    div.top-center-box > :nth-child(2) { animation-delay: calc(0.2s * var(--timeScale) + var(--timeDelay)); }
    div.top-center-box > :nth-child(3) { animation-delay: calc(0.3s * var(--timeScale) + var(--timeDelay)); }
    div.top-center-box > :nth-child(4) { animation-delay: calc(0.4s * var(--timeScale) + var(--timeDelay)); }
    div.top-center-box > :nth-child(5) { animation-delay: calc(0.5s * var(--timeScale) + var(--timeDelay)); }
    div.top-center-box > :nth-child(6) { animation-delay: calc(0.6s * var(--timeScale) + var(--timeDelay)); }
 
}
 
/*--- Motion Accessibility ---*/
@media screen and (prefers-reduced-motion: reduce) {
    div.anom-bar-container { --timeScale: 0!important; }
}
 
/*-------------------------*/
 
@keyframes divider {
    from { max-width: 0%;  }
    to { max-width: 100%; }
}
 
@keyframes bar {
    from { max-width: 0%; }
    to { max-width: 100%; }
}
@keyframes bar-mobile {
    from { max-height: 0%; }
    to { max-height: 100%; }
}
 
@keyframes bottomup {
    from { top: 100px; }
    to { top: 0; }
}
 
@keyframes expand1 {
    from { opacity: 0; clip-path: inset(0 calc(100% - 0.75rem) 0 0); }
    to { opacity: 1; clip-path: inset(0); }
}
@keyframes iconslide {
    from { opacity: 0; transform: translateX(-5rem); }
    to { opacity: 1; transform: translateX(0); }
}
 
@keyframes expand2 {
    from { opacity: 0; width: 1%; }
    to { opacity: 1; width: calc(100% - 0.25rem); }
}
@keyframes fade {
    from { opacity: 0; }
    to { opacity: 1; }
}
 
@keyframes flowIn {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}
 
@keyframes arrowspin {
    from { clip-path: circle(0%); transform: rotate(135deg); }
    to { clip-path: circle(75%); transform: rotate(0deg); }
}
@keyframes nodegrow {
    from { transform: scale(0);}
    to {  transform: scale(1);}
}
@keyframes diamondBorder {
    from { box-shadow: -0.5rem -20rem 0 0 rgb(var(--black-monochrome, 12, 12, 12)); }
    to { box-shadow: -0.5rem 0 0 0 rgb(var(--black-monochrome, 12, 12, 12)); }
}

特に指定がない限り、このサイトのすべてのコンテンツはクリエイティブ・コモンズ 表示 - 継承3.0ライセンス の元で利用可能です。