What this is
A bunch of miscellaneous CSS 'improvements' that I, Croquembouche, use on a bunch of pages because I think it makes them easier to deal with.
The changes this component makes are bunch of really trivial modifications to ease the writing experience and to make documenting components/themes a bit easier (which I do a lot). It doesn't change anything about the page visually for the reader — the changes are for the writer.
I wouldn't expect translations of articles that use this component to also use this component, unless the translator likes it and would want to use it anyway.
This component probably won't conflict with other components or themes, and even if it does, it probably won't matter too much.
Usage
On any wiki:
[[include :scp-wiki:component:croqstyle]]
This component is designed to be used on other components. When using on another component, be sure to add this inside the component's [[iftags]] block, so that users of your component are not forced into also using Croqstyle.
Related components
Other personal styling components (which change just a couple things):
Personal styling themes (which are visual overhauls):
CSS changes
Reasonably-sized footnotes
Stops footnotes from being a million miles wide, so that you can actually read them.
.hovertip { max-width: 400px; }
Monospace edit/code
Makes the edit textbox monospace, and also changes all monospace text to Fira Code, the obviously superior monospace font.
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;700&display=swap'); :root { --mono-font: "Fira Code", Cousine, monospace; } #edit-page-textarea, .code pre, .code p, .code, tt, .page-source { font-family: var(--mono-font); } .code pre * { white-space: pre; } .code *, .pre * { font-feature-settings: unset; }
Teletype backgrounds
Adds a light grey background to <tt> elements ({{text}}), so code snippets stand out more.
tt { background-color: var(--swatch-something-bhl-idk-will-fix-later, #f4f4f4); font-size: 85%; padding: 0.2em 0.4em; margin: 0; border-radius: 6px; }
No more bigfaces
Stops big pictures from appearing when you hover over someone's avatar image, because they're stupid and really annoying and you can just click on them if you want to see the big version.
.avatar-hover { display: none !important; }
Breaky breaky
Any text inside a div with class nobreak has line-wrapping happen between every letter.
.nobreak { word-break: break-all; }
Code colours
Add my terminal's code colours as variables. Maybe I'll change this to a more common terminal theme like Monokai or something at some point, but for now it's just my personal theme, which is derived from Tomorrow Night Eighties.
Also, adding the .terminal class to a fake code block as [[div class="code terminal"]] gives it a sort of pseudo-terminal look with a dark background. Doesn't work with [[code]], because Wikidot inserts a bunch of syntax highlighting that you can't change yourself without a bunch of CSS. Use it for non-[[code]] code snippets only.
Quick tool to colourise a 'standard' Wikidot component usage example with the above vars: link
:root { --c-bg: #393939; --c-syntax: #e0e0e0; --c-comment: #999999; --c-error: #f2777a; --c-value: #f99157; --c-symbol: #ffcc66; --c-string: #99cc99; --c-operator: #66cccc; --c-builtin: #70a7df; --c-keyword: #cc99cc; } .terminal, .terminal > .code { color: var(--c-syntax); background: var(--c-bg); border: 0.4rem solid var(--c-comment); border-radius: 1rem; }
Debug mode
Draw lines around anything inside .debug-mode. The colour of the lines is red but defers to CSS variable --debug-colour.
You can also add div.debug-info.over and div.debug-info.under inside an element to annotate the debug boxes — though you'll need to make sure to leave enough vertical space that the annotation doesn't overlap the thing above or below it.
…like this!
.debug-mode, .debug-mode *, .debug-mode *::before, .debug-mode *::after { outline: 1px solid var(--debug-colour, red); position: relative; } .debug-info { position: absolute; left: 50%; transform: translateX(-50%); font-family: 'Fira Code', monospace; font-size: 1rem; white-space: nowrap; } .debug-info.over { top: -2.5rem; } .debug-info.under { bottom: -2.5rem; } .debug-info p { margin: 0; }
- Cộng đồng
- Tài nguyên
- Liên kết
- Thông tin
/* Theme Monotypical [2021 Wikidot Theme] Bởi EstrellaYoshte Dựa trêm: Theme Paperstack bởi EstrellaYoshte Theme Penumbra bởi EstrellaYoshte Black Highlighter bởi Woedenaz */ @import url('https://fonts.googleapis.com/css2?family=Quicksand&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Ubuntu&display=swap'); /*---- Dismantling and Rebuilding the Structure ----*/ div#container-wrap { display: grid; grid-template-columns: var(--sidebar-width) 1fr; grid-template-rows: var(--header-height) 1fr auto auto auto; overflow: hidden; background: none; } #container, #content-wrap { display: contents; } #header { grid-row-start: 1; grid-row-end: 2; grid-column-start: 1; grid-column-end: 3; } #main-content { grid-row-start: 2; grid-row-end: 3; grid-column-start: 1; grid-column-end: 3; } #footer { grid-row-start: 3; grid-row-end: 4; grid-column-start: 1; grid-column-end: 3; } #license-area { grid-row-start: 4; grid-row-end: 5; grid-column-start: 1; grid-column-end: 3; } #footer-bar { grid-row-start: 5; grid-row-end: 6; grid-column-start: 1; grid-column-end: 3; } #side-bar { grid-row-start: 1; grid-row-end: 5; grid-column-start: 1; grid-column-end: 2; } /*-------Basic Layout---------*/ #header, #top-bar { width: 100%; max-width: 100%; margin: 0; padding: 0; } #main-content { margin: 0; max-width: 100%; } #footer { margin-top: 0; } #footer-bar { z-index: 0; } #side-bar { position: fixed; top: 0; left: 0; margin: 0; padding: 0; width: var(--sidebar-width); height: 100vh; overflow-y: auto; overflow-x: hidden; z-index: 0; } #side-bar:focus-within { z-index: 99; } /*--------------------------------------------------------*/ /*--------------------------------------------------------*/ :root { --linkColor: #FC8391; --linkColor-newpage: #FC9958; --primaryBackgroundColor: #F9F9F9; --secondaryBackgroundColor: #EFEFEF; --tertiaryBackgroundColor: #E0E0E0; --borderColor: #C6C6C6; --shadow: rgba(0,0,0,0.225); --selectionColor: #FFE419; --textColor: #0E0E0E; --textColor-alt: #8E8E8E; /*----- Technical Variables -----*/ --body-font: 'Ubuntu', sans-serif; --header-font: 'Century Gothic', 'Quicksand', sans-serif; --header-title: 'TỔ CHỨC SCP'; --sidebar-width: 15rem; --sidebar-timing: 0.275s ease-out; --header-height: 3.5rem; --page-content-width: 954px; --radius-adjust: 0.95rem; --link-timing: .125s ease-out; } body { font-family: var(--body-font); font-size: 0.95rem; color: var(--textColor); } tt { background-color: var(--secondaryBackgroundColor); font-size: 90%; } #main-content { background-color: var(--primaryBackgroundColor); padding: 1em 3em; } #page-content { width: 100%; max-width: var(--page-content-width); margin: 0 auto 2rem; } #page-content a:not(div[class*=top-bar] a, #u-sb-button, #u-no-more-menu, .page-rate-widget-box a, .creditRate a, .printuser.avatarhover a:first-child, ul.yui-nav a, .scp-image-block a) { color: var(--textColor); padding: 0.1em; text-decoration: none; border-bottom: solid 2px var(--linkColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } #page-content a:not(div[class*=top-bar] a, #u-sb-button, #u-no-more-menu, .page-rate-widget-box a, .creditRate a, .printuser.avatarhover a:first-child, ul.yui-nav a, .scp-image-block a):hover { background-size: 100% 100%; } #page-content a.newpage { --linkColor: var(--linkColor-newpage); } /* ---- SCROLLBAR ---- */ ::-webkit-scrollbar { width: 10px; background: transparent; } ::-webkit-scrollbar-track { background: var(--tertiaryBackgroundColor); } ::-webkit-scrollbar-thumb { background: var(--linkColor); border: none; border-radius: var(--radius-adjust); } :root { scrollbar-color: var(--linkColor) var(--tertiaryBackgroundColor); /* firefox support */ } /*---- HEADER ----*/ #header { z-index: 2; height: var(--header-height); background: var(--primaryBackgroundColor); } #top-bar, #page-title, #header h2 { display: none; } #header h1 { margin-left: 0; padding: 0; float: none; max-height: 4rem; width: 100%; } #header h1 a { display: block; width: fit-content; vertical-align: middle; padding: 1rem; line-height: 3.5rem; margin: auto; text-align: center; text-shadow: none; color: var(--textColor); font-family: var(--header-font); font-weight: lighter; } /* Hide the existing text */ #header h1 span { font-size: 0; display: none; } #header h1 a::before { content: var(--header-title); } #login-status { position: absolute; top: 0.4rem; right: 3.25em; width: max-content; font-size: 0.78em; text-align: center; } #login-status, #login-status a { color: var(--textColor); } #login-status span.printuser { font-size: 0; } #login-status span.printuser img { font-size: 0; transform: translate(6px, 5px); } #login-status a#my-account { display: none; } #account-topbutton { border: none; margin-left: -0.1rem; } div#account-options { background-color: var(--primaryBackgroundColor); border: none; border-radius: calc(var(--radius-adjust)*0.3725); box-shadow: 0 0 5px 1px var(--shadow); } div#account-options li a { color: var(--textColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } div#account-options li a:hover { text-decoration: none; background-size: 100% 100%; color: var(--textColor); } div#account-options li:first-of-type a { border-radius: calc(var(--radius-adjust)*0.3725) calc(var(--radius-adjust)*0.3725) 0 0; } div#account-options li:last-of-type a { border-radius: 0 0 calc(var(--radius-adjust)*0.3725) calc(var(--radius-adjust)*0.3725); } div#search-top-box { top: 0.5rem; right: 0.5rem; width: 1.6rem; z-index: 31; } div#search-top-box::before { content: ""; display: block; width: 100%; height: 100%; position: absolute; top: 0; right: 0.05rem; background-color: var(--linkColor); pointer-events: none; z-index: 32; -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M505%20442.7L405.3%20343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3%2044-79.7%2044-128C416%2093.1%20322.9%200%20208%200S0%2093.1%200%20208s93.1%20208%20208%20208c48.3%200%2092.7-16.4%20128-44v16.3c0%206.4%202.5%2012.5%207%2017l99.7%2099.7c9.4%209.4%2024.6%209.4%2033.9%200l28.3-28.3c9.4-9.4%209.4-24.6.1-34zM208%20336c-70.7%200-128-57.2-128-128%200-70.7%2057.2-128%20128-128%2070.7%200%20128%2057.2%20128%20128%200%2070.7-57.2%20128-128%20128z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ddd%22%20d%3D%22M505%20442.7L405.3%20343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3%2044-79.7%2044-128C416%2093.1%20322.9%200%20208%200S0%2093.1%200%20208s93.1%20208%20208%20208c48.3%200%2092.7-16.4%20128-44v16.3c0%206.4%202.5%2012.5%207%2017l99.7%2099.7c9.4%209.4%2024.6%209.4%2033.9%200l28.3-28.3c9.4-9.4%209.4-24.6.1-34zM208%20336c-70.7%200-128-57.2-128-128%200-70.7%2057.2-128%20128-128%2070.7%200%20128%2057.2%20128%20128%200%2070.7-57.2%20128-128%20128z%22%2F%3E%3C%2Fsvg%3E"); -webkit-mask-size: 1rem; mask-size: 1rem; -webkit-mask-position: center; mask-position: center; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; opacity: 1; transition: opacity 0.25s ease; } div#search-top-box:focus-within::before { opacity: 0; } div#search-top-box form { display: flex; justify-content: flex-end; } div#search-top-box form input[type="text"]:not(:focus), div#search-top-box form input[type="text"]:not(:focus):not(:hover) { position: relative; color: transparent; cursor: pointer; display: inline-block; font-family: var(--body-font); width: 1.6rem; height: 1.6rem; padding: 0.1em 0.5em; box-sizing: border-box; border-radius: var(--radius-adjust); border: none; box-shadow: 0 0 2px 1.5px var(--shadow); } div#search-top-box form input[type="text"], div#search-top-box form input[type="text"]:hover, div#search-top-box form input[type="text"]:focus { background-color: var(--primaryBackgroundColor)!important; color: var(--textColor); display: inline-block; border: none; height: 1.6rem; width: 9rem; transition: width .25s; outline: none; } div#search-top-box form input[type="submit"] { display: none; } /*---- SIDEBAR ----*/ #side-bar { box-sizing: border-box; background-color: var(--secondaryBackgroundColor); border-right: solid 2px var(--borderColor); } #side-bar::-webkit-scrollbar { width: 0; background: transparent; } #side-bar .side-block { box-shadow: none; border: none; border-radius: 0; padding: 0; } #side-bar .side-block, #side-bar .side-block.media, #side-bar .side-block.resources { background-color: transparent; } #side-bar .side-block.media > * { display: flex; justify-content: space-evenly; } #side-bar .side-block.media { border-bottom: solid 2px var(--borderColor); } #side-bar .side-block .menu-item > .image { display: none; } #side-bar .heading { color: var(--textColor); background-color: var(--tertiaryBackgroundColor); border-top: solid 2px var(--borderColor); border-bottom: none; font-family: var(--header-font); text-transform: uppercase; font-size: 0.9rem; padding: 0.1rem 0.3rem; text-align: right; } #side-bar div.menu-item, #side-bar div.menu-item > p { display: flex; flex-basis: auto; flex-wrap: wrap; align-items: center; justify-content: flex-start; margin: 0; font-size: 0; } #side-bar div.menu-item a { font-weight: normal; color: var(--textColor); text-decoration: none; justify-content: center; width: auto; padding: .2rem .4rem; flex-grow: 1; font-size: 0.875rem; border-bottom: solid 1px var(--linkColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } #side-bar div.menu-item a[href="/"], #side-bar div.menu-item a[href*="scp-series"] { padding: .25rem; text-align: center; } #side-bar div.menu-item a[href="/"] { border-bottom: none; } #side-bar div.menu-item a:hover { background-size: 100% 100%; } /*---- Sidebar Transition Mechanism----*/ #header, #main-content, #footer, #license-area, #footer-bar { position: relative; left: 0; transition: left var(--sidebar-timing); } #container:target #header, #container:target #main-content, #container:target #u-sb-button, #container:target #footer, #container:target #license-area, #container:target #footer-bar { left: var(--sidebar-width); } /* Sidebar Toggle */ #u-sb-button { position: fixed; z-index: 10; top: 0; left: 0; transition: left var(--sidebar-timing); display: block; height: 2.6rem; width: 2.6rem; background-color: var(--primaryBackgroundColor); color: var(--textColor); font-weight: bold; font-size: 2rem; line-height: 0.8rem; text-align: center; text-decoration: none; } #u-no-more-menu { display: none; } #container:target #u-no-more-menu { display: block; position: fixed; width: calc(100% - var(--sidebar-width)); height: 100%; top: 0; right: 0; z-index: 12; cursor-events: all; } /*------ Top Bar, reborn -------*/ #page-content div[class*=top-bar] { font-size: 100%; z-index: 1; } #page-content div[class*=top-bar] a { text-decoration: none; } #page-content div[class*=top-bar] ul { background: transparent; list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: nowrap; justify-content: space-between; text-align: center; } #page-content div[class*=top-bar] ul > li { flex-grow: 1; border-radius: calc(var(--radius-adjust)*0.5); } #page-content div[class*=top-bar] li { color: var(--textColor); background: transparent; display: block; float: left; padding: 0.5rem; position: relative; text-decoration: none; transition: background-color var(--link-timing); } #page-content div[class*=top-bar] > ul > li:hover, #page-content div[class*=top-bar] > ul > li:focus-within { background: var(--tertiaryBackgroundColor); cursor: pointer; } #page-content div[class*=top-bar] li a { color: var(--textColor); display: block; width: max-content; height: 100%; } #page-content div[class*=top-bar] ul li ul { background: var(--primaryBackgroundColor); box-sizing: border-box; min-width: 100%; position: absolute; margin-top: 0.5rem; border-radius: calc(var(--radius-adjust)*0.5); box-shadow: 0 0 6px 2px var(--shadow); left: 0; display: block; transition: opacity var(--link-timing); opacity: 0; pointer-events: none; } #page-content div[class*=top-bar] ul li:hover > ul, #page-content div[class*=top-bar] ul li:focus-within > ul, #page-content div[class*=top-bar] ul li ul:hover, #page-content div[class*=top-bar] ul li ul:focus { opacity: 1; z-index: 9; pointer-events: all; } #page-content div[class*=top-bar] ul li ul::after { content: ""; position: absolute; bottom: 100%; left: 50%; margin-left: -8px; border-width: 8px; border-style: solid; border-color: transparent transparent var(--primaryBackgroundColor) transparent; } #page-content div[class*=top-bar] ul li ul li { clear: both; width: 100%; position: relative; display: flex; padding: 0; } #page-content div[class*=top-bar] ul li ul li:first-of-type a { border-radius: calc(var(--radius-adjust)*0.5) calc(var(--radius-adjust)*0.5) 0 0; } #page-content div[class*=top-bar] ul li ul li:last-of-type a { border-radius: 0 0 calc(var(--radius-adjust)*0.5) calc(var(--radius-adjust)*0.5); } #page-content div[class*=top-bar] ul li ul li a { width: max-content; height: 100%; flex-grow: 1; align-self: center; padding: 0.4rem; text-align: center; background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } #page-content div[class*=top-bar] ul li ul li a:hover { background-size: 100% 100%; } #page-content div[class*=top-bar]>ul:first-of-type>li:last-of-type>ul { right: 0; left: auto; } #page-content .mobile-top-bar { position: relative; left: 0; width: 100%; max-width: 100%; } #page-content .mobile-top-bar .open-menu { display: none; } /* ---- META-TITLE ---- */ .meta-title { display: flex; align-items: center; text-align: center; border-bottom: none; margin: 0.5rem 0; color: var(--textColor); font-family: var(--header-font); font-size: 215%; } .meta-title::before, .meta-title::after { content: ""; flex-grow: 1; height: 0.1rem; margin: auto auto auto 0.65rem; background-color: var(--borderColor); } .meta-title::before { margin: auto 0.65rem auto auto; } /* ---- TABS ---- */ /* ---- YUI TAB BASE ---- */ .yui-navset .yui-nav a,.yui-navset .yui-navset-top .yui-nav a{background-color:inherit;background-image:inherit}.yui-navset .yui-nav a:hover,.yui-navset .yui-nav a:focus{background:inherit;text-decoration:inherit}.yui-navset .yui-nav .selected a,.yui-navset .yui-nav .selected a:focus,.yui-navset .yui-nav .selected a:hover{color:inherit;background:inherit}.yui-navset .yui-nav,.yui-navset .yui-navset-top .yui-nav{border-color:inherit}.yui-navset li{line-height:inherit} /* ---- YUI TAB CUSTOMIZATION ----*/ .yui-navset .yui-nav, .yui-navset .yui-navset-top .yui-nav { display: flex; flex-wrap: wrap; width: calc(100% - .125rem); margin: 0 auto; border-color: var(--linkColor); box-shadow: none; border-width: 0 1px 2px; } .yui-navset .yui-nav a, /* ---- Link Modifier ---- */ .yui-navset .yui-navset-top .yui-nav a { color: var(--textColor-alt); /* ---- Tab Background Colour | [UNSELECTED] ---- */ background-color: var(--secondaryBackgroundColor); border: unset; box-shadow: none; } .yui-navset .yui-nav a:hover, .yui-navset .yui-nav a:focus { color: var(--textColor)!important; text-decoration: none; /* ---- Tab Background Colour | [HOVER] ---- */ background-color: var(--linkColor); } .yui-navset .yui-nav li, /* ---- Listitem Modifier ---- */ .yui-navset .yui-navset-top .yui-nav li { position: relative; display: flex; flex-grow: 2; max-width: 100%; margin: 0; padding: 0; background-color: var(--secondaryBackgroundColor); border: solid 1px var(--linkColor); border-bottom: none; border-top-width: 2px; box-shadow: none; } .yui-navset .yui-nav li a, .yui-navset-top .yui-nav li a, .yui-navset-bottom .yui-nav li a { display: flex; align-items: center; justify-content: center; width: 100%; } .yui-navset .yui-nav li em{ border: unset; } .yui-navset .yui-nav a em, .yui-navset .yui-navset-top .yui-nav a em { padding: .35em .75em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } .yui-navset .yui-nav .selected, /* ---- Selection Modifier ---- */ .yui-navset .yui-navset-top .yui-nav .selected { flex-grow: 2; margin: 0; padding: 0; /* ---- Tab Background Colour | [SELECTED] ---- */ background-color: var(--linkColor); } .yui-navset .yui-nav .selected a, .yui-navset .yui-nav .selected a em { border: none; } .yui-navset .yui-nav .selected a { width: 100%; color: var(--textColor); } .yui-navset .yui-nav .selected a:focus, .yui-navset .yui-nav .selected a:active { color: var(--textColor); background-color: var(--linkColor); } #page-content .yui-navset .yui-content { background-color: var(--primaryBackgroundColor); box-shadow: none; border: solid 2px var(--borderColor); } .yui-navset .yui-content, .yui-navset .yui-navset-top .yui-content { padding: .5em; border: none; } /* ---- AYERS INFO BAR ---- */ .info-container { --barColour: var(--borderColor); --linkColour: var(--primaryBackgroundColor); } #page-content .info-container > .collapsible-block > .collapsible-block-folded .collapsible-block-link::before, #page-content .info-container > .collapsible-block > .collapsible-block-unfolded .collapsible-block-link::before { visibility: hidden; } /* ---- INFO PANE ---- */ #page-content .creditRate{ margin: unset; margin-bottom: 4px; } #page-content .rate-box-with-credit-button { background-color: var(--primaryBackgroundColor); border: none; box-shadow: 0 0 3px 1px var(--shadow); border-radius: var(--radius-adjust); padding: 0.275rem; } #page-content .rate-box-with-credit-button .page-rate-widget-box { border: none; } #page-content a.fa { transform: none; } #page-content .rate-box-with-credit-button .fa-info { border: none; color: var(--textColor); padding-top: 0.25rem; padding-bottom: 0.0725rem; width: 0.9rem; margin-left: -0.1rem; margin-right: 0.1rem; background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } #page-content .rate-box-with-credit-button .fa-info:hover { background-size: 100% 100%; } .rate-box-with-credit-button .cancel { border: solid 1px var(--primaryBackgroundColor); } #page-content .creditButtonStandalone { margin: 0.125rem 0; } #page-content .creditButtonStandalone p a { border-radius: 1rem; color: var(--textColor); text-align: center; background: initial; box-shadow: 0 0 2px 1px var(--shadow); padding: 0.24rem; background: none; background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-position: 0 100%; background-repeat: no-repeat; background-size: 100% 0; transition: background-size var(--link-timing); } #page-content .creditButtonStandalone p a:hover { text-decoration: none; background: none; background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-position: 0 100%; background-repeat: no-repeat; background-size: 100% 100%; } /* ---- PAGE RATING ---- */ .page-rate-widget-box { box-shadow: none; margin: unset; margin-bottom: 4px; background-color: var(--primaryBackgroundColor); border-radius: var(--radius-adjust); box-shadow: 0 0 3px 1px var(--shadow); padding: 0.275rem; } .page-rate-widget-box .rateup a:hover, .page-rate-widget-box .ratedown a:hover, .page-rate-widget-box .cancel a:hover { color: var(--textColor); background: unset; background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 100%; background-position: 0 100%; background-repeat: no-repeat; border-radius: 0; } .page-rate-widget-box .rate-points { background-color: var(--primaryBackgroundColor) !important; color: var(--textColor) !important; border: solid 1px var(--primaryBackgroundColor); border-radius: 0; } .page-rate-widget-box .rateup, .page-rate-widget-box .ratedown { background-color: var(--primaryBackgroundColor); border-top: solid 1px var(--primaryBackgroundColor); border-bottom: solid 1px var(--primaryBackgroundColor); } .page-rate-widget-box .rateup a, .page-rate-widget-box .ratedown a { color: var(--textColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } .page-rate-widget-box .cancel { background-color: var(--primaryBackgroundColor); border: solid 1px var(--primaryBackgroundColor); border-radius: 0; } .page-rate-widget-box .cancel a { color: var(--textColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } /*---- PAGE ELEMENTS ----*/ /* h1 et al. Much of this is by Woedenaz */ h1, h2, h3, h4, h5, h6 { font-family: var(--header-font); color: var(--textColor); font-weight: bold; margin-top: 0.6rem; margin-bottom: 0.6rem; display: flex; } h2, h3, h4, h5, h6 { letter-spacing: 0.01em; } #page-content h1 {font-size: 200%;} #page-content h2 {font-size: 180%;} #page-content h3 {font-size: 160%;} #page-content h4 {font-size: 140%;} #page-content h5 {font-size: 120%;} #page-content h6 {font-size: 100%;} #page-content h1 span, #page-content h2 span, #page-content h3 span, #page-content h4 span, #page-content h5 span, #page-content h6 span { padding: 0 0.1em; display: inline-flex; } #page-content h1 span::before, #page-content h2 span::before, #page-content h3 span::before, #page-content h4 span::before, #page-content h5 span::before, #page-content h6 span::before { content: "#"; color: var(--textColor-alt); font-size: 70%; font-weight: normal; display: inline-flex; flex-direction: row; align-items: center; justify-content: center; margin-right: 0.1em; } #page-content h1::after { content: ""; flex-grow: 1; height: 0.1rem; margin: auto auto auto 0.375rem; background-color: var(--borderColor); } /* horizontal rule */ hr { margin: 2rem 0; height: 0.1rem; background-color: var(--borderColor); } /* Collapsibles */ #page-content .collapsible-block { margin: 0.5em auto; } #page-content .collapsible-block-folded .collapsible-block-link::before, #page-content .collapsible-block-unfolded .collapsible-block-link::before { content: "> "; font-weight: bold; display: inline-block; margin-right: 0.25em; color: var(--linkColor); transition: color var(--link-timing); } #page-content .collapsible-block-folded .collapsible-block-link:hover::before, #page-content .collapsible-block-unfolded .collapsible-block-link:hover::before { color: var(--textColor); } #page-content .collapsible-block-unfolded .collapsible-block-link::before { animation-name: collapsible-arrow-spin; animation-duration: 0.15s; animation-iteration-count: 1; animation-timing-function: cubic-bezier(.32,.38,.39,.94); animation-fill-mode: forwards; } @keyframes collapsible-arrow-spin { from { transform: rotate(0deg); } to { transform: rotate(90deg); } } /* Blockquotes and ToC */ blockquote, div.blockquote { background-color: transparent; width: auto; border: none; border-left: solid 0.175rem var(--linkColor); padding: 0.15rem 0.95rem; margin: 1rem 0; margin-left: 1.5rem; } #toc { background-color: var(--secondaryBackgroundColor); border: none; padding: 0.15rem 0.95rem; border-radius: calc(var(--radius-adjust)*0.75); box-shadow: 0 0 4px 1px var(--shadow); } /* Image Block */ .scp-image-block { border: none; border-radius: var(--radius-adjust); box-shadow: 0 0 5px 1px var(--shadow); box-sizing: border-box; } .scp-image-block img { border-radius: var(--radius-adjust) var(--radius-adjust) 0 0; } .scp-image-block .scp-image-caption { background-color: var(--secondaryBackgroundColor); box-sizing: border-box; border: none; border-radius: 0 0 var(--radius-adjust) var(--radius-adjust); padding: 0.35rem 0.1rem; color: var(--textColor); } .scp-image-block.block-left { margin-left: 0; } .scp-image-block.block-right { margin-right: 0; } @media (max-width: 540px) { .scp-image-block.block-left, .scp-image-block.block-right { float: none; clear: both; margin-left: auto; margin-right: auto; } } /* Tables */ #page-content .wiki-content-table tr th { border: solid 1px var(--borderColor); color: var(--textColor); background-color: var(--tertiaryBackgroundColor); /* set border for table title */ } #page-content .wiki-content-table tr td { border: solid 1px var(--borderColor); background-color: var(--primaryBackgroundColor); /* set border for table content */ } #page-content .wiki-content-table tr:nth-child(2n-1) td { background-color: var(--secondaryBackgroundColor); } /* Footnotes (& Bibliography, but no one cares) */ a.footnoteref { line-height: 0.5rem; margin: 0 0.15em; } .hovertip { background-color: var(--primaryBackgroundColor) !important; border-radius: calc(var(--radius-adjust)*0.625); border: none !important; box-shadow: 0 0 5px 1px var(--shadow); padding: 0.3rem 0.35rem; } .hovertip a:not(.printuser.avatarhover a:first-child) { color: var(--textColor); padding: 0.1em; text-decoration: none; border-bottom: solid 2px var(--linkColor); } .footnote .f-heading { font-family: var(--header-font); } .footnote .f-footer, .equation .e-footer, .reference .r-footer { display: none; } .footnotes-footer, .bibitems { height: auto; padding: 0; margin: 1.5rem 0; } .footnotes-footer .title, .bibitems .title { font-family: var(--header-font); font-weight: bold; display: flex; align-items: center; text-align: center; border-bottom: none; margin: 0.5rem 0; color: var(--textColor); } .footnotes-footer .title::after, .bibitems .title::after { content: ""; flex-grow: 1; height: 0.1rem; margin: auto auto auto 0.65rem; background-color: var(--borderColor); } .footnote-footer, .bibitem { margin-bottom: 0.5rem; line-height: 1.4rem; height: auto; } #main-content #page-content .footnotes-footer .footnote-footer a[href="javascript:;"] { padding: 0.0625rem; } /*---- Outside #page-content elements ----*/ /* Selection */ ::selection { background: var(--selectionColor); color: var(--textColor); } /* .owindow */ #owindow-1 { padding-bottom: 0.25rem; } .owindow { background-color: var(--primaryBackgroundColor); border: none; box-sizing: border-box; border-radius: var(--radius-adjust); } .owindow .title { background-color: var(--secondaryBackgroundColor); border-radius: var(--radius-adjust) var(--radius-adjust) 0 0; } .owindow h1 { font-family: var(--header-font); font-weight: bold; color: var(--textColor); } .owindow a:not(.button-bar.modal-footer a, .printuser.avatarhover a:first-child) { color: var(--textColor); padding: 0.1em; text-decoration: none; border: none; border-bottom: solid 3px var(--linkColor); background-color: transparent; background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } .owindow a:not(.button-bar.modal-footer a, .printuser.avatarhover a:first-child):hover { background-size: 100% 100%; background-color: transparent; } /* modalbox */ #page-content #u-credit-view .modalbox, #page-content #u-credit-otherwise .modalbox { background: var(--primaryBackgroundColor); border-radius: var(--radius-adjust); border: none; box-shadow: none; } #page-content .modalbox hr { margin: 1.1rem; } #page-content .modalbox h2 span { margin: auto; } #page-content .modalbox h2 span::before { display: none; } /* Loading Screen */ .owindow.owait .content { background-image: none; padding-top: 0.25rem; } .owindow.owait .content::after { content: " "; display: block; width: 1.5rem; height: 1.5rem; margin: -0.9rem auto; margin-top: 0.75rem; border-radius: 50%; border: 0.3rem solid black; border-color: var(--linkColor) transparent; animation: loading 1.2s linear infinite; } @keyframes loading { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /*---- Bottom areas Grid-ification ----*/ #main-content { display: grid; grid-template-areas: "action-area-top action-area-top" "page-title page-title" "page-content page-content" "page-info-break page-info-break" "page-tags page-options-container" "page-tags page-options-container" "action-area action-area" "ad ad"; grid-template-columns: 1fr 1fr; } #action-area-top { grid-area: action-area-top; } #page-title { grid-area: page-title; } #page-content { grid-area: page-content; } #page-info-break { grid-area: page-info-break; } div.page-tags { grid-area: page-tags; } #page-options-container { grid-area: page-options-container; } #action-area { grid-area: action-area; } #wad-scp-wiki-below-content { grid-area: ad; } /*--------------*/ /* Tags */ #main-content div.page-tags { margin: 0 2.5rem 0.5rem 0; } #main-content div.page-tags::before { content: "tags"; color: var(--textColor-alt); font-size: 80%; display: block; padding: 0 0.25em; margin-bottom: 0.25rem; } #main-content .page-tags span { max-width: 100%; border-top: none; } #main-content .page-tags a { height: 0.9rem; line-height: 0.9rem; font-size: 0.8rem; margin: 0.15rem 0.225rem; padding: 0.25rem 0.1rem; color: var(--textColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; border-bottom: solid 0.1em var(--linkColor); transition: background-size var(--link-timing); } #main-content .page-tags a:hover { background-size: 100% 100%; text-decoration: none; } #main-content .page-tags a::before { content:"/"; display: inline-block; margin-right: 0.1em; color: var(--linkColor); transition: color var(--link-timing); } #main-content .page-tags a:hover::before { color: var(--textColor); } #page-info { color: var(--textColor-alt); margin: 0; font-size: 80%; } div.page-watch-options { font-size: 80%; margin: 0.325rem 0 0.75rem; line-height: 1.5em; } #page-options-container a:not(a#more-options-button), #action-area a:not(#wd-editor-toolbar-panel a, .printuser.avatarhover a:first-child, a.action-area-close.btn.btn-danger, .page-rate-widget-box a) { color: var(--textColor); text-decoration: none; border-bottom: solid 2px var(--linkColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } #page-options-container a { padding: 0.1em; } #page-options-container a:not(a#more-options-button):hover, #action-area a:not(#wd-editor-toolbar-panel a, .printuser.avatarhover a:first-child, a.action-area-close.btn.btn-danger, .page-rate-widget-box a):hover { background-size: 100% 100%; } .page-options-bottom { margin: 0; text-align: center; height: auto; line-height: normal; width: 100%; display: flex; flex-wrap: wrap; } #page-options-container .page-options-bottom > a { flex-grow: 1; flex-shrink: 1; min-width: 4rem; padding: 0.25rem; margin: 0.25rem 0.2rem; } #page-options-container .page-options-bottom > a#more-options-button, #action-area > a.action-area-close.btn.btn-danger, #owindow-1 .button-bar.modal-footer a { box-sizing: border-box; min-width: 100%; padding: 0.5rem 1rem; margin-right: 0; color: var(--textColor); background-color: var(--secondaryBackgroundColor); border: solid 2px var(--borderColor); border-radius: calc(var(--radius-adjust)*1.5); font-family: var(--body-font); transition: background-color var(--link-timing); } #page-options-container .page-options-bottom > a#more-options-button:hover, #action-area > a.action-area-close.btn.btn-danger:hover, #owindow-1 .button-bar.modal-footer a:hover { background-color: var(--tertiaryBackgroundColor); text-decoration: none; } #action-area > a.action-area-close.btn.btn-danger { min-width: unset; width: max-content; } /*-------------------*/ div.buttons input, input.button, button, file, a.button { margin: 0.1rem; padding: 0.275em 0.75em; cursor: pointer; text-decoration: none; background-color: var(--secondaryBackgroundColor); border: solid 2px var(--borderColor); border-radius: var(--radius-adjust); color: var(--textColor); transition: background-color var(--link-timing); } div.buttons input:hover, input.button:hover, button:hover, file:hover, a.button:hover { background-color: var(--tertiaryBackgroundColor); color: var(--textColor); } /*-------------------*/ form#edit-page-form { background-color: var(--primaryBackgroundColor); box-shadow: 0 0 3px 1px var(--shadow); padding: 1rem 2rem; border-radius: var(--radius-adjust); border: none; max-width: min(calc(var(--page-content-width) + 4rem), 100%); margin: 0 auto; } .wd-editor-toolbar-panel ul li:hover ul, .wd-editor-toolbar-panel ul li.sfhover ul { background-color: var(--primaryBackgroundColor); border: 2px solid var(--borderColor); } .wd-editor-toolbar-panel li.hseparator { background-color: var(--borderColor); } #edit-page-textarea, #edit-page-comments { color: var(--textColor); background-color: var(--primaryBackgroundColor); border: solid 1px var(--borderColor); } #edit-page-textarea { min-width: 100%; } .change-textarea-size { float: right; padding-right: 0; margin-top: 0.25rem; } .change-textarea-size a { background-color: var(--primaryBackgroundColor); border-width: 1px 1px 2px; border-top-color: var(--borderColor); border-left-color: var(--borderColor); border-right-color: var(--borderColor); padding: 3px; text-decoration: none; display: inline-block; width: 1.2rem; text-align: center; } #lock-info { background-color: var(--primaryBackgroundColor); border: none; padding: 1em; margin: 1em; border-radius: calc(var(--radius-adjust)*0.5); border-bottom: solid 0.2rem var(--linkColor); box-sizing: border-box; box-shadow: 0 1px 3px 0 var(--shadow); } table.form td div.sub, form div.sub { color: var(--textColor-alt); } div.buttons.alignleft { text-align: center; display: flex; flex-wrap: wrap; } .buttons.alignleft > * { flex-grow: 1; } /*-------------------*/ #who-rated-page-area br { display: none; } #who-rated-page-area>div { grid-gap: 0.25em; display: grid; grid-template-columns: repeat(4,1fr auto); grid-auto-flow: row; justify-items: end; max-width: var(--page-content-width); margin: 0 auto; } #who-rated-page-area>div span.printuser.avatarhover { display: inline-flex; flex-wrap: nowrap; justify-content: center; align-items: baseline; } #who-rated-page-area>div span:nth-child(3n-1) { margin-right: 2rem; } /*-------------------*/ #revision-list .pager .current { font-weight: bold; background-color: var(--tertiaryBackgroundColor); color: var(--textColor); border: 1px solid var(--borderColor); } #revision-list .pager .target, #revision-list table.page-history td a { border-top-color: var(--borderColor); border-left-color: var(--borderColor); border-right-color: var(--borderColor); } #revision-list table.page-history { width: 100%; border-collapse: collapse; } #revision-list table.page-history td { padding: 0.375em 0; } #revision-list table.page-history tr:nth-child(2n-1) td { background-color: var(--secondaryBackgroundColor); } #revision-list table.page-history tr:nth-child(2n) td { background-color: var(--primaryBackgroundColor); } #revision-list table.page-history tr td:nth-child(1) { width: 4em; min-width: max-content; text-align: center; } #revision-list table.page-history tr td:nth-child(2), #revision-list table.page-history tr td:nth-child(3) { width: 5em; min-width: max-content; text-align: center; } #revision-list table.page-history tr td:nth-child(4) { min-width: 4em; } #revision-list table.page-history tr td:nth-child(5) { padding: 0 0.5em; } #revision-list table.page-history tr td:nth-child(6) { min-width: 3.25em; } #revision-list table.page-history tr:first-child td:last-child { text-align: center; } /*-------------------*/ #action-area .page-source { border: solid 2px var(--borderColor); padding: 1.75em; font-size: 0.85rem; box-sizing: border-box; } /*-------------------*/ #action-area ul[style*="list-style: none"] { display: grid; grid-template-columns: repeat(3, 1fr); } /*---- FOOTER & LICENSE-AREA & FOOTER-BAR----*/ #footer { background-color: var(--primaryBackgroundColor); color: var(--textColor-alt); font-size: 65%; } #footer a { color: var(--textColor-alt); } #license-area { color: var(--textColor); background-color: var(--tertiaryBackgroundColor); border-top: solid 2px var(--borderColor); font-family: var(--header-font); font-size: 0.75rem; font-weight: bold; padding: 0.25rem; padding-bottom: 0.5rem; line-height: 0.8rem; text-align: center; } #license-area a { color: var(--textColor); border-bottom: solid 3px var(--linkColor); background-color: transparent; background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } #license-area a:hover { background-size: 100% 100%; text-decoration: none; } #footer-bar { background-color: var(--secondaryBackgroundColor); width: 100%; max-width: 100%; margin: 0; border-top: solid 2px var(--borderColor); padding: 0.5em 1em; box-sizing: border-box; } #footer-bar .units { box-sizing: border-box; margin: 0 auto; width: 100%; display: flex; } #footer-bar .units .unit { flex-grow: 1; } #footer-bar .units .unit h3 a { margin: 0 auto; color: var(--textColor); border-bottom: solid 2px var(--linkColor); background-image: linear-gradient(to bottom, var(--linkColor) 0%, var(--linkColor) 100%); background-size: 100% 0; background-position: 0 100%; background-repeat: no-repeat; transition: background-size var(--link-timing); } #footer-bar .units .unit h3 a:hover { background-size: 100% 100%; } /*---- CUSTOM SYNTAX ----*/ .monoboxical { border-radius: var(--radius-adjust); padding: 1em 1.5em; border-bottom: solid 0.25rem var(--linkColor); box-sizing: border-box; box-shadow: 0 1px 3px 0 var(--shadow); margin: 0.75rem 0.1rem; } .header-center { padding: 0; margin: 0; text-align: center; } .header-center h1 span, .header-center h2 span, .header-center h3 span, .header-center h4 span, .header-center h5 span, .header-center h6 span { margin-left: auto; margin-right: auto; } #page-content .header-center h1::before { content: ""; flex-grow: 1; height: 0.1rem; margin: auto 0.375rem auto auto; background-color: var(--borderColor); } /*---- MOBILE QUERY ----*/ @media only screen and (max-width: 767px) { :root { --link-timing: .05s ease-out; } #page-content div[class*=top-bar] ul li ul::after { left: calc(1% + 9vw); } #page-content div[class*=top-bar]>ul:first-of-type>li:last-of-type>ul::after { right: calc(1% + 9vw); left: auto; } .meta-title { font-size: 200%; } #main-content { padding: 1em 1.5em; grid-template-areas: "action-area-top action-area-top" "page-title page-title" "page-content page-content" "page-tags page-tags" "page-info-break page-info-break" "page-options-container page-options-container" "action-area action-area" "ad ad"; } #main-content div.page-tags { margin: 0.5rem 0 1rem; width: 100%; } #page-options-container { margin-top: 2.5rem; margin-bottom: 2rem; } #page-info, div.page-watch-options { text-align: left; } #who-rated-page-area>div { grid-template-columns: repeat(2,1fr auto); } #who-rated-page-area>div span:nth-child(3n-1) { margin-right: 1rem; } #revision-list table.page-history tr td:nth-child(5) .printuser.avatarhover a:last-of-type { display: none; } #revision-list table.page-history tr td:nth-child(5) { width: max-content!important; } #action-area ul[style*="list-style: none"] { grid-template-columns: repeat(2, 1fr); } }
Mã vật thể: SCP-120-VN
Phân loại: Safe
Quy trình Quản thúc Đặc biệt: SCP-120-VN được đặt trong một tủ khóa tại kho lưu trữ dị thể thuộc Điểm ██. Nhân sự có nhu cầu sử dụng SCP-120-VN cần gửi đơn yêu cầu tới Tiến sĩ Lê Văn Đức.
Mô tả: SCP-120-VN là một bức tranh được vẽ bằng bút màu trên khổ giấy A4. Dị tính của nó sẽ kích hoạt khi có sự hiện diện của một bệnh nhân nan y. Khi này, đối tượng bắt đầu trải qua cảm giác nhẹ nhõm và phấn khích, đồng thời quên đi nỗi đau buồn gây ra bởi căn bệnh tương ứng. Tác dụng của SCP-120-VN sẽ kéo dài cho tới khi cá nhân chịu ảnh hưởng từ nó đã qua đời.
Trong một số trường hợp, SCP-120-VN có thể tạm thời ngăn chặn sự tiến triển của căn bệnh mà đối tượng sử dụng nó đang mắc phải. Thời hạn của đặc tính này hoàn toàn phụ thuộc vào điều kiện sống thực tế và tình trạng hiện thời của bệnh nhân.
Bổ sung:
Lời nói đầu: Dữ liệu sau đây được trích dẫn từ một cuốn sổ mà Tiến sĩ Lê Văn Đức đã chuyển nhượng tới Tổ chức cùng với SCP-120-VN vào ngày 1 tháng 7 năm 2022.
Nhật ký Quan sát Phàm giới #87
Đối tượng: Nguyễn Trúc Thảo
Tuổi: 8— -- ——
Ngày 15 tháng 5 năm 2022
Thời tiết: Nắng
Tình trạng sức khỏe: Trung bình
Tâm trạng: Trung lập
“Cậu đang làm gì thế?”
“Tớ vẽ.”
“Vẽ gì?”
“Thiên đường.”
“Đâu? Cho tớ xem với.”
![]()
“Sao lại trống vắng thế này?”
“Tớ chưa có ý tưởng gì cả.”
“Nếu là thiên đường, tớ nghĩ sẽ phải có hoa bướm các thứ.”
“Ừm, cũng đúng.”
…
“Em có gì muốn hỏi sao?”
“Cô… có biết thiên đường là nơi như thế nào không ạ?”
“Sao tự nhiên em lại hỏi vậy?”
“Em đang vẽ một bức tranh về thiên đường.”
“À, có thể cho cô xem được không?”
![]()
“Để coi… Thiên đường thì sẽ có thiên thần bay qua bay lại.”
“Dạ phải, em sẽ vẽ thêm vào.”
…
“Sao vậy con?”
“Mẹ có biết thiên đường là nơi như thế nào không ạ?”
“Để làm gì?”
“Dạ, con đang vẽ một bức tranh về thiên đường.”
![]()
“Mẹ chịu, con đã uống thuốc chưa?”
“Con quên mất.”
“Lại quên, đã dặn bao nhiêu lần rồi.”
“Con xin lỗi mẹ.”
“Mẹ đi làm đã mệt mỏi lắm rồi, hơi đâu mà cứ suốt ngày nhắc con mãi được?”
“Con hứa sẽ không quên nữa.”
“Đi ngủ sớm đi, mai còn có lịch hẹn với bác sĩ đấy.”
Ngày 16 tháng 5 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Trung bình
Tâm trạng: Chán nản
Tiếng khóc thút thít vang lên khắp căn phòng. Vị bác sĩ ái ngại nhìn người đàn bà khốn khổ trước mặt.
“Trong những năm tháng cuối cùng này, tôi nghĩ chị nên để con bé được tự do hơn. Chị có thể cho nó nghỉ học, đưa nó đi khám phá thiên nhiên, sắm một vài món đồ chơi và quần áo, chẳng hạn thế.”
“Tôi không biết nên làm thế nào, nó chả có hứng thú gì với mấy thứ đấy.”
“Nó chỉ là một đứa trẻ thôi mà, ắt phải có gì đó…”
“Thưa bác sĩ.”
Thảo bước tới rồi giơ bức tranh nguệch ngoạc trong tay lên.
“Hả?”
“Bác có biết thiên đường là nơi như thế nào không ạ?”
…
Trên con đường đẫm nước mưa, Thảo vừa đi vừa ngẫm nghĩ điều gì đó. Hình như những đám mây đen kịt trên bầu trời lại là một khung cảnh rất cuốn hút đối với cô bé. Cô có thể dành cả ngày chỉ để dạo quanh công viên và ngắm nhìn sự chuyển biến liên hồi của thời tiết tháng Năm.
Trong làn mưa nặng hạt, một vài bóng người hiện lên trong tầm mắt Thảo. Cùng với đó, cô còn nghe thấy cả những tiếng chửi thề chói tai phát ra từ đám người ấy.
“Mày chơi kiểu gì để hết sạch tiền của bố rồi?”
“Tao biết làm sao được, lúc đầu cứ tưởng là thắng mà ai ngờ…”
Thảo bước đến trước mặt những kẻ ấy.
“Hửm?”
“Các anh không có ô mà không sợ ướt sao?”
Tên du côn giơ chân đá vào bụng cô bé tội nghiệp. Cô gục xuống mặt đất rồi ôm bụng trong đau đớn. Thấy vậy, hắn giật cái cặp sau lưng cô ra rồi bắt đầu lục lọi.
“Mày làm cái quái gì thế?”
“Con bé ăn mặc sang chảnh như này nên chắc cũng được bố mẹ cho nhiều tiền lắm đây.”
“Thôi, mày hít nhiều quá rồi đấy.”
“Rén thì câm.”
Tên ngáo đá lục đến từng ngăn cặp một nhưng lại chẳng tìm thấy gì ngoài vài tờ giấy. Hắn điên tiết lên rồi ném tất cả xuống đất, không quên giẫm thêm một vài phát cho hả dạ. Sau cùng, hắn bỏ đi, để lại cô gái nhỏ nằm ho sặc sụa trên nền gạch ẩm ướt.
Thảo cố gượng dậy rồi chới với bò đến gần đống giấy nhàu nát. Cô bới đến từng tờ một, mặc cho những vệt máu đỏ thẫm đang chảy ra từ miệng mình.
Bức tranh đã biến mất, Thảo vẫn cố tìm trong vô vọng. Tiếng khóc của cô lớn dần, lấn át đi cả những âm thanh nặng nề từ cơn mưa.
“Em đang tìm thứ này à?”
Một người phụ nữ xuất hiện trước mặt Thảo, trên tay cô là bức tranh tưởng chừng đã thất lạc.
“Dạ… đúng ạ.”
“Trả em nè.”
Thảo ôm bức tranh vào lòng. Kỳ lạ thay, nó không bị ướt và cũng chẳng có lấy một vết nhăn.
“Chị nghĩ là bức vẽ ấy đáng giá với em lắm nên đã bảo vệ cho nó."
"Dạ, em cảm ơn."
Máu không còn chảy nữa, Thảo bỗng cảm thấy hạnh phúc đến lạ thường. Người phụ nữ cúi xuống rồi dịu dàng xoa đầu cô bé.
"Em tên là gì?"
"Thảo ạ, Nguyễn Trúc Thảo."
"Chị là Thần Mưa, chị được sinh ra trong những cơn mưa để cân bằng lại sự hòa hợp giữa niềm vui và nỗi buồn."
"Thế là sao ạ?"
"Mưa thì thường cho con người ta cảm giác chán nản đúng không? Mà chán nản nhiều quá cũng đâu có tốt, chị có nghĩa vụ phải tạo ra niềm vui cho nhân gian để đảm bảo rằng thế giới này sẽ luôn luôn ở trạng thái cân bằng giữa hai thái cực cảm xúc."
"À… em không hiểu lắm."
"Sao cũng được, em có muốn đi chơi với chị không?"
"Mẹ đã dặn em không được đi chơi với người lạ."
"Nếu không có chị, bức tranh ấy của em đã bị hỏng từ lúc nãy rồi đấy."
"Nhưng mà… chỉ một lúc thôi chị nhé?""Được rồi, mình đi nào."
Thần Mưa búng tay, những hạt mưa xung quanh bỗng dừng lại giữa không trung. Chúng liên kết với nhau để tạo thành một làn sóng nhỏ. Thần Mưa bước lên trên con sóng ấy, Thảo cũng loạng choạng đi theo.
"Bám chắc vào nhé."
Làn sóng nhấc bổng cả hai người lên trời cao. Thần Mưa nắm chặt lấy tay Thảo khi thấy cô bé đang co ro vì sợ hãi.
"Đừng lo, chị là Thần mà, chị sẽ không để em ngã xuống đâu."
"Chị nói thật nhé?"
"Chị đùa đấy, rơi hay không do Trời quyết định, chị chỉ là Thần mọn mà thôi."
Thảo la lớn giữa không trung. Khi này, con sóng đã đẩy cả hai người lên đến tầm mây. Xung quanh, sấm sét đánh liên hồi, Thần Mưa cười khoái chí như đang chơi thể thao mạo hiểm trong khi cô bé nhỏ nhắn đằng sau chỉ biết ôm chặt lấy Người.
"Cho em xuống, em chưa muốn chết!"
"Không phải sợ, nếu em chết thì chị sẽ bị đuổi việc mất."
"Em không tin chị nữa đâu."
"Tùy em thôi."
Mây đen khuất dần, cả hai người đã vượt qua cả giới hạn độ cao của mây.
"Khó thở-"
"Khó thở hả? Em có muốn dùng bộ đồ lặn siêu sang mà chị đã bỏ tiền túi ra để mua cho em không?"
"Chị đừng đùa kiểu ấy nữa."
"Đùa vui thôi mà, chị là Thần nên em muốn bao nhiêu oxi để thở cũng được hết."
"Nghe không hợp lý lắm chị nhỉ?"
"Trên đời có cái gì hợp lý đâu em, nhìn sau lưng kìa."
Phía trên những đám mây đen kịt che khuất cả trần gian, Mặt Trời vẫn tỏa nắng rực rỡ. Thế giới giờ chỉ còn có hai nửa, bên dưới là một đại dương mây trắng trải dài đến vô tận, còn bên trên lại là một khoảng không sâu thẳm được tô điểm bởi ánh Mặt Trời.
"Chỉ vừa mới lúc nãy vẫn còn mưa giông bão tố đấy thôi, vậy mà giờ chúng ta đã ở ngay dưới những tia nắng chói chang này rồi, thật không hợp lý chút nào nhỉ?"
"Dạ…"
"Ngồi xuống đi em, lấy tranh ra vẽ tiếp đi."
"Khung cảnh này đẹp thật đấy, nhưng trong này em đã vẽ xong Mặt Trời và mây rồi chị ạ."
"Phải ha."
"Với lại, đến giờ em phải về rồi, chắc là mẹ đang mong ngóng em lắm."
"Không phải lo, chị đã dừng thời gian rồi."
Thảo nhìn lại chiếc đồng hồ đeo tay. Kim đồng hồ đúng thật là đã ngừng di chuyển.
"Làm sao mà…"
"Em có muốn ở lại chơi với chị thêm một xíu nữa không?"
"Để coi…"
"Một tí ti thôi."
"Ưm…"
"Đi mà."
"Dạ vâng, một tí thôi ạ."
"Ok, mình chơi nhé."
Thần Mưa cúi xuống rồi chạm tay lên bề mặt mây. Hơi nước bắt đầu tích tụ vào nhau để tạo ra những hình thù to lớn. Khi ấy, một bộ áo giáp cùng kiếm và khiên làm bằng nước xuất hiện trước mặt Thảo.
"Thế này là sao ạ?"
"Cầm kiếm lên chém quái vật đi dũng sĩ, mỗi một con quái gục xuống là một cái kẹo thưởng cho em nhé."
"Trò này… đâu có hợp với con gái."
"Thế để chị giảm sức mạnh của mấy con quái đi vậy."
"Ý em là, trò đấu đá này chỉ dành cho con trai thôi chứ."
"Em không thích à? Chị thì thích lắm."
"Chơi cho chị vui vậy."
Thảo vung kiếm vào một con quái vật, nó tan thành bong bóng rồi bay đi mất.
"Ơ, cũng vui đấy chứ."
"Thấy chưa? Nói rồi mà."
Kẻ thù ồ ạt lao tới, Thảo chém loạn xạ về phía trước, bong bóng bay đi khắp nơi trong khoảng trời rộng lớn.
"Cẩn thận không ngã đấy em."
Trong suốt một quãng thời gian dài, đây là lần hiếm hoi Thảo không còn cảm thấy bị bó buộc bởi căn bệnh quái ác kia nữa. Cô bé giờ đã có thể tự do chạy nhảy như bao đứa trẻ khác nhờ có sự hỗ trợ của phép thuật.
"Chị tuyệt thật đấy chị Thần Mưa!"
"Ngươi đã giết được kha khá đồng bọn của ta rồi đấy nhỉ?"
Một giọng nói vang lên khiến dũng sĩ nhỏ lạnh sống lưng. Từ bên dưới những đám mây, một con quái vật khổng lồ bò lên, nó chính là trùm cuối của trò chơi.
"Phần này có nằm trong kịch bản không chị?"
Thần Mưa đã biến mất.
"Chị đùa không vui đâu nhé."
Không có câu trả lời nào.
Con trùm rống lên một âm thanh đáng sợ rồi lao tới vị trí của Thảo. Cô bé còn chưa kịp phản ứng đã bị nó nuốt trọn vào bụng. Bên trong cơ thể của con quái vật ấy ngập tràn nước, Thảo có vùng vẫy đến mấy cũng không thể thoát ra được. Sau một hồi, ai đó cầm lấy tay cô bé rồi kéo cô lên khỏi mặt nước.
"Em có sao không?"
"Nước gì mặn thế này?"
"Nước biển đấy em, chào mừng đến với Nha Trang."
"Nha Trang? Em đang ở Phú Thọ cơ mà?"
"Đường hàng không nó nhanh thế đấy em ạ."
"Nhưng…"
"Hè rồi, đi chơi cho khuây khỏa, ở nhà mãi làm cái chi?"
Sóng biển ập vào chân khiến Thảo giật mình. Cô bé cúi xuống rồi xoa tay lên bãi cát nóng mịn, đây đúng thực là biển rồi. Cô đưa tầm mắt của mình ra ngoài khơi, không khí nắng nóng và oi bức lúc ấy đã khiến cho làn nước man mát kia càng thêm phần cuốn hút.
"…Chị thay đồ từ bao giờ thế?"
"Em thấy bộ áo tắm này có hợp với chị không?"
"Nhưng chị là Thần cơ mà?"
"Thế kỉ 21 rồi, ai quan tâm cơ chứ."
"Em cần kem chống nắng."
"Không đâu, phép thuật đã là loại kem xịn nhất dành cho em rồi."
"Tại sao xung quanh lại không có ai ạ?"
"Khung giờ vàng."
"…"
"Mình tắm luôn nhé?"
Thần Mưa lấy ra một chiếc áo phao rồi trùm nó lên người Thảo. Người nắm tay cô bé rồi từ từ dẫn cô ra biển.
"Không có cá mập đâu."
"Em chưa nói gì mà."
"Chị dặn trước cho chắc."
Cảnh vật dường như đã ngưng đọng lại, chỉ có sóng biển và niềm vui là còn phấp phới, cuộn trào trong gió. Trong suốt khoảng thời gian ở cùng nhau, hai người đã học bơi, đánh vài trận bóng chuyền và thử lướt ván cho tới khi hoàng hôn đã dần buông xuống.
"Lên bờ đi em, chiều tà rồi."
"Sao nhanh thế chị?"
"Chị tua đấy, lên uống nước dừa nè."
Thảo chập chững bước đi để thoát ra khỏi vòng tay của sóng biển. Không biết từ bao giờ, một bụi dừa đã mọc ngay trên bãi cát.
"Có gì đó sai sai chị nhỉ?"
"Sao em?"
"Em nhớ là dừa mọc trên cây mà."
"Đâu có, dừa mọc như trái dưa hấu ấy."
"Chị lại dùng phép thuật tiếp đúng không?"
"Một xíu."
Thảo ngồi xuống cạnh người bạn mới của cô.
"Hôm nay em có vui không?"
"Rất vui ạ."
"Thế thì tốt rồi."
Thảo nhìn những tia nắng đang khuất dần sau đường chân trời. Chỉ một quãng thời gian ngắn ngủi vừa qua đã là quá đủ để làm cô bé hạnh phúc và mãn nguyện hơn với cuộc đời. Dù vậy, dường như cô đã bỏ lỡ một thứ gì đó, cô đã quá chú tâm vào niềm vui chốc lát và vô tình quên đi nguồn nhiên liệu sống trước kia của mình.
"Chị Thần Mưa, chị có biết thiên đường là nơi như thế nào không?"
Những hạt mưa nhẹ rơi trên mái tóc của Thảo. Cô nhìn xung quanh, bãi biển không còn ở đó nữa, cô đã trở về với thực tại. Cơn mưa chưa tạnh, sự tò mò của cô bé chưa nguôi, cô vẫn muốn gặp lại Thần Mưa thêm một lần nữa.
"Thảo! Con bé này."
Mẹ cô hớt hả chạy tới từ đằng xa.
"Con có biết mẹ đã phải đi tìm con khắp nơi không hả?"
"Con xin lỗi…"
"Ô đâu? Ướt hết quần áo rồi."
Thảo giật nảy người, cô bé bỗng thắc mắc về số phận của bức vẽ thiên đường kia. Cô nhìn xuống dưới, nó đang ở ngay trước mặt cô, không nhàu nát, không ướt sũng.
Thần Mưa có vẻ không phải là ảo mộng.
Ngày 20 tháng 5 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Tạm ổn
Tâm trạng: Vui vẻ, háo hức
Cầm theo bức tranh của mình, Thảo chạy vội đến công viên. Cô đứng dưới gốc cây với hy vọng rằng Thần Mưa sẽ lại xuất hiện. Cô hiểu rằng Người vẫn còn phải giúp đỡ những đứa trẻ khác chứ không riêng gì cô. Dù vậy, trong lòng Thảo vẫn nuôi một niềm tin mãnh liệt rằng Người sẽ đến để giải đáp thắc mắc của cô về sự tồn tại của thiên đường, chỉ cần thế thôi đã là đủ để cô yên lòng.
Thần Mưa không xuất hiện.
Ngày 22 tháng 5 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Tạm ổn
Tâm trạng: Vui vẻ, háo hức
Một ngày mưa khác đã tới. Thảo tiếp tục ra công viên cùng với bức tranh kia. Cô đã đứng đợi cả ngày nhưng vẫn không thấy Thần Mưa xuất hiện.
Ngày 25 tháng 5 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Trung bình
Tâm trạng: Vui vẻ, háo hức
Những hạt mưa đọng lại trên khung cửa sổ đã tiếp thêm năng lượng cho sự nhiệt huyết và trí tò mò của Thảo. Cô bé lại chạy ra công viên để tiếp tục chờ đợi. Tối hôm ấy, cô về nhà trong tình trạng kiệt sức, khó thở. Cô đã phải nhập viện ngay lúc nửa đêm.
Thần Mưa không xuất hiện.
Ngày 27 tháng 5 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Trung bình
Tâm trạng: Vui vẻ, háo hức
Thảo xin phép được rời khỏi bệnh viện để hít thở khí trời. Cô cầm theo ô và bức tranh của mình rồi ra công viên, tiếp tục đứng đợi.
Thần Mưa không xuất hiện.
Ngày 29 tháng 5 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Trung bình
Tâm trạng: Vui vẻ, háo hức
Thảo tiếp tục chờ đợi. Thần Mưa vẫn không xuất hiện.
Ngày 30 tháng 5 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Hơi yếu
Tâm trạng: Vui vẻ, háo hức
Thảo đã bị cấm không được ra khỏi phòng bệnh. Cô đành đợi lúc người lớn mất cảnh giác rồi mới lẻn ra ngoài.
Ngày hôm ấy trôi qua như bao ngày khác.
Ngày 1 tháng 6 năm 2022
Thời tiết: Mưa
Tình trạng sức khỏe: Yếu
Tâm trạng: Vui vẻ, háo hức
Dù đã bị cảnh cáo, Thảo vẫn tiếp tục trốn ra công viên. Do không còn đủ sức để chạy, cô bé đã suýt chút nữa bị bắt gặp. Ra đến nơi, cô ngồi phịch xuống trên ghế đá. Xung quanh không có một ai cả, chiếc ô duy nhất của Thảo cũng đã bị gió cuốn phăng đi trong một khoảnh khắc bất cẩn.
"Chị Thần Mưa… chị đang ở đâu cơ chứ?"
Ngọn gió quái ác vẫn chưa buông tha cho Thảo, nó thổi bay đi bức tranh trong tay cô bé. Cô gắng sức đuổi theo, cho tới khi bắt được nó thì cô cũng đã ngã gục xuống.
"Sao mà… khó thở thế này?"
Thảo ho sặc sụa, máu bắt đầu chảy ra. Cô bé đã không còn có thể đứng dậy được nữa. Cô nằm ngửa ra để ngắm nhìn đám mây đen kịt trên trời.
"Giá như… em được lên đó với chị thêm một lần nữa."
Thảo ôm chặt bức tranh. Vào khoảnh khắc cuối cùng của cuộc đời, cô bé vẫn cảm thấy hạnh phúc đến kỳ lạ. Cô chỉ nuối tiếc duy nhất một điều, đó là chưa được tận mắt ngắm nhìn thiên đường.
"Thảo?"
Một bóng dáng quen thuộc hiện lên trong bầu không khí nặng nề của cơn mưa. Người cúi xuống, khóc nức nở rồi đưa tay vuốt nhẹ mái tóc của Thảo.
"Chị Thần Mưa, cuối cùng cũng được gặp lại chị rồi… Em vui lắm."
"Thảo à, chị xin lỗi, là lỗi của chị."
"Chị đã làm gì sai đâu chứ. Nếu có trách thì hãy trách ông Trời đã quá tàn nhẫn với em."
"Nếu ngày hôm ấy chị đưa em về nhà, có lẽ em sẽ không phải từ giã thế giới này chỉ vì những giấc mộng hão huyền do chị tạo dựng."
"Không đâu chị ạ, em đã rất vui, vui lắm luôn ấy. Em muốn gặp lại chị lần nữa, em đã đợi những cơn mưa đi tới để có thể được thấy chị."
"Thật ra, chị không xuất hiện vào những ngày mưa, chẳng bao giờ là như thế cả."
"Không phải chị là Thần Mưa hay sao?"
"Tất cả đều là do chị đã lừa dối em. Chị không phải Thần Mưa, chị là Thần Chết."
"…"
"Nghĩa vụ của chị là cân bằng giữa niềm vui của sự sống và nỗi đau thương của cái chết. Chị sẽ chỉ xuất hiện vào thời khắc thập tử nhất sinh của con người mà thôi."
"…"
"Chị xin lỗi, chị xin lỗi rất nhiều, chị đã cố cảnh báo em suốt mấy ngày vừa qua nhưng không thể."
Thần Chết ôm chặt lấy Thảo. Cơ thể của cô bé sáng dần lên, linh hồn của cô giờ đã nghe theo tiếng gọi của Thượng đế.
"Nếu chị thật sự là Thần Chết, vậy chị có thể nói cho em biết một điều được không?"
"Điều gì cũng được, chị sẵn lòng."
"Thiên đường là nơi như thế nào ạ?"
"Thiên đường tồn tại đan xen với nhân thế, nó là đại diện cho hạnh phúc, niềm vui và trí tò mò của con người. Nó còn là biểu tượng của một thế giới nơi mà những đứa trẻ như em sẽ không còn phải trải qua nỗi đau hay sự mất mát nữa. Thiên đường… chính là nụ cười của em."
…
Trời tạnh mưa. Thảo nằm một mình trên nền đất ẩm, cơ thể của cô bé giờ đã buốt lạnh.
Không còn bức tranh, cũng không còn Thần Chết nữa, chỉ còn một nụ cười đọng lại trên khuôn mặt ngây thơ ấy.
Ghi chú của Tiến sĩ Đức: "Ung thư gan giai đoạn cuối" - Những câu từ lạnh buốt ấy lại chính là món quà đầu tiên vào ngày sinh nhật lần thứ 46 của tôi. Đợi đến khi trời đã trở khuya, tôi ngồi một mình trong phòng làm việc, trên bàn là một cái bút và vài tờ giấy. Tôi bấm bút, bề mặt mảnh giấy trắng dần hiện lên dòng chữ nguệch ngoạc, ghi lại những nguyện vọng chưa thành, những công việc còn dang dở và cả những kỷ niệm quý giá của thời ấu thơ. Người ta có thể gọi nó là "thư tuyệt mệnh", "di thư", hay đại loại thế. Tôi lại không nghĩ như vậy, tất cả những gì tôi viết chỉ đơn giản là một vài dòng cảm xúc cuối cùng mà thôi, không màu mè, không đặc sắc, không có ý nghĩa gì cả. Vào khoảnh khắc ấy, Người đã xuất hiện bên khung cửa sổ. Tôi không nói gì mà chỉ lẳng lặng mở khóa cửa. Người bước vào, chúng tôi ngồi xuống cạnh nhau, tôi chẳng nhớ khi ấy Người đã lắng nghe được những gì qua vài lời thổ lộ của tôi nữa. Sau cùng, Người để lại cho tôi một bức vẽ - thứ mà các vị vẫn gọi là SCP-120-VN, trước khi khuất bóng dần dưới ánh trăng mờ ảo. Trong suốt khoảng thời gian ấy, tôi như người mất hồn, song cũng cố với tay mà cầm bức tranh ấy lên. Không biết do Người đã bất cẩn mà để quên hay là cố ý, nhưng bên dưới bức vẽ lại là một cuốn sổ nhỏ. Tôi đã định đọc nó, cho tới khi tiếng mở cửa sau lưng làm tôi giật mình. Đứa con nhỏ tuổi của tôi chạy vào phòng, giọng nói, khuôn mặt, và cả tiếng bước chân của nó bỗng dưng lại trở nên vô cùng ngọt ngào và êm dịu đối với tôi. Vậy là, tôi ôm chặt lấy nó và khóc lóc. Tờ "di thư" trên mặt bàn khi nãy giờ đã nằm gọn trong sọt rác.

Ảnh chụp SCP-120-VN vào lần phát hiện đầu tiên.