: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 }
/*
Ethereality Theme
[2023 Wikidot Theme]
By Eltrac
*/
:root {
/* 基本信息 */
--header-title: "Gardenrooms";
--header-subtitle: "卧于自然怀抱中的宁静与平和";
--logo-img: url('');
/* 设置狐步舞/sigma-9 */
--accent: 108, 125, 70;
--header-txt-color: rgb(var(--accent));
--link-txt-color: rgb(var(--accent));
--page-font-size: 0.832rem;
/* 排版工具组 */
--lh-white-bg: 245,245,245;
--lh-dark-bg: var(--accent);
--lh-highlighter: var(--accent);
--lh-border-color: var(--accent);
--lh-wiki-note-color: var(--accent);
/* 适配部分黑标属性 */
--white-monochrome: 250,250,250;
--dark-gray-monochrome: var(--accent);
--black-monochrome: 60,60,60;
/* 飘渺愿景自定义属性 */
--header-bg-img: url('http://koalarooms.wdfiles.com/local--files/theme%3Aethereality/369hallway_%E5%89%AF%E6%9C%AC.jpg');
--header-height: 320px;
--body-bg-color: var(--white-monochrome);
}
@media screen and (min-width: 768px) {
:root {
--page-font-size: 1rem;
}
}
/* 修改版头 */
body {
background-image: none;
background-color: rgb(var(--body-bg-color))
}
div#header {
height: var(--header-height);
}
#extra-div-6 {
/* 版头图片 */
position: absolute;
top: 0;
left: 0;
right: 0;
background-image: var(--header-bg-img);
background-repeat: no-repeat;
background-size: cover;
background-position: center;
z-index: -1;
height: calc(var(--header-height)/10*9)
}
#extra-div-6::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 100%;
background-image: linear-gradient(to bottom, transparent 20%, rgb(var(--body-bg-color)))
}
/* 版头文字 */
#header h2,
#header h2::before {
text-shadow: 0.05em 0.05em 0.01em #666;
color: #eee
}
#header h1 a,
#header h1 a::before {
text-shadow: 0.05em 0.05em 0.01em rgba(var(--accent), 0.25)
}
#header h1 {
padding-top: calc(var(--header-height)/9);
padding-bottom: 1rem
}
/* 顶栏 */
#header #top-bar {
position: absolute;
top: height: calc(var(--header-height)/10*9);
height: height: calc(var(--header-height)/10);
display: block;
left: 0
}
@media not all and (max-width: 767px) {
#header #top-bar { max-width: 708px }
}
#header #top-bar .top-bar > ul,
#header #top-bar .mobile-top-bar > ul {
width: 100%;
display: flex;
justify-content: space-between
}
@media screen and (max-width: 767px) {
#header #top-bar .top-bar > ul,
#header #top-bar .mobile-top-bar > ul {
justify-content: center
}
}
#header #top-bar ul {
background: none;
border-radius: 0
}
#header #top-bar a {
color: rgb(var(--accent));
background: transparent;
font-size: 120%
}
#header #top-bar a:not(ul li ul li a) {
padding-bottom: 1rem
}
#header #top-bar ul li ul {
box-shadow: none;
border: 1px solid #ddd;
background-color: rgba(245,245,245,0.75);
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px);
}
#header #top-bar ul li ul li a {
line-height: 200%;
transition: background 0.3s
}
#header #top-bar ul li ul li a:hover {
color: #eee !important;
line-height: 200%;
text-indent: 0;
background-color: rgba(var(--accent), 0.75)
}
#top-bar ul li.sfhover a,
#top-bar ul li:hover a,
#top-bar ul li a, #top-bar ul li {
border: none
}
#header #top-bar .open-menu a {
font-size: 30px!important;
padding: 0.25rem;
border-radius: 100%;
background: rgba(var(--accent), 0.65);
box-shadow: 0 0 0.1rem rgba(0,0,0,0.2);
color: #eee
}
#header #top-bar .open-menu a:hover { box-shadow: none }
#header #top-bar .mobile-top-bar {
position: static;
display: flex!important;
justify-content: center
}
/* 分割线 */
#page-content hr {
border-bottom: 3px dashed rgb(var(--accent));
margin: 1em 0;
background: none;
border-radius: 5px;
height: 0
}
/* 图片框 */
.scp-image-block .scp-image-caption,
.scp-image-block img {
margin: 0;
border: none;
background-color: transparent
}
.scp-image-block {
border: 2px solid #c6c6c6;
}
.scp-image-block.block-right { margin-right: 0 }
/* 页面标题 */
#page-title {
border: none;
position: relative;
font-size: 220%
}
#page-title::after {
content: '';
position: absolute;
bottom: -0.5rem;
left: calc(50% - 4rem);
height: 5px;
width: 8rem;
background-color: rgba(var(--accent), 0.8);
}
/* DIV 元素 */
.jotting {
padding: 0 1em;
margin: 1em 2em
}
#page-content .colored-div {
border-color: rgb(var(--accent));
background-color: rgba(var(--accent), 0.3)
}
.lightblock, .darkblock,
.styled-quote, .dark-styled-quote,
.candyblock, .borderblock {
padding: 0 1em;
margin: 0.5em 0.1em;
border-radius: 5px;
border: 1px solid transparent
}
.lightblock,
.styled-quote {
background-color: rgba(var(--accent), 0.1)
}
.darkblock,
.dark-styled-quote {
background-color: rgba(var(--accent), 0.75);
color: #eee
}
.styled-quote, .dark-styled-quote {
border-left: .5rem solid rgb(var(--accent))
}
.candyblock {
background: linear-gradient(45deg,rgba(var(--accent), 0.1) 25%,rgba(var(--accent), 0.3) 0,rgba(var(--accent), 0.3) 50%, rgba(var(--accent), 0.1) 0,rgba(var(--accent), 0.1) 75%,rgba(var(--accent), 0.3) 0);
background-size: 2em 2em;
}
.borderblock {
border: 1px solid #c6c6c6
}
/* 排版工具组 */
div.wiki-note::before { color: #eee }
.reportblock h1:first-child,
.reportblock-dark h1:first-child {
top: -1rem;
left: 0
}
.reportblock,
.reportblock-dark {
padding: 0.4rem 1.5rem;
padding-top: 0
}
.bettercollap .collapsible-block { border-radius: 3px }
#page-content .bettercollap .collapsible-block-link:hover,
#page-content .bettercollap .collapsible-block-link:hover a,
#page-content .bettercollap .collapsible-block-link a:hover,
#page-content .bettercollap .collapsible-block-link:hover a:hover {
color: #eee;
text-decoration: none
}
/* 插入图片 */
.styled-img img {
display: block;
margin: 0.5rem auto;
max-width: 75%;
border-radius: 5px
}
/* 页内标题(Headings) */
#page-content h1 {
position: relative;
width: fit-content
}
#page-content h1:not(.reportblock h1)::before {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 0.5em;
width: 100%;
background-color: rgba(var(--accent), 0.5)
}
/* 其他页面元素 */
a.newpage { color: rgb(229,194,38) }
a.newpage:hover{ background-color: rgb(229,194,38) }
/* 页面选项 */
#page-options-bottom {
border-top: solid 1px rgba(213, 213, 213, 0.5);
margin-top: 0;
}
#page-options-bottom a { margin-top: 0 }
/* 页脚 */
#license-area {
background-image: linear-gradient(to bottom, rgb(var(--body-bg-color)), rgb(236, 238, 232));
border-top: 0;
margin-top: -1rem;
padding: 1rem 0
}
/* 脚注 */
.hovertip {
background: rgba(236,238,232, 0.75)!important;
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px);
min-width: 8rem
}
.hovertip .footnote .f-footer { display: none }
.hovertip .footnote .f-heading { font-size: 80% }
.hovertip .footnote .f-content { font-size: 110% }
div.footnotes-footer {
border-top: 1px solid #c6c6c6;
border-bottom: 1px solid #c6c6c6;
padding: 0.5rem 1rem;
padding-bottom: 1rem;
margin: 1rem 0
}
/* 侧边栏 */
#side-bar {
background: rgba(236,238,232, 0.9)
}
#side-bar:target { box-shadow: 0 0 4rem rgba(0,0,0,0.15) }
#side-bar .side-block {
border: none;
background: transparent
}
@media screen and (max-width: 767px) {
#side-bar:target .close-menu {
background: unset;
}
}
/* 分页 */
.yui-navset .yui-nav,
.yui-navset .yui-navset-top .yui-nav,
.yui-navset .yui-content,
.yui-navset .yui-navset-top .yui-content {
border-color: rgb(var(--accent));
}
.yui-navset .yui-nav a,
.yui-navset .yui-navset-top .yui-nav a {
color: rgb(var(--accent));
}
.yui-navset .yui-nav a:hover,
.yui-navset .yui-nav a:focus,
.yui-navset .yui-nav .selected,
.yui-navset .yui-navset-top .yui-nav .selected,
.yui-navset .yui-nav .selected a:focus,
.yui-navset .yui-nav .selected a:active {
background-color: rgb(var(--accent));
}
/* 生存难度组件 */
#page-content .sd-container {
--sd-border: 80,80,80;
--sd-bullets: 80,80,80;
--sd-image: 80,80,80;
--sd-symbol: 60,60,60;
--sd-text: 240,240,240
}
/* PLS */
#page-content .pls {
--dark-gray-monochrome: var(--accent);
--pale-gray-monochrome: 246,246,246;
font-size: 0.85rem
}
#page-content .pls-title,
#page-content .pls-list {
margin: 0!important
}
#page-content .pls-title { font-size: 1.5rem }
#page-content .pls-list { font-size: 1.1rem }
/* COCS / CECS */
.wrapper {
--cocs-dark: var(--accent);
--cocs-light: 240,240,240;
--cecs-dark: var(--accent);
--cecs-light: 240,240,240;
}
/* IETS */
.box {
margin: 0;
border: none;
padding: 0 0.5rem;
}
/* 评分模块 */
#main-content div.page-rate-widget-box,
#page-content .rate-box-with-credit-button {
border: none;
box-shadow: none;
background: transparent;
padding: 0
}
#main-content span.rate-points,
#main-content span.btn {
background: transparent!important;
}
#main-content .creditButtonStandalone p a {
background-color: rgb(var(--accent));
font-size: 1rem;
padding: 0.25rem;
}
/* 其他 */
#account-topbutton { border: none }
#login-status {
background: rgba(var(--body-bg-color),.4);
padding: 0.35rem 0.5rem;
border-radius: 2px;
}
#search-top-box-form {
margin-top: 0.25rem;
}
导言
沙虫,作为一个有名的后室传说,这个文化符号自从失落一族繁盛的失落年代便有记载,在各层级风格迥异的故事里中具有不同面相。它既可以是餐桌上的美味珍馐,也可以幻化成具体的精怪与民俗意象。后室民俗中的沙虫传说往往扎根于后室文化与其独特的生存方式之中。本文将从失落一族记载到沿层级口传的各类沙虫故事,探寻这一微小生物如何在后室想象中被放大、变形,进而成为承载地方记忆与文化心理的符号。
来自失落时代的未解之谜
在某沙漠层群,我们后室考古队在一个被称为”砂民“的部落遗迹中发现了刻在石壁上目前最古老的有关”沙虫“的文本:
漠有妖虫,名曰“赤脬”,亦号“地肠”。无首无尾,浑若腐肠;色如凝土,隐现黄沙。
静则如陵,动则如涛。其息如雷,震耳欲聋;其行如矢,裂地百寻。
吐息为浆,溅石成灰;目闪如电,触者成烬。砂民遇之,避其震,远其迹。若闻地鸣,当伏若彘,勿使虫觉。
昔有壮士,欲饮其血,振臂踏沙。虫怒,沙沸如汤,壮士化气,无骸可葬。
呜呼!天漠无情,以此为罚。敬之畏之,方得苟延。
惟尔神虫,镇于漠心。
首恶不彰,尾凶难寻。
吐电为鞭,沃土成砧。
吐浆为雨,朽木为金。
食气不食粟,饮光不饮霖。
我辈微末,寄尔鼻息。
献以声律,奉以虔心。
愿尔安寝,沙海不侵。
根据遗迹文本,该传说描述了一种至少为危险等级5级以上危险敌对潜在实体,在后来跟进的其他沙漠层级遗迹研究中也发现了许多关于”沙虫“现象的记录。在失落一族的文化中,”沙虫“成为了沙漠文明中的”神派遣的毁灭者“象征,人们只有遵守与后室签订的契约才能与沙虫和谐共存,然而人类一旦食言,它就会伴随沙暴出现,对背叛它的文明造成毁灭性的打击。在失落文中”沙虫“二字也成为了日常对话中的常用语料:有人拿”沙虫“来代指后室层级的意志,或者用”沙虫之言“来代指珍贵的诺言或向后室的祷告和祈求祝福的话语;“沙虫”作为后室秩序的代名词,规训失落一族遵循后室法则,指导他们在后室生生不息。
到了失落时代——那个失落一族集体灭绝的年代,据那些石板记载,这些沙虫几乎同时发狂,使街道笼罩在褐黄色沙尘之中,用狂风摧毁了一切人造建筑,毁灭了这些沙漠文明,并从此销声匿迹。没有人知道沙虫去了哪里,也没人知道它们是否会重新出现,并重新开始毁灭人类文明。为了揭开失落一族文明衰亡的真相,考古学家牵头M.E.G与失落一族,投资重金合作在十几个沙漠层级展开考古,希望能揭开”沙虫“的真相。
考古的难度却远超大家所想,在现代后室,失落一族描述的”沙虫“早已消声觅迹,在这些沙漠层级居然找不到一起可靠的目击事件。我们在利用无人机红外热成像低空扫描地下或地表生物,在关键水源处进行监控和环境DNA采样,甚至尝试通过震动诱导来引出沙虫,却无功而返。沙漠深处也找不到类似该物种的样本化石。我们甚至用各层级的候选物种与其比对,竟也找不到可以满足上述文本的生物。
迄今为止,它只存在于人们口口相传的各种无法证明的传闻里,没人真正的见过它,它究竟是实体,亦或是特殊物品,更甚至是高危现象,没人知晓。各大组织都展开过对他的研究,但到最后,都遇到了无法克服的瓶颈。它就像是围住全后室的一堵高墙,我们甚至连它是否存在,都无法真正的证明。
伴随官方考古工作的火热推动,民间对沙虫的讨论度也随即上升:无论是手机上如《末日沙虫降临,我空中求生》、《后室神兽觉醒,我觉醒了沙虫神宠》等以沙虫为网红题材的网络小说;还是民间各位大神对沙虫身份的分析和对可能发生的沙虫入侵提出的各种建议。有的人为这个传说进行理性科学的解剖,有的人为它带上了神秘莫测的面纱。有人好奇,有人不安;在众人目光的推动下,这个项目引来了更多的预算和更多专家的支援,擢升为后室级文化研究项目。
在我们考古学家在沙漠翻得底朝天时,民俗学家们在翻寻来自失落时代的文字依据,进行着自己的研究:
在失落时代,由于后室结构的强烈变化,其引发的天灾使各层级的古文明几乎都在一夜之间消失。这些令文明消失包括”沙虫“在内的天灾虽然因层级生态系统而异,但都有共同点在内。
发生强大的雷暴,对应砂民遗文中:吐电为鞭。 目闪如电,触者成烬。 其息如雷,震耳欲聋。
强风引起风暴(山地层级表现为泥石流,沙漠层级表现为沙尘暴),对应砂民遗文中:吐息为浆,溅石成灰。
发生高温高压的爆炸产生,对应砂民遗文中: 其行如矢,裂地百寻。朽木为金(建筑、陶器在高热下熔化成黑曜石状玻璃,表面常带油脂或金属般反光。上述的”金“可能是高温后的产物)
强烈地震,对应砂民遗文中:砂民遇之,避其震,远其迹。若闻地鸣,当伏若彘,勿使虫觉。 静则如陵,动则如涛。
当我们将这些跨层级的灾难共性一一叠加,结论逐渐浮出水面:砂民石壁上的描述,或许根本不是一种“生物”,而是将灾难比喻了动物。
沙漠不同于其他层级的特点是——沙子多,当大量沙子被风暴卷在天上,就像土黄色的虫子在天空中蠕动。只有沙漠文明可能将灾难作为”沙虫“图腾化,并将其作为神的制裁使者,并通过供奉”沙虫“来祈求来年风调雨顺。
目前,民俗学家们的观点已经被课题组重视,考古队正在尽力寻找支持该猜想的物证(目前已发现大量熔融矿物玻璃),并且正在与来自失落一族的历史顾问进行进一步深度合作,挖出当年后室层级大变化的原因。
考古队停止了对化石的挖掘,转而开始疯狂收集各层级的古气候数据。他们不再寻找一只虫子,而是在监测一个个层级的呼吸。而在砂民遗迹的出口,狂风卷起沙砾,打在护目镜上发出噼啪的声响,听起来竟像是那句古老的叹息:
“呜呼!天漠无情,以此为罚。”
那些民间流传的那些网络小说,无意中触碰到了真相的边缘——主角们“觉醒沙虫神宠”,或许正隐喻着人类利用后室力量的潜意识;而“空中求生”的桥段,则是对逃离层级物理规则压制的本能渴望。
毕竟,在这片无垠的沙海中,我们从来都不是征服者,甚至算不上寄生者,我们只是这“地肠”偶尔吞吐出的一粒尘埃。
来自原始社会的善意传承
不同与上篇的灾时祷文,我想用一段打油诗开始这部分文章:
银滩月静卧郎眠,
沙际灵虫幻作仙。
不恋深沙贪世味,
化为佳话美人鲜。
传说很久很久以前,一位失落一族的冒险者来到了一个滩涂层级。他口干舌燥、饥肠辘辘,身体早就到了极限,甚至要到眼前生成幻觉的地步了。一位身穿肉色连衣裙的蒙面少女出现在了他的面前,她动动手指,就令苇草根下的淡水泉眼喷涌,将冒险者灌了个水饱。当他干涸的嘴唇再次湿润,发烫的脑门也重新灵光时,他感激与这位姑娘如天神下凡般的关怀,虽然冒险者漂泊流离,身上的东西丢的一干二净,但他坚持赠送他最后的财产兼工具——他的铲子。这位少女被冒险者乐于赠与的精神感动了,于是这位自称”滩涂神“的少女令树木弯曲生长,生成了可靠牢固的树屋,可供永久居住;在他的铲柄上做了三角形记号,命他只要将铲子铲入大地,便有无数的食物可供享用,他轻轻一铲,许多肉色的蠕虫便从土里爬到铲子上,他一把抓过便放在嘴里大嚼,鲜嫩肥美的蠕虫使他忘记珍馐肴馔为何物。他认为该虫凭空从沙子中变出来,便取名为”沙虫“。从此,他便定居在这里,每当有人来到,他都会无私的给予他们美味的沙虫和干净的淡水;有的人接下他善意的礼物后继续出发,将沙虫的故事传遍四海;有的人选择在这里定居,逐渐形成了庞大的部落。
我,作为一名后室民俗学家,最爱的就是来这里调查民俗传说。你可以像我一样,在早上五点半,找到一个失落一族的原始部落,你就早早敲开树屋的门,那时候的他们应该刚刚起床,你只需要解释自己是个风尘仆仆的旅行者,他们便会邀请你在此暂住一会儿。
你正好能赶上他们的早饭,有时候能吃到新鲜的烤鱼,或者木薯粥是配上他们秘制的鱼酱,或者是在刚过夜的沙虫冻。吃完早饭短暂休息,随着那些身强力壮的汉子坐着独木舟,带着鱼叉往深水区去抓鱼时,你也不要闲着,最好和那些小孩和老人一起去抓沙虫。这时正是潮水退得最干的时候,他们便挎着竹篓、拎着特制的铲子赤脚下滩涂了。
他们轻轻的走在沙地上,眼睛紧紧盯着沙面那些米粒大小的“气孔”或是状如梅花的“沙虫花”,那是沙虫躲在沙底下呼吸的印迹。你就跟着他们学,不用蛮力乱挖,先是拿铲子轻轻敲打沙面,沙里的沙虫受惊往深处钻,洞口就会溅出一缕细水柱;趁这电光火石的瞬间,手腕一翻、铲子斜斜切入沙中,顺着孔洞精准挖出湿沙。沙虫滑溜溜缩得极快,必须眼疾手快伸手探进沙里捏住虫身,顺着它的劲儿轻轻一提,一条肥硕粉红的沙虫便带着泥沙出了洞。如果反应慢半拍或力道太重,它就会“嗖”地一声就缩进深沙里不见踪影,这一铲也就白忙活了。要是挖到太小的幼虫,当地人也不会贪心,顺手又丢回滩涂里,留着它继续长,算是靠海吃海的一点老规矩。
当潮汐涨起的时候,你就可以带着满满当当的篓子回家。正午的太阳晒着,安静下来,显得有点慵懒。几条载满收获的独木舟慢慢划回岸边。生起的炊烟混着海水汽,把咸咸的气息吹进风里。人喘口气,整片空气都变得粘稠,像时间也走慢了,连呼吸都能尝到海的慷慨,风里夹着咸湿的味道,把树屋边晾起的鱼干吹得沙沙响。
男人围在篝火堆旁,满是老茧的手慢悠悠整理着早上打回来还沾着水的鱼虾,嘴上絮叨着,又总离不开今天打了多少渔获。他们退潮时在礁石上随便扯了几片海草,开水烫一下,挤半个青柠,扔几颗切碎的小米辣和烤过的花生碎,酸辣脆爽,手和嘴根本停不下来。这是唯一不需要生火的菜,但也最受欢迎——大中午,这些忙碌的大老爷们谁也不想再围着灶台转。
孩子们疯玩着,路过时忍不住下手,抢刚出锅还烫手的木薯糕,得手就撒腿跑。打发这群孩子得有点方法,需要拿些刚打到的小鱼做几串烤鱼,穿在椰子树叶梗上,搁炭灰里埋一会儿就熟了。扒掉焦皮,鱼肉嫩得一抖就掉,撒点粗盐就能吃。一个个吃得满嘴黑灰,笑起来牙齿白得发亮。
女人们喜欢扎堆在大芭蕉叶下,一边聊家里琐事,一边把雪白的木薯淀粉揉成紧实的木薯糕。她们将早上蒸好的糯米,用芭蕉叶裹成一个个小三角,并递给每一个饥肠辘辘的人。令温热的糯米吸饱了椰奶的香气,咬一口扎实顶饱。如果你嫌单调,可以往饭上抹一层发酵了不知道多久的鱼酱,颜色发灰褐,闻着冲,抹在热饭上却咸鲜得要命,像浓缩了整片滩涂的味道。
我也不能闲着,我掌勺的篝火上那罐海鲜汤咕嘟咕嘟地冒热气,椰奶和杏仁水混在一起的清甜气,一下子就飘满了营地。这罐椰奶海鲜炖——就是将早上收网捞上来的鱼虾和沙虫,切块,一起扔进陶罐里,倒进椰奶和杏仁水,扔几根拍扁的香茅、几片高良姜,再丢两片小青柠叶进去。不用炖太久,炖到刚熟就行,汤头乳白,喝一口又甜又鲜,带着香茅的清凉感,刚好压住中午的燥热,一碗接着一碗喝,根本停不下来。
当然,他们有时偶尔有日子鱼打得少,就吃木薯。削了皮切大块,跟几片芋头和一点咸鱼干一起扔锅里水煮,连汤带水盛一大碗。木薯粉粉的,蘸着鱼酱吃,芋头软糯,汤底有股淡淡的海洋咸味。朴素,但吃完能扛一下午。
吃完饭,碗筷往海里一涮就算洗了。男人靠在船舷上眯一会儿,女人们收拾收拾渔具,准备下午涨潮再出去一趟。孩子在树屋的梯子间爬上爬下,偶尔一头扎进水里,溅起的水花在光下闪得像碎玻璃。
这就是他们的中午——没有什么仪式感,饭菜就是生存本身,热气腾腾地从这片水、这片滩涂里长出来,吃完又该下水了。
到了下午,我本该和这些人们一起去下海打鱼。但今天是他们一年中最重要的季节——沙虫日,传说就是某年的今天,那第一位流浪者来到了这里遇到了那位”滩涂神“,并在此定居。为了纪念这个伟大的日子,他们会用沙虫制作食物来纪念这位前辈乐于助人的精神,并感谢这位”滩涂神“为他们带来的礼物。
沙虫的吃法多种多样,我的最爱做法还是沙虫冻。这道美食是大部分部落最爱献祭给神明的食物。这些沙虫早已放养吐沙许久,早已清空肚子里的泥沙。这时我们再用石槌碾压挤出内脏,反复搓洗至白亮。把沙虫丢入罐中,水里加葱姜慢火熬煮去腥,直到虫体胶原蛋白溶入水中,汤汁变得浓稠。过滤后的汤汁分装静置,无需添加明胶,靠自身胶质自然冷凝成冻。
接下来就是发挥沙虫冻长处的时候了,这玩意的吃法可不少。先在祭台上放上一盘原味沙虫冻,再摆一些新鲜野菜点缀,显然,我们不知道神明的口味偏好,便只能请他们品尝原汁原味或者让他们亲自放调料了。晚上等所有人回来,沙虫冻也冷的差不多了。便可以发挥我们的创意,如果你爱吃甜的零嘴,可以加上椰奶和杏仁水拌着吃。想体验本地风土,拿小青柠汁、鱼露、白糖、蒜末、小米辣、少许香菜梗调成汁,淋在切块的沙虫冻上,酸辣咸鲜带点回甘,和冷吃的冻类小吃很搭。或者拿出我背包里的挂面用中午没吃完的海鲜汤煮上,浇上自带的红油和蒜泥,再配上沙虫冻,准能馋哭那些没见过的小孩儿。
在我向大家分享了沙虫面后,他们也和我分享了烤鱼和烤猪后。终于到了每个节日都少不了的环节——部落里的祭司,用沙哑却极具穿透力的嗓音,开始了她的吟唱……
几乎同样的故事,我听了,也记录了千千万万遍,虽然不同部落的故事中细节不同,修辞不同,但总是那位冒险者被滩涂神眷顾,在这里建立部落并生活下去。
我讨厌那些拿着我的资料字字计较的历史学家,他们总是说着什么”孤证不立“等所谓术语,将鲜活的传说绑在手术台上解剖,硬要查出什么时候,什么人,什么事;便要找出几分真,几分假。他们不理解那些在篝火前庆祝的人们,他们无论老少,都举起手中装着椰奶或海鲜汤的椰壳碗,齐声高呼:“为了先辈!为了滩涂神!为了生生不息的沙虫!”尽管他们失落一族可能连关于滩涂神的书面记载都没有,或者在一代一代的口述中失了真。
或许相比过去飘渺的神话,我更关心他们的现在。在这里感谢M.E.G和B.N.T.G的帮助,这些失落一族遗民所居的滩涂都盛产沙虫,这种虫子在生物学上接近前厅的方格星虫,但其蛋白质含量远超它的前厅兄弟,在后室像前厅一样批量种植大豆前,你们在后室买到的蛋白粉只能以它为原料了。在这场双赢的合作中,这些遗民用这些成本低廉到连养殖都没有商业价值的虫子为我们提供了足量蛋白质和类似沙虫干等的应急救荒食品,而我们用经济支持他们在现代后室能保留自己的文明。
那些历史学家但凡体会过这里的名俗,就不会对那些历史问题抓耳挠腮。这片自古就蛋白质富足的宝地,只需要一点合理的开发,便能满足千千万万人的营养需求。就算天灾到来,吃不完的沙虫干也够挺过难关。每一个逃荒的人来到这里,都会被慷慨友善的人感动并选择留在这里过舒服日子。那些一心宣传滩涂神的圣徒,带着吃不完的沙虫干远游,为贫苦的人们带去福音。这就是为什么在失落一族的年代,滩涂层级会成为人们心中的圣地,并建立庞大的部族,甚至在那场他们大灭绝的天灾之后能保留部分实力,甚至撑到现在的大部分失落一族都是滩涂文明,目前保留的古籍几乎全来自滩涂层级的原因了。
那一刻,落日沉入了海平面,初升的星辰点亮了夜空。我知道自己要离开了,不要等到第二天,他们醒来后会一直挽留你,就像这个文明长时间挽留并同化它的过客。当然你可以选择在这里住上几个月,和居民一起劳作,但到那时候想分别就更难说出口了。但你如果执意要走,他们也不会强留你,并送你一把铲柄上刻着三角形的铲子,并让你将这片滩涂的善良和无私传递下去,还会在走前偷偷带一大包沙虫干给你,作为游子的行李……
而滩涂上,新的生命似乎又在沙下悄然蠕动,等待着下一次潮水涌起。
来自近现代后室的可怕病魔
”沙虫“不仅出现在失落一族的文化中,还在近现代成为了流浪者的恶魔。
在近代后室史中,爬菌被误称为“沙虫”病。后室各层级内流传着无数“沙中恶魔”的血腥传说,一旦被沙虫叮上一口,沙虫咬破皮肤进入血管,击破人体的神经系统,把流浪者变为只会爬行的疯子。在未知的恐惧下,前辈们为了活命,被爬菌感染,就会采取“斩脚趾避沙虫”的极端应对方式。
“斩脚趾避沙虫”不只是一个无奈的俗语,还是早期流浪者群体中真实上演的惨烈情景。在没有麻醉、没有消毒水的恶劣环境下,人们用高温烫焦伤口,用锯条生生锯断被感染的肢体。他们宁愿忍受截肢的剧痛和失血休克的风险,也不敢去赌那微小的存活概率。然而,这些基于错误认知的“自救”,不仅没能阻止真菌的蔓延,反而因为创面的剧烈疼痛和大量出血,加速了宿主的新陈代谢,为真菌提供了绝佳的温床,让无数人在绝望的哀嚎中被彻底吞噬。
到了现代,微生物学家正式发现并命名了爬菌(外观近似感染蜘蛛的虫草菌 ),并明确其通过体液和接触传播,在潮湿、温暖、黑暗条件下爆发式增殖。但”沙虫“仍为各大组织造成了不少麻烦。自2009年M.E.G.阿尔法基地遭5阶爬菌袭击并引发层级内爬菌大流行以来,部分新流浪者或信息记录不全的据点在描述Entity 17 爬菌时,因其“在体表爬行、于阴暗潮湿处潜伏、具极强移动与攻击性”的表象,错误地将其误称为“沙虫”。这一失误已导致数起致命的应对失误——疾控人员将感染性真菌当作寄生虫处理,导致误判传播途径而暴露于带孢子的体液中。造成了不可挽回的损失。
如今,随着后室疾控科技的完善,爬菌终于从“不可知的死神”转变为“可防可控的公共卫生指标”。曾经依靠“斩脚趾避沙虫”这种无效办法来保命的时代已经彻底终结。如今,每一个正规且有概率感染爬菌的前哨站入口都设有孢子洗消舱,所有外出勘探的人员归队前都必须接受强制性的紫外线照射与体表真菌检测。任何体表出现不明瘙痒或白点的成员,会在第一时间被送入负压隔离舱,而非任由其发狂成为新的传染源。
随着实体知识的普及工作和互联网的发展,几乎所有流浪者都学会查阅后室资料库,以及熟识常见实体的今日。流浪者养成了防范爬菌的习惯:在切入新层级时会查询该层级是否有爬菌出没,并在危险层级尽量减少可能存在的爬菌与裸露皮肤接触的可能性。
但时至今日,我们仍未消灭爬菌。后室的层级环境瞬息万变,层级间的物资,实体和流浪者的流动,随时可能带来危险的爬菌。在那些监控盲区与未被探索的阴暗角落,爬菌仍在潮湿的沙砾与积水下潜伏,等待着下一个毫无防备的闯入者。
结语
沙虫到底是什么——是失落时代的天罚,还是令种族生生不息的恩赐,还是流浪者世代以来以死相搏的病魔?这不重要,流离在后室的我们,可能永远无法揭开后室的奥秘,背负这不知何时招来天灾的悲惨结局。但那些围着篝火跳舞的土著,那些敢于开拓的冒险者,在用自己的方式—讲述着人类对美好生活的执着。当我们弯下腰、盯住沙面上那粒微微颤动的未知时,还能选择温柔地放下铲子,而不是恐惧地挥下刀刃。因为在这片连呼吸都不被承诺的土地上,真正让我们生生不息的,从来不是对威胁的战胜,而是即便身处黑暗,仍愿意为他人递上一碗热汤、一把刻着三角形的铲子,以及一份跨越层级的善意。