: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 }
/* BHL Style Search Top Box And User Account */ /* By Mercuresphere */ /* Based on BHL Theme */ :root, :root:lang(cn) { --merc-light-color: var(--swatch-menutxt-light-color); --merc-dark-color: var(--swatch-menubg-dark-color); --user-account-mask: url("https://fastly.jsdelivr.net/gh/Crimone/crimson-anemone@main/files/user-circle.svg"); --search-top-box-mask: url("https://fastly.jsdelivr.net/gh/Crimone/crimson-anemone@main/files/search-top-box-mask.svg"); } /* ===用户和搜索栏=== */ @media only screen and (max-width: 768px) { #login-status { right: unset; font-size: unset; } #navi-bar, #navi-bar-shadow, #search-top-box-input { display: unset; } #search-top-box-input { min-width: unset; } #search-top-box { top: unset; right: unset; height: unset; } #search-top-box:focus-within { box-shadow: unset; background: unset; padding: unset; } #search-top-box:not(:focus-within):before { -webkit-mask-size: calc(calc(0.9375rem * 1.8) / 2) calc(calc(0.9375rem * 1.8) / 2); -webkit-mask-position: center center; -webkit-mask-repeat: no-repeat; -webkit-mask-image: var(--search-top-box-mask); ; z-index: 14; background-color: rgb(var(--merc-light-color)); color: rgb(var(--merc-dark-color)); text-align: center; cursor: pointer; mask-image: var(--search-top-box-mask); ; mask-position: center center; mask-repeat: no-repeat; mask-size: calc(calc(0.9375rem * 1.8) / 2) calc(calc(0.9375rem * 1.8) / 2); pointer-events: none; position: absolute; top: 0; right: 0; width: calc(0.9375rem * 1.8); height: 100%; content: " "; } #search-top-box form[id=search-top-box-form] { visibility: unset; height: unset; } #search-top-box form[id=search-top-box-form]:focus-within { visibility: unset; } #search-top-box form[id=search-top-box-form] input { -webkit-appearance: unset; -moz-appearance: unset; position: unset; top: unset; transform: unset; appearance: unset; height: unset; } #search-top-box form[id=search-top-box-form] input[type=text] { visibility: unset; transition: box-shadow .2s cubic-bezier(.4, 0, .2, 1), font-variation-settings .2s cubic-bezier(.4, 0, .2, 1), font-weight .2s cubic-bezier(.4, 0, .2, 1), background-color .15s cubic-bezier(.4, 0, .2, 1), color .15s cubic-bezier(.4, 0, .2, 1), right .2s cubic-bezier(.4, 0, .2, 1), width .6s cubic-bezier(.4, 0, .2, 1), padding .6s cubic-bezier(.4, 0, .2, 1), max-width .6s cubic-bezier(.4, 0, .2, 1); } #search-top-box form[id=search-top-box-form]:not(:focus-within) input[type=text] { position: unset; right: unset; transform: unset; cursor: unset; border-width: unset; width: unset; height: unset; color: unset; } #search-top-box form[id=search-top-box-form]:not(:focus-within) input[type=text]:hover { background-color: unset; } #search-top-box form[id=search-top-box-form] input[type=submit] { background: none; transition: unset; } #search-top-box form[id=search-top-box-form]:not(:focus-within) input[type=submit] { opacity: unset; margin: unset; padding: unset; width: unset; } #header h1 a { z-index: unset; } } @media only screen and (max-width: 56.25rem) { #search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="text"] { background-color: rgba(0, 0, 0, 0); } } @media (min-width: 36rem) { #login-status { flex-grow: unset; left: unset; right: unset; } #login-status:not(:hover):not(:focus-within) { visibility: hidden; } #login-status::before { visibility: visible; } } #search-top-box-input { min-width: unset; display: inline-block; } #search-top-box-form input[type=submit], #search-top-box-form input[type=submit]:focus, #search-top-box-form input[type=submit]:hover { color: transparent; } #search-top-box-form input[type=submit]:focus, #search-top-box-form input[type=submit]:hover { border: none; text-shadow: none; } #search-top-box-form input[type=submit], #search-top-box-input:focus, #search-top-box-input:hover { border: none; } #search-top-box { display: flex; z-index: 12; position: absolute; top: 1.5em; right: calc(3% - .25em); align-items: center; justify-content: center; width: auto; height: calc(0.9375rem * 1.8); transform: translateY(-50%); font-size: calc(0.9375rem * .86667); } #search-top-box, #search-top-box * { box-sizing: border-box; margin: 0; padding: 0; border: none; transition: box-shadow .2s cubic-bezier(.4, 0, .2, 1), font-variation-settings .2s cubic-bezier(.4, 0, .2, 1), font-weight .2s cubic-bezier(.4, 0, .2, 1), background-color .15s cubic-bezier(.4, 0, .2, 1), color .15s cubic-bezier(.4, 0, .2, 1), right .2s cubic-bezier(.4, 0, .2, 1), width .6s cubic-bezier(.4, 0, .2, 1), padding .6s cubic-bezier(.4, 0, .2, 1), max-width .6s cubic-bezier(.4, 0, .2, 1); will-change: box-shadow, font-variation-settings, font-weight, background-color, color, right, width, padding, max-width; } #search-top-box:focus-within, #search-top-box:focus-within *, #search-top-box:focus-within :after, #search-top-box:focus-within :before { margin: 0; padding: 0; transition: box-shadow .2s cubic-bezier(.4, 0, .2, 1), font-variation-settings .2s cubic-bezier(.4, 0, .2, 1), font-weight .2s cubic-bezier(.4, 0, .2, 1), background-color .15s cubic-bezier(.4, 0, .2, 1), color .15s cubic-bezier(.4, 0, .2, 1), right .2s cubic-bezier(.4, 0, .2, 1), width .3s cubic-bezier(.4, 0, .2, 1), padding .3s cubic-bezier(.4, 0, .2, 1), max-width .3s cubic-bezier(.4, 0, .2, 1); will-change: box-shadow, font-variation-settings, font-weight, background-color, color, right, width, padding, max-width; } #search-top-box:focus-within { background: rgba(var(--merc-dark-color), .7); box-shadow: calc(calc(0.9375rem * 1.8) / 2 * -1) 0 calc(calc(0.9375rem * 1.8) / 2) rgba(var(--merc-dark-color)); } #search-top-box:after, #search-top-box:before { position: absolute; top: 0; right: 0; width: calc(0.9375rem * 1.8); height: 100%; content: " "; } #search-top-box:before { -webkit-mask-size: calc(calc(0.9375rem * 1.8) / 2) calc(calc(0.9375rem * 1.8) / 2); -webkit-mask-position: center center; -webkit-mask-repeat: no-repeat; -webkit-mask-image: var(--search-top-box-mask); ; z-index: 14; background-color: rgb(var(--merc-light-color)); color: rgb(var(--merc-dark-color)); text-align: center; cursor: pointer; mask-image: var(--search-top-box-mask); ; mask-position: center center; mask-repeat: no-repeat; mask-size: calc(calc(0.9375rem * 1.8) / 2) calc(calc(0.9375rem * 1.8) / 2); pointer-events: none; } #search-top-box:not(:focus-within):hover:before { background-color: rgb(var(--merc-light-color)); } #search-top-box:after { --clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); -webkit-clip-path: var(--clip-path); z-index: 13; clip-path: var(--clip-path); pointer-events: none; background-color: transparent; } #search-top-box:not(:focus-within):after { --clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%); background-color: rgb(var(--merc-light-color), 0); } #search-top-box form[id=search-top-box-form] { display: flex; visibility: visible; position: relative; right: 0; max-width: 100%; height: calc(0.9375rem * 1.8); } #search-top-box form[id=search-top-box-form]:not(:focus-within) { max-width: calc(0.9375rem * 15); } #search-top-box form[id=search-top-box-form] input { -webkit-appearance: none; -moz-appearance: none; appearance: none; position: relative; top: 0; } #search-top-box form[id=search-top-box-form] input[type=text] { z-index: 13; position: absolute; right: 0; width: calc(0.9375rem * 15); max-width: calc(0.9375rem * 15); height: 100%; padding: 0 calc(0.9375rem * 1.8) 0 1em; outline: 0 solid rgb(var(--merc-light-color)); background-color: rgb(var(--merc-dark-color), .7); box-shadow: 0 0 0 .125rem rgb(var(--merc-light-color)); color: rgba(var(--merc-light-color)); } #search-top-box form[id=search-top-box-form]:not(:focus-within) input[type=text] { max-width: calc(0.9375rem * 1.8); padding: 0; outline-width: 0; background-color: rgba(var(--merc-dark-color), 0); box-shadow: 0 0 0 0 rgb(var(--merc-light-color)); color: rgba(0, 0, 0, 0); cursor: pointer; } #search-top-box form[id=search-top-box-form]:not(:focus-within) input[type=text]:hover { background-color: rgba(var(--merc-dark-color), 1); } #search-top-box form[id=search-top-box-form] input[type=submit] { visibility: visible; z-index: 14; position: absolute; right: 0; width: calc(0.9375rem * 1.8); height: calc(0.9375rem * 1.8); outline: 0 solid rgb(var(--merc-light-color)); background-color: transparent; box-shadow: 0 0 0 .125rem rgb(var(--merc-light-color)); color: t; font-size: calc(0.9375rem * .86667); cursor: pointer; pointer-events: all; } #search-top-box form[id=search-top-box-form]:not(:focus-within) input[type=submit] { box-shadow: 0 0 0 0 rgb(var(--merc-light-color)); pointer-events: none; } #login-status { --wght: var(--ui-wght); display: flex; z-index: 11; position: absolute; top: 1.5em; right: calc(3% + calc(0.9375rem * 1.8) - .25em); align-items: center; justify-content: center; height: 2em; margin: 0 0 0 .5em; transform: translateY(-50%); color: rgb(var(--merc-light-color)); font-weight: var(--wght); font-size: 1em; font-family: var(--UI-font); white-space: nowrap; transition: opacity .2s cubic-bezier(.4, 0, .2, 1); } #search-top-box:focus-within ~ #login-status { opacity: 0; } #login-status span.printuser a:first-of-type { width: 1.75em; } #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-create-account, #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-sign-in { margin: 0 1em; background-color: rgb(var(--pale-gray-monochrome)); color: rgb(var(--merc-dark-color)); padding: 0.1em 1em; text-decoration: none; } #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-create-account:active, #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-create-account:hover, #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-sign-in:active, #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-sign-in:hover, #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-create-account:focus-within, #login-status:not(.page-rate-widget-box):not(#search-top-box-form) > a.login-status-sign-in:focus-within { background-color: rgba(var(--merc-light-color), 1); color: rgb(var(--merc-dark-color)); text-decoration: none; } #login-status span.printuser { --wght: var(--ui-wght); margin-right: .5em; color: rgb(var(--merc-light-color)); font-weight: var(--wght); } #login-status a#my-account, #login-status a[href*="account/messages"] { color: rgb(var(--merc-light-color)); } #login-status a#my-account { --wght: var(--ui-wght); -webkit-text-decoration: underline rgb(var(--merc-dark-color)) .125em; display: flex; align-items: center; padding: 0 .5em; background-color: initial; box-shadow: inset 0 0 0 0 rgb(var(--merc-dark-color)); font-weight: var(--wght); text-decoration: underline rgb(var(--merc-dark-color)) .125em; transition: box-shadow .2s cubic-bezier(.4, 0, .2, 1), text-decoration .2s cubic-bezier(.4, 0, .2, 1), -webkit-text-decoration .2s cubic-bezier(.4, 0, .2, 1); } #login-status a#my-account:active, #login-status a#my-account:hover { --wght: var(--ui-hvr-wght); -webkit-text-decoration: underline rgb(var(--merc-dark-color)) 0; box-shadow: inset 0 -2em 0 0 rgb(var(--merc-dark-color)); color: rgb(var(--merc-light-color)); font-weight: var(--wght); text-decoration: underline rgb(var(--merc-dark-color)) 0; } #login-status a#my-account:focus-within { --wght: var(--ui-hvr-wght); -webkit-text-decoration: underline rgb(var(--merc-dark-color)) 0; box-shadow: inset 0 -2em 0 0 rgb(var(--merc-dark-color)); color: rgb(var(--merc-light-color)); font-weight: var(--wght); text-decoration: underline rgb(var(--merc-dark-color)) 0; } #login-status #account-topbutton { --clip-path: polygon(30% 35%, 70% 35%, 50% 60%, 50% 60%); -webkit-clip-path: var(--clip-path); position: relative; width: var(--account-height); height: var(--account-height); margin: 0; padding: 0; background-color: rgb(var(--merc-light-color)); color: transparent; clip-path: var(--clip-path); transition: -webkit-clip-path .1s cubic-bezier(.4, 0, .2, 1); transition: clip-path .1s cubic-bezier(.4, 0, .2, 1), -webkit-clip-path .1s cubic-bezier(.4, 0, .2, 1); } #login-status #account-options { display: block !important; z-index: 12; position: absolute; top: 1.5rem; right: 0; width: 10em; margin: .25em 0 0; padding: 0; overflow: hidden; background-image: var(--gradient-header); background-color: rgb(var(--merc-dark-color)); opacity: 0; pointer-events: none; transition: opacity .15s cubic-bezier(.4, 0, .2, 1); } #login-status #account-options:focus-within, #login-status #account-topbutton:active + #account-options, #login-status #account-topbutton:focus + #account-options { opacity: 1; pointer-events: all; } @media (pointer: coarse) { #login-status #account-options:hover, #login-status #account-topbutton:hover + #account-options { opacity: 1; pointer-events: all; } } #login-status #account-options * { margin: 0; padding: 0; } #login-status #account-options ul { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 2em; flex-grow: 1; align-items: center; justify-content: center; font-size: .85em; } #login-status #account-options ul li { position: relative; } #login-status #account-options ul li, #login-status #account-options ul li a { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; } #login-status #account-options a { --box-shadow: rgba(var(--merc-dark-color)); --wght: var(--ui-wght); position: relative; flex-grow: 1; height: 100%; max-height: 2em; padding: 0 .25em; box-shadow: inset 0 0 0 .0625rem var(--merc-dark-color); font-weight: var(--wght); transition: color .15s cubic-bezier(.4, 0, .2, 1), font-weight .15s cubic-bezier(.4, 0, .2, 1), font-variation-settings .15s cubic-bezier(.4, 0, .2, 1); } #login-status #account-options li > a, #login-status #account-options li > a:visited { color: rgb(var(--merc-light-color)); } #login-status #account-options li > a:active, #login-status #account-options li > a:hover { --wght: var(--ui-hvr-wght); color: rgb(var(--merc-dark-color)); font-weight: var(--wght); text-decoration: none; } #login-status #account-options li > a:focus-within { --wght: var(--ui-hvr-wght); color: rgb(var(--merc-dark-color)); font-weight: var(--wght); text-decoration: none; } #login-status #account-options li > a[href*="/messages"] { position: absolute; top: 0; left: 0; width: 100%; height: 100%; min-height: 100%; font-size: 0; } #login-status #account-options li > a[href*="/messages"]:after { position: absolute; left: 50%; transform: translateX(-50%); content: "信息"; font-size: calc(0.9375rem * .765); pointer-events: none; } #login-status #account-options li > a:before { --clip-path: polygon(0 0, 0 0, 0 100%, 0 100%); -webkit-clip-path: var(--clip-path); z-index: -1; position: absolute; top: 0; width: 100%; height: 100%; background-color: rgb(var(--merc-light-color)); content: " "; clip-path: var(--clip-path); pointer-events: none; transition: -webkit-clip-path .2s cubic-bezier(.4, 0, .2, 1); transition: clip-path .2s cubic-bezier(.4, 0, .2, 1), -webkit-clip-path .2s cubic-bezier(.4, 0, .2, 1); } #login-status #account-options li > a:active:before, #login-status #account-options li > a:hover:before { --clip-path: polygon(-15% 0, 115% 0, 100% 100%, 0 100%); } #login-status #account-options li > a:focus-within:before { --clip-path: polygon(-15% 0, 115% 0, 100% 100%, 0 100%); } /* ===默认收起用户信息栏和搜索栏=== */ #search-top-box { top: 23px; right: calc(3%); } #login-status { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; top: 24px; right: calc(3% + calc(0.9375rem * 1.8) + .25em); color: transparent; pointer-events: none; transition: color .2s cubic-bezier(.4, 0, .2, 1); user-select: none; } @media only screen and (min-width: 980px) { #search-top-box { right: calc(3% + (-100vw + var(--header-width-on-desktop, 61.25rem)) / 2); } #login-status { right: calc(3% + calc(0.9375rem * 1.8) + .25em + (-100vw + var(--header-width-on-desktop, 61.25rem)) / 2); } } #login-status:active, #login-status:hover { -webkit-user-select: initial; -moz-user-select: initial; -ms-user-select: initial; color: rgb(var(--merc-light-color)); pointer-events: all; user-select: auto; } #login-status:focus-within { -webkit-user-select: initial; -moz-user-select: initial; -ms-user-select: initial; color: rgb(var(--merc-light-color)); pointer-events: all; user-select: auto; } #login-status:active #account-options, #login-status:hover #account-options { pointer-events: all; } #login-status:focus-within #account-options { pointer-events: all; } #login-status > :not(#account-topbutton):not([href*="account/messages"]) { --clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%); -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); opacity: 0; transition: box-shadow .2s cubic-bezier(.4, 0, .2, 1), text-decoration .2s cubic-bezier(.4, 0, .2, 1), color .2s cubic-bezier(.4, 0, .2, 1), clip-path .2s cubic-bezier(.4, 0, .2, 1), opacity .2s cubic-bezier(.4, 0, .2, 1), -webkit-text-decoration .2s cubic-bezier(.4, 0, .2, 1), -webkit-clip-path .2s cubic-bezier(.4, 0, .2, 1); } #login-status:active > :not(#account-topbutton):not([href*="account/messages"]), #login-status:hover > :not(#account-topbutton):not([href*="account/messages"]) { --clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); opacity: 1; } #login-status:focus-within > :not(#account-topbutton):not([href*="account/messages"]) { --clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); opacity: 1; } #login-status #account-topbutton { margin-left: 0; background-color: initial; pointer-events: all; transition: clip-path .15s cubic-bezier(.4, 0, .2, 1), background-color .15s cubic-bezier(.4, 0, .2, 1), -webkit-clip-path .15s cubic-bezier(.4, 0, .2, 1); } #login-status:hover #account-topbutton { background-color: rgb(var(--merc-light-color)); } #login-status:before { -webkit-mask-image: var(--user-account-mask); -webkit-mask-size: calc(calc(0.9375rem * 1.8) - .5em); -webkit-mask-position: center right; -webkit-mask-repeat: no-repeat; z-index: 2; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(var(--merc-light-color), 1); content: ""; cursor: pointer; mask-image: var(--user-account-mask); mask-position: center right; mask-repeat: no-repeat; mask-size: calc(calc(0.9375rem * 1.8) - .5em); pointer-events: all; transition: background-color .15s cubic-bezier(.4, 0, .2, 1); } #login-status:hover:before { background-color: rgba(var(--search-icon-hover-color), 1); } #login-status:active:after, #login-status:active:before, #login-status:hover:after, #login-status:hover:before { background-color: rgba(var(--search-icon-hover-bg-color), 0); cursor: auto; pointer-events: none; } #login-status:focus-within:after, #login-status:focus-within:before { background-color: rgba(var(--search-icon-hover-bg-color), 0); cursor: auto; pointer-events: none; } #login-status #account-topbutton { --clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); -webkit-clip-path: var(--clip-path); background-color: rgba(var(--merc-light-color), 0); clip-path: var(--clip-path); } #login-status:active #account-topbutton, #login-status:hover #account-topbutton { --clip-path: polygon(30% 35%, 70% 35%, 50% 60%, 50% 60%); -webkit-clip-path: var(--clip-path); background-color: rgb(var(--merc-light-color)); clip-path: var(--clip-path); } #login-status:focus-within #account-topbutton { --clip-path: polygon(30% 35%, 70% 35%, 50% 60%, 50% 60%); -webkit-clip-path: var(--clip-path); background-color: rgb(var(--merc-light-color)); clip-path: var(--clip-path); } #login-status #account-options { margin: 0; } #login-status a[href*="account/messages"] { color: rgb(var(--merc-light-color)); pointer-events: all; } #account-topbutton { border: none; } #account-options { border: none; }
概述
后室,多变的生存环境和贫乏的资源造就了不同层级间独特而迥异的生态环境。但无论环境如何,小型生物的生存永远是艰难的。在部分资源分布密集的层级内,小型动植物找到了两条独特的生存之路:寄生与附生。
寄生者·求己不如求人
寄生策略并不罕见,对于一部分小型生物来说,抱上一条合适的“大腿”就是是致胜的法宝。一般来说,后室寄生生物通常具有吸器等结构,并高度适应了寄生生活,也就是说,一旦宿主意外死亡,他们也难逃覆巢之下的命运。所以大部分情况下,寄生者们不会轻易杀死宿主,但凡事都有例外。
No.1 寄虫藓

寄虫藓的特写照片。
寄虫藓是少见的能同时寄生动植物的寄生者,其生命周期分为差异明显的“木伏期”和“虫伏期”。寄虫藓中间宿主为死亡飞蛾,最终宿主为木本植物。
寄虫藓的生命由“虫伏期”开始,落在死亡飞蛾身体上的藓孢子形成的类藓体会优先快速生长出乳白色的细丝,延伸入飞蛾体缝并固定其中。随飞蛾到达其他树木。在这一阶段,寄虫藓只会生长乳白色的假根,并深入飞蛾的躯干,使飞蛾逐渐变虚弱,其体内也会逐渐变空,被寄虫藓的假根分解并吸收。同时,假根上的丝状结构会伸入并控制飞蛾足部,使其保持抓紧状态。最终,成为一具空壳的死亡飞蛾将紧抓在树干上死去,而幼小的寄虫藓也来到了新的宿主上。
到达树干后,寄虫藓将自身连同飞蛾的残骸一起通过大量“吸器”,一种针状,可与其他植物输导组织连接的器官,固定在树干上,开始利用宿主的养分生长并蔓延。叶片开始生长,光合作用开始同时进行,寄虫藓即可依靠光合与寄生一同带来的大量养分开始快速生长,进入“木伏期”,约1个月后,寄虫藓可覆盖近一平米范围的树皮。
生长到一定程度后,寄虫藓将进入繁殖期,一般繁殖方式为无性繁殖。蒴柄开始生长,一部分孢蒴组织伸长变宽,形成一对类似飞蛾翅形状的扁平结构,其上分布着孢子和营养性细胞,部分孢子在营养性细胞的支持下初步分裂生长为细胞团类藓体,营养性细胞同时释放多种信息素至空气中吸引附近的死亡飞蛾。当死亡飞蛾接触到孢蒴时,类藓体就可以通过接触来到飞蛾身体上,开始新一轮循环。
寄虫藓拥有一种类似有性繁殖的特殊繁殖方式。当多个不同的类藓体寄生同一飞蛾时,其假根将相互识别并相互融合在一处,形成被称为“交合管”的特殊结构,携带不同遗传信息的组织细胞将通过“交合管”移动,并在多种特殊蛋白质的影响下完成多株类藓体细胞遗传信息的交换1,使它们基因重组为新的寄虫藓个体。
No.2 轮机虱虫

一只死去轮机虱虫的特写照片
轮机虱虫是一种体积较大的寄生虫,体长五厘米左右,其最终宿主为歌鲸,中间宿主高达12个,亚成体行踪诡异,但成体辨识度高。轮机虱虫是优质的蛋白质来源,拨开外壳后可以找到两条粗大的肌肉,据说口味类似牛肉,但味道更咸。
轮机虱虫体内仅有3对肌肉,身体大部分由坚硬的多糖-钙质骨骼构成,内脏团填充在骨骼内空腔中。这些骨骼呈现出精密的机械结构,相互啮合联动。虫体中心有一对巨大的肌肉附着于骨质转轮上,该转轮通过齿轮结构向其他骨器官传递能量,并维持体液循环,另外两对肌肉附着于两根横向的骨骼上,横骨上有刻痕与凹槽,通过两根横骨的不同位置改变骨骼间的联动方式,从而完成复杂的动作。轮机虱虫的动作因此有迅速,精准的特点。
轮机虱虫成体以歌鲸组织为食,终生不会离开。交配后受精卵外包裹一层骨质外壳并从歌鲸身体上脱落,开始新的生命旅程。
No.3 三孔纤管虫

皮肤浅层下一只三孔纤管虫生活过的痕迹。
三孔纤管虫是一种身体结构简单的中空管状寄生虫,躯体壁一般只由单层细胞构成,成熟个体通常不再具备运动能力。三孔纤管虫一般伪装成血管藏在宿主组织中,依赖宿主体内的血液维持生存,并熟练掌握了躲避免疫系统攻击的方法。
三孔纤管虫的生命开始于虫卵。幼小的虫卵存在于自然水体中,表面包被有一层多糖荚膜,可抵抗多种物理、化学因素的威胁。饮用不洁水后,虫卵进入宿主的消化道,并穿越胃酸屏障进入小肠。在小肠环境内,荚膜分解,虫卵开始发育。并进入单孔体阶段。
在单孔体阶段,三孔纤管虫利用小肠中的营养物质迅速生长,形成标志性的管状躯体,但只有一端开口,有口无肛门。这一阶段,三孔纤管虫体壁较厚,具备肌肉层,运动能力强。在虫体的封闭端有一锥形结构,被称为“头体”,细胞排列紧密,结构牢固,可以钻透小肠壁。三孔纤管虫利用头体离开消化道进入血管,并进入下一个发育阶段:“虫-血管复合体I期”。
在这一阶段,三孔纤管虫沿血管移动,并逐渐伸长,直至将自己达到某一特定长度。之后三孔纤管虫用头体钻破血管小枝部位的血管壁,将尾部伸出血管,伸入组织细胞间。但头部仍固定于血管内壁,使体腔与血管保持连通,三孔纤管虫虫体继续延长,头体引导着虫体不断向前移动,直到触碰到另一根血管。头体会将血管壁再一次钻破,并将三孔纤管虫尾段伸入并固定在血管内。
当三孔纤管虫完成了身体的固定,它的“虫一血管复合体II期”也就会到来。头体完成了它的使命,细胞开始凋亡,虫体尾端开口,血液开始流过三孔纤管虫的体腔。除此以外,曾经一度重要的肌肉层也开始退化,体壁开始变薄,最薄处甚至只保留了单层细胞。从现在开始,三孔纤管虫在显微镜下几乎和微小血管长得一般无二了。
但对于精于伪装的寄生一族来说,这还远远不够。三孔纤管虫体细胞开始合成宿主细胞的特征蛋白,并从附近的宿主细胞中“借”得细胞色素等信息分子,从而伪装成一段正常的宿主血管,逃避免疫系统的检查。至此,三孔纤管虫完成了完美的寄生。
成熟的三孔纤管虫可以进行有性生殖,虫体中段部分的细胞会开始分裂,增生,并向外凸起,形成一个基本连接在管腔上的小囊——“生殖囊”。生殖囊通过生殖孔与管腔相连。生殖囊可以产生有鞭毛的雌雄配子,配子最终前往肾脏,破坏血管壁后进入肾小囊,完成受精后在受精卵表面形成荚膜,最终随尿液排出。更常见的情况是,生殖囊细胞可以直接分化形成有鞭毛的孢子,并进一步生长为有鞭毛的虫卵。虫卵沿与配子相同的路线离开宿主,前往下一个安身之所。
No.4 七支

七支的显微特写照片
七支是一种长相极像海星的寄生虫,以鱼为中间宿主。
七支寄生鱼卵后,会影响幼鱼的发育,导致鱼尾和鱼鳍的数量与形态畸形,使受感染的鱼无法正常运动,更容易被下一级捕食者捕获,七支随可怜的鱼一起进入捕食者的肠道,完成迁移。
附生者·新大陆开拓者
相较寄生一组的百花齐放,采取附生策略的生物显得神秘而罕见。附生者和腐生者一样,都依附于无生命的物体,但他们获得能量的方式更为独特,也呈现出更顽强的生命力。
No.5 褐斑菌

褐斑菌的生活环境,图中右侧生长着一小团褐斑菌。
褐斑菌是一种霉菌,具有标志性的褐黄色凹凸不平的霉斑与特殊的气味。因其无毒可食,有些人会将褐斑菌刮下烹饪为食物,但不建议这样做。褐斑菌有时会结成较厚的菌层,成为其他生物的重要食物来源。
褐斑菌内含分解纤维素的相关酶,可高效分解墙纸为单糖参与呼吸,也可以分泌酸性物质腐蚀墙壁获取无机盐离子。这两个过程均会造成大量的二氧化碳释放,褐斑菌生长迅速,繁殖快,难根除,它在Level 0的大量爆发很有可能是Level 0二氧化碳浓度上升现象的罪魁祸首。
最新观察显示,褐斑菌体内已出现了能够催化塑料与胶膜分解的酶,并可以利用二者中的能量。这体现出褐斑菌的适应性正在增强。
No.6 灯衣

一团长得过厚的灯衣。
灯衣,一种真菌与细菌的共生体,附生于后室内常见的灯具等电器上。呈现灰绿色或者褐红色,生长较为缓慢,每年生长1~2厘米,但生命力极为顽强,分布遍布后室全境,Level 0尤多。被灯衣附生的电器一般会出现功率下降,漏电,短路等问题。
灯衣内的细菌能通过“向电体”,一种复杂的膜结构,利用电场将离子搬运过膜,利用电势能合成ATP之后膜结构移动,离子反向再次穿过向电体膜,再次释放化学势能,从而从微弱的电场中获得能量以维持生命,并从空气中通过一系列复杂的化学反应固定二氧化碳和氮气以供生命活动。真菌组成了灯衣的骨架,菌丝沿电场线生长在用电器内部2,尽可能使附生其上的细菌能最大化利用电能,同时真菌分泌物也能破坏电线外绝缘层和其他电器保护结构,真菌依靠共享细菌的部分营养物质生存。
灯衣的固碳作用一定程度上平衡了褐斑菌的呼吸作用,它的生长减缓了Level 0的二氧化碳浓度上升,且生长速度正随着二氧化碳浓度上升而加速。经近似计算,约50年后,二者的拉锯战将达到平衡,Level 0的二氧化碳浓度也将达到稳定。3
后记
作为先锋生物,附生者仍然在这片人造物的荒漠中苦苦搜寻着生长的方向,它们试着将一切痕迹抹去,改涂上生命的五彩斑斓。在很多地方,附生者的生长正为新生态的形成铺平道路。在可以想见的未来,后室这座绝望的囚笼内,也许可以开出已征服了这里的花海。
而就在先锋之后,寄生者们各显神通,于无声无息中塑造着新的平衡。在这平衡下,被捕食者与捕食者的身份也许并不分明。生命的花海在这动态的制约下复始轮转,生生不息。
本文作者为JinFif
图为
https://www.pexels.com/zh-cn/photo/27540624/
https://unsplash.com/photos/green-moss-on-gray-rock-8R2_4J24F2w
https://www.pexels.com/zh-cn/photo/17108699/
https://www.pexels.com/zh-cn/photo/6643065/
https://www.pexels.com/zh-cn/photo/7293094/
还有众所周知的http://backrooms-wiki.wikidot.com/level-0