@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 }
晨雾还没散尽,观测台的石栏冰凉,露水凝在雕花间隙,折射出细碎的微光。
“怎么啦,缪斯?”
那人低下头。名叫缪斯的黑猫蹲坐在他脚边,仰着脑袋,蓝眼睛像两枚被雨水洗过的琉璃珠。他蹲下身,指尖轻轻搔了搔它的耳后。
“我已经下定决心了,”他说,声音很轻,但很坚定,“这座古堡绝对不能被他们染指,哪怕一本书,都不行。”
他的手停在缪斯的下颌处,感受着猫咪微微的震颤——那不是呼噜,是某种更细微的、几乎察觉不到的颤栗。
“至于现在……”他抬起头。
灰蒙蒙的天穹压在古堡尖顶上,云层厚得像是浸透了铅水,一丝缝隙也没有。
他的目光在天空停留了很久,久到缪斯忍不住又轻轻叫了一声。那双碧绿的眼睛里没有恐惧,只有一种温柔的留恋,像是要把每一寸灰色的天光都刻进记忆里。
“我只是想多看几眼天空罢了。”
缪斯低下头,开始认真地舔自己的前爪。它舔得很仔细,从肉垫到指缝,一下,又一下,仿佛这是天底下最重要的事。
那人轻叹一声,直起身,将斗篷的领口整了整。他整理得郑重其事,像是在穿一件崭新的礼服。
风从海面上吹来,卷起他衣摆的一角。古堡上空,权力与信仰的纠葛早已凝成肉眼可见的惨雾,沉沉地压着每一座尖塔、每一扇窗棂,和此时的天幕一样,不见天日。
“可惜啊,今天不是晴天……”
他最后望了一眼天空,嘴角浮起一丝极淡的笑意,那笑意没有到达眼底。
“走吧,缪斯。我也该履行作为大图书管理员的职责了。”
他转身,皮靴踩在潮湿的石板上,发出一声声沉闷的回响。缪斯跳下石栏,无声地落在他脚边,像一道流动的暗影。
“就让我们,最后一次,一起守护这里的知识与奇迹吧。”
他们走下观测台。
旋转的石阶一圈圈向下延伸,墙壁上的火把感应到人的气息,次第亮起,又在他们身后逐一熄灭。光影在他们身上流淌,明明灭灭,像是在追赶他们的脚步。
那人最终停在一座与真人同高的,初代大图书管理员的石质雕像前。
那是初代大图书管理员留下的杰作,也是禁书区“灵魂回廊”唯一的入口。
身旁,缪斯蹲坐下来,尾巴卷过前爪,规矩地收好。它仰头看着他,那双澄澈的蓝眼睛里有火光摇曳,有水光浮动,满是不舍。
他蹲下身。
手掌覆上缪斯的头顶,指腹轻轻划过它的头,最后落在颈后。那力道不轻不重,和以前无数次一模一样——午后在小书房打盹时,深夜在烛台下翻书时,每一个平凡的日子里,都是这样抚摸的。
“好啦,缪斯,”他的声音轻松的仿佛是在谈论天气,“你也知道,这次我大概不会再回来了。”
缪斯的耳朵动了动,没有躲开他的手。
“接下来,寻找新一任大图书管理员的任务就要交给你了,明白吗?”
他的手停在缪斯背上,停顿了一下,又继续顺着脊背往下抚去,一遍,又一遍。
缪斯终于又叫了几声。那声音不大,却穿透了石壁间所有的回声,清晰地落进他耳朵里。
他听懂了——不仅是因为他的传译魔法,更是因为这么多年相伴的日子。
那意思分明是:“我知道,是找到管理员先生您的接班人,对吧?”
“对的。”
他放下手,站起身。面色释然而平静。然后,他笑了,仿佛他即将踏入的不是凶险莫测的禁地,而是那个他再熟悉不过的小书房——阳光从窗棂间斜斜地照进来,尘埃在光柱里慢悠悠地打转,书架上永远有他没读完的那一本。
“记得好好照顾自己,也好好照顾这里的书籍,缪斯。”
他的手指触上雕像。
就在他将要发力的时候,身后传来一个声音——
“管理员先生……”
那声音怯怯的,带着某种被压抑了很久的颤抖。
他怔了一下,随即笑出了声。那笑声在空旷的大厅里荡开,撞在石壁上,又回荡回来。
“都这时候了,还这么有礼貌,也不枉你当了这么多年助理司书,”他回过头,眼角笑出了细细的纹路,“礼仪这方面,你倒是学有所成呢。”
说完,他闭上眼。
手掌严丝合缝地贴在雕像手中的书籍上,意志顺着指尖沉入石质的肌理,驱使着体内的魔力倾泻而出。
地面上,荧绿色的光芒炸开,如蛇群般灵活地四下游走。它们沿着石砖的缝隙穿行,彼此追逐、交错、编织,将一座复杂而古老的阵法一寸寸勾勒成型。
那是初代大图书管理员的杰作——一个能直通灵魂回廊的传送阵,也是禁书区唯一的入口。
缪斯默默地看着这一切。
法阵的光芒在它蓝色的瞳孔里流转,映出一片幽深的绿。它的前爪几次微微抬起,向前几厘米,又几次按捺着收回。
它想上前,想跟上管理员,像往常每一次那样跟在他脚边,穿过走廊,走过古堡的一扇扇门。
但这一次不行。
它知道。
它克制住自己,将前爪重新收好,尾巴卷得更紧了一些,退回到原来坐着的地方,一步也没有多走。
法阵,最终完成。
管理员睁开眼,一把抹去额头上细密的汗。那些汗珠沿着鬓角滑下来,他没在意,只是长长地呼出一口气,像是卸下了什么。
“呼……好像比上次轻松不少。”
他转过头,目光落在缪斯身上,语气里带着一丝故作轻松的调侃。
“缪斯,你还记得我第一次进入禁书区的时候吗?那时候简直是头昏脑胀,就像几天没睡好一样呢。”
缪斯点了点头。
然后,一颗泪珠从它毛茸茸的脸颊上滚落。
它划过黑色的毛发,在火光下折射出一瞬晶莹的光,然后无声地砸在地上。
它张了张嘴。喉咙里有什么东西在翻涌,却像被堵住了一样,发不出任何声音。
沉默像一面墙,竖在它和那个人之间。
最后,那面墙终于塌了。
“保重,管——CXA老哥。”
管理员——CXA——脸上那副开玩笑的神情一点一点地褪去,像是潮水退去后露出的礁石。取而代之的是一种庄重,沉甸甸的,压得他的眉弓微微蹙起。
他的喉结滚动了一下。眼角有什么在发烫,视野的边缘开始变得模糊。但他没有让那滴泪落下来。
他笑了。
所有没能说出口的话,都被他放进这个笑里,递了过去。
“这还差不多,”他的声音朗朗的,带着一种让人安心的笃定,“那么,我也该走啦。”
CXA脚下的法阵猛然亮起。
光芒从最初的荧绿变成炽白,一圈一圈地向外扩散,像是有什么东西正在从地底苏醒。炫目的光线填满了整个大厅,将每一道石纹、每一处雕花都照得纤毫毕现。
缪斯被那光芒刺得闭上了眼。它努力把眼皮撑开一条缝——只有窄窄的一线——在漫天的白光里,它模糊地看到CXA站立的身影。
长袍在光芒中猎猎飞扬,边缘被照得几乎透明。他的身形笔直,像一棵扎根在风中的树。
然后,缪斯看到——
在那片几乎要将一切吞没的光芒里,CXA好像正朝着它露出一个微笑。
“你也保重,老伙计。”
下一秒,光芒骤然收束,CXA消失在原地。
只留这句话在缪斯耳边回荡,一遍,又一遍,直到大厅里重新安静下来,直到火把的噼啪声重新填满每一寸空间。
法阵熄灭了。地面上只剩几缕淡绿色的余晖,像将死的萤火,挣扎了几下,终于消散在石砖的缝隙里。
缪斯独自蹲坐在原地,面前是那座沉默的雕像,和一片空荡荡的地面。
它没有动。
它低下头,开始舔自己的爪子。
一下,又一下。
直到——
一阵沉闷而悠长的回响,以古堡某处为中心,犹如海潮一般涌来。
缪斯感到一阵眩晕,似乎有什么东西刚刚随着回响钻入了他的脑中,将一切挤压、碾碎。
终于,他昏了过去。
而他的左眼眼皮下,隐约有绿光一闪而过。
光线,总是先于意识到来。
不是透过眼皮的红,而是某种更幽暗的蓝——像深海,像黎明前最后一刻的天空,像墨水在水中洇开的边缘。这光线渗过闭合的眼睑,渗进尚未成形的知觉里,凉丝丝的,带着咸味。
然后是触觉。
身体下面是石板,冰凉,光滑,似乎铺着一层薄薄的灰尘。空气潮湿,还有旧书的味道。
他试图睁开眼睛。
世界涌入——模糊的,像隔着一层海水。
他眨了眨眼,视线渐渐清晰。面前,是一块磨损的深红色地毯边缘。远一些,是一张胡桃木书桌的腿,上面雕刻着简朴的卷草纹,桌腿上靠着一根不知何时掉落的羽毛笔。
他试图站起来。
身体不听使唤。
或者说,身体以某种他原先预期之外的方式响应了指令——四肢着地,重心前移,脊椎弓起,然后落下。
他低头,看到两只前爪。
黑色的。毛茸茸的。左前爪的腕部有一小撮白毛。
他盯着那撮白毛看了很久。
“……咦?”
声音从喉咙里挤出来,尖细的,带着气音。
他吓了一跳,后退两步,后腿绊在地毯边缘,一屁股坐下去。尾巴——他竟然有尾巴——在身后不安地扫动,将灰尘扫成一小片灰色的雾。
“我……”他开口,再次听到那个尖细的、的声音,“我,是谁?现在,又是个什么情况?”
他环顾四周。
书房不大,但陈设讲究。有刚刚他看见的胡桃木书桌,桌面上整齐堆放着书册,最上面一本摊开着。有一张墨绿色天鹅绒扶手椅,或许是使用多年,椅面已经磨得发亮。
书架占满整整一面墙,架上的书脊参差不齐,有些已经倾斜,像是被匆忙塞回去的。窗台很宽,上面的花盆里种着什么植物,已经枯萎了大半,只剩几片发黄的叶子耷拉着。
他看向窗外。玻璃后面是水,像是在海中,水里有鱼游过——银色的,很小,五六条,排成松散的队列,从窗框的这一端游到那一端,消失在视线之外。
但,这个事实没有引起他的任何恐慌,仿佛他已经知道这件事很久了,久到已经是一种理所当然。
他只是陈述它,就像陈述天气,或者一本书的颜色。
他低头再看自己的前爪。
“看来,现在,我是一只猫。”
但也不完全是。他感觉到衣服的布料摩擦着皮毛,领口还有什么东西硌着下巴,他歪头蹭了蹭,听见金属碰撞的细微声响——一根银链,银链末端还坠着什么,挂在胸前,圆形的,沉甸甸的。
他用后爪蹬了蹬,看清了:那是一枚怀表,表盖上刻着一个符号——打开的书籍,上方悬着一颗星辰。
他翻过怀表,背面刻着一行小字。他眯起眼睛辨认,上面有几个字:
“助理司书·潮痕”
他念出声。
“助理司书。”他又说了一遍,这次语气里多了一丝笃定,甚至带上了某种职业性的认真,“我是潮痕古堡的助理司书。”
“我叫…叫什么名字来着?”他努力地回想,“缪…米…对了,我叫…我叫米奥!”
找到了名字,他开心了不少。他站起来,悠哉地走向书桌,跳上椅子,再从椅子跳上桌面,用前爪拨了拨摊开的空白书册,又用鼻子嗅了嗅墨水瓶——瓶口有干涸的墨渍,气味刺鼻,他打了个喷嚏。
喷嚏震落了书架上一本书。书“啪”地砸在地上,摊开在某一页。他低头看去,那是一本手写的日志,字迹工整但陌生,日期停留在很久以前。他扫了一眼内容:
“今日无异常。藏书完好。结界稳定。”
他合上书,用下巴把它推回书架原位,动作熟练,然后他跳下书桌,走到书房门口。门关着。他轻轻踮起后腿,前爪搭上门把手,下压,拉开。
门外是一条回廊。
回廊很宽,顶部有蓝色的光漂浮着,像水母,像星辰。过道的书架之间有几本书悬浮在半空,悠悠地旋转着。
他经过时,它们轻轻晃了晃,向两侧让开。
他站在回廊中央,环顾四周。
他忽然想起什么,转身朝东侧走去。穿过回廊,经过一扇不起眼的橡木小门,他停住。门上没有标记,但他知道,那是他的书房。
现在,他已经把它叫作“我的书房”了。
他站在门前,没有进去。两只不同颜色的眼睛映着走廊里漂浮的幽蓝光球,一绿一蓝,像两枚被海水打磨过的宝石。
“对了,现在是上午,应该是检查藏书的时间了。”他看了看怀表,转过身,朝回廊更深处走去。学者服的下摆擦过石板地面,发出细微的沙沙声。银链轻轻晃动,反射着微光。
不知多久后……
千里之外,圣亚伯拉罕大学的女生宿舍里……
一位头发冰蓝的少女正在收拾桌上的资料。
“这是关于Level AS-200的,这是关于上次我和Annie在Level AS-24的经历的,这是刚刚收集的,新Level AS-419的资料……”
突然,一个羊皮纸卷从那沓Level AS-419的资料中掉了出来。
少女疑惑地捡起纸卷,仔细翻看。
纸卷上面,用烫金的花体字写着:
被命运选中之人 谨启。
(未完待续)