website/assets/scss/style.scss

1020 lines
25 KiB
SCSS

$bg_color: {{ .Site.Params.backgroundColor | default "#242629" }};
$fg_color: {{ .Site.Params.foregroundColor | default "white" }};
$dim_fg_color: {{ .Site.Params.dimForegroundColor | default "#bababa" }};
$stroke_color: {{ .Site.Params.strokeColor | default "#4f4f4f" }};
$accent_color: {{ .Site.Params.accentColor | default "#db5793" }};
$main_font: {{ .Site.Params.fontFamily | default "JetBrains Mono" }};
$title_font: {{ .Site.Params.titleFontFamily | default "$main_font" }};
$mono_font: {{ .Site.Params.monospaceFontFamily | default "JetBrains Mono" }};
$highlight_bg_color: {{ .Site.Params.highlightBgColor | default "#34363b" }};
$content_width: {{ .Site.Params.contentWidth | default "1000px" }};
$border_radius: 10px;
$content_spacing: 25px;
$base_font_size: 16px;
$title_font_mult: {{ .Site.Params.titleFontSizeMultiplier | default 1.0 }};
$main_font_mult: {{ .Site.Params.mainFontSizeMultiplier | default 1.0 }};
$mono_font_mult: {{ .Site.Params.monoFontSizeMultiplier | default 1.0 }};
::selection, ::-moz-selection {
background: $accent_color;
color: $fg_color;
}
body, html {
font-family: "Symbols Nerd Font", $main_font, monospace;
font-size: $base_font_size * $main_font_mult;
margin: 0;
padding: 0;
background-color: $bg_color;
color: $fg_color;
}
body {
min-height: 100vh;
}
a {
color: $fg_color;
text-decoration: none;
border-bottom: 2px solid $fg_color;
&:hover, &:focus {
border-color: $accent_color !important;
}
}
@mixin limitWidth {
max-width: $content_width;
margin-left: auto;
margin-right: auto;
}
#content {
@include limitWidth;
padding: 15px;
}
footer {
color: $dim_fg_color;
a {
color: $dim_fg_color;
}
hr {
margin-top: (2 * $content_spacing);
}
.footerColumns {
font-size: .9 * $base_font_size * $main_font_mult;
display: flex;
flex-direction: row;
flex-wrap: wrap;
ul {
margin: ($content_spacing / 2);
list-style-type: none;
padding: 0;
li > strong {
font-size: 1rem * $main_font_mult;
}
}
}
}
#links {
padding: 5px 0;
}
article, .articlePreview {
img {
margin: auto;
display: block;
max-width: 100%;
}
pre, code {
overflow: auto;
}
pre {
padding: 20px;
border: 1px solid $stroke_color;
border-radius: 3px;
}
}
code {
font-family: "Symbols Nerd Font", $mono_font, monospace;
font-size: $base_font_size * .8 * $mono_font_mult;
border: 1px solid $stroke_color;
border-radius: 3px
}
code, table {
padding: 2px;
}
pre code {
border: none;
border-radius: none;
padding: 0
}
table {
border-collapse: collapse;
overflow-x: auto;
display: block;
td, th {
padding: 6px;
border: 1px solid $stroke_color;
}
th {
background-color: lighten($bg_color, 5%);
}
tr:nth-child(even) {
background-color: lighten($bg_color, 5%);
}
}
.date, .date a {
color: $dim_fg_color;
border-color: $dim_fg_color;
font-size: .9em;
}
#pageNavigation, .nerdlink, nav:not(#TableOfContents) {
a {
border-bottom: none;
&:hover {
border-bottom: none;
}
}
}
#pageNavigation {
text-align: right;
a {
color: $accent_color;
}
&.nav-circles {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-end;
align-items: center;
a, span {
margin: 5px;
text-align: center;
display: inline-block;
width: 40px;
height: 40px;
line-height: 40px;
padding: auto;
border-radius: 100%;
background-color: $highlight_bg_color;
color: $fg_color;
}
span {
background-color: $accent_color;
}
a:hover {
background-color: $accent_color;
}
}
}
h1, h2, h3, h4, h5, h6 {
font-family: "Symbols Nerd Font", $title_font;
a {
color: $accent_color;
{{ if not (.Site.Params.underlineTitleLinks | default false) }}
border-bottom: none;
{{ end }}
}
}
h1 {font-size: 2.0 * $base_font_size * $title_font_mult;}
h2 {font-size: 1.5 * $base_font_size * $title_font_mult;}
h3 {font-size: 1.3 * $base_font_size * $title_font_mult;}
h4 {font-size: 1.0 * $base_font_size * $title_font_mult;}
h5 {font-size: 0.8 * $base_font_size * $title_font_mult;}
h6 {font-size: 0.7 * $base_font_size * $title_font_mult;}
.nerd {
font-family: "Symbols Nerd Font", $main_font;
font-size: 1.2 * $base_font_size;
margin: 5px;
display: inline-block;
}
.nerdlink {
@extend .nerd;
color: $fg_color;
border-bottom: none;
position: relative;
width: 1em;
height: 1.2em;
display: inline-flex;
align-items: center;
justify-content: center;
.pseudofont {
fill: $fg_color;
display: inline;
position: relative;
top: 1px;
}
span {
position: absolute;
top: 1.5em;
left: 50%;
transform: translateX(-50%);
padding: 2px;
border: 1px solid $stroke_color;
border-radius: 3px;
color: $fg_color;
display: none;
background-color: $bg_color;
z-index: 900;
text-align: center;
}
&:hover {
.pseudofont {
fill: $accent_color;
}
color: $accent_color;
text-decoration: none;
border-bottom: none;
span {
display: block;
}
}
}
.card {
display: block;
padding-bottom: 25px;
&.discrete {
background-color: $highlight_bg_color;
border-radius: $border_radius;
padding: 20px;
padding-top: 1px;
}
&.single {
{{ if (.Site.Params.bigArticleTitle | default false) }}
h1 {
font-size: 2.2em * $base_font_size * $title_font_mult};
}
{{ end }}
}
}
.postlist {
display: grid;
grid-gap: 25px;
margin-bottom: $content_spacing;
grid-template-columns: 1fr;
&.gridView {
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
.card {
&.discrete {
}
}
}
}
// only hide hr in cards if they are in the article list
// cards in list are divs, cards as in full-blown articles use the article tag
.postlistitem.card.discrete {
hr { display: none; }
}
.postlistitem.card div {
img {
height: 250px;
min-width: 100%;
object-fit:
{{ if .Site.Params.FitImageInArticlePreview }}
contain
{{ else }}
cover
{{ end }};
}
}
ul {
li {
margin: 5px 0;
}
}
ul.list {
.date {
display: inline-block;
min-width: 100px;
}
> li > div {
display: grid;
grid-template-columns: 100px auto;
}
}
#commento {
margin-top: 25px;
color: $fg_color;
font-family: "Symbols Nerd Font", $main_font, monospace;
textarea, #commento-markdown-help-root {
background: rgba(255, 255, 255, .05);
color: $fg_color;
border-radius: 0;
border: none;
td, td>*, td>*>* {
color: $fg_color;
pre {
font-family: "Symbols Nerd Font", $mono_font, monospace;
color: $dim_fg_color;
}
}
}
#commento-submit-button-root {
background: $accent_color;
color: $fg_color;
}
.commento-name {
color: $dim_fg_color;
}
.commento-sort-policy-buttons {
a {
border-bottom: none;
}
.commento-sort-policy-button-selected {
color: $accent_color;
}
}
.commento-card {
border-top: none;
margin: 25px 0;
}
.commento-body {
>*, *>*, >*>*>*, >*>*>*>*, >*>*>*>*>* {
color: $fg_color;
font-family: "Symbols Nerd Font", $main_font, monospace;
}
}
}
.search {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
margin: 12px 0;
.nerdlink {
display: inline-block;
cursor: pointer;
}
#searchbar {
@extend a;
width: 100%;
min-width: 150px;
display: inline-block;
background-color: transparent;
border-top: none;
border-left: none;
border-right: none;
border-radius: 0;
padding: 6px 0;
font-family: "Symbols Nerd Font", $main_font;
font-size: 1.3em;
outline: none;
}
}
.titleAndSearchContainer {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
#titleContainer {
flex-grow: 99;
}
.search {
flex-grow: 1;
&, #searchbar {font-size: 1em;}
}
}
.featuredCardLink {
border: none;
padding: 0;
.featuredCard {
@extend .card;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
position: relative;
height: 250px;
.contentArea {
position: absolute;
bottom: 0;
padding: 15px;
&, h2, .date {color: white;}
h2 {
margin: 0;
}
.date {
margin: 0;
}
}
&.discrete {
border-radius: $border_radius;
padding: 0;
}
}
}
@mixin buttonLikeLink {
display: inline-block;
border-radius: $border_radius;
background-color: $highlight_bg_color;
padding: ($content_spacing / 2);
margin: ($content_spacing / 6) 0;
border-bottom: none;
&:hover, &:focus {
background-color: $accent_color;
}
}
.loadMoreButton {
text-align: center;
font-size: 1.2em;
font-weight: bold;
&.buttonLike {
a {
@include buttonLikeLink;
}
}
}
.relatedArticlesContainer {
margin: $content_spacing 0;
#relatedArticles .postlistitem {
@extend .featuredCard;
}
}
#titleContainer {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: flex-start;
align-self: flex-start;
h1 {
font-weight: normal;
font-size: 1.6 * $base_font_size * $title_font_mult;
margin: 0;
}
img {
margin-right: ($content_spacing / 2);
margin-top: 7px;
align-self: flex-start;
width: 50px;
max-height: 50px;
border-radius: 5px;
}
}
nav:not(#TableOfContents), #links {
ul {
list-style-type: none;
display: flex;
flex-direction: row;
flex-wrap: wrap;
padding: 0;
margin: 0;
}
}
header {
@include limitWidth;
padding: 15px;
margin-bottom: $content_spacing;
.rightOfLogo {
width: 100%;
.titleAndHamburger {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: flex-start;
justify-content: space-between;
}
}
nav:not(#TableOfContents) {
font-size: .9em;
ul {
li {
border-right: 1px solid $accent_color;
&:last-child {
border-right: none;
}
a {
padding: 2px 20px;
color: $accent_color;
&:hover {
text-decoration: underline;
}
}
}
}
}
}
.articleTagsContainer {
margin: $content_spacing 0;
}
a.discreteTag {
@include buttonLikeLink;
}
.shareBtn {
{{ if eq (site.Params.navtype | default "standard") "circles" }}
@include buttonLikeLink;
{{ end }}
font-size: 1.2em;
cursor: pointer;
}
input {
{{ if or
(site.Params.discreteCards | default false)
(eq (site.Params.navtype | default "standard") "circles")
}}
@include buttonLikeLink;
&:hover, &:focus, &:active {
background-color: $highlight_bg_color;
}
{{ end }}
font-family: "Symbols Nerd Font", $main_font;
background-color: $highlight_bg_color;
padding: 12px;
color: $fg_color;
border: 2px solid transparent;
&:focus, &:active {
border: 2px solid $accent_color;
outline: none;
}
}
#fediInstanceDialog {
display: none;
position: fixed;
top: 0; bottom: 0; left: 0; right: 0;
.dialog {
position: absolute;
display: flex; flex-direction: column;
top: 24px;
left: 50%; transform: translateX(-50%);
z-index: 9999;
background-color: $bg_color;
width: 450px;
max-width: 100%;
padding: 24px;
{{ if site.Params.discreteCards }}
border-radius: $border_radius;
{{ end }}
h1, h2, h3, h4 {
margin: 0;
}
h2 {
margin-bottom: 24px;
}
input {
display: block;
}
.buttons {
margin: 12px 0;
display: flex;
flex-direction: row;
justify-content: end;
> * {
margin-left: 24px;
}
}
}
.bg {
z-index: 99;
position: absolute;
top: 0; bottom: 0; left: 0; right: 0;
background-color: rgba(0, 0, 0, .4);
cursor: pointer;
}
&.open {
display: block;
}
}
{{ if .Site.Params.mobileHamburgerNav | default false }}
header {
#hamburger-menu {
@extend .nerdlink;
display: none !important;
}
#main-nav-toggler {
display: none;
}
}
@media only screen and (max-width: 520px) {
header {
.titleAndSearchContainer {
z-index: 9999999 !important;
}
#hamburger-menu {
display: block !important;
font-size: 1.2em;
cursor: pointer;
text-align: center;
margin: 0;
padding: ($content_spacing / 4);
align-self: center;
}
nav:not(#TableOfContents) {
ul#main-nav {
&, li, li a {text-shadow: none !important;}
display: none;
position: absolute;
z-index: 99999;
right: 6px;
padding: 12px;
width: 120px;
{{ if eq .Site.Params.navtype "circles" }}
border-radius: $border_radius;
{{ end }}
border: 2px solid $accent_color;
background-color: $highlight_bg_color;
flex-direction: column;
li {
border-right: none !important;
display: block;
text-align: center;
a {
display: block;
width: 100%;
padding: 0;
}
}
}
#main-nav-toggler:checked ~ #main-nav {
display: flex;
}
}
}
}
{{ end }}
{{ if and
(.Site.Params.enableJumbotron | default false)
.Site.Data.jumbotron
}}
{{
$jumbo_fullscreen := (or
(.Site.Data.jumbotron.fullscreen | default false)
(.Site.Data.jumbotron.backgroundVideo)
)
}}
header {
.jumbotron { display: none; }
max-width: 100%;
> * {
@include limitWidth;
}
}
header.jumbotronContainer {
{{ if (.Site.Data.jumbotron.whiteText | default false) }}
&, *, > * {
color: white !important;
}
#main-nav a, .nerdlink:hover {
color: $accent_color !important;
}
.nerdlink span {
color: $fg_color !important;
text-shadow: none;
}
#searchbar {
border-color: white !important;
}
.arrow {
border-color: white !important;
svg , svg * {
fill: white !important;
}
&:hover, &:focus, &:active {
background-color: rgba(0, 0, 0, .7);
svg, svg * {
fill: white !important;
}
}
}
{{ end }}
{{ if (.Site.Data.jumbotron.textShadow | default false) }}
&, * {
text-shadow: 0 0 5px transparentize($fg_color, .3);
}
{{ end }}
> *:first-child {
padding-top: 15px;
}
padding-bottom: 0;
padding-top: 0;
.jumbotron { display: flex; }
{{ if and
.Site.Data.jumbotron.background
(not .Site.Data.jumbotron.backgroundVideo)
}}
background:
linear-gradient(
transparentize($bg_color, 0.2),
transparentize($bg_color, 0.2)
),
url({{ .Site.Data.jumbotron.background }});
background-size: cover;
background-position: center;
background-repeat: no-repeat;
{{ else if .Site.Data.jumbotron.backgroundVideo }}
background: transparent;
> * {
position: relative;
z-index: 9999;
}
overflow: hidden;
.video_container {
overflow: hidden;
position: absolute;
min-height: 100%;
min-width: 100%;
top: 0; bottom: 0; left: 0; right: 0;
z-index: 0;
background-color: black;
.jumbotron_video {
opacity: {{ .Site.Data.jumbotron.videoOpacity | default 1.0 }};
position: absolute;
z-index: 0;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
overflow: hidden;
min-height: 100%;
min-width: 100%;
height: 100vh;
}
}
{{ else }}
background-color: rgba(0, 0, 0, .3);
{{ end }}
{{ if $jumbo_fullscreen }}
height: 100vh;
{{ if (.Site.Data.jumbotron.downArrow | default false) }}
margin-bottom: 100px;
.arrow {
position: absolute;
bottom: 24px;
left: 50%; transform: translateX(-50%);
cursor: pointer;
&, svg {
height: 64px;
width: 64px;
}
opacity: .7;
border-radius: 100%;
border: 2px solid $fg_color;
padding: 3px;
// display: flex; flex-direction: row; justify-content: center;
background-color: transparent;
transition: background-color .15s ease-in-out;
svg {
margin-top: 5px;
&, * {
fill: $fg_color;
transition: fill .15s ease-in-out;
}
@keyframes bounce {
0% {
transform: translateY(3px);
}
100% {
transform: translateY(-3px);
}
}
animation: bounce 2s infinite ease-in-out alternate both;
}
&:hover, &:focus, &:active {
background-color: $fg_color;
svg, svg * {
fill: $bg_color;
}
}
}
{{ end }}
{{ end }}
}
.jumbotron {
width: 100%;
{{ if $jumbo_fullscreen }}
height: 80vh;
{{ else }}
min-height: 40vh;
{{ end }}
flex-wrap: no-wrap;
text-align: center;
justify-content: center;
align-items: center;
align-content: center;
{{ $jumbotronImagePosition := (
.Site.Data.jumbotron.imagePosition | default "left"
) }}
{{ if (eq $jumbotronImagePosition "left") }}
flex-direction: row;
{{ else if (eq $jumbotronImagePosition "right") }}
flex-direction: row-reverse;
{{ else if (eq $jumbotronImagePosition "top") }}
flex-direction: column;
{{ else if (eq $jumbotronImagePosition "bottom") }}
flex-direction: column-reverse;
{{ end }}
.main_box {
display: flex;
flex-direction: column;
text-align: center;
justify-content: center;
align-items: center;
flex-basis: 55%;
flex-grow: 1;
}
img {
flex-basis: 45%;
flex-grow: 1;
max-width: 100vw;
min-width: 200px;
}
h1 {
font-weight: 300;
&.huge {
font-size: 4 * $base_font_size * $title_font_mult;
}
}
h1, h2 {
margin: 12px;
}
ul {
list-style: none;
padding: 0;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
li {
margin: 3px;
a {
&.huge {
font-size: 1.5em;
}
{{ if eq .Site.Params.navtype "circles" }}
@include buttonLikeLink;
background-color: transparent;
border: 2px solid $accent_color;
{{ end }}
}
}
}
}
@media only screen and (max-width: 520px) {
.jumbotron {
flex-wrap: wrap;
h1.huge {
font-size: 3 * $base_font_size * $title_font_mult !important;
}
h1, h2 {
margin: 6px;
}
}
}
@media only screen and (max-height: 800px) {
.jumbotron {
height: auto;
img {
max-height: 120px;
}
}
}
{{ end }}
{{ if .Site.Params.enableSidebarLayout | default false }}
$sidebar_width: 350px;
$sidebar_bg_color: {{
.Site.Params.sidebarBackgroundColor | default "$highlight_bg_color"
}};
$sidebar_fg_color: {{
.Site.Params.sidebarForegroundColor | default "$fg_color"
}};
header {
#sidebar_nav, .sidebarToc {
display: none;
}
#wide_nav {
display: block;
}
}
@media only screen and (min-width: 950px) {
html{{if .Site.Params.enableJumbotron}}:not(.home){{end}} {
position: fixed; top: 0; bottom: 0; left: 0; right: 0;
#baseContainer {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
max-height: 100vh;
header {
margin-left: unset; margin-right: unset;
background-color: $sidebar_bg_color;
max-width: $sidebar_width;
min-width: $sidebar_width;
height: 100vh;
display: block;
overflow: auto;
margin-bottom: 0;
padding: 0 15px;
> *:last-child, > *:first-child {
padding-bottom: 15px;
padding-top: 15px;
}
.rightOfLogo {
align-self: center;
}
#sidebar_nav {
display: block;
margin: 12px 0;
width: 100%;
nav:not(#TableOfContents) {
font-size: 1.1em;
ul#main-nav {
flex-direction: column;
li {
border-right: none;
a {
padding: 6px;
display: block;
}
}
}
}
}
#wide_nav {
display: none;
}
.sidebarToc {
display: block;
nav#TableOfContents {
ul {
padding-left: 24px;
a:not(:hover) {
border-color: transparent;
}
}
}
}
}
#contentContainer {
flex-grow: 1;
overflow-y: auto;
}
}
.articleToc {
display: none;
}
}
}
{{ end }}
// transitions at the end so that loading css doens't cause animations
a {
transition-property: color, border-color;
transition-duration: .15s;
transition-timing-function: ease-in-out;
}
.nerdlink {
&, .pseudofond {
transition: all .15s ease-in-out;
}
}
input {
transition: .15s border ease-in-out;
}