[*] Initial commit
commit
64781e5420
@ -0,0 +1,3 @@
|
||||
# DoubleFourteen - The DoubleFourteen Code Forge
|
||||
|
||||
Website sources for [DoubleFourteen - The DoubleFourteen Code Force](https://doublefourteen.io).
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
@ -0,0 +1,14 @@
|
||||
baseURL = "https://doublefourteen.io/"
|
||||
languageCode = "en-us"
|
||||
title = "The DoubleFourteen Code Forge"
|
||||
theme = "doublefourteen"
|
||||
disableKinds = ["taxonomy", "term"]
|
||||
timeout = 1000000
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
DefaultContentLanguage = "en"
|
||||
[languages]
|
||||
[languages.en]
|
||||
weight = 1
|
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: "404: Page not found"
|
||||
---
|
@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Home
|
||||
mobile_menu_title: "Home"
|
||||
---
|
||||
|
||||
{{< flexrow style="justify-content:center;align-items:center" >}}
|
||||
{{% div class="headline" %}}
|
||||
The DoubleFourteen Code Forge is a community to produce and promote high quality free software.
|
||||
|
||||
{{% div style="text-align:left" %}}
|
||||
We encourage strict cooperation between research and practical coding.
|
||||
- Conscious research → pragmatic results.
|
||||
- Conscious development → code quality.
|
||||
- Synergy in both worlds.
|
||||
{{% /div %}}
|
||||
{{% /div %}}
|
||||
{{% div style="align-self:flex-end" %}}
|
||||
<a href="doublefourteen/" class="button">See our manifesto</a>
|
||||
{{% /div %}}
|
||||
{{< /flexrow >}}
|
||||
|
||||
{{% div class="alt-background" %}}
|
||||
{{% div class="container cards-list" %}}
|
||||
|
||||
{{% div title="Contribute" %}}
|
||||
The DoubleFourteen Code Forge is an open community.
|
||||
|
||||
{{% div style="text-align:left" %}}
|
||||
- Always looking for new ideas and projects.
|
||||
- Contributors sharing our vision are welcome.
|
||||
- There are many ways to support us.
|
||||
{{% /div %}}
|
||||
{{% /div %}}
|
||||
|
||||
{{% div title="Check out our projects" %}}
|
||||
Every DoubleFourteen project is free software, as in freedom.
|
||||
|
||||
Our source code repository is accessible at:
|
||||
[https://git.doublefourteen.io](https://git.doublefourteen.io/explore/repos).
|
||||
{{% div style="text-align:left" %}}
|
||||
- Contributions to our code is welcome.
|
||||
- Found a bug, got an improvement in mind? Let us know.
|
||||
- We would love to know if any of our project is being useful to you.
|
||||
{{% /div %}}
|
||||
{{% /div %}}
|
||||
|
||||
{{% /div %}}
|
||||
{{% /div %}}
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: Articles
|
||||
menu_title: Articles
|
||||
mobile_menu_title: Articles
|
||||
layout: rss-list
|
||||
---
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: Blog
|
||||
menu_title: Blog
|
||||
mobile_menu_title: Blog
|
||||
layout: rss-list
|
||||
---
|
@ -0,0 +1,56 @@
|
||||
---
|
||||
title: "The Micro BGP Suite has been released!"
|
||||
mobile_menu_title: "µbgpsuite now released!"
|
||||
date: 2021-06-15T00:00:00+00:00
|
||||
tags:
|
||||
- ubgpsuite
|
||||
- C Language
|
||||
- Networking
|
||||
- BGP
|
||||
- News
|
||||
---
|
||||
|
||||
**We are happy to announce that the first version of the micro BGP suite has now been released!**
|
||||
|
||||
## The Micro BGP Suite is now available
|
||||
|
||||
I am thrilled to announce that the very first version of the
|
||||
DoubleFourteen inaugural project, the Micro BGP suite (*µbgpsuite* for short
|
||||
-- or *ubgpsuite* for differently Greek keyboards ☺), is now available!
|
||||
|
||||
Source code for this project is available at:
|
||||
[https://git.doublefourteen.io/bgp/ubgpsuite](https://git.doublefourteen.io/bgp/ubgpsuite)
|
||||
|
||||
The Micro BGP Suite is an evolution of *bgpscanner*, originally developed under the
|
||||
Institute of Informatics and Telematics of the Italian National Research Council,
|
||||
see the forever unknown
|
||||
[HISTORY](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/doc/HISTORY.md)
|
||||
file included with the project documentation for more obscurities of this
|
||||
project.
|
||||
|
||||
The Micro BGP suite includes:
|
||||
- [lonetix](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/lonetix),
|
||||
a performance oriented static library for BGP and MRT data encoding/decoding written in C.
|
||||
I'd like to send a special thanks to my friend [Vernal Liu](https://covernal.github.io)
|
||||
for coming up with a name for this library (though, it originally meant
|
||||
*Lorenzo's Network library on Posix*), and for his saint-like patience in listening
|
||||
my ramblings all the time.
|
||||
- [bgpgrep](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/tools/bgpgrep),
|
||||
the very first utility using *lonetix*, an advanced replacement for *bgpscanner*,
|
||||
an utility capable of lightning fast MRT dump decoding and filtering. This utility
|
||||
is documented in its glorious `man` [page](https://git.doublefourteen.io/bgp/ubgpsuite/src/branch/master/tools/bgpgrep/bgpgrep.1.in).
|
||||
|
||||
`bgpgrep` is the first utility taking advantage of `lonetix`, but more tools
|
||||
are underway to demonstrate the capabilities of its API.
|
||||
|
||||
> **Hint** -- for a convenient PDF version of the manual page, you can run:
|
||||
> ```sh
|
||||
> $ sed s/@UTILITY@/bgpgrep/g tools/bgpgrep/bgpgrep.1.in | groffer
|
||||
> ```
|
||||
|
||||
Stay tuned for more news on this project, as I'm currently working on an article
|
||||
describing the BGP filtering engine exposed by `lonetix`.
|
||||
|
||||
Enjoy, and happy hacking,
|
||||
|
||||
Lorenzo Cogotti
|
@ -0,0 +1,110 @@
|
||||
---
|
||||
title: DoubleFourteen
|
||||
menu_title: "The DoubleFourteen Code Forge"
|
||||
mobile_menu_title: "1414° Code Forge"
|
||||
date: 2021-06-15T00:40:51+02:00
|
||||
---
|
||||
|
||||
# Vision
|
||||
|
||||
The DoubleFourteen Code Forge is an effort to promote synergy between developers
|
||||
and researchers, in order to promote good development practices,
|
||||
improve the software landscape and share common views and ethics.
|
||||
With hope to form a collaborative community made of competent
|
||||
individuals, practitioners, and researchers, working together and benefitting
|
||||
from each other's skills and inputs.
|
||||
|
||||
# Raison d'être
|
||||
|
||||
Computer science and software development has evolved dramatically crucial in the last decades
|
||||
for technological advancement and scientific research, consistently posing
|
||||
new challenges and offering new possibilities to us all.
|
||||
Facing such challenges and opening new applicative fields had an enormous impact
|
||||
over our lives as we can testify every day.
|
||||
|
||||
Despite the abundance of application fields, research institutes and commercial
|
||||
investments, oftentimes, topics and development practices are heavily
|
||||
conditioned by external factors -- such as commercial interest,
|
||||
nation-wide infrastructures, bureaucracy, budget choices, academic interest,
|
||||
knowledge availability. Similar constraints apply to development time --
|
||||
often seen as expensive by commercial entities and unnecessary to research
|
||||
institutes, to the point of settling for quick prototypes that slowly but
|
||||
surely become the definitive implementation.
|
||||
|
||||
As a matter of fact, computer science exhibits an uncanny dichotomy between
|
||||
theory and actual practice, whereas theory is often forgotten or
|
||||
ridiculed by practitioners and practical implementation is seen as a
|
||||
pesky and forgettable detail by researchers.
|
||||
|
||||
The DoubleFourteen Code Forge is an attempt to provide an international
|
||||
and diverse community to hoist and support any individual or group in their
|
||||
own research or development interest, providing an ecosystem where such
|
||||
limitations are absent or minimal.
|
||||
We strive to enact an alternative setup where researchers and developers
|
||||
may directly communicate with each other and understand the value of
|
||||
taking into proper consideration every aspect and every challenge of the
|
||||
computer science, creating premises for new innovative techniques.
|
||||
Where the only constraints are imposed by skill, motivation, imagination and
|
||||
perseverance in reaching our goals and improving ourselves.
|
||||
|
||||
Our community sole focus is raising the quality of the software world
|
||||
and raise awareness on computer science, by spreading the results of our work.
|
||||
Everyone is welcome to submit projects, take on research on their topic of
|
||||
interest, or offer support. Everyone is encouraged to contribute and share
|
||||
knowledge, as the more knowledge we share, the more contributions we can offer.
|
||||
|
||||
# Fundamental principles
|
||||
|
||||
The DoubleFourteen Code Forge is intended to be equally useful for
|
||||
scientists and the collectivity as a whole. We should never forget that the
|
||||
knowledge we produce and the code we write should be oriented to improving our
|
||||
lives, our society and raise scientific awareness to the general public.
|
||||
The following list summarizes the basic principles that everyone in the
|
||||
community is asked to agree on, in order to ensure our objectives and a
|
||||
productive environment.
|
||||
|
||||
* We value research, code, experience, knowledge, and share them
|
||||
publicly. Believing that our efforts may be of better use when freely available
|
||||
to a wider audience, as opposed to confined to few privileged entities.
|
||||
|
||||
* We promote ethical software and abhor restrictions to our Freedom. In no
|
||||
way ever shall we consciously suggest or endorse the use of any unethical
|
||||
software or service akin that ultimately results in:
|
||||
- mistreating users or developers;
|
||||
- violating the users' or developers' privacy or silently collecting their
|
||||
data;
|
||||
- severing the right to understand, learn, verify, modify or improve the
|
||||
original source code;
|
||||
- denying full control over the computing instruments;
|
||||
- tying the user or developer to a single software or service, constraining
|
||||
their freedom of choice.
|
||||
|
||||
* We place mutual respect at the foundation of our community.
|
||||
|
||||
* We believe in civilized debate. Personal offences and discrimination targeted
|
||||
to us or others alike, in any public or private form, are incompatible
|
||||
with our community. Any viable action shall be taken to condemn and eradicate
|
||||
such behaviour and make our environment cleaner.
|
||||
|
||||
* We firmly reject any misrepresentation of work.
|
||||
Our community as a whole is but a mean for each individual to fully express
|
||||
their potential in any useful way they are most proficient with.
|
||||
As such, every single effort is to be duly credited, fairly and transparently.
|
||||
|
||||
* We regard independence as a vital premise to ensure the impartiality
|
||||
of our work.
|
||||
|
||||
* We never compromise over quality, our work is our art and pride.
|
||||
|
||||
* We keep any social, political, religious or idealistic conviction to our
|
||||
personal individual relational sphere. Our community as a whole is neutral and
|
||||
refuses to take any stance or action whatsoever over matters extraneous to
|
||||
objective scientific debate on software development and computer science.
|
||||
|
||||
* We encourage any benevolent participation to our community, by actively
|
||||
extending ourselves to rule out any obstacle in its actuation.
|
||||
|
||||
* We offer support to any project or initiative compatible with our
|
||||
principles and goals.
|
||||
|
||||
* We are eager to learn, grateful to teach, motivated in our work.
|
@ -0,0 +1,6 @@
|
||||
<div class="{{ .Get "class" }}" style="{{ .Get "style" | safeCSS }}">
|
||||
{{ with .Get "title" }}
|
||||
<h1 class="section-title">{{ . }}</h1>
|
||||
{{ end }}
|
||||
{{ .Inner }}
|
||||
</div>
|
@ -0,0 +1,3 @@
|
||||
<div class="{{.Get "class"}}" style="display: flex; flex-direction: row; flex-wrap: wrap;{{.Get "style" | safeCSS }}">
|
||||
{{- .Inner -}}
|
||||
</div>
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
.path-yel-in {
|
||||
animation: draw 10s infinite;
|
||||
animation-delay: 1s;
|
||||
animation-timing-function: linear;
|
||||
}
|
||||
.path-yel-out {
|
||||
animation: draw 10s infinite;
|
||||
animation-timing-function: linear;
|
||||
}
|
||||
.path-left {
|
||||
animation-delay: 2s;
|
||||
}
|
||||
.path-bottom {
|
||||
animation-delay: 4s;
|
||||
}
|
||||
|
||||
|
||||
.circuit-path {
|
||||
animation: circuit 20s linear infinite;
|
||||
animation-delay: 2s;
|
||||
}
|
||||
|
||||
.circuit-static, .circuit-anim {
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%), translateZ(0);
|
||||
position: absolute;
|
||||
}
|
||||
.circuit-anim {
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
|
||||
|
||||
@keyframes circuit {
|
||||
100% {
|
||||
stroke-dashoffset: 0;
|
||||
stroke-opacity: 0.6;
|
||||
}
|
||||
}
|
||||
*/
|
@ -0,0 +1 @@
|
||||
{"Target":"css/circuit.min.d053cd5b7d1b8276398edb651c03a784e706faf0478345bec21786b70d6f6ece.css","MediaType":"text/css","Data":{"Integrity":"sha256-0FPNW30bgnY5jttlHAOnhOcG+vBHg0W+wheGtw1vbs4="}}
|
@ -0,0 +1 @@
|
||||
.alt-background{background-color:#efefef}.main{background-color:#737475;color:#fff;padding:10px 15px;font-size:.9em}.nav-spacer{display:none}.banner-burnin{position:absolute;width:100%;height:100%;z-index:-1;box-shadow:inset 0 0 1px 1px rgba(64,64,64,.1);background:radial-gradient(ellipse at center,#4e3d18 0%,rgba(64,64,64,0) 50%);transform-origin:50% 50%;transform:perspective(20px)rotateX(.5deg)skewX(2deg)scale(1.03);animation:burnin 1s linear infinite;opacity:.9}.banner-burnin::after{position:relative;background:radial-gradient(ellipse at center,rgba(0,0,0,.5) 0%,rgba(64,64,64,0) 100%);opacity:.1}.banner-terminal{position:relative;z-index:90;margin:0 auto;width:100%;height:550px;background-color:#0a1922;overflow:hidden}.banner-terminal::before{position:absolute;width:100%;height:550px;top:0;left:0;content:"";z-index:100;background:linear-gradient(#777 50%,#0a1922 50%);background-size:100% 4px;background-repeat:repeat-y;opacity:.14;box-shadow:inset 0 0 1px 1px rgba(0,0,0,.8);animation:pulse 5s linear infinite}.banner-terminal::after{position:absolute;content:"";top:0;left:0;width:100%;height:76%;z-index:99;background:radial-gradient(ellipse at center,black 0%,rgba(0,0,0,.62) 45%,rgba(0,9,4,.6) 47%,#c3993c 100%);background-color:#c3993c;box-shadow:inset 0 0 4px 4px rgba(100,100,100,.5);opacity:.1}.banner-scanline{--scanline-area:$term-height;position:relative;z-index:99;width:100%;height:5px;background:linear-gradient(to bottom,rgba(255,0,0,0) 0%,snow 50%,rgba(255,255,255,.98) 51%,rgba(255,0,0,0) 100%);background-color:#fff;background-size:100% 4px;opacity:.1;animation:scanline 3.25s ease-in-out infinite}.banner-textarea{position:relative;width:1500px;height:600px;margin:0 auto}.banner-prompt{position:relative;text-align:left;padding-left:1em;font-family:Inconsolata,Courier,unicase;text-shadow:0 0 8px rgba(255,255,255,.3);font-size:4em;color:#c3993c}.ghost,.pop{opacity:.27}.banner-msg-line{text-shadow:0 0 8px rgba(231,214,177,.3);font-family:Inconsolata,Courier,monospace;font-smoothing:antialiased;padding-left:6em;font-size:3em;white-space:pre;color:#c3993c;overflow:hidden}#banner-msg-animate{text-shadow:0 0 8px rgba(255,255,255,.1);color:#6d592c;bottom:0}.flicker{margin:0;color:#2d2d2d;letter-spacing:-.05rem}.flicker::before{content:attr(letter);position:absolute;overflow:hidden;color:#fc0;z-index:5;text-shadow:none;animation:flicker 3s linear infinite}.glitch{margin:0;letter-spacing:-.05rem;display:inline-block;animation:glitch 1s linear infinite}.glitch::before,.glitch::after{content:attr(text);position:absolute;overflow:hidden}.glitch::before{left:0;animation:glitch-top 1s linear infinite;clip-path:polygon(0 0,100% 0,100% 33%,0 33%)}.glitch::after{left:0;animation:glitch-bottom 1.5s linear infinite;clip-path:polygon(0 67%,100% 67%,100% 100%,0 100%)}@keyframes burnin{0%{transform:scale(1,1.002)}50%{transform:scale(1,1.0001)}100%{transform:scale(1.001,1)}}@keyframes scanline{to{transform:translateY(calc(var(--scanline-area) - $term-scanline-height))}}@keyframes pulse{0%{transform:scale(1.001);opacity:.14}8%{transform:scale(1);opacity:.13}15%{transform:scale(1.004);opacity:.14}30%{transform:scale(1.002);opacity:.11}100%{transform:scale(1);opacity:.14}}@keyframes flicker{0%,19.999%,22%,62.999%,64%,64.999%,70%,100%{opacity:.99;text-shadow:-1px -1px 0 rgba(255,255,255,.4),1px -1px 0 rgba(255,255,255,.4),-1px 1px 0 rgba(255,255,255,.4),1px 1px 0 rgba(255,255,255,.4),0 -2px 8px,0 0 2px,0 0 5px #ff7e00,0 0 15px #f44,0 0 2px #ff7e00,0 2px 3px #000}20%,21.999%,63%,63.999%,65%,69.999%{opacity:.4;text-shadow:none}}@keyframes glitch{2%,64%{transform:translate(2px,0)skew(0)}4%,60%{transform:translate(-2px,0)skew(0)}62%{transform:translate(0,0)skew(5deg)}}@keyframes glitch-top{2%,64%{transform:translate(2px,-2px)}4%,60%{transform:translate(-2px,2px)}62%{transform:translate(13px,-1px)skew(-13deg)}}@keyframes glitch-bottom{2%,64%{transform:translate(-2px,0)}4%,60%{transform:translate(-2px,0)}62%{transform:translate(-22px,5px)skew(21deg)}}@keyframes typing{to{width:100%}}@keyframes blinking{from,to{border-color:transparent}50%{border-color:orange}}h1.section-title{font-size:3em;color:#444;text-align:center}.motto{text-align:left;padding-top:1em}@media(prefers-color-scheme:dark){.alt-background{background-color:#292929}h1.section-title{color:#ddd}}@media only screen and (max-width:1200px){.banner-prompt{font-size:3em}.banner-msg-line{font-size:2em}}@media only screen and (max-width:1000px){html,body{overflow-x:hidden}body{-webkit-text-size-adjust:none}}@media only screen and (max-width:800px){.banner-scanline{--scanline-area:$term-height-mobile}.banner-prompt{font-size:2em}.banner-msg-line{font-size:1.5em;padding-left:3em}}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/home.min.4c9feafeab8017f7a8a23fac16d131d3b087fbed2ec892551b95a3dd7e8e47d5.css","MediaType":"text/css","Data":{"Integrity":"sha256-TJ/q/quAF/eooj+sFtEx07CH++0uyJJVG5Wj3X6OR9U="}}
|
@ -0,0 +1 @@
|
||||
#mobile-navbar{display:none;overflow:hidden;color:#fff!important;font-weight:700}#mobile-subnav{background-color:#0a1922}#mobile-subnav{display:none}#menu{padding:5px 0;color:#fff;padding-right:5px;padding-left:5px;font-size:1.1rem!important}#navbar{display:block}.nav{background-color:#0a1922;padding:5px 0;border-top:4px solid var(--teal)}.nav-spacer{margin-bottom:30px}.df-community-link:before{content:"";background-image:url(/heart.svg)!important;background-size:12px 16px;width:12px;height:16px;margin-left:5px;margin-right:5px;vertical-align:middle;display:inline-block}#menu .navbar-item,.nav .navbar-item,.nav .navbar-item:visited{color:#fff;padding-right:5px;padding-left:5px}@media only screen and (max-width:340px){#mobile-navbar{font-size:1.1rem!important}#hamburger{padding-left:.5rem!important}}@media only screen and (max-width:1000px){#menu .navbar-item{display:block}#mobile-subnav{display:block}#mobile-toggle+#menu{display:none}#mobile-toggle:checked+#menu{display:block}#mobile-navbar,#menu{display:block;font-size:1.2rem;line-height:2.2rem}#mobile-navbar{margin-top:.4rem}#navbar{display:none}#mobile-toggle{display:none}#hamburger{float:right;padding-left:1.5rem;padding-right:.5rem;line-height:0}}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/navigation.min.acad5d873b80dbbc3bfed76f876917d6fb8437b66d2018091c8bd51afdab0eb2.css","MediaType":"text/css","Data":{"Integrity":"sha256-rK1dhzuA27w7/tdvh2kX1vuEN7ZtIBgJHIvVGv2rDrI="}}
|
@ -0,0 +1 @@
|
||||
.notfound-page{position:relative;display:flex;width:1500px;height:100%;margin:0 auto}.notfound-content{position:relative;flex:1;padding-top:60px;min-height:500px;max-width:500px}.notfound-404-chan-wrapper{position:relative;flex:1}#particles-bg{z-index:100}.notfound-404-chan{suser-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/notfound.min.8fd670f1f7b146151ae2bd3cdbd2ab27b23a5d3b5a7b23093c4e28ee8d0db07f.css","MediaType":"text/css","Data":{"Integrity":"sha256-j9Zw8fexRhUa4r0829KrJ7I6XTtaeyMJPE4o7o0NsH8="}}
|
@ -0,0 +1 @@
|
||||
#particles-bg,canvas{position:absolute;width:100%;height:100%;top:0;left:0;z-index:-10}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/particles.min.1267e7250414cb0155cba79bd9ff4780f779558db521b0059252823cd281dca9.css","MediaType":"text/css","Data":{"Integrity":"sha256-EmfnJQQUywFVy6eb2f9HgPd5VY21IbAFklKCPNKB3Kk="}}
|
@ -0,0 +1 @@
|
||||
*{box-sizing:border-box}html,body{width:100%;height:100%}h1.section-title{font-size:2em}h1.section-title:first-letter{text-transform:capitalize}body{margin:0;font-family:var(--body-font);font-size:var(--body-font-size);line-height:var(--body-line-height);color:var(--body-color);background-color:var(--body-bg);-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}a:not(:hover){text-decoration:none}.container{margin:0 auto;position:relative;max-width:1000px;padding:0 .2em}.external-link-light:after{background-image:url(/external-link-dark.svg)!important}.external-link:after{content:"";background-image:url(/external-link-light.svg);background-size:10px 10px;display:inline-block;width:10px;height:10px;margin-left:5px}img{display:block;max-width:100%;margin-bottom:var(--spacer);border-radius:var(--border-radius)}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:initial}#header{display:flex;flex-direction:row;align-items:flex-end}#header-text{font-size:2em;color:#444;font-weight:700;display:inline-block;padding:1em .5em}#header-text-small{font-size:2em;color:#444;font-weight:700;display:none;padding:1em .5em}#header-image{background-image:url(/doublefourteen-logo-dark.svg);background-repeat:no-repeat;width:330px;height:180px;display:inline-block;margin:0 .5em}.footer{text-align:center;padding-top:2em}@media(max-width:1100px){#header-text{display:none}#header-text-small{display:inline-block}}@media(prefers-color-scheme:dark){.external-link:after{background-image:url(/external-link-dark.svg)}#header-text{color:#ddd}#header-text-small{color:#ddd}#header-image{background-image:url(/doublefourteen-logo-light.svg)}}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/style.min.d944d9757086436e8d5b6bcad72f606958e62373e1d7ad0f79c4a5214e5e7ad9.css","MediaType":"text/css","Data":{"Integrity":"sha256-2UTZdXCGQ26NW2vK1y9gaVjmI3Ph160PecSlIU5eetk="}}
|
@ -0,0 +1,4 @@
|
||||
:root{--gray-000:#f8f9fa;--gray-100:#f1f3f5;--gray-200:#e9ecef;--gray-300:#dee2e6;--gray-400:#ced4da;--gray-500:#adb5bd;--gray-600:#868e96;--gray-700:#495057;--gray-800:#343a40;--gray-900:#212529;--red:#fa5252;--pink:#e64980;--grape:#be4bdb;--purple:#7950f2;--indigo:#4c6ef5;--blue:#228be6;--cyan:#15aabf;--teal:#12b886;--green:#40c057;--yellow:#fab005;--orange:#fd7e14;--gray:#454545;--blue-300:#74c0fc;--blue-400:#4dabf7;--yellow-100:#fff3bf;--body-font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
|
||||
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--body-font-size:20px;--body-line-height:1.5;--body-color:var(--gray-700);--body-bg:#fff;--link-color:var(--blue);--link-hover-color:#1c7ed6;--heading-color:var(--gray-900);--border-color:var(--gray-300);--border-radius:0.25rem;--code-font:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
||||
"Courier New", monospace;--code-color:var(--grape);--code-bg:var(--gray-000);--spacer:1rem;--spacer-2:calc(var(--spacer) * 1.5);--spacer-3:calc(var(--spacer) * 3)}@media(prefers-color-scheme:dark){:root{--body-color:var(--gray-300);--body-bg:var(--gray-800);--heading-color:#fff;--link-color:var(--blue-300);--link-hover-color:var(--blue-400);--border-color:rgba(255, 255, 255, 0.15);--code-bg:var(--gray-900)}}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/variables.min.64ab9ff349f04ea7ee51c5148a9834f9570ec7ceb652edba40d7abd5b2dc566b.css","MediaType":"text/css","Data":{"Integrity":"sha256-ZKuf80nwTqfuUcUUipg0+VcOx862Uu26QNer1bLcVms="}}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
{"Target":"css/home.2c1adf72cf123c3b68c525dcadc082f1589a474f975956f30e8e051d71b43b36.css","MediaType":"text/css","Data":{"Integrity":"sha256-LBrfcs8SPDtoxSXcrcCC8ViaR0+XWVbzDo4FHXG0OzY="}}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
{"Target":"css/home.min.fe9260a06c887cdf81a61aeac369079aa7e7a697acd29334e939ec6466473bdb.css","MediaType":"text/css","Data":{"Integrity":"sha256-/pJgoGyIfN+Bphrqw2kHmqfnppes0pM06TnsZGZHO9s="}}
|
@ -0,0 +1 @@
|
||||
:root{--background-color: #737475;--alt-background-color: #efefef;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}#mobile-navbar{display:none;overflow:hidden;color:white !important;font-weight:bold}#mobile-subnav{background-color:#0a1922}#mobile-subnav{display:none}#menu{padding:5px 0;color:white;padding-right:5px;padding-left:5px;font-size:1.1rem !important}#navbar{display:block}.nav{background-color:#0a1922;padding:5px 0;border-top:4px solid #12b886}.nav-spacer{margin-bottom:30px}.df-community-link:before{content:"";background-image:url(/heart.svg) !important;background-size:12px 16px;width:12px;height:16px;margin-left:5px;margin-right:5px;vertical-align:middle;display:inline-block}#menu .navbar-item,.nav .navbar-item,.nav .navbar-item:visited{color:white;padding-right:5px;padding-left:5px}@media only screen and (max-width: 340px){#mobile-navbar{font-size:1.1rem !important}#hamburger{padding-left:0.5rem !important}}@media only screen and (max-width: 1000px){#menu .navbar-item{display:block}#mobile-subnav{display:block}#mobile-toggle+#menu{display:none}#mobile-toggle:checked+#menu{display:block}#mobile-navbar,#menu{display:block;font-size:1.2rem;line-height:2.2rem}#mobile-navbar{margin-top:0.4rem}#navbar{display:none}#mobile-toggle{display:none}#hamburger{float:right;padding-left:1.5rem;padding-right:0.5rem;line-height:0}}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/navigation.1a3e87cd446d5f1b61dd79f4152b3bb148649c8332e99134da0a231adc630f98.css","MediaType":"text/css","Data":{"Integrity":"sha256-Gj6HzURtXxth3Xn0FSs7sUhknIMy6ZE02gojGtxjD5g="}}
|
@ -0,0 +1 @@
|
||||
:root{--background-color: #737475;--alt-background-color: #efefef;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}.notfound-page{position:relative;display:flex;flex-wrap:wrap;width:1000px;margin:0 auto;gap:1.5rem}.notfound-content{position:relative;padding-top:1.5rem;max-width:400px}.notes{padding-top:1rem}.notfound-404-chan{position:relative;width:400px;height:500px;background-image:url("/404-chan_sm.png");background-position:bottom right 3rem;background-repeat:no-repeat;background-size:144px 256px}#particles-bg{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100}@media (max-width: 800px){.notfound-content{text-align:center}.notfound-page{flex-direction:column}}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/notfound.d5335f5ffd06a11724e785740f8a7c3510cafaba0e80a9f9631156d33c3a176f.css","MediaType":"text/css","Data":{"Integrity":"sha256-1TNfX/0GoRck54V0D4p8NRDK+roOgKn5YxFW0zw6F28="}}
|
@ -0,0 +1 @@
|
||||
.notfound-page{position:relative;display:flex;width:1500px;height:100%;margin:0 auto}.notfound-content{position:relative;flex:1;padding-top:60px;min-height:500px;max-width:500px}.notfound-404-chan-wrapper{position:relative;flex:1}#particles-bg{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100}.notfound-404-chan{suser-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/notfound.min.7af2d4e98e0e95317dfd8f8e721927a5a4a16a51163c83d93a1fd266bbb782df.css","MediaType":"text/css","Data":{"Integrity":"sha256-evLU6Y4OlTF9/Y+OchknpaShalEWPIPZOh/SZru3gt8="}}
|
@ -0,0 +1 @@
|
||||
:root{--background-color: #737475;--alt-background-color: #efefef;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}@media only screen and (max-width: 600px){.on-pc-screen{display:none !important}}@media only screen and (min-width: 600px){.on-mobile-screen{display:none !important}}@media only screen and (max-width: 1200px){.on-largest-screen{display:none !important}}@media only screen and (min-width: 1200px){.up-to-largest-screen{display:none !important}}@media only screen and (max-width: 1000px){.on-large-screen{display:none !important}}@media only screen and (min-width: 1000px){.up-to-large-screen{display:none !important}}@media only screen and (max-width: 800px){.on-small-screen{display:none !important}}@media only screen and (min-width: 800px){.up-to-small-screen{display:none !important}}*{box-sizing:border-box;z-index:1}html,body{width:100%;height:100%;min-width:500px}h1.page-title{text-align:left;font-size:2em;color:var(--title-text-color)}h1.page-title:first-letter{text-transform:capitalize}body{margin:0;font-family:var(--body-font);font-size:20px;line-height:1.5;color:var(--foreground-color);background-color:var(--background-color);-webkit-text-size-adjust:100%;-webkit-text-size-adjust--ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}a:not(:hover){text-decoration:none}.container{margin:0 auto;position:relative;max-width:1000px;padding:0 0.2em}.external-link-light:after{background-image:url(/external-link-dark.svg) !important}.external-link:after{content:"";background-image:url(/external-link-light.svg);background-size:10px 10px;display:inline-block;width:10px;height:10px;margin-left:5px}img{display:block;max-width:100%;margin-bottom:1rem;border-radius:.25rem}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:currentColor}.header{display:flex;align-items:flex-end}.header-text{font-size:2em;color:var(--title-text-color);font-weight:bold;display:inline-block;padding:1em 0.5em 1em 0.5em}.header-image{background-image:url(/doublefourteen-logo-dark.svg);background-repeat:no-repeat;width:330px;height:180px;display:inline-block;margin:0 0.5em 0 0.5em}.work-in-progress-content{display:flex;justify-content:space-between}.work-in-progress-text{position:relative}.work-in-progress-sign{width:400px;height:386px;background-image:url(/work-in-progress.png);background-position:bottom right;background-repeat:no-repeat;background-size:400px 386px}.button,.button:hover{background-color:transparent;border:2px solid #737475;color:#333;padding:7px 12px;display:block;margin:10px 0;font-size:20px;font-weight:700;text-decoration:none !important}.button a{display:inline;text-decoration:none !important;color:#666}.button:hover{background-color:#7f7f7f}.footer{text-align:center;padding-top:1.5rem}@media (prefers-color-scheme: dark){.external-link:after{background-image:url(/external-link-dark.svg)}.header-image{background-image:url(/doublefourteen-logo-light.svg)}.button,.button:hover{color:inherit}.button a{color:#ccc}.button:hover{background-color:#383838}}@media only screen and (max-width: 800px){.work-in-progress-content{flex-direction:column}.work-in-progress-text{text-align:center}}
|
@ -0,0 +1 @@
|
||||
{"Target":"css/style.14e9793f6c6b6d3683942f19e20cd9c2c21843299949df423dc286e6c113317c.css","MediaType":"text/css","Data":{"Integrity":"sha256-FOl5P2xrbTaDlC8Z4gzZwsIYQymZSd9CPcKG5sETMXw="}}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
{"Target":"sass/home.78b660c2911b006de02237403706f63b4ea3283b7001b4594fd7ea78834f7962.css","MediaType":"text/css","Data":{"Integrity":"sha256-eLZgwpEbAG3gIjdANwb2O06jKDtwAbRZT9fqeINPeWI="}}
|
@ -0,0 +1 @@
|
||||
:root{--background-color: #efefef;--alt-background-color: #dfdfdf;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}#mobile-navbar{display:none;overflow:hidden;color:white !important;font-weight:bold}#mobile-subnav{background-color:#0a1922}#mobile-subnav{display:none}#menu{padding:5px 0;color:white;padding-right:5px;padding-left:5px;font-size:1.1rem !important}#navbar{display:block}.nav{background-color:#0a1922;padding:5px 0;border-top:4px solid #12b886}.nav-spacer{margin-bottom:30px}.df-community-link:before{content:"";background-image:url(/heart.svg) !important;background-size:12px 16px;width:12px;height:16px;margin-left:5px;margin-right:5px;vertical-align:middle;display:inline-block}#menu .navbar-item,.nav .navbar-item,.nav .navbar-item:visited{color:white;padding-right:5px;padding-left:5px}@media only screen and (max-width: 340px){#mobile-navbar{font-size:1.1rem !important}#hamburger{padding-left:0.5rem !important}}@media only screen and (max-width: 1000px){#menu .navbar-item{display:block}#mobile-subnav{display:block}#mobile-toggle+#menu{display:none}#mobile-toggle:checked+#menu{display:block}#mobile-navbar,#menu{display:block;font-size:1.2rem;line-height:2.2rem}#mobile-navbar{margin-top:0.4rem}#navbar{display:none}#mobile-toggle{display:none}#hamburger{float:right;padding-left:1.5rem;padding-right:0.5rem;line-height:0}}
|
@ -0,0 +1 @@
|
||||
{"Target":"sass/navigation.c2388a3ec6258b34c9437b1acabacf098ebf76d90868746e174520b47950528f.css","MediaType":"text/css","Data":{"Integrity":"sha256-wjiKPsYlizTJQ3sayrrPCY6/dtkIaHRuF0UgtHlQUo8="}}
|
@ -0,0 +1 @@
|
||||
:root{--background-color: #efefef;--alt-background-color: #dfdfdf;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}.notfound-page{position:relative;display:flex;flex-wrap:wrap;width:1000px;margin:0 auto;gap:1.5rem}.notfound-content{position:relative;padding-top:1.5rem;max-width:400px}.notes{padding-top:1rem}.notfound-404-chan{position:relative;width:400px;height:500px;background-image:url("/404-chan_sm.png");background-position:bottom right 3rem;background-repeat:no-repeat;background-size:144px 256px}#particles-bg{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100}@media (max-width: 800px){.notfound-content{text-align:center}.notfound-page{flex-direction:column}}
|
@ -0,0 +1 @@
|
||||
{"Target":"sass/notfound.3230ae6a62d9e6fc90bed42f285492ba8b05f818abbd71e0c96e5ba56cdb320e.css","MediaType":"text/css","Data":{"Integrity":"sha256-MjCuamLZ5vyQvtQvKFSSuosF+BirvXHgyW5bpWzbMg4="}}
|
@ -0,0 +1 @@
|
||||
:root{--background-color: #efefef;--alt-background-color: #dfdfdf;--foreground-color: #495057;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--text-color: #fff;--title-text-color: #444;--link-color: #228be6;--link-hover-color: #1c7ed6;--heading-color: #212529;--border-color: #dee2e6}@media (prefers-color-scheme: dark){:root{--background-color: #292929;--alt-background-color: #0a1922;--foreground-color: #dee2e6;--text-color: #000;--title-text-color: #ddd;--heading-color: #fff;--link-color: #74c0fc;--link-hover-color: #4dabf7;--border-color: rgba(255, 255, 255, 0.15)}}@media only screen and (max-width: 600px){.on-pc-screen{display:none !important}}@media only screen and (min-width: 600px){.on-mobile-screen{display:none !important}}@media only screen and (max-width: 1200px){.on-largest-screen{display:none !important}}@media only screen and (min-width: 1200px){.up-to-largest-screen{display:none !important}}@media only screen and (max-width: 1000px){.on-large-screen{display:none !important}}@media only screen and (min-width: 1000px){.up-to-large-screen{display:none !important}}@media only screen and (max-width: 800px){.on-small-screen{display:none !important}}@media only screen and (min-width: 800px){.up-to-small-screen{display:none !important}}*{box-sizing:border-box;z-index:1}html,body{width:100%;height:100%;min-width:500px}h1.page-title{text-align:left;font-size:2em;color:var(--title-text-color)}h1.page-title:first-letter{text-transform:capitalize}body{margin:0;font-family:var(--body-font);font-size:20px;line-height:1.5;color:var(--foreground-color);background-color:var(--background-color);-webkit-text-size-adjust:100%;-webkit-text-size-adjust--ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}a:not(:hover){text-decoration:none}.container{margin:0 auto;position:relative;max-width:1000px;padding:0 0.2em}.external-link-light:after{background-image:url(/external-link-dark.svg) !important}.external-link:after{content:"";background-image:url(/external-link-light.svg);background-size:10px 10px;display:inline-block;width:10px;height:10px;margin-left:5px}img{display:block;max-width:100%;margin-bottom:1rem;border-radius:.25rem}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:currentColor}.header{display:flex;align-items:flex-end}.header-text{font-size:2em;color:var(--title-text-color);font-weight:bold;display:inline-block;padding:1em 0.5em 1em 0.5em}.header-image{background-image:url(/doublefourteen-logo-dark.svg);background-repeat:no-repeat;width:330px;height:180px;display:inline-block;margin:0 0.5em 0 0.5em}.work-in-progress-content{display:flex;justify-content:space-between}.work-in-progress-text{position:relative}.work-in-progress-sign{width:400px;height:386px;background-image:url(/work-in-progress.png);background-position:bottom right;background-repeat:no-repeat;background-size:400px 386px}.button,.button:hover{background-color:transparent;border:2px solid #737475;color:#333;padding:7px 12px;display:block;margin:10px 0;font-size:20px;font-weight:700;text-decoration:none !important}.button a{display:inline;text-decoration:none !important;color:#666}.button:hover{background-color:#7f7f7f}.footer{text-align:center;padding-top:1.5rem}@media (prefers-color-scheme: dark){.external-link:after{background-image:url(/external-link-dark.svg)}.header-image{background-image:url(/doublefourteen-logo-light.svg)}.button,.button:hover{color:inherit}.button a{color:#ccc}.button:hover{background-color:#383838}}@media only screen and (max-width: 800px){.work-in-progress-content{flex-direction:column}.work-in-progress-text{text-align:center}}
|
@ -0,0 +1 @@
|
||||
{"Target":"sass/style.31c0df1af1c551ede13db9f99995a7ece9d2a3dfe4dc29bac27689d48a9e1392.css","MediaType":"text/css","Data":{"Integrity":"sha256-McDfGvHFUe3hPbn5mZWn7OnSo9/k3Cm6wnaJ1IqeE5I="}}
|
@ -0,0 +1 @@
|
||||
*{box-sizing:border-box;z-index:2}html,body{width:100%;height:100%}h1.section-title{font-size:3em;color:#444;text-align:center}body{margin:0;font-family:var(--body-font);font-size:var(--body-font-size);line-height:var(--body-line-height);color:var(--body-color);background-color:var(--body-bg);-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a{color:var(--link-color)}a:hover,a:focus{color:var(--link-hover-color)}a strong{color:inherit}img{display:block;max-width:100%;margin-bottom:var(--spacer);border-radius:var(--border-radius)}table{margin-bottom:1rem;width:100%;border:0 solid var(--border-color);border-collapse:collapse}td,th{padding:.25rem .5rem;border-color:inherit;border-style:solid;border-width:0;border-bottom-width:1px}th{text-align:left}thead th{border-bottom-color:currentColor}mark{padding:.15rem;background-color:var(--yellow-100);border-radius:.125rem}motto{text-align:center;padding-top:2em}footer{text-align:center;padding-top:2em}
|
@ -0,0 +1 @@
|
||||
{"Target":"sass/base.css","MediaType":"text/css","Data":{}}
|
@ -0,0 +1 @@
|
||||
.notfound-page{position:relative;display:flex}.notfound-content{position:relative;flex:1;margin-top:60px;min-height:500px}.notfound-404-chan-wrapper{position:relative;flex:1}.notfound-404-chan{position:absolute;bottom:0;margin-left:50%;margin-right:50%;margin-bottom:0;z-index:-11;pointer-events:none;suser-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}
|
@ -0,0 +1 @@
|
||||
{"Target":"sass/notfound.css","MediaType":"text/css","Data":{}}
|
@ -0,0 +1 @@
|
||||
#particles-bg,canvas{position:absolute;width:100%;height:100%;top:0;left:0;z-index:-10}
|
@ -0,0 +1 @@
|
||||
{"Target":"sass/particles.css","MediaType":"text/css","Data":{}}
|
@ -0,0 +1,4 @@
|
||||
:root{--gray-000: #f8f9fa;--gray-100: #f1f3f5;--gray-200: #e9ecef;--gray-300: #dee2e6;--gray-400: #ced4da;--gray-500: #adb5bd;--gray-600: #868e96;--gray-700: #495057;--gray-800: #343a40;--gray-900: #212529;--red: #fa5252;--pink: #e64980;--grape: #be4bdb;--purple: #7950f2;--indigo: #4c6ef5;--blue: #228be6;--cyan: #15aabf;--teal: #12b886;--green: #40c057;--yellow: #fab005;--orange: #fd7e14;--gray: #454545;--blue-300: #74c0fc;--blue-400: #4dabf7;--yellow-100: #fff3bf;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
|
||||
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--body-font-size: 20px;--body-line-height: 1.5;--body-color: var(--gray-700);--body-bg: #fff;--link-color: var(--blue);--link-hover-color: #1c7ed6;--heading-color: var(--gray-900);--border-color: var(--gray-300);--border-radius: 0.25rem;--code-font: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
||||
"Courier New", monospace;--code-color: var(--grape);--code-bg: var(--gray-000);--spacer: 1rem;--spacer-2: calc(var(--spacer) * 1.5);--spacer-3: calc(var(--spacer) * 3)}@media (prefers-color-scheme: dark){:root{--body-color: var(--gray-300);--body-bg: var(--gray-800);--heading-color: #fff;--link-color: var(--blue-300);--link-hover-color: var(--blue-400);--border-color: rgba(255, 255, 255, 0.15);--code-bg: var(--gray-900)}}
|
@ -0,0 +1 @@
|
||||
{"Target":"sass/variables.css","MediaType":"text/css","Data":{}}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,99 @@
|
||||
/* -----------------------------------------------
|
||||
* Rain background particle effect.
|
||||
*
|
||||
* @licstart The following is the entire license notice for the
|
||||
* JavaScript code in this page.
|
||||
*
|
||||
* Copyright (C) 2020 Lorenzo Cogotti
|
||||
*
|
||||
* The JavaScript code in this page is free software: you can
|
||||
* redistribute it and/or modify it under the terms of the GNU
|
||||
* General Public License (GNU GPL) as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
*
|
||||
* As additional permission under GNU GPL version 3 section 7, you
|
||||
* may distribute non-source (e.g., minimized or compacted) forms of
|
||||
* that code without the copy of the GNU GPL normally required by
|
||||
* section 4, provided you include this license notice and a URL
|
||||
* through which recipients can access the Corresponding Source.
|
||||
*
|
||||
* @licend The above is the entire license notice
|
||||
* for the JavaScript code in this page.
|
||||
* ----------------------------------------------- */
|
||||
|
||||
particlesJS('particles-bg',
|
||||
|
||||
{
|
||||
"particles": {
|
||||
"number": {
|
||||
"value": 80,
|
||||
"density": {
|
||||
"enable": true,
|
||||
"value_area": 200
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"value": "#ffffff"
|
||||
},
|
||||
"shape": {
|
||||
"type": "circle"
|
||||
},
|
||||
"opacity": {
|
||||
"value": 0.3,
|
||||
"random": true,
|
||||
"anim": {
|
||||
"enable": true,
|
||||
"speed": 3000,
|
||||
"opacity_min": 0.1,
|
||||
"sync": false
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"value": 2.8,
|
||||
"value_min": 1,
|
||||
"random": true
|
||||
},
|
||||
"line_linked": {
|
||||
"enable": false
|
||||
},
|
||||
"move": {
|
||||
"enable": true,
|
||||
"speed": 550, // in pixel-per-second
|
||||
"direction": "bottom",
|
||||
"random": false,
|
||||
"straight": true,
|
||||
"out_mode": "out",
|
||||
"attract": {
|
||||
"enable": true,
|
||||
"rotateX": 600,
|
||||
"rotateY": 1200
|
||||
}
|
||||
},
|
||||
"trail": {
|
||||
"enable": true,
|
||||
"samples": 7,
|
||||
"discont_threshold": 4
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"detect_on": "canvas",
|
||||
"events": {
|
||||
"onhover": {
|
||||
"enable": true,
|
||||
"mode": "repulse"
|
||||
},
|
||||
"resize": true
|
||||
},
|
||||
"modes": {
|
||||
"repulse": {
|
||||
"distance": 150
|
||||
}
|
||||
}
|
||||
},
|
||||
"retina_detect": true
|
||||
}
|
||||
|
||||
);
|
@ -0,0 +1,168 @@
|
||||
window.requestAnimFrame = (function(){
|
||||
return window.requestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
window.mozRequestAnimationFrame ||
|
||||
window.oRequestAnimationFrame ||
|
||||
window.msRequestAnimationFrame ||
|
||||
function(callback){
|
||||
window.setTimeout(callback, 1000 / 8);
|
||||
};
|
||||
})();
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
// Initial setup
|
||||
function $(x) {return document.getElementById(x);}
|
||||
|
||||
let $container = $("banner-textarea");
|
||||
let $message = $("banner-msg");
|
||||
let $animate = $("banner-msg-animate");
|
||||
let $paragraph = null;
|
||||
|
||||
const asciiEscMap = {
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
"'": ''',
|
||||
'`': '`'
|
||||
};
|
||||
|
||||
function needsAsciiEsc(str) {
|
||||
for (let i of str) {
|
||||
if (asciiEscMap[i]) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function isAsciiString(str) {
|
||||
for (let i of str) {
|
||||
if (i.codePointAt(0) > 127) { return false; }
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function maybeEscpDec(ch) {
|
||||
const cp = ch.codePointAt(0);
|
||||
return cp > 127 ? '&#' + cp + ';' : ch;
|
||||
}
|
||||
function escpAscii(str) {
|
||||
return [...str].map(x => asciiEscMap[x] || x).join("");
|
||||
}
|
||||
|
||||
function escp(text) {
|
||||
if (needsAsciiEsc(text)) {
|
||||
text = escpAscii(text);
|
||||
}
|
||||
return isAsciiString(text) ? text : [...text].map(maybeEscpDec).join("");
|
||||
}
|
||||
|
||||
// Messages setup
|
||||
|
||||
/* MESSAGES be like:
|
||||
* [ {"delay": 0, "text": "message 1"},
|
||||
* {"delay": 1200, "text": "message 2"},
|
||||
* {"delay": 2200, "text": "message 4"},
|
||||
* {"delay": 3600, "text": "message 5"},
|
||||
* {"delay": 5200, "text": "message 6"} ]
|
||||
*/
|
||||
const MESSAGES = JSON.parse($animate.getAttribute('data-msg'));
|
||||
|
||||
function scramble($element, text, options) {
|
||||
const defaults = {
|
||||
probability: 0.25,
|
||||
glitches: "-%¥¶!\"❏_△§*¢ ¿",
|
||||
blank: "",
|
||||
duration: text.length * 80,
|
||||
delay: 0.0
|
||||
};
|
||||
const settings = {...defaults, ...options};
|
||||
|
||||
function shuffle() {return (Math.random() < 0.5) ? 1 : -1;}
|
||||
function wrap(text, classes) {return "<span class=\"" + classes + "\">" + text + "</span>";}
|
||||
|
||||
const glitchCharacters = [...settings.glitches].map(escp);
|
||||
const glitchLength = glitchCharacters.length;
|
||||
const glitchProbability = settings.probability;
|
||||
const glitches = glitchCharacters.map(x => wrap(x, "pop"));
|
||||
|
||||
const ghostCharacters = [...$element.innerText].map(escp);
|
||||
const ghostLength = ghostCharacters.length;
|
||||
const ghosts = ghostCharacters.map(x => wrap(x, "ghost"));
|
||||
const textCharacters = [...text].map(escp);
|
||||
const textLength = textCharacters.length;
|
||||
const order = Array.from(Array(textLength).keys()).sort(shuffle);
|
||||
|
||||
let output = [];
|
||||
for (let i = 0; i < textLength; ++i) {
|
||||
const index = Math.floor(Math.random() * (glitchLength - 1));
|
||||
const glitchCharacter = glitches[index];
|
||||
const ghostCharacter = ghosts[i] || settings.blank;
|
||||
const character = Math.random() < glitchProbability ? glitchCharacter : ghostCharacter;
|
||||
output.push(character);
|
||||
}
|
||||
|
||||
// Animation
|
||||
const duration = settings.duration;
|
||||
const ease = settings.ease;
|
||||
|
||||
let start = null;
|
||||
const TRESH = 1000 / 8; // 8FPS, more than enough
|
||||
|
||||
function easeInOutQuad(t) {
|
||||
if (t < 0.5)
|
||||
return 2 * t * t;
|
||||
|
||||
return Math.min((4 - 2 * t) * t - 1, 1);
|
||||
}
|
||||
function refresh() {
|
||||
const now = Date.now();
|
||||
if (!start) { start = now; }
|
||||
|
||||
const elapsed = now - start;
|
||||
if (elapsed < TRESH) {
|
||||
window.requestAnimFrame(refresh);
|
||||
return;
|
||||
}
|
||||
if (elapsed > duration) {
|
||||
$element.innerHTML = text;
|
||||
return;
|
||||
}
|
||||
|
||||
const interp = easeInOutQuad(elapsed / duration);
|
||||
const progress = Math.floor(interp * (textLength - 1));
|
||||
for (let i = 0; i < progress; ++i) {
|
||||
const index = order[i];
|
||||
output[index] = textCharacters[index];
|
||||
}
|
||||
|
||||
$element.innerHTML = output.join('');
|
||||
window.requestAnimFrame(refresh);
|
||||
}
|
||||
|
||||
setTimeout(refresh, settings.delay);
|
||||
}
|
||||
|
||||
function animate() {
|
||||
for (let i = 0; i < MESSAGES.length; ++i) {
|
||||
let data = MESSAGES[i];
|
||||
let element = $paragraph.item(i);
|
||||
|
||||
element.innerText = '';
|
||||
let options = { delay: data.delay };
|
||||
|
||||
scramble(element, data.text, options);
|
||||
}
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
for (let _ in MESSAGES) {
|
||||
let elem = document.createElement("p");
|
||||
elem.className = "banner-msg-line";
|
||||
$message.appendChild(elem);
|
||||
}
|
||||
$paragraph = $container.getElementsByTagName("p");
|
||||
animate();
|
||||
}
|
||||
|
||||
initialize();
|
||||
}).call(this);
|
@ -0,0 +1,279 @@
|
||||
@import "variables"
|
||||
|
||||
// common variables for this page
|
||||
$-h1: rgba(45,45,45,1)
|
||||
$-outline: rgba(#fff, .4)
|
||||
$-shadow: rgba($yellow, .5)
|
||||
|
||||
$-term-color: #c3993c
|
||||
$-term-height: 550px
|
||||
$-term-height-mid: 400px
|
||||
$-term-height-mobile: 280px
|
||||
$-term-scanline-height: 5px
|
||||
|
||||
.main
|
||||
background-color: var(--background-color)
|
||||
color: var(--foreground-color)
|
||||
padding: 10px 15px
|
||||
font-size: 0.9em
|
||||
|
||||
.headline
|
||||
max-width: $page-width
|
||||
height: auto
|
||||
font-size: $bigger-font-size
|
||||
text-align: center
|
||||
|
||||
.alt-background
|
||||
background: var(--alt-background-color)
|
||||
|
||||
.cards-list
|
||||
max-width: $page-width
|
||||
height: 100%
|
||||
display: flex
|
||||
flex-direction: column
|
||||
justify-content: center
|
||||
align-items: center
|
||||
text-align: center
|
||||
padding: $large-spacer $huge-spacer
|
||||
|
||||
.nav-spacer
|
||||
display: none // so the banner is against the navbar
|
||||
|
||||
.banner-burnin
|
||||
position: absolute
|
||||
width: 100%
|
||||
height: 100%
|
||||
z-index: $back
|
||||
box-shadow: inset 0px 0px 1px 1px rgba(64, 64, 64, .1)
|
||||
background: radial-gradient(ellipse at center,darken($-term-color,30%) 0%,rgba(64,64,64,0) 50%)
|
||||
transform-origin : 50% 50%
|
||||
transform: perspective(20px) rotateX(.5deg) skewX(2deg) scale(1.03)
|
||||
animation: burnin 1s linear infinite
|
||||
opacity: .9
|
||||
|
||||
.banner-burnin::after
|
||||
position: relative
|
||||
background: radial-gradient(ellipse at center, rgba(0,0,0,0.5) 0%,rgba(64,64,64,0) 100%)
|
||||
opacity: .1
|
||||
|
||||
.banner-terminal
|
||||
position: relative
|
||||
z-index: 90
|
||||
margin: 0 auto
|
||||
width: 100%
|
||||
height: $-term-height
|
||||
background-color: #0a1922
|
||||
overflow: hidden
|
||||
|
||||
.banner-terminal::before
|
||||
position: absolute
|
||||
width: 100%
|
||||
height: 100%
|
||||
top: 0
|
||||
left: 0
|
||||
content: ""
|
||||
z-index: $front
|
||||
background: linear-gradient(#777 50%, #0a1922 50%)
|
||||
background-size: 100% 4px
|
||||
background-repeat: repeat-y
|
||||
opacity: .14
|
||||
box-shadow : inset 0px 0px 1px 1px rgba(0, 0, 0, .8)
|
||||
animation: pulse 5s linear infinite
|
||||
|
||||
.banner-terminal::after
|
||||
position: absolute
|
||||
content: ""
|
||||
top: 0
|
||||
left: 0
|
||||
width: 100%
|
||||
height: 76%
|
||||
z-index: 99
|
||||
background: radial-gradient(ellipse at center, rgba(0,0,0,1) 0%,rgba(0,0,0,0.62) 45%,rgba(0,9,4,0.6) 47%,$-term-color 100%)
|
||||
background-color: $-term-color
|
||||
box-shadow : inset 0px 0px 4px 4px rgba(100, 100, 100, .5)
|
||||
opacity : .1
|
||||
|
||||
.banner-scanline
|
||||
--scanline-area: #{$-term-height}
|
||||
|
||||
position: relative
|
||||
z-index: 99
|
||||
width: 100%
|
||||
height: 5px
|
||||
background: linear-gradient(to bottom, rgba(255,0,0,0) 0%,rgba(255,250,250,1) 50%,rgba(255,255,255,0.98) 51%,rgba(255,0,0,0) 100%)
|
||||
background-color: #fff
|
||||
background-size: 100% 4px
|
||||
opacity : .1
|
||||
animation: scanline 3.25s ease-in-out infinite
|
||||
|
||||
.banner-textarea
|
||||
position: relative
|
||||
width: 1500px
|
||||
height: 600px
|
||||
margin: 0 auto
|
||||
|
||||
.banner-prompt
|
||||
position: relative
|
||||
text-align: left
|
||||
padding-left: 1em
|
||||
font-family: Inconsolata, Courier, unicase
|
||||
text-shadow: 0 0 8px rgba(lighten($-term-color, 50%), 0.3)
|
||||
font-size: 4em
|
||||
color: $-term-color
|
||||
|
||||
.ghost, .pop
|
||||
opacity: 0.27
|
||||
|
||||
.banner-msg-line
|
||||
text-shadow: 0 0 8px rgba(lighten($-term-color, 30%), 0.3)
|
||||
font-family: Inconsolata, Courier, monospace
|
||||
font-smoothing: antialiased
|
||||
padding-left: 6em
|
||||
font-size: 3em
|
||||
white-space: pre
|
||||
color: $-term-color
|
||||
overflow: hidden
|
||||
|
||||
#banner-msg-animate
|
||||
text-shadow: 0 0 8px rgba(lighten($-term-color, 50%), 0.1)
|
||||
color: darken(desaturate($-term-color, 10%), 20%)
|
||||
bottom: 0
|
||||
|
||||
.flicker
|
||||
margin: 0
|
||||
color: $-h1
|
||||
letter-spacing: -.05rem
|
||||
|
||||
.flicker::before
|
||||
content: attr(letter)
|
||||
position: absolute
|
||||
overflow: hidden
|
||||
color: $yellow
|
||||
z-index: $above
|
||||
text-shadow: none
|
||||
animation: flicker 3s linear infinite
|
||||
|
||||
.glitch
|
||||
margin: 0
|
||||
letter-spacing: -0.05rem
|
||||
display: inline-block
|
||||
animation: glitch 1s linear infinite
|
||||
|
||||
.glitch::before, .glitch::after
|
||||
content: attr(text)
|
||||
position: absolute
|
||||
overflow: hidden
|
||||
|
||||
.glitch::before
|
||||
left: 0;
|
||||
animation: glitch-top 1s linear infinite
|
||||
clip-path: polygon(0 0, 100% 0, 100% 33%, 0 33%)
|
||||
|
||||
.glitch::after
|
||||
left: 0
|
||||
animation: glitch-bottom 1.5s linear infinite
|
||||
clip-path: polygon(0 67%, 100% 67%, 100% 100%, 0 100%)
|
||||
|
||||
@keyframes burnin
|
||||
0%
|
||||
transform: scale(1, 1.002)
|
||||
50%
|
||||
transform: scale(1, 1.0001)
|
||||
100%
|
||||
transform: scale(1.001, 1)
|
||||
|
||||
@keyframes scanline
|
||||
to
|
||||
transform: translateY(var(--scanline-area)) translateY(-$-term-scanline-height)
|
||||
|
||||
@keyframes pulse
|
||||
0%
|
||||
transform: scale(1.001)
|
||||
opacity: .14
|
||||
8%
|
||||
transform: scale(1.000)
|
||||
opacity: .13
|
||||
15%
|
||||
transform: scale(1.004)
|
||||
opacity: .14
|
||||
30%
|
||||
transform: scale(1.002)
|
||||
opacity: .11
|
||||
100%
|
||||
transform: scale(1.000)
|
||||
opacity: .14
|
||||
|
||||
@keyframes flicker
|
||||
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100%
|
||||
opacity: .99
|
||||
text-shadow: -1px -1px 0 $-outline, 1px -1px 0 $-outline, -1px 1px 0 $-outline, 1px 1px 0 $-outline, 0 -2px 8px, 0 0 2px, 0 0 5px #ff7e00, 0 0 15px #ff4444, 0 0 2px #ff7e00, 0 2px 3px #000
|
||||
|
||||
20%, 21.999%, 63%, 63.999%, 65%, 69.999%
|
||||
opacity: 0.4
|
||||
text-shadow: none
|
||||
|
||||
@keyframes glitch
|
||||
2%, 64%
|
||||
transform: translate(2px,0) skew(0deg)
|
||||
4%, 60%
|
||||
transform: translate(-2px,0) skew(0deg)
|
||||
62%
|
||||
transform: translate(0,0) skew(5deg)
|
||||
|
||||
@keyframes glitch-top
|
||||
2%, 64%
|
||||
transform: translate(2px,-2px)
|
||||
4%, 60%
|
||||
transform: translate(-2px,2px)
|
||||
62%
|
||||
transform: translate(13px,-1px) skew(-13deg)
|
||||
|
||||
@keyframes glitch-bottom
|
||||
2%, 64%
|
||||
transform: translate(-2px,0)
|
||||
4%, 60%
|
||||
transform: translate(-2px,0)
|
||||
62%
|
||||
transform: translate(-22px,5px) skew(21deg)
|
||||
|
||||
@keyframes typing
|
||||
to
|
||||
width: 100%
|
||||
|
||||
@keyframes blinking
|
||||
from, to
|
||||
border-color: transparent
|
||||
50%
|
||||
border-color: orange
|
||||
|
||||
.motto
|
||||
text-align: left
|
||||
padding-top: $large-spacer
|
||||
|
||||
@media only screen and (max-width:1200px)
|
||||
.banner-terminal
|
||||
height: $-term-height-mid
|
||||
.banner-scanline
|
||||
--scanline-area: #{$-term-height-mid}
|
||||
.banner-prompt
|
||||
font-size: 3em
|
||||
.banner-msg-line
|
||||
font-size: 2em
|
||||
|
||||
@media only screen and (max-width:1000px)
|
||||
html, body
|
||||
overflow-x: hidden
|
||||
|
||||
body
|
||||
-webkit-text-size-adjust: none
|
||||
|
||||
@media only screen and (max-width:800px)
|
||||
.banner-terminal
|
||||
height: $-term-height-mobile
|
||||
.banner-scanline
|
||||
--scanline-area: #{$-term-height-mobile}
|
||||
.banner-prompt
|
||||
font-size: 2em
|
||||
.banner-msg-line
|
||||
font-size: 1.5em
|
||||
padding-left: 3em
|
@ -0,0 +1,87 @@
|
||||
@import "variables"
|
||||
|
||||
#mobile-navbar
|
||||
display: none
|
||||
overflow: hidden
|
||||
color: white !important
|
||||
font-weight: bold
|
||||
|
||||
#mobile-subnav
|
||||
background-color: #0a1922
|
||||
|
||||
#mobile-subnav
|
||||
display: none
|
||||
|
||||
#menu
|
||||
padding: 5px 0
|
||||
color: white
|
||||
padding-right: 5px
|
||||
padding-left: 5px
|
||||
font-size: 1.1rem !important
|
||||
|
||||
#navbar
|
||||
display: block
|
||||
|
||||
.nav
|
||||
background-color: #0a1922
|
||||
padding: 5px 0
|
||||
border-top: 4px solid $teal
|
||||
|
||||
.nav-spacer
|
||||
margin-bottom: $small-spacer
|
||||
|
||||
.df-community-link:before
|
||||
content: ""
|
||||
background-image: url(/heart.svg) !important
|
||||
background-size: 12px 16px
|
||||
width: 12px
|
||||
height: 16px
|
||||
margin-left: 5px
|
||||
margin-right: 5px
|
||||
vertical-align: middle
|
||||
display: inline-block
|
||||
|
||||
#menu .navbar-item, .nav .navbar-item, .nav .navbar-item:visited
|
||||
color: white
|
||||
padding-right: 5px
|
||||
padding-left: 5px
|
||||
|
||||
@media only screen and (max-width:340px)
|
||||
#mobile-navbar
|
||||
font-size: 1.1rem !important
|
||||
#hamburger
|
||||
padding-left: 0.5rem !important
|
||||
|
||||
@media only screen and (max-width: 1000px)
|
||||
#menu .navbar-item
|
||||
display: block
|
||||
|
||||
#mobile-subnav
|
||||
display: block
|
||||
|
||||
#mobile-toggle + #menu
|
||||
display: none
|
||||
|
||||
#mobile-toggle:checked + #menu
|
||||
display: block
|
||||
|
||||
#mobile-navbar, #menu
|
||||
display: block
|
||||
font-size: 1.2rem
|
||||
line-height: 2.2rem
|
||||
|
||||
#mobile-navbar
|
||||
margin-top: 0.4rem
|
||||
|
||||
#navbar
|
||||
display: none
|
||||
|
||||
#mobile-toggle
|
||||
display: none
|
||||
#hamburger
|
||||
float: right;
|
||||
padding:
|
||||
left: 1.5rem;
|
||||
right: 0.5rem;
|
||||
|
||||
line-height: 0;
|
@ -0,0 +1,41 @@
|
||||
@import "variables"
|
||||
|
||||
.notfound-page
|
||||
position: relative
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
width: $page-width
|
||||
margin: 0 auto
|
||||
gap: $large-spacer
|
||||
|
||||
.notfound-content
|
||||
position: relative
|
||||
padding-top: $large-spacer
|
||||
max-width: $card-width
|
||||
|
||||
.notes
|
||||
padding-top: $spacer
|
||||
|
||||
.notfound-404-chan
|
||||
position: relative
|
||||
width: $card-width
|
||||
height: $card-height
|
||||
background:
|
||||
image: url("/404-chan_sm.png")
|
||||
position: bottom right $huge-spacer
|
||||
repeat: no-repeat
|
||||
size: 144px 256px
|
||||
|
||||
#particles-bg
|
||||
position: absolute
|
||||
width: 100%
|
||||
height: 100%
|
||||
top: 0
|
||||
left: 0
|
||||
z-index: $foremost
|
||||
|
||||
@media (max-width: 800px)
|
||||
.notfound-content
|
||||
text-align: center
|
||||
.notfound-page
|
||||
flex-direction: column
|
@ -0,0 +1,192 @@
|
||||
@import "variables"
|
||||
|
||||
// Some convenience class to manage resolution specific elements
|
||||
@media only screen and (max-width:600px)
|
||||
.on-pc-screen
|
||||
display: none !important
|
||||
@media only screen and (min-width:600px)
|
||||
.on-mobile-screen
|
||||
display: none !important
|
||||
|
||||
@media only screen and (max-width:1200px)
|
||||
.on-largest-screen
|
||||
display: none !important
|
||||
@media only screen and (min-width:1200px)
|
||||
.up-to-largest-screen
|
||||
display: none !important
|
||||
|
||||
@media only screen and (max-width:1000px)
|
||||
.on-large-screen
|
||||
display: none !important
|
||||
@media only screen and (min-width:1000px)
|
||||
.up-to-large-screen
|
||||
display: none !important
|
||||
|
||||
@media only screen and (max-width:800px)
|
||||
.on-small-screen
|
||||
display: none !important
|
||||
@media only screen and (min-width:800px)
|
||||
.up-to-small-screen
|
||||
display: none !important
|
||||
|
||||
*
|
||||
box-sizing: border-box
|
||||
z-index: $foreground
|
||||
|
||||
html, body
|
||||
width: 100%
|
||||
height: 100%
|
||||
min-width: $min-page-width
|
||||
|
||||
h1.page-title
|
||||
text-align: left
|
||||
font-size: $large-font-size
|
||||
color: var(--title-text-color)
|
||||
h1.page-title:first-letter
|
||||
text-transform: capitalize
|
||||
|
||||
body
|
||||
margin: 0
|
||||
font-family: var(--body-font)
|
||||
font-size: $body-font-size
|
||||
line-height: $body-line-height
|
||||
color: var(--foreground-color)
|
||||
background-color: var(--background-color)
|
||||
-webkit-text-size-adjust: 100%
|
||||
-ms-text-size-adjust: 100%
|
||||
|
||||
a
|
||||
color: var(--link-color)
|
||||
|
||||
// `:focus` is linked to `:hover` for basic accessibility
|
||||
&:hover, &:focus
|
||||
color: var(--link-hover-color)
|
||||
|
||||
strong
|
||||
color: inherit
|
||||
|
||||
a:not(:hover)
|
||||
text-decoration: none
|
||||
|
||||
.container
|
||||
margin: 0 auto
|
||||
position: relative
|
||||
max-width: $page-width
|
||||
padding: 0 0.2em
|
||||
|
||||
.external-link-light:after
|
||||
background-image: url(/external-link-dark.svg) !important
|
||||
.external-link:after
|
||||
content: ""
|
||||
background-image: url(/external-link-light.svg)
|
||||
background-size: 10px 10px
|
||||
display: inline-block
|
||||
width: 10px
|
||||
height: 10px
|
||||
margin-left: 5px
|
||||
|
||||
img
|
||||
display: block
|
||||
max-width: 100%
|
||||
margin-bottom: $spacer
|
||||
border-radius: $border-radius
|
||||
|
||||
table
|
||||
margin-bottom: $spacer
|
||||
width: 100%
|
||||
border: 0 solid var(--border-color)
|
||||
border-collapse: collapse
|
||||
|
||||
td, th
|
||||
padding: .25rem .5rem
|
||||
border:
|
||||
color: inherit
|
||||
style: solid
|
||||
width: 0
|
||||
bottom-width: 1px
|
||||
|
||||
th
|
||||
text-align: left
|
||||
|
||||
thead th
|
||||
border-bottom-color: currentColor
|
||||
|
||||
.header
|
||||
display: flex
|
||||
align-items: flex-end
|
||||
|
||||
.header-text
|
||||
font-size: $large-font-size
|
||||
color: var(--title-text-color)
|
||||
font-weight: bold
|
||||
display: inline-block
|
||||
padding: 1em 0.5em 1em 0.5em
|
||||
|
||||
.header-image
|
||||
background:
|
||||
image: url(/doublefourteen-logo-dark.svg)
|
||||
repeat: no-repeat
|
||||
|
||||
width: 330px
|
||||
height: 180px
|
||||
display: inline-block
|
||||
margin: 0 0.5em 0 0.5em
|
||||
|
||||
.work-in-progress-content
|
||||
display: flex
|
||||
justify-content: space-between
|
||||
|
||||
.work-in-progress-text
|
||||
position: relative
|
||||
|
||||
.work-in-progress-sign
|
||||
width: 400px
|
||||
height: 386px
|
||||
background:
|
||||
image: url(/work-in-progress.png)
|
||||
position: bottom right
|
||||
repeat: no-repeat
|
||||
size: 400px 386px
|
||||
|
||||
.button, .button:hover
|
||||
background-color: transparent
|
||||
border: 2px solid #737475
|
||||
color: #333
|
||||
padding: 7px 12px
|
||||
display: block
|
||||
margin: 10px 0
|
||||
font-size: $body-font-size
|
||||
font-weight: 700
|
||||
text-decoration: none !important
|
||||
.button a
|
||||
display: inline
|
||||
text-decoration: none !important
|
||||
color: #666
|
||||
.button:hover
|
||||
background-color: #7f7f7f
|
||||
|
||||
|
||||
.footer
|
||||
text-align: center
|
||||
padding-top: $large-spacer
|
||||
|
||||
@media (prefers-color-scheme:dark)
|
||||
.external-link:after
|
||||
background-image: url(/external-link-dark.svg)
|
||||
.header-image
|
||||
background-image: url(/doublefourteen-logo-light.svg)
|
||||
|
||||
// FIXME
|
||||
.button, .button:hover
|
||||
color: inherit
|
||||
.button a
|
||||
color: #ccc
|
||||
.button:hover
|
||||
background-color: #383838
|
||||
|
||||
|
||||
@media only screen and (max-width:800px)
|
||||
.work-in-progress-content
|
||||
flex-direction: column
|
||||
.work-in-progress-text
|
||||
text-align: center
|
@ -0,0 +1,118 @@
|
||||
// Standard page width
|
||||
$page-width: 1000px
|
||||
// Minimum supported page width (forced on html, body)
|
||||
$min-page-width: 500px
|
||||
|
||||
// Small card objects, wrap text or small images on lists
|
||||
$card-width: 400px
|
||||
$card-height: 500px
|
||||
|
||||
// Consistent spacing for elements
|
||||
$smallest-spacer: 10px
|
||||
$small-spacer: 30px
|
||||
$spacer: 1rem
|
||||
$large-spacer: $spacer * 1.5
|
||||
$huge-spacer: $spacer * 3
|
||||
|
||||
// Fonts
|
||||
$body-line-height: 1.5
|
||||