@import url('https://fonts.googleapis.com/css2?family=Nixie+One&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap');
:root {
--body-bg: 225, 225, 225;
--content-bg: var(--global-white-color);
--bg-opacity: 0.9;
--extra-bg-1: url(https://imagebed.pro/images/liurd/skyline.svg);
--extra-bg-2: url(https://imagebed.pro/images/liurd/skyline.svg);
--extra-bg-3: url(https://imagebed.pro/images/liurd/skyline.svg);
--extra-opacity-1: 0.15;
--extra-opacity-2: 0.05;
--extra-opacity-3: 0.05;
--topbar-hover-bg: var(--dark-ui-bg), 0.2;
--topbar-hover-txt: var(--light-ui-txt);
--user-drop-txt: var(--dark-ui-txt);
--bottombar-bg: var(--dark-ui-bg);
--bottombar-txt: var(--dark-ui-txt);
--header-title: "Backrooms";
--banner-title: "BACKROOMS";
--banner-subtitle: "当色彩褪去的时候";
--header-height: 3rem;
--topbar-height: 2.5rem;
--dropdown-height: var(--topbar-height);
--banner-height: 25rem;
--header-ui-size: 3rem;
--header-title-size: 1.8rem;
--topbar-size: clamp(0.8rem, calc(0.4rem + 0.8vw), 1.2rem);
--banner-title-size: clamp(2rem, calc(2rem + 3.5vw), 6rem);
--banner-subtitle-size: 1rem;
--banner-font: "Nixie One", "Noto Serif SC", Franklin Gothic Medium, Franklin Gothic, ITC Franklin Gothic, Arial, serif;
--header-font: var(--banner-font);
--title-font: "Outfit", "Noto Sans SC", "Noto Sans TC", Franklin Gothic Medium, Franklin Gothic, ITC Franklin Gothic, Arial, sans-serif;
--body-font: "Atkinson Hyperlegible", "Noto Sans SC", "Noto Sans TC", Arimo, Verdana, Geneva, sans-serif;
--ui-font: "Outfit", "Noto Sans SC", "Noto Sans TC", Arimo, Verdana, Geneva, sans-serif;
}
#extra-div-1 {
position: fixed;
width: 100%;
height: 25vh;
bottom: 0;
left: 0;
z-index: -1;
background-image: var(--extra-bg-1);
background-size: 20rem;
background-repeat: repeat-x;
background-position: center;
opacity: var(--extra-opacity-1);
}
#extra-div-2 {
position: fixed;
width: 100%;
height: 50vh;
bottom: 0;
left: 0;
z-index: -2;
background-image: var(--extra-bg-2);
background-size: 40rem;
background-repeat: repeat-x;
background-position: center;
opacity: var(--extra-opacity-2);
}
#extra-div-3 {
position: fixed;
width: 100%;
height: 100vh;
bottom: 0;
left: 0;
z-index: -3;
background-image: var(--extra-bg-3);
background-size: contain;
background-repeat: repeat-x;
background-position: bottom;
opacity: var(--extra-opacity-3);
}
#container {
display: grid;
grid-template-columns: minmax(var(--sidebar-width), 1fr)auto 1fr;
grid-template-rows: auto auto auto auto;
}
#extrac-div-1 {
grid-column: 2 / 3;
grid-row: 1 / 2;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-family: var(--banner-font);
font-weight: 200;
width: 100%;
height: var(--banner-height);
color: rgb(var(--header-txt));
order: -1;
}
#extrac-div-1::before {
content: var(--banner-title);
font-size: var(--banner-title-size);
}
#extrac-div-1::after {
content: var(--banner-subtitle);
font-size: var(--banner-subtitle-size);
}
#header {
grid-column: 1 / 2;
grid-row: 1 / 3;
min-width: var(--sidebar-width);
width: 100%;
height: fit-content;
grid-template-columns: var(--header-ui-size) 1fr auto auto;
grid-template-rows: var(--header-ui-size) calc(var(--banner-height) - var(--header-ui-size)) auto;
top: calc(0px - var(--banner-height));
order: -2;
}
#search-top-box {
grid-column: 3 / 4;
position: fixed;
right: var(--header-ui-size);
backdrop-filter: blur(1rem);
}
#login-status {
grid-column: 4 / 5;
position: fixed;
right: 0;
backdrop-filter: blur(1rem);
}
#header h1 {
grid-column: 2 / 3;
grid-row: 1 / 2;
height: var(--header-height);
position: static;
}
#header h1 a {
justify-content: flex-start;
padding: 0;
padding-left: 0.5rem;
transition: padding var(--global-duration);
}
#header h1 a:is(:hover, :focus) {
padding-left: 1rem;
transition: padding var(--global-hover-duration);
}
#header h2 {
display: none;
}
#header-extra-div-1 {
display: none;
}
#top-bar {
grid-column: 1 / 5;
grid-row: 3 / 4;
height: auto;
}
#top-bar > div > ul {
flex-direction: column;
height: auto;
margin-right: 0;
}
#top-bar > div > ul > li {
flex-basis: unset;
height: var(--topbar-height);
}
#top-bar > div > ul > li > a {
justify-content: flex-end;
padding: 0 1rem;
}
#top-bar > div > ul > :is(li, li:last-of-type) > ul {
top: 0;
left: 100%;
width: 24em;
max-width: max-content;
min-width: auto;
flex-direction: row;
flex-wrap: wrap;
}
#top-bar > div > ul > li > ul > li {
width: 10em;
flex-grow: 1;
}
#top-bar > div > ul > :is(li, li:hover, li:focus, li.sfhover, li:focus-within) > ul > li > a {
box-sizing: border-box;
}
#content-wrap {
display: contents;
}
#side-bar {
max-height: unset;
overflow-y: auto;
border: unset;
box-shadow: 0 0 1.5rem -1rem rgb(var(--global-dark-color));
}
#side-bar::after {
backdrop-filter: blur(1rem);
}
#main-content {
grid-column: 2 / 3;
grid-row: 2 / 3;
min-height: 100vh;
box-sizing: border-box;
margin: 0 auto 15vh;
padding: 1.5rem;
box-shadow: 0 0 2.5rem -1rem rgb(var(--global-dark-color));
position: relative;
background: rgba(var(--content-bg), var(--bg-opacity));
}
#main-content::after {
content: "你曾经来过这里.";
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 100%;
left: 0;
width: 100%;
height: 10vh;
color: rgb(var(--header-txt));
font-family: var(--banner-font);
font-weight: 200;
}
#page-title {
padding: 0;
}
:is(blockquote, .blockquote, div.blockquote, [class*=blockquote]) {
padding: 0.5rem 1rem;
border-width: 0 0 0 0.3rem;
background: rgba(var(--light-block-bg), 0.4);
}
#page-options-container {
font-family: var(--ui-font);
}
#footer {
grid-column: 1 / 4;
grid-row: 3 / 4;
box-sizing: border-box;
justify-content: flex-end;
margin-top: 0.5rem;
border: unset;
}
#license-area {
grid-column: 1 / 4;
grid-row: 4 / 5;
padding: 0.5rem;
justify-content: flex-end;
}
#license-area a {
color: rgb(var(--global-pale-color));
}
@media only screen and (max-width: 1024px) {
#container-wrap {
perspective-origin: 49.5% 5rem;
}
#container {
display: flex;
}
#header {
min-width: var(--sidebar-width);
grid-template-columns: var(--header-ui-size) 1fr auto auto;
grid-template-rows: var(--header-ui-size) auto auto;
top: 0;
width: initial;
position: static;
}
#content-wrap {
display: block;
margin: 0;
}
#login-status {
position: relative;
backdrop-filter: unset;
}
#search-top-box {
position: static;
backdrop-filter: unset;
}
#login-status #account-options {
left: initial;
right: 0;
}
#top-bar > div > ul {
flex-direction: row;
margin-right: auto;
}
#top-bar > div > ul > li {
flex-basis: min-content;
}
#top-bar > div > ul > li > a {
justify-content: center;
padding: 0;
}
#top-bar > div > ul > :is(li, li:last-of-type) > ul {
top: 100%;
left: 0;
width: auto;
flex-direction: column;
}
#top-bar > div > ul > li:last-of-type > ul {
left: initial;
right: 0;
}
#top-bar > div > ul > li > ul > li {
width: 100%;
flex-grow: 1;
}
}
@media only screen and (max-width: 768px) {
#top-bar > div > ul > :is(li, li:last-of-type) > ul {
flex-direction: row;
}
#top-bar > div > ul > li > ul > li {
width: 50%;
}
}
:root {
--lh-red: #c0392b;
--lh-blue: #2980b9;
--lh-green: #27ae60;
--lh-dark-green: #16a085;
--lh-purple: #8e44ad;
--lh-orange: #e67e22;
--lh-yellow: #f1c40f;
--lh-paper-bg: 255, 251, 240;
--lh-string-color: 192, 57, 43;
--lh-book-color: var(--gray-monochrome);
--lh-tape-color: 90,90,90,0.3;
--lh-white-bg: 249,249,249;
--lh-dark-bg: 50, 50, 50;
--lh-highlighter: var(--bright-accent);
--lh-border-color: var(--gray-monochrome);
--lh-wiki-note-color: var(--bright-accent)
}
/**
* 旧代码合集
* 为了向下兼容而保留
*/
.grid-container{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.grid-container,.grid-container [class*=grid]{box-sizing:border-box}[class*=grid]{padding:5px}.grid{width:100%}.grid-large{width:75%}.grid-big{width:50%}.grid-medium{width:33.33%}.grid-small{width:25%}@media screen and (min-width:768px){.wd-grid-large{width:75%}.wd-grid,.wd-grid-big{width:50%}.wd-grid-medium{width:33.33%}.wd-grid-small{width:25%}}.text-hover-hide{opacity:0;transition:opacity .3s}.text-hover-hide:hover{opacity:1}.text-block-hide{background:rgb(var(--black-monochrome));color:rgb(var(--black-monochrome));transition:background .3s}.text-block-hide:hover{background:0 0}.text-blur-hide,.text-blur-hover-hide{filter:blur(.3rem);-webkit-filter:blur(.3rem) transition: blur .3s}.text-blur-hover-hide:hover{filter:blur(0);-webkit-filter:blur(0)}.lyric-box{text-align:center;font-size:1.05rem;display:flex;flex-direction:column;flex-wrap:wrap;justify-content:center}.lyric-box p{margin:1.5em auto}.lyric-box.with-bigger-line p{margin:3em auto}
/**
* 便签纸
* notepaper
*/
.notepaper {
background: linear-gradient(rgb(var(--lh-paper-bg)) 95%, #ddd 0);
line-height: 2em;
background-size: 100% 2em;
background-attachment: local;
border: 2em solid rgb(var(--lh-paper-bg));
box-shadow: 0 0.1rem 0.3rem rgba(0,0,0,0.2);
padding: 0;
margin: 1em auto;
box-sizing: border-box;
position: relative
}
.notepaper p {
margin: 0;
font-size: 1.05rem;
letter-spacing: 0.1rem;
line-height: inherit
}
.notepaper.narrow,
.notepaper.wide {
width: 90%
}
@media screen and (min-width:768px){
.notepaper.narrow {
width: 50%
}
.notepaper.wide {
width: 75%
}
}
.notepaper.tight {
border-width: 1rem;
border-left-width: 1.2rem;
border-right-width: 1.2rem;
line-height: 1.8em;
background-size: 100% 1.8em;
font-size: 13px
}
.notepaper.with-string::before {
content: '';
width: 0.5em;
height: 6rem;
background: rgb(var(--lh-string-color));
top: -2rem; right: -1rem;
display: block;
position: absolute;
box-shadow: 0 0.1em 0.2em rgba(0,0,0,0.2);
clip-path: polygon(-100% -100%,100% 0%,100% 100%,50% 98%,0% 100%);
}
.notepaper.with-tape::before {
content: '';
border: 1px solid #ddd;
background: rgba(var(--lh-tape-color));
width: 1.5em;
height: 4em;
transform: rotate(45deg);
display: block;
position: absolute;
top: -3em;
left: -1.8em
}
.notepaper.tight.with-string::before {
top: -1rem;
right: -0.25rem;
}
.notepaper.tight.with-tape::before {
top: -2.5em;
left: -1.3em
}
.notepaper.page {
min-height: 36em;
counter-increment: page;
display: flex;
flex-direction: column;
justify-content: space-between
}
@media screen and (min-width:768px){
.notepaper.page {
width: 70%
}
}
.notepaper.page:after {
content: counter(page);
display: block;
text-align: center
}
.notepaper-group {
counter-reset: page;
}
.book-pattern {
display: flex;
flex-wrap: wrap;
flex-direction: row
}
.book-pattern .notepaper.page:not(.notepaper > .notepaper) {
width: 100%
}
@media screen and (min-width: 768px) {
.book-pattern .notepaper.page:not(.notepaper > .notepaper) {
width: 50%
}
}
.book-wrapper {
background: rgb(var(--lh-book-color));
padding: 0.5rem;
box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.2);
border-radius: 5px;
margin: 1rem auto
}
@media screen and (min-width: 768px) {
.book-wrapper .notepaper {
margin: 0
}
}
/**
* 文字修饰
*/
.text-highlighted {
position: relative
}
.text-highlighted::before {
content: "";
position: absolute;
height: 0.9em;
bottom: 2px;
left: -2px;
width: 105%;
z-index: -1;
background-color: rgb(var(--lh-highlighter));
opacity: .6;
transform: skew(-15deg);
transition: opacity .2s ease;
border-radius: 3px 8px 10px 6px;
transition: 0.1s ease background-color;
}
.text-underlined {
text-decoration: underline;
text-underline-offset: 4px;
text-decoration-thickness: 2px;
text-decoration-color: rgb(var(--lh-highlighter))
}
.text-wavy {
text-decoration: underline wavy;
text-underline-offset: 4px;
text-decoration-color: rgb(var(--lh-highlighter))
}
.text-circled,
.text-squared {
display: inline-block;
border: 2px solid rgb(var(--lh-highlighter));
border-radius: 100%;
box-sizing: border-box
}
.text-squared { border-radius: 0 }
.text-shadow { text-shadow: 0.075em 0.075em 0 rgb(var(--lh-highlighter)) }
.text-highlighted.td-red::before { background: var(--lh-red) }
.text-circled.td-red, .text-squared.td-red { border-color: var(--lh-red) }
.text-underlined.td-red, .text-wavy.td-red { text-decoration-color: var(--lh-red) }
.text-highlighted.td-blue::before { background: var(--lh-blue) }
.text-circled.td-blue, .text-squared.td-blue { border-color: var(--lh-blue) }
.text-underlined.td-blue, .text-wavy.td-blue { text-decoration-color: var(--lh-blue) }
.text-highlighted.td-green::before { background: var(--lh-green) }
.text-circled.td-green, .text-squared.td-green { border-color: var(--lh-green) }
.text-underlined.td-green, .text-wavy.td-green { text-decoration-color: var(--lh-green) }
.text-highlighted.td-darkgreen::before { background: var(--lh-dark-green) }
.text-circled.td-darkgreen, .text-squared.td-darkgreen { border-color: var(--lh-dark-green) }
.text-underlined.td-darkgreen, .text-wavy.td-darkgreen { text-decoration-color: var(--lh-dark-green) }
.text-highlighted.td-purple::before { background: var(--lh-purple) }
.text-circled.td-purple, .text-squared.td-purple { border-color: var(--lh-purple) }
.text-underlined.td-purple, .text-wavy.td-purple { text-decoration-color: var(--lh-purple) }
.text-highlighted.td-yellow::before { background: var(--lh-yellow) }
.text-circled.td-yellow, .text-squared.td-yellow { border-color: var(--lh-yellow) }
.text-underlined.td-yellow, .text-wavy.td-yellow { text-decoration-color: var(--lh-yellow) }
.text-highlighted.td-orange::before { background: var(--lh-orange) }
.text-circled.td-orange, .text-squared.td-orange { border-color: var(--lh-orange) }
.text-underlined.td-orange, .text-wavy.td-orange { text-decoration-color: var(--lh-orange) }
/* 隐藏文字 */
.text-blank { color: rgba(0,0,0,0) }
.text-block {
background: rgb(var(--black-monochrome));
color: rgb(var(--black-monochrome));
}
.text-blur {
filter: blur(0.3em);
-webkit-filter: blur(0.3em)
}
.text-hoverback,
.text-selectback {
transition-duration: 0.3s;
transition-property: background, transform, color
}
.text-blank.text-hoverback:hover,
.text-blank.text-selectback::selection,
.text-blank.text-selectback *::selection { color: rgb(var(--black-monochrome)) }
.text-block.text-hoverback:hover { background: transparent!important }
.text-block.text-selectback::selection,
.text-block.text-selectback *::selection { color: rgb(var(--white-monochrome, 255, 255, 255)) }
.text-blur.text-hoverback:hover { filter: blur(0)!important; -webkit-filter: blur(0)!important }
/**
* 附加项
*/
.with-border, .with-box-style { border: 1px solid rgb(var(--bright-accent)) }
.with-border-dark { border: 1px solid rgb(var(--black-monochrome)) }
.with-border-light { border: 1px solid rgb(var(--white-monochrome)) }
.with-border-thick { border-width: 2px }
.with-shadow-sm { box-shadow: 0 0 0.1em rgba(0,0,0,0.2) }
.with-shadow { box-shadow: 0 0.1em 0.2em rgba(0,0,0,0.2) }
.with-shadow-lg { box-shadow: 0 0.15em 0.3em rgba(0,0,0,0.2) }
.with-shadow-xl { box-shadow: 0 0.2em 0.5em rgba(0,0,0,0.2) }
.with-shadow-xxl { box-shadow: 0 0.25em 0.8em rgba(0,0,0,0.2) }
.with-padding, .with-box-style { padding: 0.25em 1em }
.with-p-sm { padding: 0.125em 0.5em }
.with-p-lg { padding: 0.5em 2em }
.with-margin, .with-box-style { margin: 1em auto }
.with-m-sm { margin: 0.5em auto }
.with-m-lg { margin: 2em auto }
.with-narrow-width {
width: 90%!important;
margin-left: auto;
margin-right: auto
}
@media screen and (min-width: 768px) {
.with-narrow-width { width: 75%!important }
}
[class*="with-bg-"], [class*="with-bg-"] h1 { color: #fff!important }
.with-bg-red { background: var(--lh-red)!important }
.with-bg-blue { background: var(--lh-blue)!important }
.with-bg-green { background: var(--lh-green)!important }
.with-bg-darkgreen { background: var(--lh-dark-green)!important }
.with-bg-yellow { background: var(--lh-yellow)!important }
.with-bg-orange { background: var(--lh-orange)!important }
.with-bg-purple { background: var(--lh-purple)!important }
/**
* 删除类
*/
.offwith-shadow { box-shadow: none!important }
.offwith-border { border: none!important }
.offwith-padding, .offwith-pam { padding: 0!important }
.offwith-margin, .offwith-pam { margin: 0!important }
.offwith-width-limit {
width: auto!important;
margin-left: auto!important;
margin-right: auto!important
}
div[class*="grider"].offwith-grid-gap { grid-gap: 0!important }
/**
* 网格布局
*/
/* Gridder 容器 */
div[class*="gridder"] {
display: grid;
box-sizing: border-box;
grid-gap: 1rem;
padding: 0
}
div[class*="gridder"] * { box-sizing: border-box }
.gridder, .gridder-col-2 {
grid-template-columns: 1fr 1fr;
}
.gridder-col-3 {
grid-template-columns: repeat(3, 1fr);
}
.gridder-col-4 {
grid-template-columns: repeat(4, 1fr);
}
@media screen and (min-width: 768px) {
.pc-gridder, .pc-gridder-col-2 {
grid-template-columns: 1fr 1fr;
}
.pc-gridder-col-3 {
grid-template-columns: repeat(3, 1fr);
}
.pc-gridder-col-4 {
grid-template-columns: repeat(4, 1fr);
}
}
.spanner, .spanner-2 {
grid-column-start: span 2;
}
.spanner-3 {
grid-column-start: span 3;
}
/**
* 告示组件
*/
.signblock,
.signblock-dark,
.signblock-warn {
margin: 1rem auto;
box-shadow: 0 0.1rem 0.3rem rgba(0,0,0,0.4);
background: rgb(var(--lh-white-bg));
font-size: 1.05rem;
padding: 2rem
}
@media screen and (min-width: 768px) {
.signblock,
.signblock-dark,
.signblock-warn {
width: 75%
}
}
.signblock-dark,
.signblock-dark h1 {
background: rgb(var(--lh-dark-bg));
color: #fff
}
.signblock-warn,
.signblock-warn h1 {
background: var(--lh-red);
color: #fff
}
.signblock h1,
.signblock-dark h1,
.signblock-warn h1 {
text-align: center;
font-size: 2rem;
margin: 0;
font-weight: 700
}
.signblock-img {
display: flex;
flex-direction: row;
justify-content: center
}
.signblock-img img {
width: 8em
}
.signblock-footer {
font-size: 0.9em;
text-align: center;
margin: 0.5rem 0;
font-weight: bolder;
display: block
}
/**
* 报告
*/
.reportblock,
.reportblock-dark {
border: 2px solid rgb(var(--lh-border-color));
box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.3);
background: rgb(var(--white-monochrome));
padding: 0.8rem 1.5rem;
padding-bottom: 0.4rem;
margin: 1.5rem auto;
margin-bottom: 1rem;
position: relative
}
.reportblock hr,
.reportblock-dark hr {
background-color: rgb(var(--lh-border-color));
margin-left: -1.5rem;
margin-right: -1.5rem
}
.reportblock h1:first-child,
.reportblock-dark h1:first-child {
position: absolute;
top: -1rem;
left: 1.5rem;
font-size: 110%;
font-weight: 600;
background: rgb(var(--lh-border-color));
color: #fff;
padding: 0.2rem 0.5rem;
margin: 0;
}
.reportblock-dark,
.reportblock-dark h1 {
border-color: rgb(var(--lh-white-bg));
background: rgb(var(--lh-dark-bg));
color: #fff
}
.reportblock-dark hr {
background-color: rgb(var(--lh-white-bg));
}
/* 更好的折叠框 */
.bettercollap {
margin: 1em 0;
}
.bettercollap .collapsible-block {
width: auto;
overflow: hidden;
border: 1px solid rgb(var(--lh-border-color))
}
.bettercollap .collapsible-block-content,
.bettercollap .collapsible-block-link {
background: rgb(var(--white-monochrome));
padding: 0.5em
}
.bettercollap .collapsible-block-content {
padding-left: 1em;
padding-right: 1em
}
.bettercollap .collapsible-block-link {
color: rgb(var(--lh-border-color));
background: rgb(var(--white-monochrome));
transition: .3s;
display: block;
}
.bettercollap .collapsible-block-link:hover,
.bettercollap .collapsible-block-unfolded .collapsible-block-link,
.styledcollap.bettercollap .collapsible-block-link {
color: rgb(var(--white-monochrome));
background: rgb(var(--lh-border-color))!important;
text-decoration: none
}
.bettercollap .collapsible-block-link:hover a { color: rgb(var(--white-monochrome)) }
.bettercollap .collapsible-block-link::before {
content: "\25BC";
display: inline-block;
margin-right: 0.5em;
transform: rotate(-90deg) scale(0.9)
}
.bettercollap .collapsible-block-unfolded .collapsible-block-link::before {
transform: rotate(0) scale(0.9)
}
.bettercollap .collapsible-block + .collapsible-block { border-top: none }
.styledcollap.bettercollap .collapsible-block {
border-radius: 2px;
box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.3)
}
.styledcollap.bettercollap .collapsible-block-content {
background-color: rgb(var(--pale-gray-monochrome));
border-width: 3px
}
.styledcollap.bettercollap .collapsible-block-link:hover {
background: rgba(var(--lh-border-color),0.95)!important;
}
/**
* 提示框
*/
.infoblock {
color: #f1f1f1;
font-weight: bold;
background: #424242;
padding: 5px 5px 5px 5px;
border-radius: 4px;
margin: -0.5rem 0 1rem 0;
display: block;
width: fit-content;
padding-right: 25px;
}
.infoblock::before {
content: "ⓘ "
}
/**
* 单页迭代
*/
.offset-page:not(:target), .offset-page:target ~ div#u-default-page { display: none }
.offset-page:target { display: block }
上篇 · 意外
第一章·图书馆
圣亚伯拉罕大学的图书馆在期末考试周总是格外拥挤。
Sherry不喜欢这里。
不是因为书不好。是因为人太多了。太多人在翻书,太多人在敲键盘,太多人在用那种自以为很小声的气声讨论她完全不感兴趣的论文题目。
空气里弥漫着咖啡和打印纸的气味——温暖,但浑浊,带着一种让人昏昏欲睡的、几乎是惰性的重量。
她坐在最角落的位置,面前摊着一本从大学图书馆借来的《后室常见层级地质调查报告》。
“Sherry?”
她猛地抬起头。
Annie站在桌子对面,手里端着一杯冒着热气的咖啡,歪着头看她,姿态像一只发现了奇怪动静的猫。
“你最近总泡在这里。”Annie在她对面坐下,把咖啡杯放在桌上,杯底磕在木板上发出一声轻响。“以前你不是在档案室就是在实验室。现在改混图书馆了?”
Sherry合上那本地质调查报告,动作快得几乎有些不自然。“查点东西。”
“查什么?”
“关于后室层级的土壤成分。”Sherry说。这不算是撒谎。毕竟,她确实在查土壤成分,只是不是用来写什么论文。
Annie盯着她看了两秒。
然后,她笑了。“你从小到大都是这副德性。问你干嘛,你永远说‘查点东西’。小时候查星星,长大了查后室。什么时候查查自己?”
Sherry愣了一下。“查自己什么?”
“查自己有没有睡够,有没有吃饱,有没有——”Annie伸出手,用食指的指节不轻不重地戳了戳Sherry的眉心,“——别总是皱着眉头。你看你,眉头皱得能夹死苍蝇。”
Sherry惊讶地发现,她的眉头确实皱着,而她自己完全没意识到。
“我睡够了。”她说。
“你昨晚几点睡的?”
“……十二点。”
“我两点起来上厕所的时候,你床上那盏灯还亮着。”Annie的语气不重,但那种笃定让人无处遁形。
Sherry不说话了。
Annie也没追问。她端起咖啡喝了一口,立刻皱起整张脸。凉咖啡那股酸涩味直冲她的天灵盖。她站起身。“我走了。下午有训练。你记得吃饭。”
她端着咖啡杯转身走了。走了两步又退回来,从卫衣口袋里掏出一块用纸巾包着的三明治,放在Sherry的桌角。
“食堂顺手拿的。别饿着。”
然后她走了,脚步声在阅览室的地板上渐渐远去。帆布鞋踩在复合木地板上的脚步声很快被翻书声和键盘敲击声淹没了。
Sherry看着那块三明治。纸巾上印着一只微笑的卡通猪,粉色的、圆滚滚的,看起来像在嘲笑她。她没有吃,但也没有把它推开。
最后,她把三明治推到桌角最不碍事的地方,然后重新翻开那本地质报告。
书页上密密麻麻的数字和图表在她眼前晃动,像一群不怀好意的蚂蚁。
她盯着一个名为“火山灰沉积层”的章节,看了足足两分钟,一个词也没读进去。脑子却早就飘到了别处。
也许她应该在潮痕古堡那堆发了霉的旧书架前多待上一段时间。
“小姐。”
声音从桌下传来,低沉而从容,像一小块丝绒落在木地板上。Sherry低头,米奥不知什么时候钻了进来,端端正正地蹲在她脚边,尾巴不紧不慢地卷着桌腿,那双异色的瞳孔在日光灯下收成两条细线。
“这里不适合您。”米奥说。它的声音不大,但那种笃定的、不容置疑的语气比任何大嗓门都有穿透力。“人太多。纸太新。咖啡味太重。”
“那您为什么还来?”
“因为您来了。”米奥站起身,用头顶了顶她的小腿,那动作像在驱赶一只不听话的羊。“古堡里有您需要的东西。”
“什么东西?”
“不知道。但我向您保证,肯定比这本——”米奥伸出爪子,不轻不重地拍了拍那本地质报告的封面,发出啪的一声,“——有用。”
Sherry叹了口气,把那本报告塞回书架,然后背起背包。
米奥轻盈地一跃,稳稳落在她的肩头,爪子勾住她卫衣的肩缝,尾巴垂在她背后,像一条黑色的、会微微摆动的流苏。
她们穿过阅览室。穿过走廊。穿过主楼西翼那扇沉重的玻璃门。走廊里的感应灯一盏一盏亮起来又灭下去,像在送别。然后她们走进了傍晚的校园。
夕阳把教学楼的影子拉得又长又瘦,草地被染成了一片浓烈的金红色。远处有人在操场上跑步,脚步落在塑胶跑道上,发出沉闷而有节奏的声响。
空气里有割草机刚刚开过的青涩气味,以及从食堂方向飘来的、浓烈的味道,一下子就把青草味盖过去了。
“米奥先生。”Sherry边走边说。
“嗯。”
“您说,CXA先生为什么要留谜语?”
米奥沉默了一会儿。它似乎在认真思考这个问题,而不是像往常那样随口给出一个听起来高深莫测但其实什么也没说的答案。
“也许,”它终于开口,“他觉得谜语本身就是‘故事’的一部分。直接告诉您答案,那就不是‘故事’了。那是说明书。”
“但如果我猜错了呢?如果我去了错误的地方呢?”
“那也是一种‘故事’。”米奥的尾巴轻轻摆了一下。它的语调很平,但那种平静里有一种奇怪的、几乎称得上温柔的东西。“错误的路也是路。走过了,才知道它是错的。没走过,您永远会想——万一它是对的呢?”
Sherry没有再问。她肩上的猫安静地蹲着,偶尔耳朵转一下,捕捉空气中某种只有它听得见的声音。
在校内徘徊一阵后,最终,她向校外郊野的方向走去。
第二章·郊野
郊野和上次来的时候并没有什么不同,只是这一次,她孤身一人。
Sherry 在一块平坦的岩石上坐下,从背包里拿出水壶喝了一口。水是温的,带着淡淡的涩味,说不上难喝,但也绝对算不上好喝。
她靠在岩石上,闭上眼睛。她感到一阵深入骨髓的、不知道自己在做什么的茫然。她不知道自己究竟是在接近答案,还是只是在一圈又一圈地原地打转。
突然,远处传来一阵引擎的轰鸣。
她猛地睁开眼睛。
灰白色的地平线上,出现了一个移动的绿色影子。
轮胎碾过龟裂的土地,扬起灰白色的尘土,那尘土像一面移动的帷幕一样拖在车后。引擎的声音低沉而持续,几乎像一头被焊死在铁壳子里的金属巨兽,正在不知疲倦地咆哮。
Sherry坐直了身体。“那是什么?”
米奥的耳朵猛地向前转,瞳孔微微收缩,变成了两条细得几乎看不见的竖线。“……那是…一辆车?”
“那好像是……运兵车!”意识到自己声音太大,Sherry 连忙把声音压低,低到几乎被风声吞掉。“一个实体,会在各个层级之间游荡,收集沉睡的人,然后将他们运送到特定层级。”
她看着那辆越来越近的车。它比她想象的还要大。
厚重的装甲,暗绿色的漆面——但那漆已经斑驳。轮胎比人还高,轮胎纹路里嵌满了干涸的泥浆和某种说不清是什么的暗色物质。车身侧面没有标志,没有编号,没有任何能表明它身份的东西。只有斑驳的锈迹,和干涸的泥浆,和挡风玻璃上厚厚的、看不到驾驶室内部的深色薄膜。
它行驶得不快。但很坚定。像有一个必须到达的目的地,而全世界的障碍在它面前都不值一提。
“它在朝我们过来。”Sherry说。她的声音比自己预想的要平静。
“不一定。它可能只是沿着那条看不见的常规路线——”
运兵车的车头微微转动了。就像一头巨兽缓缓转过它的头颅。它正对着他们的方向。
米奥的耳朵向后贴紧了头皮,整只猫的轮廓瞬间缩小了一圈。“好吧……它在朝我们过来。”
Sherry站起身,本能地后退了一步。她的脚踩在一块松动的石头上,石头滚开,她踉跄了一下。“我们能跑吗?”
“跑不过。它的速度比您快。而且它不会累。”
“那怎么办?”
米奥没有回答。
因为运兵车加速了。
引擎的轰鸣从低沉的轰隆声突然变成了一种尖锐的、几乎让人牙齿发酸的的声音。轮胎卷起的尘土像一堵灰白色的墙,铺天盖地地朝他们压过来。
Sherry 能感觉到那震动通过脚底传上来,穿过她的骨头,震得她的牙齿咯咯作响。
Sherry转身就跑。
但她的腿跟不上她的心跳。郊野的地面凹凸不平,她的脚踩进一个坑里,膝盖磕在一块石头上——那一下疼得她眼前发白——整个人向前扑倒,手掌和膝盖同时砸在草地上。
她趴在尘土里,嘴里全是土腥味。她听到引擎声在她身后轰鸣,越来越近,越来越响,整个大地都在震动。
她闭上眼睛。
然后——
黑暗。
沉默的黑暗。
她听不到引擎声,听不到风声,甚至听不到自己的心跳声。整个世界像被人按下了静音键,然后又被塞进了一个密封的罐子里。
她想睁开眼睛,但眼皮像被缝住了一样,纹丝不动。她想动一动手指,但手指像被冻在了冰层里,完全不属于自己。
她不知道自己在哪里。她只知道自己在下沉。缓慢地、无声地、不可抗拒地——像一片落叶被水流带向深不见底的深潭。
声音从很远很远的地方传来。
“……小……小姐……”
像隔着厚厚的水层。
“……醒……能听到……吗……”
断断续续的,像老式收音机在调频时的杂音,忽远忽近,忽强忽弱。
她拼尽全力,向那个声音的方向挣扎。
黑暗变薄了。
变成了——
光。
第三章·焦土
她睁开眼睛。
头顶是一块帆布篷顶,有些地方被烟熏成了淡褐色,像一块用了很多年的旧桌布。空气很干燥,带着尘土和旧布料的气味,让她想起以前自家的阁楼。
这里的温度比郊野上暖和,但空气很闷,像被什么东西捂住了口鼻。
Sherry躺在一张睡毯上。睡毯薄得可怜,她甚至能清楚地感觉到下面硬邦邦的地面。
她撑着手臂坐起来,发现自己的背包还在身边,魔法书硬邦邦的轮廓若隐若现。
米奥蹲在她膝盖旁边,见她醒来,用爪子轻轻拍她的手背。
“您醒了。”米奥的声音比平时轻,轻到像是在怕吵醒什么人。
“这是哪?”Sherry的嗓子干得像砂纸,声音沙哑得几乎不像自己的。“哦,对了,应该是……Level AS-410。”
米奥的耳朵转了一下,扫视着帐篷内的每一个角落。“运兵车把您带进来的。我也被带进来了。很抱歉,我没能阻止它。”
Sherry环顾四周。
他们在一顶帐篷里。帐篷大得离谱——内部空间比从外面看至少大了十倍,像一个被塞进了帐篷里的体育馆。
地上铺着几十张睡毯,整整齐齐地排列着,像医院的病床。有些睡毯是空的,毯子叠得方方正正。有些睡毯上蜷缩着沉睡的人——男男女女,老老少少,面色平静得倒像是在自家卧室里做着美梦。他们的呼吸均匀而缓慢,胸腔一起一伏,像一片宁静的海。
帐篷的角落里堆着一些空罐头和塑料水瓶,还有一个生锈的煤油炉,炉子上搁着一口黑得发亮的锅,锅里还残留着半锅已经干涸的东西,看不出是什么。
“这些人……”Sherry压低声音。
“被运兵车带进来的。和您一样。”米奥说。
Sherry看着那些沉睡的脸。年轻的。年长的。男人。女人。他们的表情都很平静——没有痛苦,没有恐惧,甚至连皱眉的都没有。就像被从时间里切了出来,封存在琥珀里,永远地、安静地睡着。
她沉默了一会儿,最后说:“所以…我们现在应该怎么回去呢?”
“不知道。”米奥回答,“层级这方面的知识,您比我了解的更清楚。”
Sherry 托着下巴,仔细回忆着档案里记载的出口。
片刻后,她抬起头:“出口应该有两个。一个是用一千人份的尸体灌溉焦土,会出现一条向下的路。”她顿了顿。“另一个是向外走一千公里,找到一片麦田,就能通往Level AS-419。”
一千公里。
只有她,和一只猫。
一阵沉默后,Sherry站起身,走到帐篷门口,用两根手指挑起门帘的一角。
映入眼帘的是天空。
但,天空是铅红色的。
云层几乎看不见,只有偶尔几缕暗灰色的、像烟一样的东西在高处缓缓移动,像什么巨大生物在水面下游动时投下的影子。
光从整个天空均匀地洒下来。没有方向。没有阴影。没有光源。就像像在一个巨大的红色灯笼内部。到处都是均匀的、无情的、铅红色的光。
地面是龟裂的。裂纹纵横交错,将土地分割成无数大小不一的块状,像一幅巨大的、疯狂的拼图。她脚下的这块是暗灰色的,边缘有一圈淡淡的猩红色,像伤口愈合时的痂。不远处,有一块面积较大的焦土,呈现温暖的金黄色,像一块被阳光照亮的麦田。
“焦土。”她喃喃道,“金色的那块是生长中的焦土。它会结出食物和生活用品。像是——像是土地在报答喂养它的人。
“那边那块猩红色的呢?”米奥难得地向她问道。
“那是…已经喂养过的焦土。”Sherry 依旧喃喃道“…需要人类尸体才能激活。”
米奥没有接话。
“先活着。”最终,米奥说,“然后找出路。”
它的声音不大,但每一个字都像钉子一样扎进空气里。
Sherry放下门帘,回到帐篷里。她坐在睡毯上,打开背包,拿出魔法书。深棕色的封皮在铅红色的光中呈现出近乎黑色的暗红。
她把书放回背包。手指在背包带上攥紧,指节泛出青白色。
帐篷外面传来引擎声。
Sherry走到门口,掀开门帘。
铅红色的天空下,一辆暗绿色的运兵车停在不远处。这辆运兵车看上去更新一些,漆面上的锈迹少一点,轮胎上的泥浆也干得没那么彻底。
车头对准帐篷的方向,引擎还在微微颤动,像一匹跑完了长途的马在喘气。排气管还冒着烟,烟在铅红色的光中呈现出一种奇异的紫色。
车门打开了。
一个身影从车上跳下来。
中篇 · 杀人魔法
第四章·戴安娜
那是一个少女。
她大概一米六出头。穿着宽松的深灰色卫衣,卫衣的帽子没有拉起来,露出的粉色双马尾发尾有些翘,像是刚睡醒,也像是从来不在意发型。她的脸上戴着一个VR眼镜。深黑色的镜片,完全遮住了眼睛。
她一只手提着一个便利店的塑料袋,能看见里面装着几罐汽水和几包薯片,其中一包已经被撕开了,她用牙齿咬着一个角,像叼着猎物的猫。另一只手插在卫衣口袋里,肩头微微耸着,姿态懒散得像是在自家楼下的小卖部门口等朋友。
她下车之后,先伸了个懒腰,嘴里还含含糊糊地发出一声不知是叹息还是打哈欠的声音。然后,她朝帐篷走来。
Sherry没有动。她站在帐篷门口,手不自觉地伸向背包里的魔杖。
米奥蹲在她肩上,耳朵向前转得不能再转,尾巴绷得像一根拉满了的弓弦。
那少女走近了。大约十步远的时候,她停了下来。
“啊。”她说。“有人啊。”
她的声音很轻,带着一种漫不经心的、像刚睡醒还没有完全清醒的语调。
Sherry没有说话。
少女歪了歪头。VR眼镜的侧面有一个小小的指示灯,正在闪烁着绿色的光,一下,一下,像一只微型的、不知疲倦的眼睛。她似乎在看着什么——也许是眼镜内部显示的某种画面,也许是某种她能看到而Sherry看不到的东西。
“你不是本地人吧?”少女说。她的语气像在说一件显而易见的事实。“本地人不会站在帐篷门口发呆。他们会躲在里面,把门帘系紧,等运兵车走了才敢出来。像兔子一样。”
Sherry的手握紧了背包里的魔杖。胡桃木的杖身在掌心微微发热。“你是本地人?”
“不是。”少女把便利店的袋子换到另一只手,塑料袋发出窸窸窣窣的声音。“我只是……路过。这里是我进入这个层级时的出生点。每次进来,帐篷都会变位置,但帐篷本身不变。”
她顿了顿,歪着头打量了一下Sherry。“你应该也是被运兵车带进来的吧?脸色这么差,看来被吓得不轻。”
Sherry没有回答。她的手指在魔杖的木质握柄上慢慢收紧。
少女似乎感觉到了什么。她的头微微低了一下。尽管那眼镜遮住了她大半张脸,根本看不到眼睛,但她像在看Sherry。
“别紧张。”她说。语气像在安抚一只炸了毛的猫。“我不是来找麻烦的。”
“那你来干什么?”
“买零食。”少女举起手里的塑料袋,摇了摇。薯片袋发出哗啦哗啦的声音。“便利店在那边,两公里。”她用下巴朝一个方向随意地指了指。“但这个层级的便利店只开在猩红色焦土附近。你知道猩红色焦土是怎么来的吧?”
Sherry的脊背微微一紧。
“看来你知道。”少女点了点头。“所以我不是坏人。我只是个买零食的宅女。坏人不会专门跑两公里去买薯片。”
她绕过Sherry,走进帐篷,步伐轻快得像在自己家里。她把塑料袋放在一张空睡毯上,然后蹲下来,拉开拉链,从里面拿出一罐可乐。她用拇指撬开拉环——那个动作熟练得不像话,一气呵成,拉环弹起来,发出一声清脆的“啪”——然后仰头喝了一大口,喉咙里发出一声满足的叹息。
“你不喝吗?”她问。
Sherry没有动。
“好吧。”少女耸了耸肩。“那我一个人喝。反正我也买了不少。”
她坐在睡毯上,背靠着帐篷的支撑杆,跷起一条腿,开始喝可乐。她的VR眼镜的绿色指示灯一直在闪烁,像一只不知疲倦的、绿色的萤火虫,在她的太阳穴旁边一跳一跳。
米奥在Sherry肩上动了动,用下巴蹭了蹭她的耳朵,然后用只有她能听到的声音说:“她没有敌意。至少现在没有。”
Sherry慢慢松开了魔杖。她没有把魔杖放回背包,而是把它藏在袖子后面。她走进帐篷,在少女的对角线方向坐下,冰凉的金属杆地抵着她的脊椎。
她们就这样坐了一会儿。
铅红色的光透过帆布篷顶渗进来,把整个帐篷内部染成了一种暗沉的、几乎像凝固的血液一样的颜色。帐篷外面,运兵车的引擎声渐渐远去,消失在铅红色的寂静中。
“你叫什么名字?”少女突然问。
Sherry犹豫了一下。在这个陌生的、铅红色的、到处是沉睡之人的层级里,和这个戴着VR眼镜喝可乐的神秘少女交换名字,似乎也不是什么更奇怪的事。“……Sherry,或者雪莉。”
“雪莉。”少女重复了一遍,像是在品尝这个词的味道,在舌尖上滚了一圈才吐出来。“好听。我叫戴安娜。”
“戴安娜?”
“嗯。但大家都叫我‘宅’。”戴安娜又喝了一口可乐,用拇指擦了擦嘴角。“可能因为我总待在家里。不爱出门吧。”
“你为什么戴那个?”Sherry指了指自己的眼睛。
戴安娜的手在VR眼镜框上停了一下。然后她若无其事地又喝了一口可乐。“因为……我需要它。”她说。
然后不等Sherry追问,她换了话题。“你也是魔法少女吧?”
Sherry的身体僵住了。像被一根无形的针扎了一下。
“别紧张。”戴安娜摆了摆手,手指在空中划了个散漫的弧线。“我不是来打探什么秘密的。我只是……能感觉到。你的魔力波动很弱,但很稳定。嗯…就像刚学会走路的小孩。”
她顿了顿。“我也是,魔法少女。”
Sherry盯着她。VR眼镜遮住了她的眼睛,看不到她的表情。但她的语气里没有任何敌意,甚至没有任何好奇。她只是在陈述一个事实,像在说“今天天气不错”一样随意。
“你不问我别的?”Sherry说。
“问什么?问你是哪个魔法少女,有什么能力,来这个层级干什么?”戴安娜把空了的可乐罐捏扁,丢回塑料袋里。“我不关心。我也不想知道。知道得越多越麻烦。”
“为什么?”
“因为知道得越多,越麻烦。”戴安娜站起身,拍了拍裤子上的灰。灰色的卫裤上沾了一层薄薄的尘土,被她拍得四处飞扬。“我只想安安静静地待着。打游戏。看漫画。吃零食。所谓拯救世界这样的刻板印象…和我没关系。”
她弯腰提起塑料袋,朝帐篷门口走去。
“你要走了?”Sherry问。
“嗯。回家。我还有一个新游戏没通关。最后一个boss,打了好几天了,今天争取把它干掉。”戴安娜掀开门帘,铅红色的光涌进来,把她的轮廓镀上一层暗红。
“你也早点走吧。”她说。“这个层级不适合长待。出口在——”她想了想,“算了,你自己找吧。我也不记得了。”
她迈出帐篷。
Sherry站起身。“等一下。”
戴安娜停下脚步。但没有回头。她的背影在铅红色的光中显得很小,很单薄,像一张纸片。
“你说你也是魔法少女。那你知道……魔法少女竞赛的事吗?”
沉默。
戴安娜站在那里,铅红色的光勾勒出她小小的、微微佝偻的轮廓。便利店袋子在她的手里晃了晃,薯片的包装袋发出细碎的、窸窸窣窣的声音,像在窃窃私语。
“知道。”她说。然后停了一下。“但我不想参与。”
“不参与……会怎样?”
“可能会死。”戴安娜的语气平淡得像在说天气,“不过嘛…参与也可能会死。所以不如选一个让自己舒服的方式。至少死的时候,是在做自己喜欢的事。”
然后,不等Sherry 继续问,她便迈步走了。
Sherry站在帐篷门口,看着她的背影在铅红色的大地上渐渐远去。她的步子很稳,像在自家小区里散步,一圈一圈地,漫无目的地。
米奥从Sherry肩上跳下来,蹲在门口,尾巴卷着门帘的布边,那只卷着布边的尾巴尖在微微颤抖。
“她很强。”米奥说。
“您怎么知道?”
“她的魔力波动比您想象的要强得多。比您见过的任何人都强。”米奥的耳朵转了转。“只是在刻意压制。”
Sherry看着那个越来越小的背影。
“她为什么不想参与竞赛?”
“她说了。因为‘参与也会死’。”米奥的尾巴轻轻摆了一下。“也许她曾经参与过。也许她看到了什么,让她决定再也不参与。”
Sherry沉默了一会儿。“米奥先生,如果竞赛的规则是‘必须分出胜负‘,那她是怎么活到现在的?”
米奥没有回答。
远处的铅红色地平线上,戴安娜的背影已经变成了一个模糊的点。
第五章·交战
Sherry放下门帘,回到帐篷里。她坐在睡毯上,打开背包,拿出魔杖。
她把魔杖握在手心里,闭上眼睛。
然后,虽然她不知道为什么,但她决定追上去。
也许是因为戴安娜说的那句话,也许是她想问她更多关于竞赛的事。也许她只是不想一个人待在这个铅红色的层级里。
远处,戴安娜的身影渐渐清晰,她走在龟裂的土地上,步子依然不紧不慢。
不过,在听到了身后的脚步声后,她手中的塑料袋停止了摇晃。
她停下,转身。
“你怎么跟上来了?”她的VR眼镜的绿色指示灯闪了闪。
Sherry在她面前几步远的地方停下来。风吹着她的头发,冰蓝的碎发打在脸上,但她没有拨开。“我想问你一些事。”
“什么事?”
“关于魔法少女竞赛。你说你不参与。但你怎么知道参与就会死?你经历过?”
戴安娜沉默了一会儿。她把便利店的袋子放在地上,从里面拿出那包已经被撕开的薯片,往嘴里塞了一片。嚼了几口,咽下去,又塞了一片。
然后她才开口。
“…我是自由的,我没有经历过。”她说。
她的声音变了。不是那种漫不经心的、刚睡醒的慵懒。而是一种更低的、更沉的、像被什么东西压住了的声音。
“但我有个朋友经历过。她被淘汰了,死了。死得很惨。”
Sherry的心跳漏了一拍。“是谁?”
“说了你也不认识。”戴安娜又往嘴里塞了一片薯片,嚼得很慢,像是在咀嚼什么比薯片更难以下咽的东西。“而且她的名字已经不重要了。她死了。其他人继续活着。继续战斗。继续死。这就是竞赛。”
“那你为什么不战斗?不战斗也会死。”
戴安娜停下了咀嚼的动作。
她的头微微低着。VR眼镜的指示灯从绿色变成了黄色,闪了闪,又闪了闪,然后变回了绿色。
“也许我不会死。”她说。“也许规则会在某一天改变。”
“你怎么知道?”
“我不知道。”戴安娜抬起头,“但我选择相信。”
Sherry看着她。铅红色的光落在她们之间,在地面上投下两道平行的、瘦长的影子。那两道影子从她们的脚边延伸出去,一直延伸到看不见的远处,像两条永远不会交汇的平行线。
“你叫什么名字来着?”戴安娜问。
“……Sherry。”
“Sherry。”戴安娜点了点头。“你刚成为魔法少女不久吧?”
“怎么看出来的?”
“你的魔力波动很乱。还没和自己的宝石完全同步。像一个一个新装的软件,还在和操作系统打架。”
她顿了顿:“而且你握魔杖的姿势不对。你刚才在帐篷里,手一直伸进背包握魔杖,但你的拇指放在杖柄的侧面,而不是上面。这种握法会让施法时魔力输出不稳定,容易打偏。像开枪的时候握不稳枪。”
Sherry低头看了看自己的手。她确实是这样握魔杖的。拇指放在侧面,其余四指包住杖身。她从没想过这有什么不对。
“我不是在教你。”戴安娜赶紧补充,语气里有一丝不好意思。“我只是……职业病。玩射击游戏玩多了,对握把的姿势比较敏感。鼠标也好,手柄也好,魔杖也好——都是握在手里的东西,道理是通的。”
Sherry抬起头看着她。隔着VR眼镜,她看不到戴安娜的眼睛。但她觉得戴安娜在笑。是那种有点不好意思的、但又不是很在意的那种笑。
“你想试试吗?”戴安娜突然问。
“试什么?”
“打一架。”戴安娜把薯片袋子塞回塑料袋里,拍了拍手上的碎屑。碎屑飘落在铅红色的土地上,像细小的雪花。“你不是想知道魔法少女之间的战斗是什么样的吗?我陪你练练。”
Sherry握紧了魔杖。“为什么要和我打?”
“因为无聊。”戴安娜说。“在这个层级里,除了等运兵车,什么也做不了。游戏信号也连不上,我已经三天没打日常任务了。”
她歪了歪头,自嘲般地苦笑一声。
“好。”Sherry说。
戴安娜的VR眼镜指示灯从绿色变成了黄色,闪了两下,又变回绿色。她往后退了几步,拉开距离,然后将便利店的袋子放在地上,用脚轻轻踢到一边。塑料袋在地上滑了一小段,发出一阵摩擦声。
“准备好了吗?”她问。
Sherry举起魔杖,杖尖指向戴安娜。胡桃木的杖身在她手中微微发热,杖顶闪烁着微弱的、淡蓝色的光。她调整了拇指的位置,让它压在杖柄的上方。突然,她感觉到一股更流畅的魔力从手臂涌入杖身。
“准备好了。”
而戴安娜只是站在那里,双手插在卫衣口袋里,身体微微前倾。
“那开始了。”
她从口袋里抽出魔杖,朝Sherry的方向轻轻一挥,动作小得像在赶苍蝇。
但一道蓝紫色的光束从魔杖尖端射出。速度快得Sherry几乎没看到它的轨迹。
她只感觉到一股灼热的空气擦过她的左肩。光束击中了身后的一块焦土。焦土炸开,黑色的土块四溅,像被一只看不见的巨锤砸中了一样,落在地上发出沉闷的声响。
Sherry僵住了。
她的左肩的衣服被烧焦了一小块。她能闻到布料烧焦的气味,皮肤感到一阵灼热。
“别发愣。”戴安娜说。她的声音很平静,“战斗中发呆,下一击就不是擦肩了。”
Sherry咬了咬牙。
她的心脏在胸腔里擂鼓一样地跳。她能感觉到肾上腺素的冲击——手心出汗,呼吸变浅,视野变窄。她强迫自己深呼吸,一次,两次。
她举起魔杖,锁定戴安娜。
“量子湮灭!”她默念道。
杖尖亮了一下。
而戴安娜没有移动,只是微微侧身。
魔法正好从她的身侧飞过,几乎贴着卫衣,然后落在她身后的地上,炸开一片烧灼的痕迹。
“不错嘛,比我想得要强。”戴安娜说,“一个新人,能有这样威胁程度的攻击型魔法,确实不赖。”
Sherry没有回应,她只是再次举起魔杖,瞄准了戴安娜。
一发蓝紫色的光球从魔杖中射出。
“哦?有点意思。”戴安娜咧嘴一笑,手指轻轻一动。
一个浅金色光球从杖尖飞出,像一颗子弹穿过空气,与量子光球碰撞,然后在空中炸开。
Sherry再次瞄准了戴安娜,她闭上双眼,将全身意念倾注在杖尖——
这一次,一道迅猛的蓝紫色光束从杖尖急射而出,直指戴安娜胸膛!
戴安娜终于动了。她两三下咬碎并咽下口中的薯片,轻轻跃起,在空中完成一个华丽的转体,躲过了光束的冲击。
然后,她一挥魔杖——
Sherry 甚至没有看到攻击从哪里来,只感觉到一股巨大的力量撞在她身上。她被击飞出去,世界在她的视野里旋转——
接着,她重重地摔在了地上。
她的眼前一阵发黑。魔杖从她手里飞了出去,落在几米外的地方,杖尖的宝石暗淡无光。
她想爬起来。但身体不听使唤,恐慌像冷水一样从头顶浇下来。
戴安娜轻盈地落地,向她走来,VR眼镜的指示灯闪烁着冷冷的红光。
“你现在知道了吗?”戴安娜的声音依然是那副闲散,“你还差得远。”
她举起了右手。
蓝紫色的光在掌中凝聚。比刚才更大。更亮。更不稳定。像一头随时会挣脱锁链的野兽。
Sherry 动不了。
她——
“小姐!”
是米奥!
Sherry 下意识想要抬起头回应,但她无法动弹。
她看着戴安娜手中的光越来越亮,越来越亮——
突然,Sherry 周围的一切都变成了模糊的色块。铅红色的天空。猩红色的焦土。灰色的帐篷。戴安娜的灰色卫衣。所有的一切都被拉长、扭曲、搅在一起,像被倒进了搅拌机。
然后——
Sherry猛地睁开眼睛。
她躺在一片猩红色的焦土上。身边没有帐篷,没有戴安娜,没有那辆运兵车。只有一望无际的、猩红色的焦土,和铅红色的天空,和一种沉重的、几乎让人窒息的寂静。
米奥蹲在她身边。它的眼睛是闭着的。呼吸急促。整只猫都在微微发抖,像一片被风吹动的叶子。
“米奥先生?”Sherry挣扎着坐起来。“米奥先生!”
米奥睁开了眼睛。
“……小姐。”它的声音虚弱得像一缕烟。“您没事吧?”
“我没事。您怎么了?”
“传送。”米奥的声音断断续续的,像一台快要没电的录音机在播放。“我从没……传送过这么远的距离……还带着一个人……”
它闭上了眼睛。
“米奥先生!”Sherry把它抱起来,贴在胸口。猫的身体在她怀里微微颤抖着,心跳快得像一只被吓坏了的小鸟。
“只是……累了。”米奥的声音细得像一根头发丝。“让我……睡一会儿……”
它的呼吸渐渐平稳了下来。
颤抖停止了。
心跳也慢了下来。
它睡着了。
Sherry抱着它,坐在猩红色的焦土上,头顶是铅红色的天空,四周是无边无际的、死寂的焦土。
她不知道自己在哪里。不知道米奥什么时候会醒来。不知道戴安娜会不会追过来。不知道出口在哪里。
她只知道一件事。
她还活着。
尾声 · 新生
某个夜晚。
一条普通到不能再普通的街道。
戴安娜趴在地上,手中的袋子倒在一旁,零食和汽水散落一地。在她身旁,一颗粉色的宝石碎裂开来,散发出缕缕轻烟。
她的眼皮颤动了几下,缓缓醒来。
她环视四周,眼神疑惑。
“我这是…在哪…?”
她揉了揉眼睛,看向空无一人的街道,她好像做了个梦。梦里,她的胸口处,插上了一把不知名的匕首,血液从中流出。
好在只是梦。
戴安娜拍拍身上的灰尘,余光注意到身边碎裂的宝石:“这是…宝石?虽然碎了,但挺好看的嘛!不过不知道它的主人是谁。”
沉吟片刻后,戴安娜决定:“——那就由我先保管着吧。”
她站起身,向远方走去。
远处一阵风吹过,带来她的喃喃自语:“我怎么会在这条街上呢,我平时不来这里的呀……算了,先回家吧。”
几个月后,
圣亚伯拉罕大学的新生报到日。
校园里到处都是拖着行李箱、拿着地图、满脸茫然的新面孔。他们的眼睛里有兴奋,有紧张,有期待,也有藏不住的,来到一个新地方的恐惧,离开家的恐惧,不知道未来会怎样的恐惧。
Sherry被Dr.CB拉去帮忙。她是被拉去当“吉祥物”的。
“你是传奇调查员。”Dr.CB说。她站在迎新摊位的后面,穿着一件整齐的的白大褂,口袋里塞满了各种颜色的笔,“你站在那里就好。不用说话。笑一笑就行。”
Sherry站在迎新摊位的后面,手里拿着一摞新生指南。那些小册子厚厚的,用铜版纸印刷,封面是一张阳光下的图书馆照片,看起来很漂亮。
Annie则在旁边分发传单。发得比谁都快。“拿着!有用!看了不亏!不看你也不亏什么但万一有用呢!”
她的声音大得像在操场上喊口令,路过的几个新生被她吓得缩了缩脖子。
星璇坐在摊位旁边的小桌子上,面前摆着一台笔记本电脑,正在帮新生查询宿舍分配。她的手指在键盘上敲得飞快,每敲完一个查询,就抬头微笑一下,“您被分配到4号楼,322房间。不客气。祝您在大学的生活愉快。”
曙光蹲在桌角,用它那只细长的机械臂给每一个路过的新生发糖。它的液晶屏上显示着一行绿色的字:“欢迎来到圣亚伯拉罕大学,未来的学者们。”
人流来来往往。
Sherry机械地递出一份又一份新生指南。她的脑子里在想别的事。“故事”没有找到。“纯真”之后是什么,她不知道。
也许那个“故事”根本就不存在。也许CXA只是在开一个玩笑。也许她已经找到了——只是她自己不知道。
“你好,请问工程学院往哪走?”
一个熟悉的声音。
Sherry的手停在了半空中。
她抬起头。
面前站着一个女孩。
一米六出头。穿着深灰色的卫衣,帽子的抽绳上挂着两个彩色的塑料珠子,一红一蓝。粉色的双马尾有些翘,像刚睡醒。脸上戴着VR眼镜。
她的背上则背着一个旧帆布书包,手里提着一个便利店的塑料袋,袋子里装着几罐汽水和几包薯片。
Sherry的呼吸停了一拍。
“戴安娜?”
女孩歪了歪头。VR眼镜的绿色指示灯闪了两下,然后会稳定常亮。
“你认识我?”她的语气里带着困惑,眉头微微皱着,嘴唇微微张着,头微微歪着。
Sherry张了张嘴。
她想说很多话。
但她没有说。
因为她看到了戴安娜的脸上,有一种纯粹的茫然。
戴安娜……好像不记得她了。
“你不记得我了?”Sherry的声音有些涩。像有什么东西卡在喉咙里,咽不下去,也吐不出来。
戴安娜歪着头想了一会儿。嘴唇动了动,像是在无声地说着什么。然后她摇了摇头。“你长得有点眼熟。”她说。“但我们见过吗?”
她从卫衣口袋里掏出一张皱巴巴的新生报到单,看了一眼,又塞回去。那报到单已经被揉得不成样子了,边角卷起来,中间还有一道折痕,折痕处都快断了。
“我是新生。”她说。“今天第一天来。工程学院。”
Sherry看着她。
VR眼镜。
便利店塑料袋。
漫不经心的语气。
和三个月前一模一样。
但不一样的是,她身上的,隐隐的的魔力波动消失了。
那个在铅红色天空下,掌心凝聚着蓝紫色光球的魔法少女,现在站在她面前,就像一个普通的、戴着VR眼镜的、喜欢喝汽水吃薯片的女孩。
“你……还记得魔法少女的事吗?”Sherry压低声音。低到只有她们两个人能听到。
戴安娜的手在VR眼镜框上停了一下。
那个停顿很短。短到可能只有零点几秒。短到如果不是仔细观察,根本不会注意到。
“什么魔法少女?”她说。
她真的不记得了。
Sherry沉默了一会儿,深吸了一口气。
“没什么。”她从桌下拿出一张新生指南,递过去。那本指南的封面在阳光下闪闪发亮。“工程学院在主楼东翼。沿着这条路走到头,左转,再走两百米。你会看到一个玻璃门,门上有‘工程学院’的铜牌。报到处在二楼,出电梯右转,第三个房间。”
戴安娜接过指南。她看了一看然后折了折,塞进帆布书包的侧袋里。那个侧袋里已经塞满了东西,她费了好大劲才把指南塞进去。
“谢了。”她说。
她转身要走。
“戴安娜。”
戴安娜停下脚步。回头。
“你……喜欢吃零食吗?”不知为何,Sherry脱口而出。
戴安娜愣了一下。
然后她举起手里的便利店塑料袋,摇了摇。可乐罐碰在一起,发出叮叮当当的声音。薯片袋哗啦哗啦地响。
“当然。”她说。她的语气里带着一点笑意。
Sherry也笑了。
她自己也说不清楚为什么想笑。也许是因为戴安娜来到了圣亚伯拉罕大学,手里还提着一个装满零食的塑料袋,站在阳光下,找工程学院的报到处。
也许,是因为她不记得那些事了。
“以后常来。”Sherry说。“我宿舍里有零食。虽然可能没你买的好吃。”
戴安娜歪着头看她。VR眼镜的指示灯闪了闪——绿色,绿色,黄色,绿色。
“……好。”她说。
然后她转身走了。
穿着灰色卫衣的背影在人群中穿梭。时而被挡住,时而显现。
她的影子在午后的阳光下很短。很短,几乎踩在脚下。像一个不愿意离开她的小动物,紧紧贴着她的脚跟。
Sherry站在那里。
手里还攥着一摞新生指南。
米奥从摊位下面的阴影里钻出来,跳上她的肩头,爪子勾住她的卫衣,稳稳地蹲好。
“她不是魔法少女了。”米奥用只有她能听到的声音说。
“我知道。”
“她的宝石……碎了。”米奥的声音很轻。“魔力消失了。但人还在。她还活着。”
Sherry点了点头。
“而且她不记得您了。不记得Level AS-410。不记得那场战斗。不记得自己曾经是魔法少女。”米奥的尾巴轻轻摆了一下。“也许这样更好。”
Sherry看着戴安娜消失的方向。那个小小的、穿着灰色卫衣的背影已经融入了人群,再也找不到了。
到处都是拖着行李箱的新生,到处都是拿着地图的家长,到处都是找不到路的、迷茫的、兴奋的、紧张的脸。戴安娜已经变成了其中的一张脸。普通的、不起眼的、普通的大学新生。
“米奥先生。”
“嗯。”
“您说,她是真的不记得了,还是……只是不想记得?”
米奥没有回答。
它用下巴蹭了蹭Sherry的耳朵。那个动作很轻。很暖。带着猫科动物特有的、既亲昵又矜持的矛盾味道。
午后的阳光照在摊位上。照在那一摞新生指南的塑料封皮上,反射出刺目的白光。那白光刺得Sherry眯了眯眼睛。
Annie还在发传单。星璇还在帮新生查宿舍。曙光还在用机械臂发糖。
Sherry把攥在手里的那摞新生指南放回桌上。拿起水杯喝了一口水。
远处,钟楼敲响了整点。
钟声在校园上空回荡。
穿过教学楼。穿过宿舍。穿过图书馆。穿过食堂。穿过那条种满了银杏树的主干道。穿过那个戴着VR眼镜、提着便利店塑料袋、正在找工程学院的女孩的发梢。
她听到了吗?
也许听到了。也许没有。
Sherry把水杯放回桌上,重新拿起那摞新生指南。
一切如常。
【完】