aboutsummaryrefslogtreecommitdiff
path: root/_sass
diff options
context:
space:
mode:
Diffstat (limited to '_sass')
-rw-r--r--_sass/button.css22
-rw-r--r--_sass/card.css22
-rw-r--r--_sass/code.scss52
-rw-r--r--_sass/globals.css54
-rw-r--r--_sass/image.css8
-rw-r--r--_sass/layout.css143
-rw-r--r--_sass/navbar.css196
-rw-r--r--_sass/print.css19
-rw-r--r--_sass/search.css67
-rw-r--r--_sass/separator.css8
-rw-r--r--_sass/tags.css45
-rw-r--r--_sass/theme.css110
12 files changed, 746 insertions, 0 deletions
diff --git a/_sass/button.css b/_sass/button.css
new file mode 100644
index 0000000..9efe41f
--- /dev/null
+++ b/_sass/button.css
@@ -0,0 +1,22 @@
+.button {
+ padding: 12px;
+ min-width: 200px;
+ text-align: center;
+ width: min-content;
+
+ display: block !important;
+ margin: 0 auto var(--page-margins) auto;
+
+ font-size: 1rem;
+ font-family: "Inter", sans-serif;
+ font-weight: 600;
+
+ border-radius: 8px;
+ border: 0;
+
+ cursor: pointer;
+}
+
+a.button { min-width: calc(200px - 2 * 12px); }
+a.button::after { display: none; }
+
diff --git a/_sass/card.css b/_sass/card.css
new file mode 100644
index 0000000..58037b5
--- /dev/null
+++ b/_sass/card.css
@@ -0,0 +1,22 @@
+.postCard {
+ background-color: var(--bg-alt);
+ padding: 12px;
+ border-radius: 8px;
+
+ overflow-x: hidden;
+}
+
+.postCard a { color: var(--fg) !important; }
+.postCard a::after { display: none; }
+
+.postCard .cover {
+ width: 100%;
+ border-radius: 6px;
+ max-height: 220px;
+ object-fit: cover;
+ margin-bottom: 6px;
+}
+
+.postCard .title { font-size: 24px; }
+.postCard .subtitle { font-weight: 500; }
+
diff --git a/_sass/code.scss b/_sass/code.scss
new file mode 100644
index 0000000..331b5bd
--- /dev/null
+++ b/_sass/code.scss
@@ -0,0 +1,52 @@
+pre {
+ background-color: var(--bg-alt);
+ border-radius: 6px;
+ padding: 6px;
+}
+
+pre.highlight {
+ code { color: var(--magnolia); }
+ // https://github.com/rouge-ruby/rouge/wiki/List-of-tokens
+ @each $c in c,cm,cp,c1,cs { .#{$c} { @extend %token_comment } }
+ @each $c in k,kc,kd,kn,kp,kr,kt { .#{$c} { @extend %token_keyword } }
+ @each $c in s,sb,sc,sd,s2,se,sh,si,sx,sr,s1,ss { .#{$c} { @extend %token_string } }
+ @each $c in m,mf,mh,mi,il,mo,mx,mb { .#{$c} { @extend %token_number } }
+ @each $c in o,ow { .#{$c} { @extend %token_operator } }
+}
+
+%token_comment
+{ font-style: italic; }
+
+%token_keyword
+{ font-weight: 700; }
+
+%token_string,
+%token_number
+{ color: var(--fg); }
+
+%token_comment {
+ color: var(--heliotrope-gray);
+ opacity: .7;
+}
+
+%token_keyword
+{ color: var(--fire-opal); }
+
+%token_operator
+{ opacity: .8; }
+
+@media (prefers-color-scheme: light) {
+ pre { background-color: var(--heliotrope-gray); }
+
+ pre.highlight code { color: var(--fg); }
+
+ %token_string,
+ %token_number
+ { opacity: .8; }
+
+ %token_comment {
+ color: var(--oxford-blue);
+ opacity: .5;
+ }
+}
+
diff --git a/_sass/globals.css b/_sass/globals.css
new file mode 100644
index 0000000..81c0b75
--- /dev/null
+++ b/_sass/globals.css
@@ -0,0 +1,54 @@
+html, body {
+ padding: 0;
+ margin: 0;
+
+ background-color: var(--bg);
+ color: var(--fg);
+
+ hyphens: auto;
+}
+
+.contentWrapper a {
+ color: var(--links);
+ text-decoration: none;
+ position: relative;
+ display: inline-block;
+}
+
+.contentWrapper a::after {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ height: 1px;
+ width: 0%;
+ transition: width;
+ transition-duration: 150ms;
+ background-color: var(--links);
+}
+
+.contentWrapper a:hover::after {
+ width: 100%;
+}
+
+::-webkit-scrollbar {
+ width: 12px;
+ height: 12px;
+}
+
+::-webkit-scrollbar-thumb {
+ border-radius: 6px;
+ border: 4px solid var(--bg);
+}
+
+:focus { outline: none; }
+
+li {
+ margin-bottom: 6px;
+}
+
+.icon svg {
+ width: 24px;
+ height: 24px;
+ fill: currentColor;
+}
diff --git a/_sass/image.css b/_sass/image.css
new file mode 100644
index 0000000..3e98ae4
--- /dev/null
+++ b/_sass/image.css
@@ -0,0 +1,8 @@
+img {
+ position: relative;
+ display: block;
+ margin: 0 auto var(--page-margins) auto;
+ max-width: 500px;
+ overflow: visible;
+}
+
diff --git a/_sass/layout.css b/_sass/layout.css
new file mode 100644
index 0000000..706f5c9
--- /dev/null
+++ b/_sass/layout.css
@@ -0,0 +1,143 @@
+:root {
+ --collapse-horizontal-gap: 0;
+ --nav-width: calc(200px * (1 - var(--collapse-horizontal-gap))) !important;
+ --page-width: 700px;
+ --page-margins: 24px;
+}
+
+.centeredPage {
+ transition-property: gap, max-width;
+ transition-duration: 500ms;
+
+ max-width: calc(var(--nav-width) + var(--page-width) + var(--page-margins));
+ margin: 0 auto;
+ margin-top: 96px;
+ padding: 0 var(--page-margins);
+
+ display: grid;
+ grid-auto-rows: auto;
+
+ gap: var(--page-margins) calc((1 - var(--collapse-horizontal-gap)) * var(--page-margins));
+}
+
+.titleWrapper {
+ grid-column: 2;
+ grid-row: 1;
+}
+.titleWrapper > * {
+ margin: 0;
+ word-break: break-word;
+}
+
+.navAreaWrapper {
+ grid-column: 1;
+ grid-row: 2;
+
+ transition-property: width;
+ transition-duration: 500ms;
+ width: var(--nav-width);
+}
+.navAreaWrapper > .sticky {
+ position: sticky;
+ top: var(--page-margins);
+ bottom: var(--page-margins);
+ max-height: calc(100vh - 2 * var(--page-margins));
+
+ overflow-y: scroll;
+ overflow-x: hidden;
+
+ border-radius: 8px;
+}
+
+.contentWrapper {
+ grid-column: 2;
+ grid-row: 2;
+
+ overflow-x: hidden;
+}
+.contentWrapper > * {
+ margin: 0;
+ margin-bottom: var(--page-margins);
+}
+
+.contentWrapper p {
+ text-align: justify;
+}
+
+.contentWrapper table,
+.contentWrapper code,
+.contentWrapper pre {
+ overflow-x: scroll;
+}
+
+.recentPosts {
+ display: grid;
+ grid-gap: 12px;
+ grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) );
+}
+
+.mobileNav {
+ display: none;
+}
+
+@media screen and (max-device-width: 550px) {
+ .centeredPage {
+ grid-template-columns: 0 1fr;
+ gap: var(--page-margins) 0;
+ padding: 0 12px;
+ }
+
+ .navAreaWrapper {
+ grid-column: none;
+ grid-row: none;
+
+ width: 100vw;
+
+ position: fixed;
+ inset: 0px 0px 0px 0px;
+
+ z-index: 2;
+
+ transition-property: opacity;
+ transition-duration: .1s;
+
+ opacity: 0;
+ pointer-events: none;
+ backdrop-filter: blur(50px);
+ }
+
+ .navAreaWrapper:before {
+ content: '';
+ position: absolute;
+ inset: 0px 0px 0px 0px;
+
+ background-color: var(--bg-alt);
+ opacity: .7;
+ }
+
+ .navAreaWrapper.navVisible {
+ pointer-events: initial;
+ opacity: 1;
+ }
+
+ .navAreaWrapper .globalLinks {
+ display: none;
+ }
+
+ .navAreaWrapper > .sticky {
+ position: absolute;
+ inset: 0px 0px 0px 0px;
+
+ padding: 24px;
+ overflow-y: scroll;
+ }
+
+ .mobileNav {
+ display: inline-block;
+ position: fixed;
+ bottom: 24px;
+ right: 24px;
+ z-index: 5;
+ }
+}
+
diff --git a/_sass/navbar.css b/_sass/navbar.css
new file mode 100644
index 0000000..10933a0
--- /dev/null
+++ b/_sass/navbar.css
@@ -0,0 +1,196 @@
+.navbarItem .inner {
+ background-color: var(--bg-alt);
+ color: var(--fg);
+
+ padding: 8px;
+ border-radius: 8px;
+
+ transition-property: background-color, color;
+ transition-duration: .15s;
+
+ position: relative;
+
+ display: flex;
+ gap: 8px;
+ align-items: center;
+}
+
+.navbarItem {
+ text-decoration: none;
+ display: block;
+}
+
+.navbarItem .icon { display: inline-block; }
+
+.navbarItem.indentLevel0 { margin-bottom: 12px; }
+
+.navbarItem.active .inner,
+.navbarItem.link:hover .inner {
+ background-color: var(--fg-alt);
+ color: var(--bg-alt);
+}
+
+.navbarItem.chapter .inner,
+.navbarItem.pinned .inner {
+ background-color: transparent;
+ color: var(--fg);
+
+ padding: 4px 0;
+ overflow: visible;
+}
+
+.navbarItem.pinned .inner .title {
+ margin: 0;
+ font-style: italic;
+ opacity: .8;
+ color: var(--fg-alt)
+}
+.navbarItem.pinned * { cursor: default !important; }
+
+.navbarItem .title {
+ display: inline-block;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+}
+.navbarItem.chapter .title { margin-top: 1px; }
+
+.navbarItem.chapter .chapterChildren {
+ transition-property: height;
+ transition-duration: .3s;
+
+ overflow: hidden;
+}
+
+.navbarItem.chapter.childrenCollapsed > .chapterChildren { height: 0; }
+.navbarItem.chapter > .chapterChildren { height: var(--children-height); }
+
+.navbarItem .inner,
+.navbarItem .icon,
+.navbarItem .icon .collapseIcon {
+ height: 24px;
+}
+
+.navbarItem > div > svg { vertical-align: super; }
+
+@media (prefers-color-scheme: light) {
+ .navbarItem.active .inner,
+ .navbarItem.link:hover .inner {
+ background-color: var(--fg);
+ }
+
+ .navbarItem.pinned .inner .title {
+ opacity: .6;
+ color: var(--fg-alt);
+ }
+}
+
+.mobileNav {
+ width: 48px;
+ text-align: center;
+ line-height: 0;
+}
+
+.mobileNav .button:last-child {
+ margin-bottom: 0;
+}
+
+.mobileNav .button {
+ padding: 12px;
+ display: inline-block !important;
+ min-width: 0;
+ border-radius: 24px;
+ margin: 0;
+ box-shadow: 0 4px 10px -2px rgba(0, 0, 0, 25%);
+
+ width: 24px;
+ height: 24px;
+ position: relative;
+}
+
+.mobileNav .button > svg {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ fill: currentColor !important;
+}
+
+.mobileNav .button.small {
+ padding: 6px;
+ margin-bottom: 12px;
+
+ opacity: 0;
+ transition: opacity .3s;
+}
+
+.mobileNav.open .button.small {
+ opacity: 1;
+}
+
+.chapterChildren > ul { padding-left: 0 !important; }
+.chapterChildren ul { padding-left: 12px; }
+
+.chapterChildren li,
+.chapterChildren summary {
+ margin: 4px 0;
+}
+
+.chapterChildren ul,
+.chapterChildren summary {
+ list-style: none;
+}
+
+.chapterChildren li,
+.chapterChildren summary {
+ min-height: 24px;
+ padding-left: 32px;
+ position: relative;
+ display: flex;
+ align-items: center;
+}
+
+.chapterChildren li.stub {
+ padding-left: 0;
+ margin: 0;
+}
+.chapterChildren li.stub::before {
+ display: none;
+}
+
+.chapterChildren summary {
+ cursor: pointer;
+}
+
+.chapterChildren li::before,
+.chapterChildren summary::before {
+ content: "";
+ position: absolute;
+ width: 24px;
+ height: 24px;
+ left: 0;
+ top: 0;
+ background-color: var(--fg);
+}
+
+.chapterChildren details > summary::before {
+ transform: rotate(-90deg);
+ transition-property: transform;
+ transition-duration: .3s;
+}
+.chapterChildren details[open] > summary::before {
+ transform: rotate(0deg);
+}
+
+.chapterChildren details summary::before {
+ clip-path: path('M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7a.9959.9959 0 010-1.41c.39-.38 1.03-.39 1.42 0z');
+}
+.chapterChildren li::before {
+ clip-path: path('M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1z');
+}
+
+.chapterChildren a {
+ color: var(--fg);
+ text-decoration: none;
+ user-select: none;
+}
diff --git a/_sass/print.css b/_sass/print.css
new file mode 100644
index 0000000..4867c83
--- /dev/null
+++ b/_sass/print.css
@@ -0,0 +1,19 @@
+@media print {
+ :root {
+ --nav-width: 0px;
+
+ --bg: #ffffff;
+ --fg: #000000;
+
+ --heliotrope-gray: var(--bg);
+ --purple-navy: #989abb;
+
+ --fire-opal: #ba3321;
+ --cyan-process: #397889;
+ --forest-green-crayola: #376848;
+
+ }
+
+ .centeredPage { grid-gap: var(--page-margins) 0; }
+ pre { border: solid 2px var(--fg); }
+}
diff --git a/_sass/search.css b/_sass/search.css
new file mode 100644
index 0000000..e424b6b
--- /dev/null
+++ b/_sass/search.css
@@ -0,0 +1,67 @@
+.searchBar {
+ background-color: var(--fg-alt);
+ border-radius: 8px;
+ padding: 12px;
+ margin-bottom: 24px;
+}
+
+.searchBar .input {
+ background-color: transparent;
+ border: 0;
+
+ color: var(--bg);
+
+ margin-left: 12px;
+ width: calc(100% - 48px - 12px);
+ padding: 14px 0;
+
+ vertical-align: top;
+}
+
+.searchBar .input::placeholder {
+ font-style: italic;
+ opacity: .75;
+
+ color: var(--bg);
+}
+
+.searchBar .button {
+ margin: 0;
+ display: inline-block !important;
+ line-height: 0;
+ min-width: unset;
+ background-color: var(--bg);
+ color: var(--fg-alt) !important;
+}
+
+.searchResults .post::after {
+ display: none;
+}
+
+.searchResults .post {
+ display: block;
+ border-radius: 8px;
+
+ padding: 12px;
+ margin-bottom: 12px;
+ background-color: var(--bg-alt);
+
+ color: var(--fg);
+}
+
+.searchResults .post .title,
+.searchResults .post .subtitle,
+.searchResults .post .authordate {
+ margin: 4px 0;
+}
+
+.searchResults .post .authordate {
+ font-style: italic;
+ opacity: .75;
+}
+
+@media (prefers-color-scheme: light) {
+ .searchBar { background-color: var(--fg); }
+ .searchBar .button { color: var(--fg) !important; }
+}
+
diff --git a/_sass/separator.css b/_sass/separator.css
new file mode 100644
index 0000000..24ee769
--- /dev/null
+++ b/_sass/separator.css
@@ -0,0 +1,8 @@
+hr {
+ display: block;
+ height: 12px;
+ margin-bottom: var(--page-margins);
+ background-color: var(--fire-opal);
+ border: none;
+ clip-path: path('M8.04282 8.19986C6.51226 9.73171 4.24587 12 0 12V6C1.68094 6 2.4102 5.34716 3.87868 3.87868C3.90463 3.85273 3.9308 3.82654 3.95718 3.80014C5.48774 2.26829 7.75413 0 12 0C16.2459 0 18.5123 2.26829 20.0428 3.80014C20.0692 3.82654 20.0954 3.85273 20.1213 3.87868C21.5898 5.34716 22.3191 6 24 6C25.6809 6 26.4102 5.34716 27.8787 3.87868C27.9046 3.85273 27.9308 3.82654 27.9572 3.80014C29.4877 2.26829 31.7541 0 36 0C40.2459 0 42.5123 2.26829 44.0428 3.80014C44.0692 3.82654 44.0954 3.85273 44.1213 3.87868C45.5898 5.34716 46.3191 6 48 6C49.6809 6 50.4102 5.34716 51.8787 3.87868C51.9046 3.85273 51.9308 3.82654 51.9572 3.80014C53.4877 2.26829 55.7541 0 60 0C64.2459 0 66.5123 2.26829 68.0428 3.80014C68.0692 3.82654 68.0954 3.85273 68.1213 3.87868C69.5898 5.34716 70.3191 6 72 6C73.6809 6 74.4102 5.34716 75.8787 3.87868L75.9572 3.80014C77.4877 2.26829 79.7541 0 84 0C88.2459 0 90.5123 2.26829 92.0428 3.80014L92.1213 3.87868C93.5898 5.34716 94.3191 6 96 6V12C91.7541 12 89.4877 9.73171 87.9572 8.19986L87.8787 8.12132C86.4102 6.65284 85.6809 6 84 6C82.3191 6 81.5898 6.65284 80.1213 8.12132L80.0428 8.19986C78.5123 9.73171 76.2459 12 72 12C67.7541 12 65.4877 9.73171 63.9572 8.19986C63.9308 8.17346 63.9046 8.14727 63.8787 8.12132C62.4102 6.65284 61.6809 6 60 6C58.3191 6 57.5898 6.65284 56.1213 8.12132C56.0954 8.14727 56.0692 8.17346 56.0428 8.19986C54.5123 9.73171 52.2459 12 48 12C43.7541 12 41.4877 9.73171 39.9572 8.19986C39.9308 8.17346 39.9046 8.14727 39.8787 8.12132C38.4102 6.65284 37.6809 6 36 6C34.3191 6 33.5898 6.65284 32.1213 8.12132C32.0954 8.14727 32.0692 8.17346 32.0428 8.19986C30.5123 9.73171 28.2459 12 24 12C19.7541 12 17.4877 9.73171 15.9572 8.19986C15.9308 8.17346 15.9046 8.14727 15.8787 8.12132C14.4102 6.65284 13.6809 6 12 6C10.3191 6 9.5898 6.65284 8.12132 8.12132C8.09537 8.14727 8.0692 8.17346 8.04282 8.19986Z');
+}
diff --git a/_sass/tags.css b/_sass/tags.css
new file mode 100644
index 0000000..2468d3f
--- /dev/null
+++ b/_sass/tags.css
@@ -0,0 +1,45 @@
+.tags {
+ margin-top: 12px;
+}
+
+.tags .tag {
+ --tag-color: hsl(var(--tag-hue), 75%, 70%);
+
+ padding: 4px 12px;
+ border-radius: 999px;
+
+ text-decoration: none;
+ color: var(--fg);
+
+ box-shadow: inset 0 0 0 2px var(--tag-color);
+
+ position: relative;
+ z-index: 1;
+
+ margin-top: 6px;
+ display: inline-block;
+}
+
+@media (prefers-color-scheme: light) {
+ .tags .tag {
+ --tag-color: hsl(var(--tag-hue), 50%, 40%);
+ }
+}
+
+.tags .tag::after { display: none; }
+
+.tags .tag::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: -1;
+
+ border-radius: 999px;
+ background-color: var(--tag-color);
+ opacity: .25;
+}
+
+.tags > * { margin-right: 6px; }
diff --git a/_sass/theme.css b/_sass/theme.css
new file mode 100644
index 0000000..c3a8dee
--- /dev/null
+++ b/_sass/theme.css
@@ -0,0 +1,110 @@
+:root {
+ --almond: #F4DEC9;
+ --heliotrope-gray: #A69CAC;
+ --purple-navy: #474973;
+ --oxford-blue: #161B33;
+ --xiketic: #0D0C1A;
+ --magnolia: #EFE9F4;
+
+ --fire-opal: #EE6352;
+ --cyan-process: #08B2E3;
+ --forest-green-crayola: #57A773;
+
+ --bg: var(--xiketic);
+ --fg: var(--almond);
+
+ --bg-alt: var(--oxford-blue);
+ --fg-alt: var(--heliotrope-gray);
+ --links: var(--fire-opal);
+}
+
+html,
+.searchBar .input {
+ font-family: "Inter", sans-serif;
+ font-size: 16px;
+}
+
+code, pre {
+ font-family: "JetBrainsMono", monospace;
+ font-size: 12px;
+}
+
+.subtile {
+ font-style: italic;
+ opacity: .75;
+ color: var(--heliotrope-gray);
+}
+
+h1, h2, h3 {
+ font-weight: 700;
+ margin: 0;
+}
+
+h1 { font-size: 64px; }
+h2 { font-size: 48px; }
+h3 { font-size: 32px; }
+
+::-webkit-scrollbar-track { background-color: var(--bg); }
+::-webkit-scrollbar-thumb { background-color: var(--purple-navy); }
+::-webkit-scrollbar-thumb:hover { background-color: var(--fg); }
+
+.button {
+ background-color: var(--fire-opal);
+ color: var(--fg) !important;
+}
+
+::selection {
+ background-color: var(--fire-opal);
+}
+
+blockquote {
+ position: relative;
+ padding-left: 12px;
+ font-style: italic;
+ color: var(--fg-alt);
+}
+
+blockquote:before {
+ position: absolute;
+ content: '';
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 3px;
+ background-color: var(--cyan-process);
+}
+
+.mobileNav .button {
+ background-color: var(--fire-opal);
+ color: var(--fg);
+}
+
+.mobileNav .button.small {
+ background-color: var(--fg-alt);
+ color: var(--bg) !important;
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ --heliotrope-gray: #dbdbe6;
+ --purple-navy: #989abb;
+
+ --fire-opal: #ba3321;
+ --cyan-process: #397889;
+ --forest-green-crayola: #376848;
+
+ --bg: var(--magnolia);
+ --fg: var(--xiketic);
+ --bg-alt: var(--heliotrope-gray);
+ --fg-alt: var(--oxford-blue);
+ }
+
+ .subtile {
+ opacity: .6;
+ color: var(--fg);
+ }
+
+ blockquote { opacity: .8; }
+ .button { color: var(--bg) !important; }
+}
+