これは、ラッツネストカノンの記事で使用するために設計された、渦巻く灰テーマです。
このテーマはCroquemboucheによって製作され、2020年9月に
faminepulseがアメリカ、オレゴン州の空を例えたことにちなんで名付けられました。1
ヘッダーは、1分ごとに昼/夜のサイクルを繰り返します。夜を3回迎えるごとに、一時的に霧は消失します。
使い方
このテーマを記事に使用するには、Black HighlighterとオプションでBHLダークサイドバーをincludeして下さい:
[[include :scp-jp:theme:black-highlighter-theme]]
[[include :scp-jp:component:bhl-dark-sidebar]]
[[include :scp-jp:theme:swirling-ashes]]
ヘッダーテキストを調整するには:
[[module CSS]]
:root {
--header-title: "SCP財団";
--header-subtitle: "確保、収容、保護";
}
[[/module]]
テーマカラー
ソースコード
/* - == === BHL VARIABLES === == - */ /* This is a BHL theme, which is configuration-based, so the root element * contains variables that will affect the whole theme */ :root { /* S-CSS-P integration */ --theme-base: "black-highlighter"; --theme-id: "swirling-ashes"; --theme-name: "Swirling Ashes Theme"; /* Colours */ --dark-gray-monochrome: 26, 24, 26; --swatch-topmenu-bg-color: var(--dark-gray-monochrome); --dark-accent: 63, 9, 143; --medium-accent: 81, 13, 181; --bright-accent: 105, 49, 186; --pale-accent: 128, 80, 200; /* Sky */ --sky-at-dawn: 236, 112, 99; --sky-at-morning: 174, 214, 241; --sky-at-daytime: 249, 231, 159; --sky-at-evening: 248, 196, 113; --sky-at-dusk: 140, 50, 70; --sky-at-night: 50, 40, 67; --sky-length: 15; --sky-time: 60s; /* Header adjustments */ --header-title: "Rat's Nest"; --header-subtitle: "終わりを始めよう"; /* Delete the default header background */ --gradient-header: linear-gradient(transparent, transparent); --diagonal-stripes: linear-gradient(transparent, transparent); } /* - == === HEADER BACKGROUNDS === == - */ /* The header is made up of a million different stacked backgrounds. * Instead of fucking about with z-index, I've added backgrounds to * the ::before and ::after of various full-page elements in their * natural stacking order. */ /* The following pseudoelements each contain a different part of the * header background. They need to be drawn precisely over the header * and made unclickable so they don't interfere with the links up there. * They appear on the page in this order, so they'll also be drawn on * top of each other in this order. */ body::before, div#container-wrap-wrap::before, div#container-wrap::before, div#container-wrap-wrap::after, body::after { content: ""; position: absolute; height: var(--header-height-on-desktop); width: 100%; top: 0; left: 0; pointer-events: none; } /* The sky, which loops through a series of colours to evoke the * unstoppable passing of time */ body::before { background: linear-gradient(to top, rgb(var(--sky-at-morning)) 0%, rgb(var(--sky-at-morning)) 11%, rgb(var(--sky-at-daytime)) 22%, rgb(var(--sky-at-daytime)) 33%, rgb(var(--sky-at-evening)) 44%, rgb(var(--sky-at-dusk)) 55%, rgb(var(--sky-at-night)) 66%, rgb(var(--sky-at-night)) 77%, rgb(var(--sky-at-dawn)) 88%, rgb(var(--sky-at-morning)) 100%); background-size: 100% calc(var(--header-height-on-desktop) * var(--sky-length)); -webkit-animation: sky linear var(--sky-time) infinite; animation: sky linear var(--sky-time) infinite; } @-webkit-keyframes sky { from { background-position: 0 0; } to { background-position: 0 calc(var(--header-height-on-desktop) * var(--sky-length)); } } @keyframes sky { from { background-position: 0 0; } to { background-position: 0 calc(var(--header-height-on-desktop) * var(--sky-length)); } } /* The city skyline */ div#container-wrap-wrap::before { background: url("https://scp-jp-storage.wdfiles.com/local--files/file%3A7657035-14-6oib/skyline.png"); background-size: auto var(--header-height-on-desktop); } /* Two backgrounds: a white and blurred shine on the buildings, * taken from a brightness threshold of the original skyline * image; and a white-to-transparent gradient that uses the * original skyline image as a clipping mask. These appear in * the day and fade for the night to represent the sun's * reflection on the buildings. */ div#container-wrap::before { background: url("https://scp-jp-storage.wdfiles.com/local--files/file%3A7657035-16-g9cc/skyline-whitewash.png"), url("https://scp-jp-storage.wdfiles.com/local--files/file%3A7657035-15-tbt4/skyline-highlight.png"); background-size: auto var(--header-height-on-desktop); -webkit-animation: shine ease-in-out var(--sky-time) infinite; animation: shine ease-in-out var(--sky-time) infinite; } @-webkit-keyframes shine { 0%, 40%, 100% { opacity: 0.2; } 55%, 77% { opacity: 0; } } @keyframes shine { 0%, 40%, 100% { opacity: 0.2; } 55%, 77% { opacity: 0; } } /* The final two pseudoelements contain the ashes: clouds that * roll past the city at ground level. Two elements are needed * because the two layers of clouds have different widths and * move at different speeds. * The fade animation affords an unobscured view of the city * every 3rd night. */ div#container-wrap-wrap::after, body::after { background-size: var(--ashes-width) var(--header-height-on-desktop); background-repeat: repeat-x; -webkit-animation: ashes-move linear var(--ashes-move-duration), ashes-fade ease calc(var(--sky-time) * 3); animation: ashes-move linear var(--ashes-move-duration), ashes-fade ease calc(var(--sky-time) * 3); -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; -webkit-animation-fill-mode: both; animation-fill-mode: both; } div#container-wrap-wrap::after { background-image: url("https://scp-jp-storage.wdfiles.com/local--files/file%3A7657035-17-mwdr/ashes-large.png"); --ashes-move-duration: 27s; --ashes-width: 500px; --ashes-opacity: 0.5; } body::after { background-image: url("https://scp-jp-storage.wdfiles.com/local--files/file%3A7657035-18-aj3z/ashes-small.png"); --ashes-move-duration: 20s; --ashes-width: 800px; --ashes-opacity: 0.4; } @-webkit-keyframes ashes-move { from { background-position: 0 0; } to { background-position: var(--ashes-width) 0; } } @keyframes ashes-move { from { background-position: 0 0; } to { background-position: var(--ashes-width) 0; } } @-webkit-keyframes ashes-fade { 0%, 85%, 96%, 100% { opacity: var(--ashes-opacity); } 88.66%, 92.33% { opacity: 0.1; } } @keyframes ashes-fade { 0%, 85%, 96%, 100% { opacity: var(--ashes-opacity); } 88.66%, 92.33% { opacity: 0.1; } } /* - == === BODY BACKGROUNDS === == - */ /* This psuedolement contains the faint purple patchy smog on the page * just below the header, as a thematic transition from dark to light. */ #content-wrap { position: relative; } #content-wrap::before { content: ""; position: absolute; height: 100%; width: 100%; top: 0; left: 0; background-repeat: repeat-x; pointer-events: none; background-image: url("https://scp-jp-storage.wdfiles.com/local--files/file%3A7657035-19-6npd/purple-smoke.png"); opacity: 0.2; } /* - == === MISCELLANEOUS === == - */ /* Add a pinch of extra contrast to the login info */ #login-status { background: rgba(var(--dark-accent), 0.3); padding-left: 0.5rem; } /* Respect user motion settings */ @media screen and (prefers-reduced-motion: reduce) { body::before, div#container-wrap::before, div#container-wrap-wrap::after, body::after { -webkit-animation: none; animation: none; } }
Sidebar Code:
/* - == === BHL VARIABLES === == - */ /* This is a BHL theme, which is configuration-based, so the root element * contains variables that will affect the whole theme */ :root { /* S-CSS-P integration */ --theme-base: "black-highlighter"; --theme-id: "swirling-ashes"; --theme-name: "Swirling Ashes Theme"; /* Colours */ --dark-gray-monochrome: 26, 24, 26; --swatch-topmenu-bg-color: var(--dark-gray-monochrome); --dark-accent: 63, 9, 143; --medium-accent: 81, 13, 181; --bright-accent: 105, 49, 186; --pale-accent: 128, 80, 200; /* Sky */ --sky-at-dawn: 236, 112, 99; --sky-at-morning: 174, 214, 241; --sky-at-daytime: 249, 231, 159; --sky-at-evening: 248, 196, 113; --sky-at-dusk: 140, 50, 70; --sky-at-night: 50, 40, 67; --sky-length: 15; --sky-time: 60s; /* Header adjustments */ --header-title: "Rat's Nest"; --header-subtitle: "let's begin at the end"; /* Delete the default header background */ --diagonal-stripes: linear-gradient(transparent, transparent); } /* Respect user motion settings */ @media screen and (prefers-reduced-motion: reduce) { body::before, div#container-wrap::before, div#container-wrap-wrap::after, body::after { -webkit-animation: none; animation: none; } }
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; }