diff options
Diffstat (limited to '_sass')
-rw-r--r-- | _sass/button.css | 22 | ||||
-rw-r--r-- | _sass/card.css | 22 | ||||
-rw-r--r-- | _sass/code.scss | 52 | ||||
-rw-r--r-- | _sass/globals.css | 54 | ||||
-rw-r--r-- | _sass/image.css | 8 | ||||
-rw-r--r-- | _sass/layout.css | 143 | ||||
-rw-r--r-- | _sass/navbar.css | 196 | ||||
-rw-r--r-- | _sass/print.css | 19 | ||||
-rw-r--r-- | _sass/search.css | 67 | ||||
-rw-r--r-- | _sass/separator.css | 8 | ||||
-rw-r--r-- | _sass/tags.css | 45 | ||||
-rw-r--r-- | _sass/theme.css | 110 |
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; } +} + |