@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和Sherry的宿舍中却传来了Annie不耐烦的声响。 阳光透过窗帘的缝隙洒进来,在木质地板上投下几道细长的光带。床铺上还残留着昨夜翻滚过的褶皱,枕头上Annie那头幽蓝色的短发压出了几个俏皮的弯。
Sherry站在窗前,手里攥着一张羊皮纸。
那纸张质地温润,边缘切割得不太规整。纸面中央,一行烫金花体字在晨光中闪烁着细碎的光芒——
“被命运选中之人 谨启。”
Annie盘腿坐在床上,穿着那件洗得发白的旧T恤,刚才还在对着手机屏幕研究什么枪械射击的教程视频,此刻却一脸无奈地看着自己的妹妹。她已经反复看了那张羊皮纸不下五次——翻来覆去地看、对着光看、放在暗处看、甚至用手机闪光灯照着看——结论始终如一。
“我再说一遍哦,真的真的真的没有字。”Annie把手一摊,语气里带着三分无奈七分笃定,“你是不是最近太累了,出现幻觉了?”
Sherry咬了咬下唇。
“可是……我真的看到了。”她的声音很轻,带着一丝不易察觉的委屈,“金色的字,‘被命运选中之人谨启’。就在正中间。”
Annie盯着她看了两秒,叹了口气。
她太了解Sherry了。这个妹妹虽然平时看起来冷静理智、滴水不漏,但骨子里藏着一股倔劲儿。她不会无缘无故拿着张什么都没有的羊皮纸跟自己纠缠这么久。
“那……”Annie想了想,斟酌着措辞,“会不会是谁跟你开玩笑?Dr.CB?星璇?那个人小鬼大的修女最擅长这种故弄玄虚的事了。”
“不是。”Sherry摇头,“我从档案室整理资料的时候发现的,夹在一份很旧的档案里。那份档案……存放的位置很偏,落了很多灰,感觉很久没人动过了。”
“那就更奇怪了。”Annie挠了挠头,幽蓝色的短发被她揉得更加凌乱,“谁会特意跑到那种偏僻角落,就为了夹一张空白的羊皮纸进去?”
Sherry没有回答。
她低下头,再次看向手中那行字。
金色的墨水在阳光下微微发烫,那些字母排列得很优雅,像是某种古老的邀请——或者说,召唤。
她试着用手指摩挲纸面。
字迹没有被擦掉,也没有褪色。它们像是长在了纸里,与纸张本身融为一体,成为它不可分割的一部分。
“Annie,”Sherry抬起头,湛蓝的眼眸里有一丝说不清的情绪,“你再仔细看看,就最后一次。”
Annie看到了妹妹眼中的恳求,心里一软。
她放下手机,从床上爬下来,踩着拖鞋走到Sherry面前,几乎是鼻尖贴着羊皮纸地看了好几秒。
“没有。”她抬起头,语气温和却确定,“Sherry,我真的什么都没看到。就是一张空白的纸,连水印都没有。”
Sherry攥紧了羊皮纸的边缘。
“好吧。”她深吸一口气,露出一个有些勉强的笑容,“可能是我想多了。”
她把羊皮纸折好,小心地塞进外套内侧的口袋里。
Annie看着她的动作,张了张嘴想说什么,但最终只是拍了拍她的肩膀,转身走向门口。
“Annie!你去哪?”
Annie晃了晃手上那颗璀璨的魔力宝石,脸上的表情瞬间亮了起来,方才的无奈与关切一扫而空:“嘿嘿,当然是去练枪啦~”
她的声音里带着一种藏不住的雀跃,眼中有光——那是最近才出现的光芒。从她正式成为“枪之魔法少女”的那天起,这束光就再也没有熄灭过。
“成为了枪之魔法少女,当然要好好使用这份能力才行!”
她拉开门,清晨的走廊里涌进一股带着露水气息的凉风。走廊尽头的窗户透进来大片大片的金色阳光,将她的影子拉得很长很长,投在对面的墙壁上,像一柄细长的枪。
“那你……注意安全。”Sherry说。
“放心啦!”
Annie的身影消失在门外。脚步声踏踏踏地远去,轻快得像只撒欢的猫。
走廊里重新安静下来。
只有窗外的鸟鸣,和远处某个教室里隐约传来的讲课声。
Sherry站在原地,手不自觉地伸进口袋,指尖触碰到那张羊皮纸略显粗糙的边缘。
她被命运选中了?
被什么选中?为什么选中?被谁选中?
还是说,这一切只是她的幻觉?
Sherry闭上眼睛,深吸一口气。
不。
她不相信那是幻觉。
那行字的触感是真实的。它温热过,它闪光过,它在她手中像一颗活着的心,无声地跳动。
“被命运选中之人 谨启。”
她睁开眼,望着窗外那片被阳光染成金红色的天空。
不管这意味着什么——她都会找到答案。
吃过早饭,Sherry去了图书馆。
她没有去常见的阅览区,而是穿过层层书架,沿着一条越来越窄的通道,走到了档案室那个最偏僻的角落。
找到那份档案夹的位置不难——她昨天已经来过一次。
她抽出那份档案夹,翻开。
里面是几份关于某个已经关闭的研究项目的记录,时间大约在七八年前。项目名称被严重涂抹,几乎看不出原来的字样。参与者名单也大部分被涂黑,只剩少数几个名字依稀可辨。
没有任何关于邀请函的线索。
Sherry合上档案夹,将它放回原位。
她又翻了翻相邻的几个档案夹,没有发现类似的羊皮纸,也没有任何异常。
“难道是单独夹进去的?”她蹙眉,“可谁会这么做,又是为什么呢?”
她靠在书架旁,拿出那张羊皮纸,再次仔细端详。
纸张的边缘有明显的磨损痕迹,但没有任何撕裂或污渍。表面略微泛黄,像是某本旧书里脱落的扉页。
她试着用手机拍照。
照片里,羊皮纸上空空荡荡,只有一个米白色的矩形,什么都没有。
她试着扫描。
扫描件里,同样什么都没有。
Sherry沉默地看着那张空白的照片,心里涌起一股说不清的复杂情绪。
如果只有我能看到……
那是不是意味着,只有我是“被选中”的?
可为什么是我?
Annie是枪之魔法少女。如果预言是真的,如果魔法少女角逐真的要开始,那她应该才是那个站在舞台中央的人。
而自己呢?
虽然拥有量子分解和重构的能力,虽然拥有生物义体,虽然被圣亚伯拉罕大学特招为调查员——但在那个魔法少女的预言里,她似乎从未被提起过。
预言说,会有五个魔法少女出现。
她们会从不同的地方获取属于自己的力量,然后展开角逐。这些力量会使一个叫做“魔力值”的东西产生变化。每隔一段时间,魔力值会被结算。
魔力值最低的那位魔法少女就会在角逐中战败,她将出局并受到惩罚。
经过四轮淘汰后,余下的那一位魔法少女就会获胜并得到奖励。
而Annie——已经是枪之魔法少女了。
也就是说,至少还有四位魔法少女尚未出现。或者已经出现了,只是她们不知道。
Sherry的手指无意识地摩挲着羊皮纸的边缘。
这张邀请函,会不会和魔法少女的预言有关?
会不会她也是被选中的五人之一?
但这个想法刚冒出来,就被她自己否定了。Annie成为魔法少女时,是有人找到她的,带着一份契约,一颗魔力宝石,还有一套关于魔法少女角逐的规则说明。
而她呢?
只有一张空白的、只有自己能看到的邀请函。
没有引导者,没有契约,没有魔力宝石。
什么都没有。
Sherry叹了口气,将羊皮纸收回口袋。
时间还早。
她决定去碰碰运气。
二、古书与星璇的发现
Sherry在大学内胡乱逛着,不知怎么来到了神学院附近。
神学院被一片修剪整齐的草坪环绕,相比于大学其他学院,它是个格外安静的地方。
从外面看,它和普通教堂没什么区别——灰色的石墙、尖顶的钟楼、彩色玻璃窗上描绘着宗教题材的图案。
Sherry穿过主厅,从侧门进入一条狭窄的走廊,再推开一扇不起眼的橡木门。
房间不大,约莫二十平方米。靠墙是一排顶天立地的书架,塞满了各种神学典籍、历史文献和手抄本。窗台上摆着几盆多肉植物,长得不算好,但还算精神。一张深色的木桌占据了房间中央,桌面上堆着好几摞书,有些书页间夹着各色的便签。一盏黄铜台灯立在桌角,灯罩微微倾斜,将光线聚拢在桌面上那一小片区域。
星璇正坐在桌前,棕色的长发在脑后编成一条松散的辫子,穿着一件素净的灰色毛衣,袖子挽到手肘,露出纤细的手腕。她面前摊着一本极厚的书,封面是暗沉的深褐色,边缘磨损严重,有些地方甚至露出了内里的硬纸板。
她听到脚步声,抬起头,露出一个温和的笑容:“Sherry?稀客呀。”
“星璇。”Sherry在门口站了一瞬,然后走了进来,“我想请你帮我看一样东西。”
“什么东西?”
Sherry从口袋里取出那张羊皮纸,递了过去。
星璇接过纸,低头看了一眼。
然后她的表情变了。
不是惊讶——是一种更加复杂的、Sherry说不上来的神情。
“……星璇?”
“你能看到上面的字吗?”Sherry的声音有些急切,“金色的,花体字,写的是——”
“‘被命运选中之人 谨启’。”星璇替她说完了后半句。
Sherry的心跳漏了一拍。
“你……你能看到?”
“嗯。”星璇将羊皮纸放在桌上,用手指轻轻点着那几个她看到的字,“写得很清楚。除此之外……还有一些我看不懂的符号,在背面。”
“背面?”Sherry一愣,“我背面没看到什么啊……”
她拿起羊皮纸,翻转过来。
空白的。
还是空白的。
“这……”她重新将纸递给星璇,“你能圈出来给我看吗?”
星璇从笔筒里抽出一支铅笔,在羊皮纸背面的几个位置画了圈,然后递还给Sherry。
Sherry盯着那几个痕迹。
她的视角里,那些位置根本什么都没有。
铅笔的印记落在空白的纸面上,孤零零的,像是在一张白纸上随意画了几个圈。
“所以……”Sherry慢慢坐下,声音有些艰涩,“我拿给Annie看,她说上面什么都没有。拿给你看,你不仅能看到正面的字,还能看到背面的符号。也就是说,不是这张纸出了问题,是……”
“是‘被选中’的人才能看到它。”星璇帮她补完了后半句。
Sherry靠在椅背上。
沉默了几秒。
“星璇,”她开口,声音比刚才沉了一些,“关于魔法少女的预言,你了解多少?”
星璇没有立刻回答。
她将羊皮纸放到一边,双手交叠放在桌上,十指交叉。台灯的光落在她脸上,将她的侧脸映照得明暗分明。
“我了解的不算多。”她缓缓说道,“这个预言是最近才开始流传的,来源不明。但可以肯定的是——它正在照入现实。”
她看了一眼Sherry:“Annie不就是最好的例子吗?”
Sherry点头。
“而且,”星璇顿了顿,声音低了几分,“我听闻,还有两位魔法少女已经来到了圣亚伯拉罕。只是她们的身份、能力和阵营目前都还不清楚。”
“两位?”Sherry蹙眉,“也就是说,加上Annie,至少已经有三位了。还剩两位……”
她没说完,但意思很明显。
她自己有可能是那剩下的两位之一。或者说——那张羊皮纸,可能就是线索。
星璇似乎看穿了她的心思,但没有追问,而是站起身,走到书架前,从最上层抽出一本极厚的书。
那本书的外形让Sherry有些意外。
没有插图。封面上只有烫金的拉丁文标题,字迹因年代久远而变得有些模糊。整本书呈现出一种深沉的暗褐色,像被时光浸泡过的某种旧物,散发着陈旧的纸张和皮革混合的气味。
“这是……”Sherry接过那本书,只觉得手里一沉。
“一本古书。至少放了三百多年。”星璇重新坐下,双手托腮,“讲的是魔法少女的故事。”
Sherry翻开封面。
入目的第一页就是密密麻麻的拉丁文,没有插图,没有装饰,甚至连段落和标点都显得粗糙随意。字迹是手抄的,字体工整却呆板,像是抄写者只是机械地复制,并未真正理解其中含义。
“这……”Sherry皱起眉,“看上去像一本伪书。”
“是啊。”星璇笑了笑,“我看过了,里面满是生硬的语言,充满歧义的长句,没有插图的版面,还有那些让人摸不着头脑的短句——比如‘让没出现的死去’,‘处决歌唱’,完全不知道在说什么。”
“但这个书确实在Level 906放了三百多年。”星璇补充道,“老教皇说,在他年轻的时候这本书就已经在这里了。没人知道它的确切来历。”
Sherry沉默了一会儿。
“所以这本书……只写了开头?”
“对。”星璇翻开书页,指给Sherry看,“前面的几十页还算有条理,讲了一个人们用魔法自相残杀的故事。但故事只开了个头就断了,后面的章节又变成了那些意义不明的呓语。”
Sherry凑过去看。
那些拉丁文的长句确实如星璇所说,语序混乱,修辞晦涩,像是作者在刻意掩饰什么。偶尔会有几个短句突兀地插入其中——“让没出现的死去”“处决歌唱”“血染的舞台”——像某种暗语,又像某个疯狂的低语。
“我目前也只看出这些。”星璇合上书,将它放到一边,“感觉这上面的内容和那些古书有很多相似的地方。但那些古书上,魔法少女最终的结局可不太好。”
“不太好是……”Sherry试探性地问。
星璇看着她,眼神里有一丝Sherry从未见过的沉郁。
“死亡。”星璇说得很轻,却掷地有声,“或者比死亡更可怕的东西——比如,失去自我。”
书房里安静了一瞬。
窗外有一只鸟叫了两声,然后飞走了。
“我知道了。”Sherry站起身,“星璇,我有件事要告诉你。”
她拿出那张羊皮纸,将它摊在桌上,正面对着星璇。
“这张邀请函上写了‘被命运选中之人 谨启’。”Sherry的语速不快,一字一句,“然后它写了进入潮痕古堡的方法。”
星璇静静听着。
“我决定去看看。”
星璇没有立刻回应。
她低下头,看着那张羊皮纸,沉默了几秒。然后她抬起头,那双清澈的眼睛里映着台灯温暖的光。
“Sherry,我支持你。”她说,“你去吧。我会继续研究这本古书,尽快把里面的内容破译出来,看看有没有对你有用的信息。”
“谢谢你,星璇。”Sherry握紧羊皮纸,将它收进口袋,“等我回来。”
星璇送她到门口。
晨光从教堂的彩色玻璃窗洒进来,在地面上投下斑斓的光影。星璇站在光影之中,棕色的发辫垂在胸前,脸上带着淡淡的笑意。
“路上小心。”她说。
Sherry点头,转身走进走廊。
身后,书房的门缓缓关上。
星璇回到桌前,重新翻开那本古书。她的手指轻轻划过那些生硬的拉丁文,嘴唇微微翕动,像是在默念什么。
三、潜入
按照邀请函上写的方法,Sherry在Level AS-419那片名为镜月湖的水域找到了入口。
湖水在月光下平静如镜,倒映着满天繁星。Sherry换上潜水装备,在湖心找到了那处被水草遮掩的暗流。她深吸一口气,潜入冰冷的水中。
岩洞比她想象的要狭窄。
她起初还能勉强游动,到后来只能侧身挤过那些湿滑的石缝。发光的苔藓附着在岩壁上,散发出幽蓝色的冷光,将她的影子映在凹凸不平的洞壁上,扭曲得像某种深海生物。
她不知道游了多久。
黑暗、冰冷、压抑。只有前方那一点若有若无的光,指引着她继续向前。
然后——
她找到了那扇门。
石门半掩在岩壁的凹陷处,表面覆盖着厚厚的水垢。门楣上镌刻着一行拉丁文,字迹已被水汽侵蚀得有些模糊,但仍可辨认:
“Sapientia sola libertas est.”
智慧乃唯一自由。
Sherry伸手推开了那扇门。
门后是无尽的黑暗。
接着,她坠落。
坠落了很久很久。
然后,她便失去了意识。
“小姐,醒醒……”
四、黑猫
那个声音将她从深沉的黑暗中托起。
起初只是一根极细的线,牵着她向上。随后是第二根、第三根,像是在编织一张网,将她散落在深渊各处的意识碎片一一打捞、拼合。
Sherry睁开眼。
首先映入视线的是一盏悬挂在半空中的玻璃风灯,散发着暖黄色的光芒。
她身下是冰冷的石板,铺着一层薄薄的灰尘。头顶是岩石的穹隆,高达二十余米,有天然的孔洞贯通崖顶,一束不知是月光还是日光的光柱从那里垂直射入,落在不远处一汪墨绿色的深潭上。
潭水平静无波,清澈得能看见水底的卵石和某种银白色的小鱼。
潭畔泊着一艘小艇,艇首悬挂着一盏与岩洞里那盏相同的玻璃风灯,正无声地亮着。
而在她身边——
蹲坐着一只黑猫。
它皮毛乌黑发亮,四爪雪白,如同穿着白色短靴;眼睛一绿一蓝,此刻正安静地注视着她,目光里带着一种老派管家的从容与耐心。
它穿着一件剪裁考究的黑色呢绒学者服,领口镶着银色丝线绣成的槲寄生花纹。金丝单边眼镜架在左眼前,用一条细银链挂在领口,垂在胸前,随着它的呼吸微微晃动。
Sherry盯着它看了三秒。
黑猫也盯着她看了三秒。
然后黑猫开口了:
“您终于醒了,小姐。”
它声音清晰,语调平和,吐字带着一种老式的优雅。
Sherry的大脑短暂地空白了一下。
“你……”
“会说话?”黑猫替她补完了后半句,语气里带着一丝见惯不怪的淡然,“是的,我会说话。这里很多东西都会说话。有些没有嘴的也会——比如那盏灯,不过它今天心情不太好,不太想搭理人。”
Sherry顺着它的目光看向那盏风灯。
灯沉默地亮着。
“我这是……”Sherry撑着石板坐起来,头还有些昏沉,“在哪?”
“潮痕古堡。”黑猫站起身,四只雪白的爪子无声地落在石板上,“确切地说,是古堡的‘入口’区域。您从镜月湖的水下通道潜入,穿过了岩洞,在推开那扇石门后因为魔力震荡而短暂失去了意识。我感应到了您的到来,便来接应了。”
它一边说,一边走到Sherry面前,仰起头,用那双异色的瞳孔打量着她。
“自我介绍,”它微微颔首,“我是米奥。潮痕古堡现任助理司书,或者说——助理图书管理员。目前全权代理古堡的管理和接待工作。”
“米……奥?”Sherry重复了一遍这个名字。
“是的。米奥。”黑猫——米奥——用前爪扶了扶单边眼镜,“没有姓氏,就叫米奥。”
Sherry沉默了几秒,消化着眼前的信息。
一只会说话、穿衣服、戴单边眼镜、自称助理司书的黑猫。
一座沉在水下的古堡。
一张只有自己和星璇能看到的邀请函。
她深吸一口气。
“那,米奥先生,”她用了一个尊敬的称呼,慢慢站起身来,“请问——您邀请我来这里,是为了什么?”
米奥的眼——那只绿色的——微微弯了一下,像是一个微笑。
“不是我邀请您来的,小姐。”它说,“是‘潮痕’邀请您的。”
“潮痕?”
“这座古堡的名字,也是它的意志。”米奥转过身,朝岩洞北壁走去,“请随我来。这里不是说话的地方。”
Sherry跟着它,穿过岩洞,走到北壁那扇拱门前。
门楣上镌刻着那句她已经在石门上见过的拉丁文:“Sapientia sola libertas est.”
而门已经不存在了。
取而代之的,是一道由数百本大小不一的书籍垒成的“书门”。那些书脊朝外,颜色从深棕到暗红不等,金粉烫印的书名在微光中闪烁,像无数双沉默的眼睛。
米奥走到门框左侧,用雪白的右前爪轻轻叩了叩第三块石砖。
书们“嗡”的一声散开了。
它们在半空中盘旋片刻,像一群被惊动的鸟,让出一条足够两人并排通过的通道。Sherry跟着米奥走过时,有几本书凑到她身边,好奇地翻开书页,露出里面密密麻麻的、她看不懂的文字。
“礼貌些,各位。”米奥头也不回地说。
那些书“呼”地散开,各自飞回原位,重新垒成那道密不透风的书门。
Sherry回头看了一眼,书门已经恢复了原样,仿佛从未打开过。
“这边请。”米奥的声音从前方传来,“这里是中层,漩涡回廊,也是古堡的核心区域。”
Sherry停下脚步,发出一声极轻的惊叹。
这是一个环形结构的巨大回廊,环绕着中央的天井而建。天井直径约十五米,底部是底层的碧色海水。而天井中央,一个直径约三米的漩涡正在缓慢旋转,永不停止。漩涡中心深不见底,隐约可见幽蓝的光芒闪烁,像一只深邃的眼瞳。
Sherry向下看去,水底的世界诡异而令人着迷——书架仍矗立原地,只是下半截已没入水中。书册被封装在透明的水晶匣内,有淡青色的小鱼成群结队穿行于书架之间。更深处,有一只巨大的砗磲盘踞在螺旋楼梯的基座上,壳口微张,露出内壁珍珠质的光泽。
“这是古堡的下层,淹没之厅。”米奥见她向下看,便介绍道,“主要收藏海洋魔法、潮汐预言、水元素召唤类典籍。其中最著名的是一套十二卷的《深海之书》,由人鱼贤者用海藻纸写成,遇水才会显现文字。不过……”它顿了顿,“那套书如今沉在最深处的水底书架底层,目测您暂时还取不到。”
“暂时?”Sherry注意到了它的措辞。
米奥没有回答,只是继续往前走。
回廊宽约四米,两侧排列着高达五米的黑檀木书架。架柱雕刻着繁复的藤蔓纹样,藤蔓间隐藏着各种传说中的魔法生物——双足飞龙、狮鹫、独角兽、凤凰。
Sherry眼睁睁地看着一条藤蔓上的双足飞龙微微转过头,用琥珀色的眼睛瞥了她一眼,然后又懒洋洋地缩了回去。
“它们每逢子夜会在书架表面游走,巡视藏书是否安好。”米奥解释,“现在是白天,它们比较……懈怠。”
回廊中悬浮着许多书籍,少则三五本,多则数十本,悠悠飘荡,宛如水中游鱼。有生人走近,它们便礼貌地向两侧让开。偶尔有一本胆大的凑到Sherry跟前,翻开书页,展示自己的目录。
米奥用爪子轻轻将那本书推开:“这位是客人,不是读者。至少……暂时不是。别推销自己了,回去。”
那本书似乎哼了一声,然后不情不愿地飘走了。
Sherry忍不住笑了一下。
“米奥先生,”她问,“您说您是‘助理司书’。那正式的图书管理员呢?”
米奥沉默了几秒。
“上一任大图书管理员,”它缓缓开口,“已经离开很多年了。”
“离开?”
“离开。”米奥重复了一遍这个词,没有再解释。
Sherry也没有追问。
他们沿着回廊走了一段。米奥不时停下,用爪子指向某个书架,介绍里面的藏书。
“那么,”米奥最终在一扇不起眼的橡木小门前停下,“在继续参观之前,我想先和您谈谈——为什么您会来到这里。”
它推开门。
门后是一间不大的书房,铺着深红色羊毛地毯,地毯花纹已部分磨损,但清洗得很干净。靠墙是一张胡桃木书桌,桌面上整齐堆放着一尺高的书册。窗边摆放着一把扶手椅,椅面蒙着墨绿色天鹅绒,把手已磨得发亮。
米奥跳上扶手椅,蹲坐好,尾巴卷过前爪,仰头看着Sherry。
“小姐,”它说,“您看到的那张邀请函,并非谁特意放在您那里的。它是‘潮痕’——古堡的意志——在等待了三百多年后,终于找到了它能‘说话’的对象。”
“说话的对象?”Sherry蹙眉,“可是……为什么是我?”
“这个问题,或许要等到您成为正式的大图书管理员之后,才能找到答案。”米奥说,“而我——我只能告诉您,‘被潮痕选中’的人,并非随机。它选择了您,必然有它的理由。”
它站起身,从扶手椅上跳下来,走到书桌前,用爪子拉开一个抽屉。
抽屉里静静躺着一个八音盒。
那八音盒不大,约莫两只手掌并拢的尺寸。木质的表面雕刻着精细的花纹,图案是某种藤蔓与星辰的交织。最为引人注目的是它的顶部——五个锁孔呈环形排列,大小相同,形状各异。有的锁孔是星形,有的是月牙形,有的是水滴形,有的是菱形,最后一个则是某种Sherry不认识的、像是火焰又像是羽翼的符号。
五个锁孔,空荡荡的,等待着它们的钥匙。
“这是上一任大图书管理员留下的。”米奥的声音变得郑重,“他离开前,将五份‘故事’散落在不同的层级中,并锁上了这个八音盒。他留下的遗言是——只有集齐五份‘故事’的人,才能打开八音盒,得到他的‘认可’,成为新一任的大图书管理员。”
“故事?”Sherry重复。
“是的,故事。”米奥说,“这是我们对那些‘遗物’的称呼。每一份故事都藏在一个特定的地点,由某种力量守护。只有被选中的人才能找到它们、取回它们。”
它看着Sherry,那双异色的瞳孔里映着书房里昏暗的烛光。
“小姐,我想与您缔结契约。”
Sherry微微一怔。
“我希望您能成为潮痕古堡的实习图书管理员。”米奥一字一句地说,“寻回那五份‘故事’,打开八音盒,得到前任大图书管理员的认可,成为新一任的大图书管理员。届时,您将完全掌握整座图书馆——它的所有藏书、所有魔法、所有秘密。”
它顿了顿。
“而我——也能完成复兴这座古堡的使命。”
Sherry沉默了很久。
她看着那个八音盒,看着那五个空荡荡的锁孔。她想象着那些“故事”散落在未知的层级中,等待着被找回。
一座图书馆。
全部归她所有。
这个诱惑太大了。
“我需要做什么?”她问。
米奥那只蓝色的眼睛亮了一下。
“接受契约。”它说,“然后,我作为您的向导和助手,陪您一起寻回五份‘故事’。每找回来一份,您能接触的权限就高一些,能调用的魔法也就更多、更强。同时——”它看了一眼Sherry的胸口,“您自身的魔力也会随之开发。”
Sherry下意识地捂住胸口。
“您已经感觉到了吧?”米奥说,“您体内的某种东西,正在苏醒。”
Sherry没有回答。
但她确实感觉到了——从踏入潮痕古堡的那一刻起,从她在这间书房里站定的那一刻起,胸口深处有什么东西在微微发烫,像一颗沉睡的种子,在春天的第一个雨夜里,悄然松动。
“我同意。”她说。
米奥点点头。
它走到Sherry面前,仰起头,将一只雪白的前爪轻轻搭在她的手背上。
“那么——契约成立。”
一股微弱的热流从它的爪尖传来,沿着Sherry的血管向上流淌,最终汇聚在胸口。那热度只持续了几秒,然后消散,无影无踪。
什么也没有发生。
没有闪光,没有爆炸,没有魔法阵。
只有一只黑猫安静地站在她面前,眼神平静地看着她。
“好了。”米奥收回爪子,“从现在起,您是潮痕古堡的实习图书管理员了。”
“……就这样?”Sherry有些不确定。
“就这样。”米奥说,“契约是一种承诺,不是一种法术。它不需要烟花。”
它转过身。
“那么,接下来我带您继续参观。还有很多地方没看呢——上层、穹顶观测台、天文望远镜、以及……”它顿了顿,语气微沉,“禁书区。不过那个区域,目前您的权限还不够进入。”
Sherry深吸一口气,将那个八音盒、那五个锁孔、那五份散落的“故事”,以及“大图书管理员”这个头衔,暂时压进心底。
“好。”她说,“麻烦您了,米奥先生。”
五、穹顶之下
米奥带着Sherry沿着螺旋楼梯继续向上。
穿过中层,他们来到第三层。
这一层的中央是一个八边形的宽阔大厅,顶部是穹隆结构。穹隆以肋拱支撑,肋拱交汇处悬挂着一盏巨大的青铜枝形吊灯,吊灯上点燃着永不熄灭的淡蓝色魔法火焰。那火焰无声无息,却将整个大厅照得亮如白昼。
大厅八面墙壁,各开一扇巨大的玻璃窗。窗棂是精雕细刻的铅条,拼出繁复的几何图案。透过玻璃,可以看到外面的海底世界。
Sherry 往外看去,窗外的海水深邃而澄澈,呈蓝绿色。阳光透过海水折射下来,形成摇曳的光斑。银色的鲱鱼群如流动的云朵从窗前滑过,暗红色的真鲷拖着长长的背鳍,慢悠悠地游弋。更远处,一只海龟的背甲上生着对称的魔法阵纹样,发着微光。
她不知不觉走到窗前,手指轻轻触碰冰凉的玻璃。
“这里……”她轻声说,“好美。”
“第七任大图书管理员阿方索最喜欢这个位置。”米奥蹲坐在她脚边,“他曾经在这里连续观察潮汐变化三十六小时,记录了一整本关于潮汐魔法与月相关系的笔记。”
Sherry从窗前转过头:“阿方索就是上一任?”
“不。”米奥摇头,“阿方索是第七任。上一任——确切地说,是那些‘故事’的散布者——是第十三任。”
“十三任。”Sherry重复。
“有些数字在某些文化里不太吉利。”米奥语气平淡,“但对潮痕来说,数字只是数字。”
它站起身,朝大厅周围的八个侧室走去。
“这些侧室分别收藏不同门类的高阶魔法典籍——星辰魔法、时空理论、元素本源、生命奥秘、精神领域、预言学派、禁制与封印、上古语言。”它一边走一边介绍,“每一扇门都需要触发机关,当然,方式各不相同。有的需要说出正确口令,有的需要画出指定符文,有的甚至需要答对一道魔法谜题。”
Sherry跟在后头,目光扫过那些或朴素或华丽的门扉。
“目前以您的权限,”米奥说,“只能进入前三间——星辰魔法、时空理论和元素本源。其余的,需要等您找到更多‘故事’之后才能解锁。”
它带着Sherry走到东侧的一扇门前。
门的材质是某种深色的硬木,表面没有任何装饰,只有一个极浅的凹痕,像是被什么东西压出来的。
“星辰魔法室。”米奥说,“口令是:‘以星为墨’。”
Sherry重复了一遍口令。
门无声地滑开了。
门后是一间不大不小的圆形房间,墙壁上镶嵌着各种星图和黄铜仪器。房间中央是一张圆桌,桌上摊开着一本厚厚的书册,书页上画着复杂的星座图谱。
米奥走到圆桌边,用爪子拍了拍那本书册。
“这是专属于您的魔法书。”它说,“目前,您能接触的只有初级。随着您找回来的‘故事’越来越多,您能解锁的中级、高级魔法也会越来越多。”
Sherry走到桌边,手指轻轻触碰书册的封面。
封面是深蓝色的,像午夜的天穹,上面用银色的线绣着星座的图案。没有标题,没有任何文字。
她翻开第一页。
第一页是空白的。
第二页也是空白的。
整本书——全都是空白的。
Sherry抬起头,疑惑地看向米奥。
“它还没有被‘写’出来。”米奥说,“魔法书不是用来‘读’的,是用来‘写’的。当您获得新的能力,它就会自动补充这一份内容。现在它是空白的,因为您的力量——从潮痕的角度看——还是零。”
Sherry合上书。
“我还有一个问题。”她说。
“请讲。”
“我的魔法……和我原有的能力,是什么关系?”
米奥沉默了片刻,似乎在组织语言。
“您原有的能力是一种与生俱来的天赋,不属于魔法体系。”它说,“潮痕赋予您的魔法,是另一种东西。它们可以叠加,可以互补,甚至可以互相增强。这一点,在您掌握了‘量子共鸣’之后,会变得更加明显。”
“量子共鸣?”
“这是您成为潮痕实习图书管理员后获得的第一个能力。”米奥说,“简单来说——魔法能可以与您自身的量子能量叠加生效。原先需要接触才能发动的量子湮灭,在拥有法杖之后,可以改为用法杖锁定。射程、精度、可控性都会大幅提升。”
Sherry沉默了。
“此外,”米奥补充道,“以您目前的权限,最多可以随身携带三本不同类型的魔法书。等到权限升级之后,您可以直接从任何地方召唤您想要的书——不需要随身携带,不需要提前准备。”
Sherry将魔法书合上,抱在怀里。
“米奥先生,”她说,“我还有一件事想确认。”
“请说。”
“关于那张邀请函——只有被潮痕选中的人才能看到上面的字。这意味着,我不应该向任何人透露我的身份,对吗?”
米奥那只绿色的眼睛微微眯了一下,像是在微笑。
“聪明的小姐。”它说,“是的。实习图书管理员的身份、潮痕古堡的信息,都不能随意泄露。这不是不信任谁的问题,而是——”
“潮痕的意志。”Sherry替它说完了。
“没错。”
Sherry低下头,看着怀里那本空白的魔法书。
她想到了Annie——那个已经成为枪之魔法少女、每天兴高采烈去练枪的姐姐。
她想到了星璇——那个坐在书房里,为她破译古书中那些晦涩拉丁文的小修女。
她想到了那张羊皮纸。
被命运选中之人 谨启。
也许是。
也许不是。
但无论如何——她已经做出了选择。
“米奥先生,”Sherry抬起头,湛蓝的眼眸里映着魔法火焰幽蓝的光,“我可以先离开古堡,回去处理一些事情吗?有些事我必须……和一个人商量。”
“当然。”米奥说,“潮痕不会囚禁任何人。来去自由——这是初代大图书管理员定下的规矩之一。”
它从圆桌边站起身,朝门口走去。
“我送您。”
六、重返
当Sherry再次从镜月湖中浮出水面时,天色已经微微发亮。
她没想到自己在古堡里待了那么久。
潜水装备还完好,时间似乎并没有过去太多。
但她的身体里多了一样东西,像是心脏旁边多了一颗小小的、温热的种子,安静地跳动着。
她换好衣服,匆匆穿过校园,朝神学院走去。
清晨的空气微凉,草地上还挂着露水。远处有人在晨跑,脚步声单调而有节奏。教学楼里已经亮起了灯,偶尔有一两个早起的教授从她身边经过,点头致意。
Sherry走在石板路上,怀里抱着用外套裹好的魔法书。
她需要见到星璇。
推开神学院那扇厚重的木门,穿过彩绘玻璃投下的斑斓光影,沿着那条狭窄的走廊走到尽头。
她敲了敲门。
“请进。”星璇的声音从里面传来,带着一丝沙哑——听起来像是熬了一整夜。
Sherry推门进去。
书房的灯还亮着。星璇坐在桌前,棕色的长发有些凌乱,那本古书摊在她面前,桌上多了好几张写满笔记的纸。台灯的光将她的影子拉得很长,投在对面的书架上,像一个安静的守卫。
“Sherry?”星璇抬起头,眼中闪过一丝惊讶,“你这么早……”
“星璇,”Sherry走到她面前,将那本魔法书从外套里取出来,放在桌上,“我去了潮痕古堡。我见到了米奥先生。我……成为了实习图书管理员。”
星璇怔了一下。
然后她笑了。
“坐下,慢慢说。”她站起身,走到窗边,拉开窗帘。
晨光涌进来。
Sherry坐下,将她在潮痕古堡的经历一五一十地告诉了星璇——从岩洞中的苏醒,到那只会说话的黑猫,到八音盒与五份“故事”,到那本空白的魔法书。
星璇安静地听着,时不时点头,偶尔插一两句追问。
“所以,”最后,星璇托着下巴说,“你现在是实习图书管理员。你的任务是找回五份‘故事’,打开八音盒,成为正式的大图书管理员。而这些‘故事’,很可能与魔法少女的预言有关。”
“至少我认为有。”Sherry说,“只是目前还没有确凿的证据。”
星璇靠在窗框上,双手抱胸,微微仰头看着天花板,似乎在思考什么。
过了片刻,她垂下目光。
“Sherry,”她说,“我破译了一些古书的内容。”
Sherry精神一振。
星璇回到桌前,翻开那本古书,指着其中一页。
“这本书虽然大部分是呓语,但有一些章节——非常零碎的、几乎被淹没在废话中的章节——提到了‘五份遗物’。”
“‘遗物’?”
“嗯。”星璇点头,“书中称它们为‘失落的篇章’,说它们散落在‘被遗忘的层级’中,由‘古老力量’守护。只有‘被选中之人’才能寻回它们,并将它们‘归位于空寂之环’。”
“空寂之环?”Sherry蹙眉。
“嗯……就是那个八音盒。”星璇说,“至少,我认为是的。”
她翻到另一页。
“还有一段提到了‘黑猫’。”她说,“书中说,‘瞳孔异色的守门者,将引导归途的旅人,直至最后一扇门扉关闭。’”
Sherry沉默了。
米奥正是瞳孔异色。
“所以,”星璇合上书,看着Sherry,“你走的路,可能和魔法少女的预言是同一个。或者说——魔法少女的预言,只是这本书里所记载的‘竞争’的一个变体。”
两人对视着,忽然,相视而笑。
“星璇,”Sherry说,“我会保密。我是魔法少女这一层身份——如果我是的话——我也会保密。但关于潮痕古堡,关于米奥先生,关于那些‘故事’……我需要你的帮助。”
“当然。”星璇伸出手,握住Sherry的手,“我说过的,我会帮你。”
她的手很暖。窗外,阳光已经完全升起来了,将整个书房照得明亮而温暖。
“那么,”星璇松开手,笑容里带着一丝顽皮,“现在的问题是——你是魔法少女吗?”
Sherry低下头,看着自己的手。
她能感觉到胸口那颗温热的东西在跳动——契约、魔法、还是别的什么,她说不清楚。
“我不知道。”她说,“但我想……我应该很快就会知道了。”
窗外的天空一片晴朗。
远处,操场上有人在跑步,教学楼里传来上课的铃声。一切如常。
Sherry深吸一口气,正想对星璇说什么,忽然,她胸口一热。
那股在古堡书房里感受过的暖流再次涌起,从心脏的位置向外扩散,沿着锁骨蔓延至肩胛,最后汇聚在颈窝处。光芒透过衣料隐隐透出,是温柔的湛蓝色,像海洋中最纯净的那一层水。
星璇退后半步,眼睛微微睁大。
光芒收敛。Sherry低头看去——自己的领口中央,不知何时多了一枚领结。那是简约的蝴蝶结样式,蝴蝶结是深蓝色的绸缎制成,正中央镶嵌着一颗宝石。
宝石是湛蓝色的,内部仿佛有微光流转,像是被封存了一小片夜空。
“这是……”Sherry抬手,指尖轻轻触碰宝石表面。
温热的。像刚被握在手心里过。
“魔力宝石。”一个耳熟的声音从她脚边传来。
Sherry和星璇同时低头。
黑猫米奥不知何时蹲坐在书房的门槛处,单边眼镜反射着台灯的光。它穿着一贯的黑色呢绒学者服,四只雪白的爪子收拢在身下,姿态从容得像是已经在那个位置待了一整个下午。
“米奥先生?!”Sherry惊讶,“您怎么跟来了?”
“契约达成之后,助理司书跟随实习管理员行动,是职责之一。”米奥站起身,迈着无声的步伐走进书房,跳过门槛,轻轻落在地毯上,“当然,如果您不希望我时刻出现,我可以‘隐形’。当然,不是真正的消失,而是让旁人无法注意到我的存在。大多数时候,只有您和同样被‘潮痕’认可的人能看见我,听懂我说的话。”
它看了一眼星璇。
“……就像这位小姐。”
星璇蹲下身,好奇地与米奥平视。她的目光在那一绿一蓝的瞳孔上停留了几秒,然后伸出手。
“我可以……摸一下吗?”她问,语气像在问一位老绅士能否借火。
米奥微微颔首。
星璇的指尖轻轻触了触它的头顶。猫毛柔软而温暖,带着一股淡淡的、像是旧书页和阳光混合的气息。
“好可爱。”星璇轻声说,脸上露出一个发自内心的笑。
“谢谢夸奖。”米奥面不改色,“不过,我们还是先谈正事比较好。”
它转向Sherry,用爪子点了点她领口的宝石。
“魔力宝石,潮痕契约的具象化。”它说,“它的存在意味着您正式成为了实习图书管理员。同时——”它顿了顿,“它也意味着,您是魔法少女了。”
Sherry深吸一口气。
虽然早有预感,但亲耳听到这句话从米奥口中说出,感觉还是不一样。
“我是……什么类型的魔法少女?”
“目前还不好说。”米奥摇头,“魔法少女的类型通常由她获得的第一份‘故事’决定。在您找到第一个‘故事’之前,您的魔法体系尚未定型。目前您拥有的,只有‘量子共鸣’这项固有能力——魔法能与您自身的量子能力叠加生效。”
它停顿了一下,似乎在组织语言。
“不过,有一件事是确定的。”它说,“作为潮痕选中的魔法少女,您有一套对应的……嗯……战斗装束。”
话音落下。
Sherry感到领口的宝石微微一热。
一股无形的力量从宝石中涌出,像水流一样覆盖了她的全身。那种感觉很奇异——不是被穿衣,更像是光线在皮肤上凝结成织物,温暖而轻柔。她下意识地闭上眼睛。
几秒后,热度褪去。
她睁开眼。
星璇正看着她,表情介于惊艳和忍俊不禁之间。
“……怎么了?”Sherry低头看向自己。
她穿着一件深蓝色的连衣裙,裙摆及膝,内衬是纯白色的,在裙摆边缘露出一道干净的边线。裙子的剪裁并不繁复,线条利落,带着一种古典的简约感。披风从肩头垂下,同是深蓝色,长度稍稍过腰,被领口的领结固定住。领结中央那颗湛蓝的宝石,此刻正安静地闪烁着微光。
一顶宽大的深蓝色魔法帽端端正正地戴在她头上,帽檐微微上翘,投下一小片阴影,将她莹蓝色的长发半遮半掩。
脚上是一双黑色的马丁靴,鞋带系得规规矩矩。
“这……”Sherry伸手摸了摸帽檐,触感是厚实的呢绒,做工精细,“这就是魔法少女的……”
“战斗服。”米奥接过话,“或者说,魔女装束。每个魔法少女的装束风格都不同,您的这套——说实话,相当传统。”
“传统?”星璇歪头。
“大帽子,披风,领结宝石,裙装,马丁靴。”米奥扳着爪子数,“这几乎是传统魔女的标配。和外面那些花里胡哨的不太一样。”
Sherry在原地转了一圈,裙摆微微扬起,露出内衬的白边。她踩了踩地面,马丁靴的鞋底与石板碰撞发出清脆的声响。
“还挺……舒服的。”她诚实地评价,“而且不碍事。”
“那就好。”米奥说,“这套装束可以随时召唤和收回,只需要集中注意力触碰魔力宝石即可。平时您仍然穿便服就好。”
Sherry试着集中注意力,想象衣服消失。
宝石闪动,光线流转,她又回到了进门时的便服。
再想,宝石再次闪动,魔女装束重新出现。
“很方便。”她评价。
“好厉害……”星璇小声说,眼睛里闪着光,“我也想要一套。”
“您不是魔法少女。”米奥语气平淡,“不过,如果您愿意,我可以帮您向古堡申请一个‘常驻访客’的身份。这样您进出潮痕不会被结界排斥,也能看到更多常人看不到的东西。”
星璇眨眨眼,蓝色的眸子亮了一下:“真的可以吗?”
“需要走流程。”米奥说,“不过以您破译古书的能力和对潮痕的了解程度,问题不大。”
星璇双手合十,无声地做了一个耶的口型。
“那么,”米奥跳到房间中央的书桌上,蹲坐好,将尾巴规规矩矩地卷过前爪,“我们说回正题。关于‘故事’。”
它看向Sherry。
“第一个‘故事’的线索,其实已经在这位小姐——”它朝星璇微微颔首,“——破译的那本古书里出现过。只是当时你们没有意识到那是指向‘故事’的。”
星璇一怔,随即转身扑向那本暗褐色封面的古书,飞快地翻动书页。
“哪里?哪一段?”
“第四章第七节。”米奥说,“‘水与火相交之处,旧日之钟沉眠。待指针逆行,门扉自启。’”
星璇的手指停在那一页。
“这一段……我看到了,但我不明白‘水与火相交之处’是什么意思。”她说,“水与火怎么可能相交?”
“在物理意义上不可能。”米奥说,“但在魔法意义上,‘水与火相交’往往指的是一种特定的地理或能量特征——比如温泉、火山湖、地热喷口、或者……”它顿了顿,“某个同时存在极端高温和大量水汽的地方。”
Sherry思索片刻,忽然开口:“镜月湖的湖底?”
米奥摇头:“镜月湖是入口,不是故事所在地。嗯……第一个‘故事’的名字是——”它说,“《余烬与潮汐》。”
“听起来像一首诗。”星璇说。
“也许吧。”米奥说。
Sherry沉默了片刻。
“那我呢?”星璇问,“我能做什么?”
米奥看着她,异色的瞳孔微微眯起。
“您能做的,比您想象的要更多。”它说,“首先,您需要继续破译那本古书——书里可能不止有第一个故事的线索。其次,当Sherry小姐外出执行任务时,您可以作为‘后方支援’与她保持联系。古书里有一章专门讲‘通讯符文’,如果您能将它复现出来,将极大地方便我们的行动。”
星璇握紧拳头,用力点头。
“对了,”星璇突然看向Sherry,“关于你魔法少女的身份——你打算告诉Annie吗?”
Sherry沉默了。
Annie已经是枪之魔法少女。如果告诉她,她一定会想方设法参与进来。这不一定是坏事,但……
“暂时不。”Sherry说,“至少等我弄清楚第一个‘故事’到底是什么,以及魔法少女角逐的规则到底是怎么运作的之后。在此之前,我不想把她卷进来。”
“明智。”米奥评价,“魔法少女之间的竞争,有时候比外人想象的更复杂。多一个盟友固然好,但多一个暴露的弱点,也同样危险。”
它从书桌上跳下来。
“那么,计划如下。”它说,“Sherry小姐常驻潮痕古堡,以‘实习图书管理员’的身份熟悉环境、学习基础魔法。星璇小姐继续破译古书,寻找后续故事的线索。我负责巡逻、联络和看家。”
“等一下,”Sherry举起手,“‘常驻潮痕古堡’是什么意思?我还要上课,还有调查员的工作……”
“古堡的时间流速与外界不同。”米奥说,“您在那里待三天,外界可能只过去了一天。而且,古堡内有专门的书房和冥想室,适合学习魔法。您的宿舍太挤了,还有一位好奇心过强的姐姐——恕我直言,您在那里很难保密。”
Sherry想了想,点头。
“那我怎么跟Annie说?”
“就说您找到了一份兼职。”星璇插嘴,笑容里带着一丝狡黠,“在图书馆整理古籍。反正您本来就经常泡图书馆,她不会起疑的。”
“……也是。”
三个人——不,两个人一只猫——在晨光中相视而笑。
窗外,太阳已经完全升起来了。
金色的阳光洒在神学院的彩色玻璃上,折射出斑斓的光点,落在书桌、书架和那本暗褐色的古书上,像是为它镀上了一层古老的光晕。
“那么,”米奥站起身,抖了抖毛,将学者服的领口整理好,“事不宜迟。Sherry小姐,您先回寝室取一些必需品——换洗衣物、笔记本、您常用的调查工具。然后,我带您回潮痕古堡。”
它看了一眼星璇。
“星璇小姐,麻烦您把那本古书的相关章节复印一份,我会在古堡里继续研究。”
“好。”星璇已经开始翻找复印机。
Sherry走到门口,又回过头。
书房里,晨光温暖,尘埃在光柱中缓缓浮动。黑猫蹲坐在书桌上,姿态端正。星璇低头翻阅古书,棕色的发辫垂在肩头。
她忽然有一种很奇妙的、难以言说的感觉——
像是某个故事,从这一刻起,才真正开始。