This commit is contained in:
parent
68daff1eea
commit
6fa1d7adbb
29 changed files with 1726 additions and 4 deletions
95
assets/css/buttons.scss
Normal file
95
assets/css/buttons.scss
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
.button-container {
|
||||||
|
display: table;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
.button,
|
||||||
|
a.button {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 8px 18px;
|
||||||
|
margin: 5px 0;
|
||||||
|
text-decoration: none;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 8;
|
||||||
|
border: 1px solid $accent;
|
||||||
|
background: $accent;
|
||||||
|
color: $background;
|
||||||
|
font: inherit;
|
||||||
|
font-weight: bold;
|
||||||
|
appearance: none;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: transparentize($accent, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* variants */
|
||||||
|
|
||||||
|
&.outline {
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
padding: 8px 18px;
|
||||||
|
|
||||||
|
:hover {
|
||||||
|
transform: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.link {
|
||||||
|
background: none;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sizes */
|
||||||
|
|
||||||
|
&.small {
|
||||||
|
font-size: .8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.wide {
|
||||||
|
min-width: 200px;
|
||||||
|
padding: 14px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a.read-more,
|
||||||
|
a.read-more:hover,
|
||||||
|
a.read-more:active {
|
||||||
|
display: inline-flex;
|
||||||
|
border: none;
|
||||||
|
color: $accent;
|
||||||
|
background: none;
|
||||||
|
box-shadow: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 20px 0;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-toolbar {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
.toolbar-item a {
|
||||||
|
position: relative;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 3px 8px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
text-decoration: none;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
appearance: none;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
84
assets/css/code.scss
Normal file
84
assets/css/code.scss
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
.collapsable-code {
|
||||||
|
$border-color: mix($accent, #999, 90%);
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
margin: 40px 0;
|
||||||
|
|
||||||
|
input[type="checkbox"] {
|
||||||
|
position: absolute;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"]:checked {
|
||||||
|
~ pre,
|
||||||
|
~ .code-toolbar pre {
|
||||||
|
height: 0;
|
||||||
|
padding: 0;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
~ .code-toolbar {
|
||||||
|
padding: 0;
|
||||||
|
border-top: none;
|
||||||
|
|
||||||
|
.toolbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
~ label .collapsable-code__toggle:after {
|
||||||
|
content: attr(data-label-expand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
min-width: 30px;
|
||||||
|
min-height: 30px;
|
||||||
|
margin: 0;
|
||||||
|
border-bottom: 1px solid $border-color;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
flex: 1;
|
||||||
|
color: $accent;
|
||||||
|
padding: 3px 10px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__language {
|
||||||
|
color: $accent;
|
||||||
|
border: 1px solid $border-color;
|
||||||
|
border-bottom: none;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 3px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__toggle {
|
||||||
|
color: $accent;
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 3px 10px;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: attr(data-label-collapse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
margin-top: 0;
|
||||||
|
|
||||||
|
&::first-line {
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-toolbar {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
1
assets/css/color/blue.scss
Normal file
1
assets/css/color/blue.scss
Normal file
|
@ -0,0 +1 @@
|
||||||
|
$accent: #23B0FF;
|
1
assets/css/color/green.scss
Normal file
1
assets/css/color/green.scss
Normal file
|
@ -0,0 +1 @@
|
||||||
|
$accent: #78E2A0;
|
1
assets/css/color/orange.scss
Normal file
1
assets/css/color/orange.scss
Normal file
|
@ -0,0 +1 @@
|
||||||
|
$accent: #FFA86A;
|
1
assets/css/color/pink.scss
Normal file
1
assets/css/color/pink.scss
Normal file
|
@ -0,0 +1 @@
|
||||||
|
$accent: #EE72F1;
|
1
assets/css/color/red.scss
Normal file
1
assets/css/color/red.scss
Normal file
|
@ -0,0 +1 @@
|
||||||
|
$accent: #FF6266;
|
15
assets/css/font.scss
Normal file
15
assets/css/font.scss
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
@font-face {
|
||||||
|
font-display: swap;
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url("../fonts/IBMPlexMono-Regular.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-display: swap;
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 800;
|
||||||
|
src: url("../fonts/IBMPlexMono-Bold.woff2") format("woff2");
|
||||||
|
}
|
44
assets/css/footer.scss
Normal file
44
assets/css/footer.scss
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
.footer {
|
||||||
|
padding: 40px 0;
|
||||||
|
flex-grow: 0;
|
||||||
|
opacity: .5;
|
||||||
|
|
||||||
|
&__inner {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 0;
|
||||||
|
width: 760px;
|
||||||
|
max-width: 100%;
|
||||||
|
|
||||||
|
@media ($tablet) {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copyright {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
flex: 1;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 1rem;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&--user {
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > *:first-child:not(:only-child) {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
43
assets/css/form.scss
Normal file
43
assets/css/form.scss
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
input, textarea, select {
|
||||||
|
background: transparent;
|
||||||
|
color: $accent;
|
||||||
|
border: 1px solid $accent;
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 10px;
|
||||||
|
margin: 5px 0;
|
||||||
|
font: inherit;
|
||||||
|
appearance: none;
|
||||||
|
|
||||||
|
&:focus, :active {
|
||||||
|
border-color: $color;
|
||||||
|
outline: 1px solid $color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
background: $background;
|
||||||
|
|
||||||
|
option {
|
||||||
|
background: $background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::placeholder {
|
||||||
|
color: transparentize($accent, .5);
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
&[type="checkbox"] {
|
||||||
|
vertical-align: middle;
|
||||||
|
padding: 10px;
|
||||||
|
box-shadow: inset 0 0 0 3px $background;
|
||||||
|
|
||||||
|
&:checked {
|
||||||
|
background: $accent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
6
assets/css/gist.scss
Normal file
6
assets/css/gist.scss
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
body .gist .blob-num /* line numbers */,
|
||||||
|
body .gist .blob-code-inner
|
||||||
|
{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
34
assets/css/header.scss
Normal file
34
assets/css/header.scss
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__inner {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__logo {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
background: repeating-linear-gradient(90deg, $accent, $accent 2px, transparent 0, transparent 10px);
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
max-width: 100%;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8
assets/css/logo.scss
Normal file
8
assets/css/logo.scss
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
.logo {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
text-decoration: none;
|
||||||
|
background: $accent;
|
||||||
|
color: black;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
346
assets/css/main.scss
Normal file
346
assets/css/main.scss
Normal file
|
@ -0,0 +1,346 @@
|
||||||
|
html {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.54;
|
||||||
|
letter-spacing: -0.02em;
|
||||||
|
background-color: $background;
|
||||||
|
color: $color;
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
|
||||||
|
font-variant-ligatures: contextual;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.headings--one-size {
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
line-height: 1.3;
|
||||||
|
|
||||||
|
&:not(first-child) {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3 {
|
||||||
|
font-size: 1.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
|
||||||
|
/* Waiting for a better times... */
|
||||||
|
/* &:has(code) {
|
||||||
|
text-decoration-color: $accent;
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
|
||||||
|
&.left {
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.center {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
display: table;
|
||||||
|
max-width: 100%;
|
||||||
|
margin: 25px 0;
|
||||||
|
|
||||||
|
&.left {
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.center {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption {
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
margin-top: 5px;
|
||||||
|
background: $accent;
|
||||||
|
color: $background;
|
||||||
|
/* opacity: .8; */
|
||||||
|
|
||||||
|
&.left {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
code, kbd {
|
||||||
|
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;
|
||||||
|
font-feature-settings: normal;
|
||||||
|
background: transparentize($accent, .8);
|
||||||
|
color: $accent;
|
||||||
|
padding: 1px 6px;
|
||||||
|
margin: 0 2px;
|
||||||
|
font-size: .95rem;
|
||||||
|
|
||||||
|
code, kbd {
|
||||||
|
background: transparent;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background: transparent !important;
|
||||||
|
padding: 20px 10px;
|
||||||
|
margin: 40px 0;
|
||||||
|
font-size: .95rem !important;
|
||||||
|
overflow: auto;
|
||||||
|
border-top: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
|
||||||
|
+ pre {
|
||||||
|
border-top: 0;
|
||||||
|
margin-top: -40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background: none !important;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: inherit;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border-top: 1px solid $accent;
|
||||||
|
border-bottom: 1px solid $accent;
|
||||||
|
margin: 40px 0;
|
||||||
|
padding: 25px;
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:first-of-type {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:last-of-type {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:first-of-type:before {
|
||||||
|
content: '>';
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: -25px;
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.twitter-tweet {
|
||||||
|
position: relative;
|
||||||
|
background: transparentize($accent, .9);
|
||||||
|
font: inherit;
|
||||||
|
color: inherit;
|
||||||
|
border: 1px solid $accent;
|
||||||
|
padding-top: 60px;
|
||||||
|
|
||||||
|
p:before {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: '> From Twitter:';
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
color: $accent;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
table-layout: auto;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
margin: 40px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
border: 1px dashed $accent;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
margin-left: 22px;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
list-style: none;
|
||||||
|
counter-reset: li;
|
||||||
|
|
||||||
|
> li {
|
||||||
|
counter-increment: li;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: counter(li);
|
||||||
|
position: absolute;
|
||||||
|
right: calc(100% + 10px);
|
||||||
|
color: $accent;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
> ol {
|
||||||
|
margin-left: 38px;
|
||||||
|
|
||||||
|
> li {
|
||||||
|
counter-increment: li;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: counters(li, ".") " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mark {
|
||||||
|
background: $accent;
|
||||||
|
color: $background;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 40px;
|
||||||
|
max-width: 864px;
|
||||||
|
min-height: 100vh;
|
||||||
|
border-right: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
|
||||||
|
&.full,
|
||||||
|
&.center {
|
||||||
|
border: none;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.full {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
display: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
display: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
background: $border-color;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
line-height: 0;
|
||||||
|
}
|
157
assets/css/menu.scss
Normal file
157
assets/css/menu.scss
Normal file
|
@ -0,0 +1,157 @@
|
||||||
|
@mixin menu {
|
||||||
|
display: none;
|
||||||
|
flex-direction: column;
|
||||||
|
$shadow-color: transparentize($background, .2);
|
||||||
|
$shadow: 0 10px $shadow-color, -10px 10px $shadow-color, 10px 10px $shadow-color;
|
||||||
|
position: absolute;
|
||||||
|
background: $background;
|
||||||
|
box-shadow: $shadow;
|
||||||
|
color: white;
|
||||||
|
border: 2px solid;
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
top: 10px;
|
||||||
|
left: 0;
|
||||||
|
list-style: none;
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin header-menu-trigger {
|
||||||
|
color: $accent;
|
||||||
|
border: 2px solid;
|
||||||
|
margin-left: 10px;
|
||||||
|
height: 100%;
|
||||||
|
padding: 3px 8px;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navigation-menu {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 20px 1px;
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__inner {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
> li {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.spacer {
|
||||||
|
flex-grow: 1 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
&__trigger {
|
||||||
|
margin-right: 0 !important;
|
||||||
|
color: $accent;
|
||||||
|
user-select: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__dropdown {
|
||||||
|
@include menu;
|
||||||
|
|
||||||
|
.open & {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
> li {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: flex;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--desktop {
|
||||||
|
@media ($phone) {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--mobile {
|
||||||
|
.menu__trigger {
|
||||||
|
@include header-menu-trigger;
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu__dropdown {
|
||||||
|
@media ($phone) {
|
||||||
|
left: auto;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--language-selector {
|
||||||
|
.menu__trigger {
|
||||||
|
@include header-menu-trigger;
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu__dropdown {
|
||||||
|
left: auto;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
87
assets/css/pagination.scss
Normal file
87
assets/css/pagination.scss
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
.pagination {
|
||||||
|
margin-top: 50px;
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
margin: 100px 0 20px;
|
||||||
|
|
||||||
|
&-h {
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 5px 10px;
|
||||||
|
background: $background;
|
||||||
|
color: transparentize($color, .7);
|
||||||
|
font-size: .8rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
text-decoration: none;
|
||||||
|
letter-spacing: .1em;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 15px;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__buttons {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
position: relative;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 1rem;
|
||||||
|
padding: 0;
|
||||||
|
appearance: none;
|
||||||
|
|
||||||
|
@media($phone) {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex: 1;
|
||||||
|
padding: 8px 16px;
|
||||||
|
text-decoration: none;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.next .button__icon {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.previous .button__icon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
136
assets/css/post.scss
Normal file
136
assets/css/post.scss
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
.index-content {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.framed {
|
||||||
|
border: 1px solid $accent;
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
*:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.posts {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
margin: 20px auto;
|
||||||
|
padding: 20px 0;
|
||||||
|
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
border-bottom: 1px solid $border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-meta {
|
||||||
|
font-size: 1rem;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: transparentize($accent, .3);
|
||||||
|
|
||||||
|
& > *:not(:first-child) {
|
||||||
|
&::before {
|
||||||
|
content: "::";
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
$border: 3px dotted $accent;
|
||||||
|
position: relative;
|
||||||
|
color: $accent;
|
||||||
|
margin: 0 0 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
border-bottom: $border;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: 2px;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: $border;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-tags {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 1rem;
|
||||||
|
opacity: .5;
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-content {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-cover {
|
||||||
|
border: 20px solid $accent;
|
||||||
|
background: transparent;
|
||||||
|
margin: 40px 0;
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
@media ($phone) {
|
||||||
|
padding: 10px;
|
||||||
|
border-width: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
li:not(:empty):before {
|
||||||
|
content: '-';
|
||||||
|
position: absolute;
|
||||||
|
left: -20px;
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.post--regulation {
|
||||||
|
h1 {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
& + h2 {
|
||||||
|
margin-top: -10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hanchor {
|
||||||
|
color: transparentize($accent, .1);
|
||||||
|
text-decoration: none;
|
||||||
|
margin-left: 10px;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1:hover a, h2:hover a, h3:hover a, h4:hover a {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnotes {
|
||||||
|
color: transparentize($color, .5);
|
||||||
|
}
|
336
assets/css/prism.scss
Normal file
336
assets/css/prism.scss
Normal file
|
@ -0,0 +1,336 @@
|
||||||
|
/* PrismJS 1.24.1
|
||||||
|
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */
|
||||||
|
/**
|
||||||
|
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
|
||||||
|
* Based on https://github.com/chriskempson/tomorrow-theme
|
||||||
|
* @author Rose Pritchard
|
||||||
|
*/
|
||||||
|
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: #ccc;
|
||||||
|
background: none;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(pre) > code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background: #2d2d2d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre) > code[class*="language-"] {
|
||||||
|
padding: .1em;
|
||||||
|
border-radius: .3em;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.block-comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.tag,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.namespace,
|
||||||
|
.token.deleted {
|
||||||
|
color: #e2777a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.function-name {
|
||||||
|
color: #6196cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.function {
|
||||||
|
color: #f08d49;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.class-name,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol {
|
||||||
|
color: #f8c555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.important,
|
||||||
|
.token.atrule,
|
||||||
|
.token.keyword,
|
||||||
|
.token.builtin {
|
||||||
|
color: #cc99cd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.regex,
|
||||||
|
.token.variable {
|
||||||
|
color: #7ec699;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url {
|
||||||
|
color: #67cdcc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.inserted {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[data-line] {
|
||||||
|
position: relative;
|
||||||
|
padding: 1em 0 1em 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: inherit 0;
|
||||||
|
margin-top: 1em; /* Same as .prism’s padding-top */
|
||||||
|
|
||||||
|
background: hsla(24, 20%, 50%,.08);
|
||||||
|
background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
|
||||||
|
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
line-height: inherit;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
.line-highlight {
|
||||||
|
/*
|
||||||
|
* This will prevent browsers from replacing the background color with white.
|
||||||
|
* It's necessary because the element is layered on top of the displayed code.
|
||||||
|
*/
|
||||||
|
-webkit-print-color-adjust: exact;
|
||||||
|
color-adjust: exact;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight:before,
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
content: attr(data-start);
|
||||||
|
position: absolute;
|
||||||
|
top: .4em;
|
||||||
|
left: .6em;
|
||||||
|
min-width: 1em;
|
||||||
|
padding: 0 .5em;
|
||||||
|
background-color: hsla(24, 20%, 50%,.4);
|
||||||
|
color: hsl(24, 20%, 95%);
|
||||||
|
font: bold 65%/1.5 sans-serif;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: .3em;
|
||||||
|
border-radius: 999px;
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: 0 1px white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
content: attr(data-end);
|
||||||
|
top: auto;
|
||||||
|
bottom: .4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers .line-highlight:before,
|
||||||
|
.line-numbers .line-highlight:after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[id].linkable-line-numbers span.line-numbers-rows {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
pre[id].linkable-line-numbers span.line-numbers-rows > span:before {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {
|
||||||
|
background-color: rgba(128, 128, 128, .2);
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"].line-numbers {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 3.8em;
|
||||||
|
counter-reset: linenumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"].line-numbers > code {
|
||||||
|
position: relative;
|
||||||
|
white-space: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers .line-numbers-rows {
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: none;
|
||||||
|
top: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
left: -3.8em;
|
||||||
|
width: 3em; /* works for line-numbers below 1000 lines */
|
||||||
|
letter-spacing: -1px;
|
||||||
|
border-right: 1px solid #999;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers-rows > span {
|
||||||
|
display: block;
|
||||||
|
counter-increment: linenumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers-rows > span:before {
|
||||||
|
content: counter(linenumber);
|
||||||
|
color: #999;
|
||||||
|
display: block;
|
||||||
|
padding-right: 0.8em;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt {
|
||||||
|
border-right: 1px solid #999;
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
font-size: 100%;
|
||||||
|
letter-spacing: -1px;
|
||||||
|
margin-right: 1em;
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt > span:before {
|
||||||
|
color: #999;
|
||||||
|
content: ' ';
|
||||||
|
display: block;
|
||||||
|
padding-right: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt > span[data-user]:before {
|
||||||
|
content: "[" attr(data-user) "@" attr(data-host) "] $";
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt > span[data-user="root"]:before {
|
||||||
|
content: "[" attr(data-user) "@" attr(data-host) "] #";
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt > span[data-prompt]:before {
|
||||||
|
content: attr(data-prompt);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar {
|
||||||
|
position: absolute;
|
||||||
|
top: .3em;
|
||||||
|
right: .2em;
|
||||||
|
transition: opacity 0.3s ease-in-out;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar:hover > .toolbar {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Separate line b/c rules are thrown out if selector is invalid.
|
||||||
|
IE11 and old Edge versions don't support :focus-within. */
|
||||||
|
div.code-toolbar:focus-within > .toolbar {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button {
|
||||||
|
background: none;
|
||||||
|
border: 0;
|
||||||
|
color: inherit;
|
||||||
|
font: inherit;
|
||||||
|
line-height: normal;
|
||||||
|
overflow: visible;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-user-select: none; /* for button */
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > span {
|
||||||
|
color: #bbb;
|
||||||
|
font-size: .8em;
|
||||||
|
padding: 0 .5em;
|
||||||
|
background: #f5f2f0;
|
||||||
|
background: rgba(224, 224, 224, 0.2);
|
||||||
|
box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
|
||||||
|
border-radius: .5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a:hover,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a:focus,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button:hover,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button:focus,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > span:hover,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > span:focus {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
19
assets/css/style.scss
Normal file
19
assets/css/style.scss
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
@import "variables";
|
||||||
|
|
||||||
|
@import "font";
|
||||||
|
@import "buttons";
|
||||||
|
@import "form";
|
||||||
|
|
||||||
|
@import "header";
|
||||||
|
@import "menu";
|
||||||
|
@import "logo";
|
||||||
|
@import "main";
|
||||||
|
@import "post";
|
||||||
|
@import "pagination";
|
||||||
|
@import "footer";
|
||||||
|
|
||||||
|
@import "prism";
|
||||||
|
@import "syntax";
|
||||||
|
@import "code";
|
||||||
|
@import "terms";
|
||||||
|
@import "gist";
|
153
assets/css/syntax.scss
Normal file
153
assets/css/syntax.scss
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
code.language-css,
|
||||||
|
code.language-scss,
|
||||||
|
.token.boolean,
|
||||||
|
.token.string,
|
||||||
|
.token.entity,
|
||||||
|
.token.url,
|
||||||
|
.language-css .token.string,
|
||||||
|
.language-scss .token.string,
|
||||||
|
.style .token.string,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.keyword,
|
||||||
|
.token.control,
|
||||||
|
.token.directive,
|
||||||
|
.token.statement,
|
||||||
|
.token.regex,
|
||||||
|
.token.atrule,
|
||||||
|
.token.number,
|
||||||
|
.token.inserted,
|
||||||
|
.token.important {
|
||||||
|
color: $accent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.tag-id,
|
||||||
|
.token.atrule-id,
|
||||||
|
.token.operator,
|
||||||
|
.token.unit,
|
||||||
|
.token.placeholder,
|
||||||
|
.token.variable,
|
||||||
|
.token.tag,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.namespace,
|
||||||
|
.token.deleted,
|
||||||
|
.token.property,
|
||||||
|
.token.class-name,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol {
|
||||||
|
color: transparentize($accent, .3) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.function,
|
||||||
|
.token.function-name,
|
||||||
|
.token.deleted,
|
||||||
|
code.language-javascript,
|
||||||
|
code.language-html,
|
||||||
|
.command-line-prompt > span:before {
|
||||||
|
color: mix($accent, #999, .9) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.tag,
|
||||||
|
.token.punctuation {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: rgba(255, 255, 255, .3) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.namespace {
|
||||||
|
opacity: .7 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[data-line] {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"] {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
background: transparentize(mix($accent, #999, 90%), .92);
|
||||||
|
pointer-events: none;
|
||||||
|
line-height: inherit;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight:before,
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
content: attr(data-start);
|
||||||
|
position: absolute;
|
||||||
|
/* top: .4em; */
|
||||||
|
left: .6em;
|
||||||
|
min-width: 1em;
|
||||||
|
padding: 0 .5em;
|
||||||
|
background-color: hsla(24, 20%, 50%, .4);
|
||||||
|
color: hsl(24, 20%, 95%);
|
||||||
|
font: bold 65%/1.5 sans-serif;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: .3em;
|
||||||
|
border-radius: 999px;
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: 0 1px white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
content: attr(data-end);
|
||||||
|
top: auto;
|
||||||
|
bottom: .4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers .line-highlight:before,
|
||||||
|
.line-numbers .line-highlight:after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-toolbar {
|
||||||
|
$code-margin: 40px;
|
||||||
|
position: relative;
|
||||||
|
margin: $code-margin 0;
|
||||||
|
padding: 20px;
|
||||||
|
border: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
|
||||||
|
+ .code-toolbar,
|
||||||
|
+ .highlight,
|
||||||
|
+ .highlight .code-toolbar {
|
||||||
|
border-top: 0;
|
||||||
|
margin-top: calc(-1 * $code-margin);
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
display: block;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .toolbar {
|
||||||
|
button {
|
||||||
|
font-size: .8em !important;
|
||||||
|
background: hsla(0,0%,87.8%,.2) !important;
|
||||||
|
color: #bbb !important;
|
||||||
|
box-shadow: 0 2px 0 0 rgba(0,0,0,.2) !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
margin: 6px !important;
|
||||||
|
padding: 10px !important;
|
||||||
|
user-select:none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
22
assets/css/terms.scss
Normal file
22
assets/css/terms.scss
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
.terms {
|
||||||
|
h3 {
|
||||||
|
font-size: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
li {
|
||||||
|
a {
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li:not(:empty):before {
|
||||||
|
content: '-';
|
||||||
|
position: absolute;
|
||||||
|
left: -20px;
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8
assets/css/variables.scss
Normal file
8
assets/css/variables.scss
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
/* COLOR VARIABLES */
|
||||||
|
$background: mix($accent, #1D1E28, 2%);
|
||||||
|
$color: white;
|
||||||
|
$border-color: rgba(255, 255, 255, .1);
|
||||||
|
|
||||||
|
/* MEDIA QUERIES */
|
||||||
|
$phone: "max-width: 684px";
|
||||||
|
$tablet: "max-width: 900px";
|
44
assets/js/menu.js
Normal file
44
assets/js/menu.js
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
const container = document.querySelector(".container");
|
||||||
|
const allMenus = document.querySelectorAll(".menu");
|
||||||
|
|
||||||
|
// Hide menus on body click
|
||||||
|
document.body.addEventListener("click", () => {
|
||||||
|
allMenus.forEach(menu => {
|
||||||
|
if (menu.classList.contains("open")) {
|
||||||
|
menu.classList.remove("open");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Reset menus on resize
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
allMenus.forEach(menu => {
|
||||||
|
menu.classList.remove("open");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Handle desktop menu
|
||||||
|
allMenus.forEach(menu => {
|
||||||
|
const trigger = menu.querySelector(".menu__trigger");
|
||||||
|
const dropdown = menu.querySelector(".menu__dropdown");
|
||||||
|
|
||||||
|
trigger.addEventListener("click", e => {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
if (menu.classList.contains("open")) {
|
||||||
|
menu.classList.remove("open");
|
||||||
|
} else {
|
||||||
|
// Close all menus...
|
||||||
|
allMenus.forEach(m => m.classList.remove("open"));
|
||||||
|
// ...before opening the current one
|
||||||
|
menu.classList.add("open");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dropdown.getBoundingClientRect().right > container.getBoundingClientRect().right) {
|
||||||
|
dropdown.style.left = "auto";
|
||||||
|
dropdown.style.right = 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dropdown.addEventListener("click", e => e.stopPropagation());
|
||||||
|
});
|
80
assets/js/prism.js
Normal file
80
assets/js/prism.js
Normal file
File diff suppressed because one or more lines are too long
BIN
static/fonts/IBMPlexMono-Bold.woff2
Normal file
BIN
static/fonts/IBMPlexMono-Bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/IBMPlexMono-Regular.woff2
Normal file
BIN
static/fonts/IBMPlexMono-Regular.woff2
Normal file
Binary file not shown.
BIN
static/fonts/IBMPlexSans-Bold.woff2
Normal file
BIN
static/fonts/IBMPlexSans-Bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/IBMPlexSans-Regular.woff2
Normal file
BIN
static/fonts/IBMPlexSans-Regular.woff2
Normal file
Binary file not shown.
|
@ -1,15 +1,15 @@
|
||||||
@font-face {
|
@font-face {
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-family: 'Fira Code';
|
font-family: 'IBM Plex';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url("../fonts/FiraCode-Regular.woff") format("woff");
|
src: url("fonts/IBMPlexMono-Regular.woff2") format("woff2");
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-family: 'Fira Code';
|
font-family: 'IBM Plex';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
src: url("../fonts/FiraCode-Bold.woff") format("woff");
|
src: url("fonts/IBMPlexMono-Bold.woff2") format("woff2");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue