diff options
Diffstat (limited to 'style.css')
-rw-r--r-- | style.css | 674 |
1 files changed, 674 insertions, 0 deletions
diff --git a/style.css b/style.css new file mode 100644 index 0000000..f137490 --- /dev/null +++ b/style.css @@ -0,0 +1,674 @@ + +html { + --c-bg-backdrop: #0d1015; + --c-bg-behind: #1f232a; + --c-bg-front: #272c35; + --c-bg-highlight: #383f4c; + --c-bg-figure-backdrop: #383f4c; + --c-text: #d0d0d0; + --c-text-inverted: #101010; + --c-text-muted: #a0a0a0; + --c-text-highlight: #ffffff; + --c-fg-highlight: #e0e0e0; + --c-fg-primary: #fc00b9; + --c-bg-primary: #fc0daf; + --c-fg-secondary: #ff9449; + --c-bg-secondary: #ff9449; + + --shadow-opacity: 0.8; + + --default-border: 0.5px dotted rgba(255, 255, 255, 0.3); +} + +/* +@font-face { + font-family: "Manuskript Gothisch"; + src: url("/fonts/manuskript_gothisch/Manuskript%20Gothisch%20UNZ1A.ttf"); +} +*/ + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Light.woff2"); + font-weight: 100; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-LightItalic.woff2"); + font-weight: 100; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Regular.woff2"); + font-weight: 400; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-RegularItalic.woff2"); + font-weight: 400; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Medium.woff2"); + font-weight: 500; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-MediumItalic.woff2"); + font-weight: 500; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Bold.woff2"); + font-weight: 700; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-BoldItalic.woff2"); + font-weight: 700; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Dark.woff2"); + font-weight: 900; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-DarkItalic.woff2"); + font-weight: 900; + font-style: italic; +} + +@font-face { + font-family: "Roboto Slab"; + src: url("/fonts/roboto_slab/RobotoSlab-VariableFont_wght.ttf") format("truetype-variations"); + font-weight: 100 200 300 400 500 600 700 800 900; +} + +/* +@font-face { + font-family: "Bodoni Moda"; + src: url("/fonts/bodoni_moda/static/BodoniModa_9pt/BodoniModa_9pt-MediumItalic.ttf"); + font-style: italic; +} + +@font-face { + font-family: "Bodoni Moda"; + src: url("/fonts/bodoni_moda/static/BodoniModa_18pt/BodoniModa_18pt-Medium.ttf"); +} +*/ + +@font-face { + font-family: "Fira Code"; + src: url("/fonts/fira_code/FiraCode-VariableFont_wght.ttf") format("truetype-variations"); + font-weight: 300 400 500 600 700; +} + +html, body { + border: 0; + margin: 0; + padding: 0; +} + +body { + position: relative; /* important for sizing of background image ::before pseudo-element */ + display: flex; + flex-direction: column; + align-items: stretch; + font-family: "Roboto Slab"; + font-weight: 350; + color: var(--c-text); +} + +body::before { + content: ""; + position: absolute; + top: 0; left: 0; + z-index: -1000; + width: 100%; + height: 100%; + /* linear-gradient(hsl(0 0% 100% / 0%), hsl(240 20% 12% / 100%)), */ + background: + linear-gradient(to bottom, hsl(0 0% 8% / 80%), hsl(0 0% 3% / 95%)), + linear-gradient(hsl(220 15% 18%), hsl(220 15% 18%)), + center 20% / cover space no-repeat fixed url("/images/fabrizio-conti-TUmjK7ZJgbI-unsplash.jpg"), + var(--c-bg-backdrop); + background-blend-mode: luminosity, color, normal; +} + +::selection { + background-color: var(--c-bg-secondary); + color: var(--c-text-inverted); +} + +strong { + font-family: "Nyght Serif"; + font-style: italic; +} + +a:hover, a:visited, a:active, a:link { + color: var(--c-fg-secondary); + text-decoration: none; +} + +a:hover { + background: var(--c-bg-primary); + color: var(--c-text); +} + +nav { + display: flex; + flex-direction: row; + flex-wrap: wrap; + background-color: var(--c-bg-front); + box-shadow: 0 0 3px 2px hsl(0 0% 10% / var(--shadow-opacity)); + padding: 0 10px 0 10px; + justify-content: space-between; +} + +nav > div { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-around; + border-top: var(--default-border); + margin-top: -1px; +} + +nav a:link, nav a:active, nav a:visited, nav a:hover { + flex-grow: 1; + text-align: center; + color: inherit; + padding: 10px 10px 10px 10px; +} + +nav a:hover { + background: var(--c-bg-primary); +} + +.breadcrumbs { + max-width: 40em; + text-align: center; + align-self: center; + margin: 0; + padding: 0; +} + +.breadcrumbs li { + list-style: none; + display: inline; +} + +.breadcrumbs li + li::before { + content: "/"; + margin: 0 5px 0 5px; +} + +main::before { + content: ""; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + backdrop-filter: blur(10px); + z-index: -1; +} + +main { + position: relative; + align-self: center; + margin-top: -100px; + padding: 100px; + max-width: min(100%, 60em); + box-sizing: border-box; + box-shadow: 0 0 3px 2px hsl(0 0% 10% / calc(0.6 * var(--shadow-opacity))); + text-align: justify; + background-color: hsl(260 5% 20% / 40%); + hyphens: auto; +} + +main > .intro { + margin-top: 40px; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 50px; + margin-bottom: 8px; + font-family: "Nyght Serif"; + text-align: left; + font-weight: 700; +} + +h1 { + font-style: italic; +} + +h2 { + font-size: 30px; + font-weight: 400; +} + +h3 { + font-size: 20px; + font-weight: 700; +} + +body > header { + z-index: 1; + margin-top: 100px; + margin-bottom: 200px; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; +} + +body > header > h1 { + text-align: center; + background-image: linear-gradient(to right, var(--c-fg-primary), var(--c-fg-secondary)); + background-clip: text; + -webkit-background-clip: text; + color: transparent; + filter: drop-shadow(0 0 10px rgba(0, 0, 0, var(--shadow-opacity))); + font-size: clamp(20px, 120px, min(10vw, 10vh)); + /* Padding to avoid the first character getting cut off in firefox */ + padding-left: 40px; + padding-right: 40px; +} + +/* https://css-tricks.com/linearly-scale-font-size-with-css-clamp-based-on-the-viewport/ */ +/* +body > header > h1::first-line { + --min-fs: 3; + --max-fs: 10; + --min-vw: 20; + --max-vw: 40; + + --min-fs-rem: var(--min-fs) * 1rem; + --max-fs-rem: var(--max-fs) * 1rem; + --min-vw-rem: var(--min-vw) * 1rem; + + --slope: (var(--max-fs) - var(--min-fs)) * (100vw - var(--min-vw-rem)) / (var(--max-vw) - var(--min-vw)); + + font-size: clamp(var(--min-fs-rem), var(--min-fs-rem) + var(--slope), var(--max-fs-rem)); +} +*/ + +.pagination-links { + width: 100%; + display: flex; + justify-content: center; + align-items: stretch; +} + +.pagination-links > a { + background-color: var(--c-bg-front); + box-shadow: 0 0 3px 1px rgba(0, 0, 0, calc(0.25*var(--shadow-opacity))); + padding: 10px 20px 10px 20px; +} + +.pagination-links > a:hover { + background: var(--c-bg-primary); +} + +.arrow-right { + display: inline-block; + width: 0; + height: 0; + border-top: .3rem solid transparent; + border-bottom: .3rem solid transparent; + border-left: .3rem solid ; + margin-bottom: .05rem; + margin-left: 5px; +} + +.card { + background-color: var(--c-bg-front); + box-shadow: 0 0 3px 1px rgba(0, 0, 0, calc(0.25*var(--shadow-opacity))); + padding: 30px 20px 30px 20px; + margin-top: 50px; + margin-bottom: 30px; +} + +.card > .links { + margin-left: -20px; + margin-bottom: -30px; + border-top: var(--default-border); + margin-top: 20px; + width: calc(100% + 40px); + display: flex; + flex-direction: row; + justify-content: space-around; +} + +.card > .links > a { + padding: 10px 10px 10px 10px; + flex-grow: 1; + text-align: center; +} + +main > .links { + margin: 20px 0px 40px 0px; + border: var(--default-border); + border-left: none; + border-right: none; + width: calc(100%); + max-width: calc(100%); + display: flex; + flex-flow: row wrap; + justify-content: space-around; +} + +main > .links > a { + padding: 10px 10px 10px 10px; + flex-grow: 1; + text-align: center; +} + +/* un-mess-up rst2html output */ +.card > .summary > .document, .card > .summary > .document > p { + display: inline; +} + +.card > h1, +.card > h2, +.card > h3, +.card > h4, +.card > h5, +.card > h6 { + margin-top: 0px; +} + +tt { + font-family: "Fira Code"; + font-weight: bold; + font-size: 14px; +} + +cite { + font-family: "Fira Code"; + font-weight: bold; + font-size: 14px; + font-style: normal; +} + +figure { + margin-top: 2em; + margin-bottom: 2em; + margin-left: auto; + margin-right: auto; + background-color: var(--c-bg-figure-backdrop); + box-shadow: 0 0 3px 2px rgba(0, 0, 0, calc(0.6*var(--shadow-opacity))); + display: flex; + flex-direction: column; +} + +.subfigure { + margin-top: 2em; + margin-bottom: 2em; + display: grid; + grid-template-columns: 1fr 1fr; + justify-items: stretch; + align-items: stretch; + column-gap: 40px; + row-gap: 40px; +} + +.subfigure > figure { + margin-top: 0; + margin-bottom: 0; +} + +figure.side-by-side { + min-width: 15em; + margin: 0 0 0 0; + padding: 0 40px 0 0; +} + +figure img, figure video { + display: block; + margin: 0 auto 0 auto; + width: 100%; +} + +figcaption { + background-color: var(--c-bg-highlight); + line-height: 16pt; + padding: 1em; + flex-grow: 1; +} + + +figure.header { + margin-left: 0; + margin-right: 0; + margin-top: 0; +} + +img { + max-width: 100%; + margin: 40px auto 40px auto; + display: block; + filter: brightness(70%); + transition: filter 100ms; +} + +img:hover { + filter: none; +} + +.code { + font-family: "Fira Code"; + font-size: 13px; + white-space: pre-wrap; + word-wrap: break-word; + overflow-x: auto; + display: grid; + align-items: start; + grid-template-columns: min-content 1fr; +} + +.code > .line { + padding-left: calc(2em + 5px); + text-indent: -2em; + padding-top: 2px; + min-width: 15em; +} + +/* Make individual syntax tokens wrap anywhere */ +.code > .line > span { + overflow-wrap: anywhere; + white-space: pre-wrap; +} + +.code > .lineno { + counter-increment: lineno; + word-break: keep-all; + margin: 0; + padding-left: 15px; + padding-right: 5px; + overflow: clip; + position: relative; + text-align: right; + color: var(--c-text-muted); + border-right: 1px solid var(--c-fg-highlight); + align-self: stretch; +} + +.code > .lineno::after { + position: absolute; + right: 5px; + content: "\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳\a↳"; + white-space: pre; + color: var(--c-text-muted); +} + +.code > .lineno::before { + content: counter(lineno); +} + +.code::before { + counter-reset: lineno; +} + +footer { + margin-top: 30px; + align-self: center; + margin-bottom: 10px; + text-align: center; + padding: 5px 25px 5px 25px; +} + +body .hll {} +body .c { color: var(--c-text); font-weight: 400 } /* Comment */ +body .n { color: var(--c-text); font-weight: 400 } /* Name */ +body .o { color: var(--c-text); font-weight: 400 } /* Operator */ +body .cm { color: var(--c-text); font-weight: 400 } /* Comment.Multiline */ +body .cp { color: var(--c-text); font-weight: 400 } /* Comment.Preproc */ +body .c1 { color: var(--c-text); font-weight: 400 } /* Comment.Single */ +body .cs { color: var(--c-text); font-weight: 400 } /* Comment.Special */ +body .nd { color: var(--c-text); font-weight: 400 } /* Name.Decorator */ +body .nn { color: var(--c-text); font-weight: 400 } /* Name.Namespace */ +body .vc { color: var(--c-text); font-weight: 400 } /* Name.Variable.Class */ +body .vg { color: var(--c-text); font-weight: 400 } /* Name.Variable.Global */ +body .vi { color: var(--c-text); font-weight: 400 } /* Name.Variable.Instance */ +body .err { color: var(--c-text-highlight); font-weight: 500 } /* Error */ +body .k { color: var(--c-text-highlight); font-weight: 500 } /* Keyword */ +body .l { color: var(--c-text-highlight); font-weight: 500 } /* Literal */ +body .kc { color: var(--c-text-highlight); font-weight: 500 } /* Keyword.Constant */ +body .kd { color: var(--c-text-highlight); font-weight: 500 } /* Keyword.Declaration */ +body .kn { color: var(--c-text-highlight); font-weight: 500 } /* Keyword.Namespace */ +body .kp { color: var(--c-text-highlight); font-weight: 500 } /* Keyword.Pseudo */ +body .kr { color: var(--c-text-highlight); font-weight: 500 } /* Keyword.Reserved */ +body .kt { color: var(--c-text-highlight); font-weight: 500 } /* Keyword.Type */ +body .na { color: var(--c-text-highlight); font-weight: 500 } /* Name.Attribute */ +body .nb { color: var(--c-text-highlight); font-weight: 500 } /* Name.Builtin */ +body .nc { color: var(--c-text-highlight); font-weight: 500 } /* Name.Class */ +body .no { color: var(--c-text-highlight); font-weight: 500 } /* Name.Constant */ +body .ni { color: var(--c-text-highlight); font-weight: 500 } /* Name.Entity */ +body .ne { color: var(--c-text-highlight); font-weight: 500 } /* Name.Exception */ +body .nf { color: var(--c-text-highlight); font-weight: 500 } /* Name.Function */ +body .nl { color: var(--c-text-highlight); font-weight: 500 } /* Name.Label */ +body .nx { color: var(--c-text-highlight); font-weight: 500 } /* Name.Other */ +body .py { color: var(--c-text-highlight); font-weight: 500 } /* Name.Property */ +body .nt { color: var(--c-text-highlight); font-weight: 500 } /* Name.Tag */ +body .nv { color: var(--c-text-highlight); font-weight: 500 } /* Name.Variable */ +body .ow { color: var(--c-text-highlight); font-weight: 500 } /* Operator.Word */ +body .bp { color: var(--c-text-highlight); font-weight: 500 } /* Name.Builtin.Pseudo */ +body .ld { color: var(--c-text); font-weight: 600 } /* Literal.Date */ +body .m { color: var(--c-text); font-weight: 600 } /* Literal.Number */ +body .s { color: var(--c-text); font-weight: 600 } /* Literal.String */ +body .mb { color: var(--c-text); font-weight: 600 } /* Literal.Number.Bin */ +body .mf { color: var(--c-text); font-weight: 600 } /* Literal.Number.Float */ +body .mh { color: var(--c-text); font-weight: 600 } /* Literal.Number.Hex */ +body .mi { color: var(--c-text); font-weight: 600 } /* Literal.Number.Integer */ +body .mo { color: var(--c-text); font-weight: 600 } /* Literal.Number.Oct */ +body .sb { color: var(--c-text); font-weight: 600 } /* Literal.String.Backtick */ +body .sc { color: var(--c-text); font-weight: 600 } /* Literal.String.Char */ +body .sd { color: var(--c-text); font-weight: 600 } /* Literal.String.Doc */ +body .s2 { color: var(--c-text); font-weight: 600 } /* Literal.String.Double */ +body .se { color: var(--c-text); font-weight: 600 } /* Literal.String.Escape */ +body .sh { color: var(--c-text); font-weight: 600 } /* Literal.String.Heredoc */ +body .si { color: var(--c-text); font-weight: 600 } /* Literal.String.Interpol */ +body .sx { color: var(--c-text); font-weight: 600 } /* Literal.String.Other */ +body .sr { color: var(--c-text); font-weight: 600 } /* Literal.String.Regex */ +body .s1 { color: var(--c-text); font-weight: 600 } /* Literal.String.Single */ +body .ss { color: var(--c-text); font-weight: 600 } /* Literal.String.Symbol */ +body .il { color: var(--c-text); font-weight: 600 } /* Literal.Number.Integer.Long */ + +@media (max-width: 40em) { + nav > div { + flex-grow: 1; + } + + main { + padding-left: 20px; + padding-right: 20px; + } +} + +@media print, (prefers-color-scheme: light) { + html { + --c-bg-backdrop: hsl(220, 10%, 90%); + --c-bg-behind: hsl(220, 10%, 95%); + --c-bg-front: hsl(220, 10%, 96%); + --c-bg-highlight: #ffffff; + --c-bg-figure-backdrop: #b5bcc8; + --c-text: hsl(220, 20%, 30%); + --c-text-inverted: hsl(220, 20%, 100%); + --c-text-muted: #5d5980; + --c-text-highlight: #000000; + --c-fg-highlight: #3c4b62; + --c-fg-primary: hsl(25, 100%, 64%); + --c-bg-primary: hsl(25, 100%, 64%); + --c-fg-secondary: hsl(319, 98%, 52%); + --c-bg-secondary: hsl(319, 98%, 52%); + + --shadow-opacity: 0.2; + + --default-border: 0.5px dotted hsla(220, 10%, 30%, 50%); + } + + body::before { + background: + linear-gradient(to bottom, hsl(0 0% 100% / 70%), hsl(0 0% 90% / 80%)), + linear-gradient(hsl(260 10% 10%), hsl(260 10% 10%)), + center 20% / cover space no-repeat fixed url("/images/fabrizio-conti-TUmjK7ZJgbI-unsplash.jpg"), + var(--c-bg-backdrop); + } + + main::before { + backdrop-filter: brightness(106%) blur(10px); + } + + main { + background-color: hsl(260 5% 90% / 40%); + } + + body > header > h1 { + filter: drop-shadow(0 0 10px rgba(0, 0, 0, 0.4)); + } + + a:hover, nav a:hover { + color: var(--c-text-inverted); + } + + img { + filter: none; + } + + .card { + box-shadow: 0 0 3px 1px rgba(0, 0, 0, calc(0.5*var(--shadow-opacity))); + } +} + +@media print, (max-width: 60em) { + main::before { + backdrop-filter: none; + } + + main { + background-color: hsl(230 10% 15%); + } +} + +@media print, (max-width: 60em) and (prefers-color-scheme: light) { + main { + background-color: hsl(260 5% 90%); + } +} + |