diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index cbbc36bc..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "themes/hugo-video"] - path = themes/hugo-video - url = https://github.com/martignoni/hugo-video.git diff --git a/config.yaml b/config.yaml index 41381924..2a79d0fa 100644 --- a/config.yaml +++ b/config.yaml @@ -14,6 +14,8 @@ params: text: davegallant.ca url: / + defaultTheme: "dark" + comments: utterances: enable: true @@ -61,6 +63,13 @@ module: imports: - path: github.com/davegallant/hugo-theme-gruvbox - path: github.com/schnerring/hugo-mod-json-resume + mounts: + - source: data + target: data + - source: layouts + target: layouts + - source: assets/css/json-resume.css + target: assets/css/critical/44-json-resume.css mounts: - source: node_modules/simple-icons/icons target: assets/simple-icons diff --git a/go.mod b/go.mod index 1a3450d0..b4fb92dc 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module davegallant.github.io go 1.23 require ( - github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102030224-3e3d39381e83 // indirect + github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102155230-cac2894e8557 // indirect github.com/schnerring/hugo-mod-json-resume v0.0.0-20231224014047-e651a547c19a // indirect - github.com/schnerring/hugo-theme-gruvbox v0.0.0-20231222001142-c40bfccc26fe // indirect ) diff --git a/go.sum b/go.sum index c4cb3a71..094ab553 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,12 @@ +github.com/davegallant/hugo-theme-gruvbox v0.0.0-20231022204344-8475ce73a204 h1:dfY8ArYEahXoWnvKbqcEr4sVj03ZV3q33kPz8Lait3Y= +github.com/davegallant/hugo-theme-gruvbox v0.0.0-20231022204344-8475ce73a204/go.mod h1:ZEP0AB4v1k845Jmx9XmOY39CuR7Zud/owFh8wRGgeZg= github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102030224-3e3d39381e83 h1:1K2zeS/GlzUztodRODqVdT0L53So3oKQl2W6xv3hk3k= github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102030224-3e3d39381e83/go.mod h1:BQehNdf/SB/+bCc031OVsLECIgB9ZaN1dfUFKTeOIuo= +github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102154627-e80c3018f9fb h1:T40lsmpjUFil3z8BoQVsQF2Gu685DSIjdTpCz6iV0Ns= +github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102154627-e80c3018f9fb/go.mod h1:BQehNdf/SB/+bCc031OVsLECIgB9ZaN1dfUFKTeOIuo= +github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102155230-cac2894e8557 h1:rXYdDcfrr/E2k2o3nnuLE6BmDw8K+JSs8hHFCLKzJGo= +github.com/davegallant/hugo-theme-gruvbox v0.0.0-20240102155230-cac2894e8557/go.mod h1:BQehNdf/SB/+bCc031OVsLECIgB9ZaN1dfUFKTeOIuo= +github.com/schnerring/hugo-mod-json-resume v0.0.0-20231022202951-552402b37357 h1:FR5kIQJNpHrB+P6yb8PrDVO8FpbUxF5fdTXLQp7UUpI= +github.com/schnerring/hugo-mod-json-resume v0.0.0-20231022202951-552402b37357/go.mod h1:an+FdylzRESQ2N+NuFK+iLerxnDRWbOqkxCDUXflGF4= github.com/schnerring/hugo-mod-json-resume v0.0.0-20231224014047-e651a547c19a h1:EZRiOf0iW5k9lycVv3LngzSsGUxDRszYS4U7ea2r8RY= github.com/schnerring/hugo-mod-json-resume v0.0.0-20231224014047-e651a547c19a/go.mod h1:5dixHC0WHu0w2Aqb8hsOCrIU1OBYr1w5Q6HZAmTub7Q= -github.com/schnerring/hugo-theme-gruvbox v0.0.0-20231222001142-c40bfccc26fe h1:YFCe/83618UT24IqSn7Ka0TSSZ54BNvDJ7n0WzxWgsg= -github.com/schnerring/hugo-theme-gruvbox v0.0.0-20231222001142-c40bfccc26fe/go.mod h1:ZEP0AB4v1k845Jmx9XmOY39CuR7Zud/owFh8wRGgeZg= diff --git a/package.json b/package.json index b590d749..6628174d 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,35 @@ { "comments": { "dependencies": { - "@tabler/icons": "github.com/davegallant/hugo-theme-gruvbox", - "flexsearch": "github.com/davegallant/hugo-theme-gruvbox", - "normalize.css": "github.com/davegallant/hugo-theme-gruvbox", - "prism-themes": "github.com/davegallant/hugo-theme-gruvbox", - "prismjs": "github.com/davegallant/hugo-theme-gruvbox", + "@tabler/icons": " github.com/davegallant/hugo-theme-gruvbox", + "flexsearch": " github.com/davegallant/hugo-theme-gruvbox", + "normalize.css": " github.com/davegallant/hugo-theme-gruvbox", + "prism-themes": " github.com/davegallant/hugo-theme-gruvbox", + "prismjs": " github.com/davegallant/hugo-theme-gruvbox", "simple-icons": "github.com/schnerring/hugo-mod-json-resume", - "typeface-fira-code": "github.com/davegallant/hugo-theme-gruvbox", - "typeface-roboto-slab": "github.com/davegallant/hugo-theme-gruvbox" + "typeface-fira-code": " github.com/davegallant/hugo-theme-gruvbox", + "typeface-roboto-slab": " github.com/davegallant/hugo-theme-gruvbox" }, "devDependencies": { - "@fullhuman/postcss-purgecss": "github.com/davegallant/hugo-theme-gruvbox", - "cssnano": "github.com/davegallant/hugo-theme-gruvbox", - "eslint": "github.com/davegallant/hugo-theme-gruvbox", - "eslint-config-prettier": "github.com/davegallant/hugo-theme-gruvbox", - "eslint-plugin-prettier": "github.com/davegallant/hugo-theme-gruvbox", - "husky": "github.com/davegallant/hugo-theme-gruvbox", - "lint-staged": "github.com/davegallant/hugo-theme-gruvbox", - "markdownlint-cli": "github.com/davegallant/hugo-theme-gruvbox", - "postcss": "github.com/davegallant/hugo-theme-gruvbox", - "postcss-cli": "github.com/davegallant/hugo-theme-gruvbox", - "postcss-custom-media": "github.com/davegallant/hugo-theme-gruvbox", - "postcss-import": "github.com/davegallant/hugo-theme-gruvbox", - "postcss-nesting": "github.com/davegallant/hugo-theme-gruvbox", - "postcss-preset-env": "github.com/davegallant/hugo-theme-gruvbox", - "postcss-url": "github.com/davegallant/hugo-theme-gruvbox", - "prettier": "github.com/davegallant/hugo-theme-gruvbox", - "prettier-plugin-go-template": "github.com/davegallant/hugo-theme-gruvbox", - "stylelint": "github.com/davegallant/hugo-theme-gruvbox", - "stylelint-prettier": "github.com/davegallant/hugo-theme-gruvbox" + "@fullhuman/postcss-purgecss": " github.com/davegallant/hugo-theme-gruvbox", + "cssnano": " github.com/davegallant/hugo-theme-gruvbox", + "eslint": " github.com/davegallant/hugo-theme-gruvbox", + "eslint-config-prettier": " github.com/davegallant/hugo-theme-gruvbox", + "eslint-plugin-prettier": " github.com/davegallant/hugo-theme-gruvbox", + "husky": " github.com/davegallant/hugo-theme-gruvbox", + "lint-staged": " github.com/davegallant/hugo-theme-gruvbox", + "markdownlint-cli": " github.com/davegallant/hugo-theme-gruvbox", + "postcss": " github.com/davegallant/hugo-theme-gruvbox", + "postcss-cli": " github.com/davegallant/hugo-theme-gruvbox", + "postcss-custom-media": " github.com/davegallant/hugo-theme-gruvbox", + "postcss-import": " github.com/davegallant/hugo-theme-gruvbox", + "postcss-nesting": " github.com/davegallant/hugo-theme-gruvbox", + "postcss-preset-env": " github.com/davegallant/hugo-theme-gruvbox", + "postcss-url": " github.com/davegallant/hugo-theme-gruvbox", + "prettier": " github.com/davegallant/hugo-theme-gruvbox", + "prettier-plugin-go-template": " github.com/davegallant/hugo-theme-gruvbox", + "stylelint": " github.com/davegallant/hugo-theme-gruvbox", + "stylelint-prettier": " github.com/davegallant/hugo-theme-gruvbox" } }, "dependencies": { diff --git a/resources/_gen/assets/css/css/non-critical.css_dec9ec4ba6a8398679fa2a3d8d143c1a.content b/resources/_gen/assets/css/css/non-critical.css_dec9ec4ba6a8398679fa2a3d8d143c1a.content index 216ca75b..bd0dc3e6 100644 --- a/resources/_gen/assets/css/css/non-critical.css_dec9ec4ba6a8398679fa2a3d8d143c1a.content +++ b/resources/_gen/assets/css/css/non-critical.css_dec9ec4ba6a8398679fa2a3d8d143c1a.content @@ -130,13 +130,126 @@ pre[class*="language-"] { /* Default license header for non-vendor CSS source code that follows */ -/*! MIT License | github.com/schnerring/hugo-theme-gruvbox */ +/*! MIT License | github.com/davegallant/hugo-theme-gruvbox */ + +/* + Critical CSS for above-the-fold content, delivered inline to increase first + paint performance +*/ + +/*! purgecss start ignore */ + +/* Typefaces */ + +/* Normalize */ + +/*! purgecss end ignore */ + +/*! CC BY-SA 3.0 License | https://stackoverflow.com/a/36118384/1154965 */ + +@keyframes blink { + 50% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +/* Default license header for non-vendor CSS source code that follows */ + +/*! MIT License | github.com/davegallant/hugo-theme-gruvbox */ /* Bootstrap 5 breakpoints See: https://getbootstrap.com/docs/5.0/layout/breakpoints/#available-breakpoints */ +/* + Bootstrap 5 breakpoints + See: https://getbootstrap.com/docs/5.0/layout/breakpoints/#available-breakpoints +*/ + +:root[data-theme="light"] { + --bg: var(--bg0); + --bg0: #fbf1c7; + --bg0_h: #f9f5d7; + --bg0_s: #f2e5bc; + --bg1: #ebdbb2; + --bg2: #d5c4a1; + --bg3: #bdae93; + --bg4: #a89984; + --fg: var(--fg1); + --fg0: #282828; + --fg1: #3c3836; + --fg2: #504945; + --fg3: #665c54; + --fg4: #7c6f64; + --gray1: var(--fg4); + --gray2: #928374; + --red1: #cc241d; + --red2: #9d0006; + --green1: #98971a; + --green2: #797403; + --yellow1: #d79921; + --yellow2: #b57614; + --blue1: #458588; + --blue2: #076678; + --purple1: #b16286; + --purple2: #8f3f71; + --aqua1: #689d6a; + --aqua2: #427b58; + --orange1: #d65d0e; + --orange2: #af3a03; +} + +[data-theme="light"]:root .light--hidden { + display: none; + } + +:root[data-theme="dark"] { + --bg: var(--bg0); + --bg0: #282828; + --bg0_h: #1d2021; + --bg0_s: #32302f; + --bg1: #3c3836; + --bg2: #504945; + --bg3: #665c54; + --bg4: #7c6f64; + --fg: var(--fg1); + --fg0: #fbf1c7; + --fg1: #ebdbb2; + --fg2: #d5c4a1; + --fg3: #bdae93; + --fg4: #a89984; + --gray1: var(--fg4); + --gray2: #928374; + --red1: #cc241d; + --red2: #fb4934; + --green1: #98971a; + --green2: #b8bb26; + --yellow1: #d79921; + --yellow2: #fabd2f; + --blue1: #458588; + --blue2: #83a598; + --purple1: #b16286; + --purple2: #d3869b; + --aqua1: #689d6a; + --aqua2: #8ec07c; + --orange1: #d65d0e; + --orange2: #fe8019; +} + +[data-theme="dark"]:root .dark--hidden { + display: none; + } + +:root { + + --primary: var(--blue1); + --primary-alt: var(--blue2); +} + footer { align-items: center; color: var(--fg3); @@ -149,6 +262,244 @@ footer { text-align: center; } +:root { + --font-monospace: "Fira Code", "Lucida Console", Monaco, monospace; + --font-sans-serif: Verdana, Helvetica, sans-serif; + --font-serif: "Roboto Slab", Georgia, serif; +} + +html { + font-family: var(--font-serif); + font-size: 1rem; + scroll-behavior: smooth; +} + +body { + background: var(--bg); + color: var(--fg); + line-height: 1.675; + word-wrap: break-word; +} + +strong { + letter-spacing: 0.35px; +} + +a { + color: inherit; + text-decoration: none; +} + +a.link--external::after { + /* 2009 = Thin Space */ + content: "\2009↗"; +} + +img, +video { + border: 2px solid var(--bg1); + height: auto; + max-width: 100%; +} + +figure { + display: inline-block; +} + +figcaption { + color: var(--fg3); + font-family: var(--font-serif); + font-size: 0.9rem; +} + +*::selection { + color: var(--fg0); + background: var(--bg4); +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: var(--fg0); + font-family: var(--font-monospace); + font-weight: 300; + line-height: 1.4; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + font-size: 1em; + } + +h2, +h3, +h4, +h5, +h6 { + border-bottom: 1px solid var(--bg1); +} + +h1, +h2 { + font-weight: 400; +} + +h1 { + font-size: 1.875rem; +} + +h2 { + font-size: 1.75rem; +} + +h3 { + font-size: 1.625rem; +} + +@media (min-width: 768px) { + h1 { + font-size: 2.375rem; + } + + h2 { + font-size: 2rem; + } + + h3 { + font-size: 1.75rem; + } +} + +h4 { + font-size: 1.5rem; +} + +h5 { + font-size: 1.375rem; +} + +h6 { + font-size: 1.25rem; +} + +table { + table-layout: fixed; + border-collapse: collapse; + width: 100%; + margin: 2rem 0; +} + +table, +th, +td { + border: 1px solid var(--bg1); + padding: 0.5rem; +} + +hr { + border: none; + background: var(--bg1); + height: 1px; + margin: 3rem auto; + width: 80%; +} + +mark { + background: var(--yellow1); + color: var(--bg0); +} + +abbr { + text-underline-offset: 0.2rem; +} + +blockquote, +code, +kbd, +mark, +pre { + border-radius: 0.2rem; + padding: 0 0.2em; +} + +pre code { + padding: 0; +} + +blockquote, +code, +kbd, +pre, +th { + background: var(--bg1); +} + +code, +kbd, +pre, +th { + font-family: var(--font-monospace); +} + +code code, + kbd code, + code kbd, + kbd kbd { + background: var(--bg2); + } + +blockquote, +pre { + padding: 1rem; +} + +pre { + /* TODO is !important really needed because of Prism? */ + background: var(--bg1) !important; + overflow: auto; +} + +pre code { + background: none; + } + +blockquote, +blockquote.twitter-tweet { + border-left: var(--primary-alt) 5px solid; + margin: 0.5rem 0; +} + +:is(blockquote,blockquote.twitter-tweet) code { + background: var(--bg2); + } + +:is(blockquote,blockquote.twitter-tweet) p:first-of-type { + margin-top: 0; + } + +:is(blockquote,blockquote.twitter-tweet) p:last-of-type { + margin-bottom: 0; + } + +blockquote.twitter-tweet { + border-color: var(--blue2); + color: inherit; + font: inherit; + font-size: inherit; + line-height: inherit; +} + +blockquote.twitter-tweet a { + color: var(--blue2); + } + +blockquote.twitter-tweet a:hover { + color: var(--blue1); + text-decoration: none !important; + } + .pagination { display: flex; margin-top: 2rem; @@ -167,3 +518,604 @@ footer { .pagination__button--next { margin-left: auto; } + +pre::-webkit-scrollbar { + height: 0.5rem; + scrollbar-width: auto; +} + +pre::-webkit-scrollbar-track { + background: var(--bg2); + border-radius: 0.2rem; +} + +pre::-webkit-scrollbar-thumb { + background: var(--bg4); + border-radius: 0.2rem; +} + +.layout { + display: grid; + grid-template-areas: + "header" + "main" + "footer"; + grid-template-rows: auto 1fr auto; + height: 100vh; +} + +main { + align-items: start; + display: grid; + grid-area: main; + grid-template-areas: "empty content sidebar"; + grid-template-columns: 1fr minmax(0, 650px) 4fr; +} + +header { + background: var(--bg1); + grid-area: header; +} + +footer { + grid-area: footer; +} + +main, +footer { + margin: 0.5em 1.1em; +} + +.content { + grid-area: content; +} + +.sidebar { + display: none; + flex-direction: column; + grid-area: sidebar; + margin-top: 3rem; + position: sticky; + top: 2rem; +} + +@media (min-width: 992px) { + +.sidebar { + display: flex; +} + } + +header { + display: grid; + font-family: var(--font-monospace); + font-size: 1.125rem; + grid-template-columns: auto auto 1fr auto; + grid-template-areas: "heading search nav theme-toggle"; + padding: 0.75rem; +} + +.logo { + color: var(--fg0); + display: flex; + font-weight: 700; + grid-area: heading; +} + +.logo:hover .logo__cursor { + animation: 1s blink infinite; + opacity: 1; + } + +.logo__chevron, +.logo__cursor { + margin-left: 0.5rem; +} + +.logo__cursor { + opacity: 0; +} + +.logo__text { + display: none; +} + +@media (min-width: 768px) { + .logo__text { + display: block; + } +} + +/*! purgecss start ignore */ + +.search { + display: flex; + grid-area: search; + margin: 0 1rem; +} + +#search__text { + border: 1px solid var(--bg2); + border-radius: 0.2rem; + background: var(--bg2); + caret-color: var(--fg); + color: var(--fg); + outline: none; + padding: 0 0.5rem; + width: 100%; +} + +#search__text:hover { + border-color: var(--bg3); + } + +#search__text:focus { + border-color: var(--bg4); + } + +#search__text::placeholder { + color: var(--fg3); + } + +#search__text[type="search"]::-webkit-search-cancel-button { + appearance: none; + } + +#search__suggestions { + background: var(--bg); + border-radius: 0.2rem; + box-shadow: 0 0.5rem 1rem var(--bg1); + font-family: var(--font-serif); + left: 0; + margin-top: 2rem; + position: absolute; + width: 95vw; + z-index: 1000; +} + +@media (min-width: 768px) { + .search { + position: relative; + } + + #search__suggestions { + width: 60vw; + } +} + +.search__suggestions--hidden { + display: none; +} + +.search__suggestion-item { + border-bottom: 1px dashed var(--bg2); + display: grid; + grid-template-columns: 1fr 2fr; +} + +.search__suggestion-item:focus, + .search__suggestion-item:focus-visible, + .search__suggestion-item:hover { + background: var(--bg1); + cursor: pointer; + outline: none; + } + +.search__suggestion-item:last-child { + border: none; + } + +.search__suggestion-title, +.search__suggestion-description { + padding: 0 1rem; + margin: 1rem 0; +} + +.search__suggestion-title { + font-weight: 700; +} + +.search__suggestion-description { + border-left: 1px solid var(--bg2); +} + +.search__no-results { + padding: 0.75rem; +} + +/*! purgecss end ignore */ + +.theme__toggle { + align-items: center; + background: none; + border: none; + color: var(--yellow1); + cursor: pointer; + display: flex; + grid-area: theme-toggle; + margin: 0 1rem; +} + +.theme__toggle:hover { + color: var(--yellow2); + } + +.theme__toggle svg { + height: 28px; + width: 28px; + } + +/* TODO: simplify deep nesting */ + +nav#menu { + align-items: center; + display: flex; + grid-area: nav; + justify-content: flex-end; +} + +nav#menu .menu__item { + color: var(--fg); + } + +nav#menu .menu__item:hover { + color: var(--fg3); + cursor: pointer; + } + +nav#menu ul { + list-style: none; + margin: 0; + padding: 0; + } + +nav#menu ul.menu--horizontal { + align-items: center; + display: none; + } + +nav#menu ul.menu--horizontal li { + display: inline-block; + margin: 0 0.75rem; + } + +@media (min-width: 768px) { + +nav#menu ul.menu--horizontal { + display: flex; + } + } + +nav#menu ul.menu--vertical { + background: var(--fg0); + bottom: 0; + margin: 0; + padding: 3rem; + position: fixed; + right: 0; + top: 0; + transform: translate(100%, 0); + transition: transform 0.5s cubic-bezier(0.9, 0, 0.1, 1); + width: 50%; + z-index: 10; + } + +nav#menu ul.menu--vertical .menu__item { + color: var(--bg1); + } + +nav#menu ul.menu--vertical .menu__item:hover { + color: var(--bg4); + } + +nav#menu .menu__burger { + display: flex; + height: 24px; + width: 24px; + } + +nav#menu .menu__burger > * { + position: absolute; + } + +nav#menu .menu__burger svg { + width: inherit; + z-index: 20; + height: inherit; + } + +nav#menu .menu__burger svg line { + transition-duration: 0.5s; + transition-property: stroke, opacity, transform; + transition-timing-function: cubic-bezier(0.9, 0, 0.1, 1); + } + +nav#menu .menu__burger svg line:nth-of-type(1) { + transform-origin: center 6px; + } + +nav#menu .menu__burger svg line:nth-of-type(2) { + transform-origin: center 12px; + } + +nav#menu .menu__burger svg line:nth-of-type(3) { + transform-origin: center 18px; + } + +nav#menu .menu__burger input { + height: inherit; + opacity: 0; + width: inherit; + z-index: 30; + } + +:is(nav#menu .menu__burger input:checked) ~ ul.menu--vertical { + transform: none; + } + +:is(nav#menu .menu__burger input:checked) ~ svg { + stroke: var(--bg1); + } + +:is(nav#menu .menu__burger input:checked) ~ svg line:nth-of-type(1) { + transform: translate(0, 6px) rotate(45deg); + } + +:is(nav#menu .menu__burger input:checked) ~ svg line:nth-of-type(2) { + opacity: 0; + transform: scale(0.2); + } + +:is(nav#menu .menu__burger input:checked) ~ svg line:nth-of-type(3) { + transform: translate(0, -6px) rotate(-45deg); + } + +@media (min-width: 768px) { + +nav#menu .menu__burger { + display: none; + } + } + +.sidebar { + font-family: var(--font-monospace); + max-width: 350px; + margin-left: auto; + margin-right: auto; + padding-left: 2.5rem; +} + +.sidebar hr { + margin: 1.5rem auto; + } + +.sidebar svg { + fill: var(--fg); + } + +.sidebar__heading { + font-size: 1.3rem; +} + +aside.toc a { + color: var(--primary-alt); + } + +aside.toc a:hover { + color: var(--primary); + } + +aside.toc ul { + list-style: none; + margin: 0; + padding: 0; + } + +aside.toc ul ul { + font-size: 0.9rem; + margin-left: 0.5rem; + } + +aside.toc ul li { + line-height: 1.1; + } + +aside.toc ul li a { + display: block; + padding: 0.2rem 0; + } + +.jr-basics__image { + background: var(--bg1); + border: 2px solid var(--bg2); +} + +.jr-basics__summary { + color: var(--fg3); + font-family: var(--font-serif); + margin: 0.75rem 0; +} + +.jr-basics__profile a:hover { + color: var(--fg3); + } + +.jr-basics__profile a:hover svg { + fill: var(--fg3); + } + +.tag-cloud { + line-height: 1.1; + text-align: justify; +} + +.tag-cloud__tag:hover { + color: var(--fg3); +} + +.tag-cloud__tag--active { + text-decoration: underline; +} + +.post, +.content-section { + border-bottom: 2px dotted var(--bg1); + padding: 2rem 0; +} + +.post figure, + .post img:not(figure img), + .post video:not(figure video) { + margin: 0.5rem 0; + box-sizing: border-box; + } + +.post-header, +.post-content__read-more { + font-family: var(--font-monospace); +} + +.post-meta__author { + font-weight: 700; +} + +.post-content { + margin: 1.3rem 0; +} + +.post-content__read-more { + color: var(--primary-alt); + margin-top: 1.3rem; +} + +.post-header a, .post-content a { + color: var(--primary-alt); + } + +.post-header a:hover, .post-content a:hover { + color: var(--primary); + } + +.post-tags { + align-items: center; + display: flex; + flex-wrap: wrap; + gap: 0.9rem; + margin: 1rem 0; +} + +.post-tag { + font-size: 0.9rem; + line-height: 1; +} + +.post-tag::before { + content: "#"; + } + +.post-heading__anchor { + display: none; +} + +h1:hover .post-heading__anchor, h2:hover .post-heading__anchor, h3:hover .post-heading__anchor, h4:hover .post-heading__anchor, h5:hover .post-heading__anchor, h6:hover .post-heading__anchor { + display: inline-block; + } + +.jr__item-meta { + font-family: var(--font-monospace); +} + +.jr__item-meta { + align-items: start; + flex-flow: column; +} + +@media (min-width: 768px) { + .jr__item-meta { + align-items: center; + flex-flow: row wrap; + } + + .jr__date, + .jr__date-range, + .jr-work__location { + flex-grow: 1; + text-align: right; + } + + .jr-awards__awarder, + .jr-publications__publisher, + .jr-education__institution, + .jr-volunteer__organization { + flex-basis: 100%; + } +} + +.social-share { + align-items: center; + border-top: 2px dotted var(--bg1); + display: flex; + flex-wrap: wrap; + gap: 0.9rem; + margin: 3rem 0; + padding-top: 3rem; +} + +.social-share svg { + fill: var(--fg); + width: 24px; + height: 24px; + } + +.social-share svg.icon-tabler { + fill: none; + stroke: var(--fg); + } + +.social-share__item { + background: var(--bg1); + padding: 0.5rem; + display: flex; +} + +/* Sticky social bar left + +@media (--xl) { + .social-share { + align-items: flex-start; + border-top: none; + flex-direction: column; + + position: fixed; + top: 15%; + left: 0; + } + + .social-share__heading { + display: none; + } + + .social-share__item { + transition: padding 0.2s ease-in; + + &:hover { + padding: 0.5rem 1rem; + } + + & svg { + &:hover { + fill: var(--fg); + } + + &.icon-tabler { + fill: none; + + &:hover { + stroke: var(--fg); + } + } + } + } +} + +*/