diff --git a/starters/blog/.github/FUNDING.yml b/starters/blog/.github/FUNDING.yml new file mode 100644 index 00000000..a8056929 --- /dev/null +++ b/starters/blog/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: gcushen +custom: https://wowchemy.com/sponsor/ diff --git a/starters/blog/.github/preview.png b/starters/blog/.github/preview.png new file mode 100644 index 00000000..b6f50e69 Binary files /dev/null and b/starters/blog/.github/preview.png differ diff --git a/starters/blog/.github/workflows/publish.yaml b/starters/blog/.github/workflows/publish.yaml new file mode 100644 index 00000000..e50e66cf --- /dev/null +++ b/starters/blog/.github/workflows/publish.yaml @@ -0,0 +1,63 @@ +name: Deploy Wowchemy website to GitHub Pages + +on: + # Trigger the workflow every time you push to the `main` branch + push: + branches: ["main"] + # Allows you to run this workflow manually from the Actions tab on GitHub. + workflow_dispatch: + +# Provide permission to clone the repo and deploy it to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build website + build: + if: github.repository_owner != 'wowchemy' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # Fetch history for Hugo's .GitInfo and .Lastmod + fetch-depth: 0 + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: '0.119.0' + extended: true + - uses: actions/cache@v3 + with: + path: /home/runner/.cache/hugo_cache # Cache path for Hugo v0.116.0+ + key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-hugomod- + - name: Build with Hugo + env: + HUGO_ENVIRONMENT: production + run: | + hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/" + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: ./public + + # Deploy website to GitHub Pages hosting + deploy: + if: github.repository_owner != 'wowchemy' + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/starters/blog/LICENSE.md b/starters/blog/LICENSE.md new file mode 100644 index 00000000..2b346a46 --- /dev/null +++ b/starters/blog/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-present George Cushen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/starters/blog/README.md b/starters/blog/README.md new file mode 100644 index 00000000..1b1fb957 --- /dev/null +++ b/starters/blog/README.md @@ -0,0 +1,40 @@ + + +# [Hugo Minimal Blog Theme](https://github.com/wowchemy/hugo-blog-theme) + +[![Screenshot](./.github/preview.png)](https://wowchemy.com/templates/) + +The **Hugo Minimal Blog Template** empowers you to easily create your own _personal blog_ or _build a business around your content_. + +️**Trusted by 250,000+ researchers, educators, and students.** Highly customizable via the integrated **no-code, widget-based Wowchemy page builder**, making every site truly personalized ⭐⭐⭐⭐⭐ + +[![Get Started](https://img.shields.io/badge/-Get%20started-ff4655?style=for-the-badge)](https://wowchemy.com/templates/) +[![Discord](https://img.shields.io/discord/722225264733716590?style=for-the-badge)](https://discord.com/channels/722225264733716590/742892432458252370/742895548159492138) +[![Twitter Follow](https://img.shields.io/twitter/follow/wowchemy?label=Follow%20on%20Twitter)](https://twitter.com/wowchemy) + +Easily write technical content with plain text Markdown, LaTeX math, diagrams, RMarkdown, or Jupyter, and import publications from BibTeX. + +[Check out the latest demo](https://hugo-blog-theme.netlify.app/) of what you'll get in less than 10 minutes, or [view the showcase](https://wowchemy.com/creators/). + +The integrated [**Wowchemy**](https://wowchemy.com) website builder and CMS makes it easy to create a beautiful website for free. Edit your site in the CMS (or your favorite editor), generate it with [Hugo](https://github.com/gohugoio/hugo), and deploy with GitHub or Netlify. Customize anything on your site with widgets, light/dark themes, and language packs. + +- 👉 [**Get Started**](https://wowchemy.com/templates/) +- 📚 [View the **documentation**](https://university.wowchemy.com/) +- 💬 [Chat with the **Wowchemy research community**](https://discord.gg/z8wNYzb) or [**Hugo community**](https://discourse.gohugo.io) +- ⬇️ **Automatically import citations from BibTeX** with the [Hugo Academic CLI](https://github.com/wowchemy/hugo-academic-cli) +- 🐦 Share your new site with the community: [@wowchemy](https://twitter.com/wowchemy) [@GeorgeCushen](https://twitter.com/GeorgeCushen) [#MadeWithWowchemy](https://twitter.com/search?q=%23MadeWithWowchemy&src=typed_query) +- 🗳 [Take the survey and help us improve #OpenSource](https://forms.gle/NioD9VhUg7PNmdCAA) +- 🚀 [Contribute improvements](https://github.com/wowchemy/wowchemy-hugo-themes/blob/main/CONTRIBUTING.md) or [suggest improvements](https://github.com/wowchemy/wowchemy-hugo-themes/issues) +- ⬆️ **Updating?** View the [Update Guide](https://university.wowchemy.com/) and [Release Notes](https://github.com/wowchemy/wowchemy-hugo-themes/releases) + +## We ask you, humbly, to support this open source movement + +Today we ask you to defend the open source independence of the Wowchemy website builder and themes 🐧 + +We're an open source movement that depends on your support to stay online and thriving, but 99.9% of our creators don't give; they simply look the other way. + +### [❤️ Click here to become a GitHub Sponsor, unlocking awesome perks such as _exclusive academic templates and widgets_](https://github.com/sponsors/gcushen) + +## Demo credits + +- [Unsplash](https://unsplash.com/) images diff --git a/starters/blog/assets/dist/wc.css b/starters/blog/assets/dist/wc.css new file mode 100644 index 00000000..db283082 --- /dev/null +++ b/starters/blog/assets/dist/wc.css @@ -0,0 +1,2 @@ +/*! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:initial}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-sm :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-base :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-base :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-lg :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.prose-lg :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-xl :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.8em;margin-bottom:.8em}.prose-xl :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.2em}.prose-xl :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.2em}.prose-xl :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.2em}.prose-xl :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.2em}.prose-xl :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-xl :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-2xl :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.8333333em;margin-bottom:.8333333em}.prose-2xl :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-2xl :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-2xl :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-2xl :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-2xl :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-2xl :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-slate{--tw-prose-body:#334155;--tw-prose-headings:#0f172a;--tw-prose-lead:#475569;--tw-prose-links:#0f172a;--tw-prose-bold:#0f172a;--tw-prose-counters:#64748b;--tw-prose-bullets:#cbd5e1;--tw-prose-hr:#e2e8f0;--tw-prose-quotes:#0f172a;--tw-prose-quote-borders:#e2e8f0;--tw-prose-captions:#64748b;--tw-prose-code:#0f172a;--tw-prose-pre-code:#e2e8f0;--tw-prose-pre-bg:#1e293b;--tw-prose-th-borders:#cbd5e1;--tw-prose-td-borders:#e2e8f0;--tw-prose-invert-body:#cbd5e1;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#94a3b8;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#94a3b8;--tw-prose-invert-bullets:#475569;--tw-prose-invert-hr:#334155;--tw-prose-invert-quotes:#f1f5f9;--tw-prose-invert-quote-borders:#334155;--tw-prose-invert-captions:#94a3b8;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#cbd5e1;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#475569;--tw-prose-invert-td-borders:#334155}.\!visible{visibility:visible!important}.fixed{position:fixed}.relative{position:relative}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.mt-5{margin-top:1.25rem}.mr-3{margin-right:.75rem}.mt-12{margin-top:3rem}.mr-2{margin-right:.5rem}.mb-3{margin-bottom:.75rem}.mb-0{margin-bottom:0}.mb-5{margin-bottom:1.25rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.table-caption{display:table-caption}.grid{display:grid}.hidden{display:none}.h-48{height:12rem}.h-7{height:1.75rem}.w-full{width:100%}.w-7{width:1.75rem}.max-w-\[65ch\]{max-width:65ch}.flex-grow{flex-grow:1}.basis-\[100\%\]{flex-basis:100%}.table-auto{table-layout:auto}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.overflow-hidden{overflow:hidden}.rounded-xl{border-radius:.75rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.border-0{border-width:0}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-8{padding:2rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-0{padding-top:0;padding-bottom:0}.pl-0{padding-left:0}.pl-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-semibold{font-weight:600}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.leading-tight{line-height:1.25}.leading-6{line-height:1.5rem}.tracking-wide{letter-spacing:.025em}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s} +/*!* Import Wowchemy components *!*/.page-wrapper{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:100%}.page-footer,.page-header{flex-shrink:0}.page-body{flex-grow:1}.article-header{position:relative;clear:both}.article-banner{width:100%;height:260px;-o-object-fit:cover;object-fit:cover}.featured-image-wrapper{position:relative;padding-left:0;padding-right:0}.featured-image{position:relative;width:100%;display:block;margin:0 auto}.article-header-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-size:.7em;background:#000;text-align:right;z-index:5;opacity:.65;border-radius:5px 0 0}@media (min-width:64em){.article-header-caption{padding:5px 10px}}.article-header-caption a{color:#fff;text-decoration:none}ul.task-list{list-style:none}ul.task-list li input[type=checkbox]{margin-right:.5rem}ul.task-list input[type=checkbox]:checked{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1em;height:1em;border:none;background:initial;position:relative}ul.task-list input[type=checkbox]:not(:checked){width:.9em;height:.9em}ul.task-list input[type=checkbox]:checked:after{content:"✅"}.wg-about-avatar{#profile{text-align:center;padding:30px 10px;position:relative}.avatar{width:auto;height:auto;max-width:225px;max-height:225px;-o-object-fit:cover;object-fit:cover}.portrait-title h2{font-size:1.75em;font-weight:300;margin:20px 0 10px}.portrait-title h3{font-size:1rem;font-weight:300;margin:0 0 10px}.network-icon{display:inline-flex;flex-direction:row;flex-wrap:wrap;justify-content:center;list-style:none;padding:0;margin:0}#profile .network-icon{margin-top:.5rem}.network-icon li{margin-right:10px;@media (max-width:640px){margin-right:12px}}.network-icon li:last-of-type{margin-right:0}.network-icon li:hover{transform:scale(1.2)}.big-icon{font-size:2rem}.ul-interests li{font-size:.9rem}.ul-edu{list-style:none}.ul-edu li{position:relative;padding:0 15px 4px 3px}.ul-edu li .description p{margin:0}.ul-edu li .description p.course{font-size:.9rem}.ul-edu li .description p.institution{font-size:.75rem}.network-icon .big-icon{font-size:1.5rem}.dark .portrait-title h3{color:hsla(0,0%,100%,.9);font-weight:700}.dark .portrait-title h2{color:#fff;font-weight:700}.bio-text{max-width:680px}}.avatar-wrapper{position:relative;width:150px;height:150px;margin-left:auto;margin-right:auto}.avatar-emoji{position:absolute;width:40px;height:40px;line-height:40px;border-radius:100%;bottom:0;right:0;text-align:center;font-size:20px;background-color:#fff;color:#000;box-shadow:0 10px 20px rgba(0,0,0,.04),0 2px 6px rgba(0,0,0,.04),0 0 1px rgba(0,0,0,.04)}.dark .avatar-emoji{background-color:#000;box-shadow:0 10px 20px rgba(0,0,0,.04),0 2px 6px rgba(0,0,0,.04),0 0 1px hsla(0,0%,100%,.96)}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:text-neutral-700:hover{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.hover\:no-underline:hover{-webkit-text-decoration-line:none;text-decoration-line:none}.hover\:shadow-none:hover{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:text-neutral-700:focus{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.focus\:no-underline:focus{-webkit-text-decoration-line:none;text-decoration-line:none}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dark .dark\:prose-invert{--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.dark .dark\:block{display:block}.dark .dark\:hidden{display:none}.dark .dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.dark .dark\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.dark .dark\:bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity))}.dark .dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark .dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark .dark\:text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.dark .dark\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.dark .dark\:text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity))}.dark .dark\:hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.dark .dark\:hover\:text-gray-50:hover{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity))}@media (min-width:768px){.md\:flex{display:flex}.md\:w-48{width:12rem}.md\:flex-shrink-0{flex-shrink:0}}@media (min-width:1024px){.lg\:prose-xl{font-size:1.25rem;line-height:1.8}.lg\:prose-xl :where(p):not(:where([class~=not-prose] *)){margin-top:1.2em;margin-bottom:1.2em}.lg\:prose-xl :where([class~=lead]):not(:where([class~=not-prose] *)){font-size:1.2em;line-height:1.5;margin-top:1em;margin-bottom:1em}.lg\:prose-xl :where(blockquote):not(:where([class~=not-prose] *)){margin-top:1.6em;margin-bottom:1.6em;padding-left:1.0666667em}.lg\:prose-xl :where(h1):not(:where([class~=not-prose] *)){font-size:2.8em;margin-top:0;margin-bottom:.8571429em;line-height:1}.lg\:prose-xl :where(h2):not(:where([class~=not-prose] *)){font-size:1.8em;margin-top:1.5555556em;margin-bottom:.8888889em;line-height:1.1111111}.lg\:prose-xl :where(h3):not(:where([class~=not-prose] *)){font-size:1.5em;margin-top:1.6em;margin-bottom:.6666667em;line-height:1.3333333}.lg\:prose-xl :where(h4):not(:where([class~=not-prose] *)){margin-top:1.8em;margin-bottom:.6em;line-height:1.6}.lg\:prose-xl :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.lg\:prose-xl :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.lg\:prose-xl :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.lg\:prose-xl :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.lg\:prose-xl :where(figcaption):not(:where([class~=not-prose] *)){font-size:.9em;line-height:1.5555556;margin-top:1em}.lg\:prose-xl :where(code):not(:where([class~=not-prose] *)){font-size:.9em}.lg\:prose-xl :where(h2 code):not(:where([class~=not-prose] *)){font-size:.8611111em}.lg\:prose-xl :where(h3 code):not(:where([class~=not-prose] *)){font-size:.9em}.lg\:prose-xl :where(pre):not(:where([class~=not-prose] *)){font-size:.9em;line-height:1.7777778;margin-top:2em;margin-bottom:2em;border-radius:.5rem;padding:1.1111111em 1.3333333em}.lg\:prose-xl :where(ol):not(:where([class~=not-prose] *)){margin-top:1.2em;margin-bottom:1.2em;padding-left:1.6em}.lg\:prose-xl :where(ul):not(:where([class~=not-prose] *)){margin-top:1.2em;margin-bottom:1.2em;padding-left:1.6em}.lg\:prose-xl :where(li):not(:where([class~=not-prose] *)){margin-top:.6em;margin-bottom:.6em}.lg\:prose-xl :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.4em}.lg\:prose-xl :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.4em}.lg\:prose-xl :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.8em;margin-bottom:.8em}.lg\:prose-xl :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.2em}.lg\:prose-xl :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.2em}.lg\:prose-xl :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.2em}.lg\:prose-xl :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.2em}.lg\:prose-xl :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.8em;margin-bottom:.8em}.lg\:prose-xl :where(hr):not(:where([class~=not-prose] *)){margin-top:2.8em;margin-bottom:2.8em}.lg\:prose-xl :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.lg\:prose-xl :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.lg\:prose-xl :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.lg\:prose-xl :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.lg\:prose-xl :where(table):not(:where([class~=not-prose] *)){font-size:.9em;line-height:1.5555556}.lg\:prose-xl :where(thead th):not(:where([class~=not-prose] *)){padding-right:.6666667em;padding-bottom:.8888889em;padding-left:.6666667em}.lg\:prose-xl :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.lg\:prose-xl :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.lg\:prose-xl :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding:.8888889em .6666667em}.lg\:prose-xl :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.lg\:prose-xl :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.lg\:prose-xl :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.lg\:prose-xl :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.lg\:my-0{margin-bottom:0}.lg\:mt-0,.lg\:my-0{margin-top:0}.lg\:mt-1{margin-top:.25rem}.lg\:\!flex{display:flex!important}.lg\:hidden{display:none}.lg\:basis-auto{flex-basis:auto}.lg\:flex-row{flex-direction:row}.lg\:flex-wrap{flex-wrap:wrap}.lg\:justify-start{justify-content:flex-start}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:px-2{padding-right:.5rem}.lg\:pl-2,.lg\:px-2{padding-left:.5rem}.lg\:pr-1{padding-right:.25rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}}.\[\&\>svg\]\:w-7>svg{width:1.75rem}.\[\&\.active\]\:font-bold.active{font-weight:700}.\[\&\.active\]\:text-black\/90.active{color:rgba(0,0,0,.9)}.dark .dark\:\[\&\.active\]\:text-white.active{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.\[\&\:not\(dark\)\]\:hidden:not(dark){display:none} \ No newline at end of file diff --git a/starters/blog/assets/media/icons/.gitkeep b/starters/blog/assets/media/icons/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/starters/blog/config/_default/config.yaml b/starters/blog/config/_default/config.yaml new file mode 100644 index 00000000..fa9a1da9 --- /dev/null +++ b/starters/blog/config/_default/config.yaml @@ -0,0 +1,92 @@ +# Configuration of Hugo +# Guide: https://wowchemy.com/docs/getting-started/ +# Hugo Documentation: https://gohugo.io/getting-started/configuration/#all-configuration-settings +# This file is formatted using YAML syntax - learn more at https://learnxinyminutes.com/docs/yaml/ + +title: Minimal Hugo Blog Theme # Website name +baseURL: 'https://example.com/' # Website URL + +############################ +## PAGE OPTIONS +############################ + +cascade: + # Blog post options + - _target: + path: /post/** + pager: true + editable: true + reading_time: true + commentable: true + show_related: true + show_breadcrumb: true + share: true + header: + navbar: + enable: false + +############################ +## LANGUAGE +############################ + +defaultContentLanguage: en +hasCJKLanguage: false +defaultContentLanguageInSubdir: false +removePathAccents: true + +############################ +## MODULES +############################ + +module: + imports: + - path: github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy-plugin-netlify + - path: github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy-tailwind + +############################ +## ADVANCED +############################ + +build: + writeStats: true +enableGitInfo: false +summaryLength: 30 +paginate: 10 +enableEmoji: true +enableRobotsTXT: true +footnotereturnlinkcontents: ^ +ignoreFiles: [\.ipynb$, .ipynb_checkpoints$, \.Rmd$, \.Rmarkdown$, _cache$] +permalinks: + authors: '/author/:slug/' + tags: '/tag/:slug/' + categories: '/category/:slug/' +disableAliases: true +outputs: + home: [HTML, RSS, headers, redirects] + section: [HTML, RSS] +imaging: + resampleFilter: lanczos + quality: 95 + anchor: smart +timeout: 600000 +taxonomies: + tag: tags + category: categories + author: authors +markup: + _merge: deep + highlight: + lineNos: false +related: + threshold: 80 + includeNewer: true + toLower: true + indices: + - name: tags + weight: 100 + - name: categories + weight: 70 +security: + _merge: deep +sitemap: + _merge: deep diff --git a/starters/blog/config/_default/languages.yaml b/starters/blog/config/_default/languages.yaml new file mode 100644 index 00000000..40884cc1 --- /dev/null +++ b/starters/blog/config/_default/languages.yaml @@ -0,0 +1,22 @@ +# Languages +# Create a section for each of your site's languages. +# Documentation: https://wowchemy.com/docs/guide/language/ + +# Default language +en: + languageCode: en-us + # Uncomment for multi-lingual sites, and move English content into `en` sub-folder. + #contentDir: content/en + +# Uncomment the lines below to configure your website in a second language. +#zh: +# languageCode: zh-Hans +# contentDir: content/zh +# title: Chinese website title... +# params: +# description: Site description in Chinese... +# menu: +# main: +# - name: 传 +# url: '#about' +# weight: 1 diff --git a/starters/blog/config/_default/menus.yaml b/starters/blog/config/_default/menus.yaml new file mode 100644 index 00000000..523bc0ba --- /dev/null +++ b/starters/blog/config/_default/menus.yaml @@ -0,0 +1,15 @@ +# Navigation Links +# To link a homepage widget, specify the URL as a hash `#` followed by the filename of the + # desired widget in your `content/home/` folder. + # The weight parameter defines the order that the links will appear in. + +main: + - name: Home + url: / + weight: 10 + - name: Blog + url: post/ + weight: 20 + - name: Uses + url: uses/ + weight: 30 diff --git a/starters/blog/config/_default/params.yaml b/starters/blog/config/_default/params.yaml new file mode 100644 index 00000000..d453070c --- /dev/null +++ b/starters/blog/config/_default/params.yaml @@ -0,0 +1,50 @@ +# SITE SETUP +# Guide: https://wowchemy.com/docs/getting-started/ +# Documentation: https://wowchemy.com/docs/ +# This file is formatted using YAML syntax - learn more at https://learnxinyminutes.com/docs/yaml/ + +# SEO + +marketing: + seo: + site_type: Person + local_business_type: '' + org_name: '' + description: 'A highly-customizable Hugo blog theme powered by Wowchemy website builder.' + twitter: 'wowchemy' + analytics: + google_analytics: '' + baidu_tongji: '' + verification: + google: '' + baidu: '' + +footer: + copyright: + notice: '© {year} Me. This work is licensed under {license}' + license: + enable: true + allow_derivatives: false + share_alike: true + allow_commercial: false + +# Localization + +locale: + date_format: 'Jan 2, 2006' + time_format: '3:04 PM' + +# Site features + +features: + syntax_highlighter: + theme_light: github-light + theme_dark: github-dark + math: + enable: false + privacy_pack: + enable: false + repository: + url: 'https://github.com//' + content_dir: content + branch: main diff --git a/starters/blog/content/_index.md b/starters/blog/content/_index.md new file mode 100644 index 00000000..698864fc --- /dev/null +++ b/starters/blog/content/_index.md @@ -0,0 +1,14 @@ +--- +title: 'Home' +date: 2023-10-24 +type: landing +sections: + - block: about.avatar + content: + username: admin # The user's folder name in content/authors/ + - block: collection + content: + filters: + folders: + - post +--- diff --git a/starters/blog/content/authors/_index.md b/starters/blog/content/authors/_index.md new file mode 100644 index 00000000..c5e4b7b6 --- /dev/null +++ b/starters/blog/content/authors/_index.md @@ -0,0 +1,9 @@ +--- +# To publish author profile pages, remove all the `_build` and `cascade` settings below. +_build: + render: never +cascade: + _build: + render: never + list: always +--- diff --git a/starters/blog/content/authors/admin/_index.md b/starters/blog/content/authors/admin/_index.md new file mode 100644 index 00000000..0d4c2053 --- /dev/null +++ b/starters/blog/content/authors/admin/_index.md @@ -0,0 +1,61 @@ +--- +# Display name +title: 吳健雄 + +# Name pronunciation (optional) +name_pronunciation: Chien Shiung Wu + +# Full name (for SEO) +first_name: Shiung Wu +last_name: Chien + +# Status emoji +status: + icon: ☕️ + +# Is this the primary user of the site? +superuser: true + +# Role/position/tagline +role: Professor of Artificial Intelligence + +# Organizations/Affiliations to show in About widget +organizations: + - name: Stanford University + url: https://www.stanford.edu/ + +# Short bio (displayed in user profile at end of posts) +bio: My research interests include distributed robotics, mobile computing and programmable matter. + +# Social Networking +# Need to use another icon? Simply download the SVG icon to your `assets/media/icons/` folder. +social: + - icon: send + icon_pack: wc + link: 'mailto:your-email@example.com' + - icon: twitter + icon_pack: wc + link: https://twitter.com/wowchemy + label: Follow me on Twitter + - icon: github + icon_pack: wc + link: https://github.com/gcushen + - icon: linkedin + icon_pack: wc + link: https://www.linkedin.com/ + # Link to a PDF of your resume/CV - upload it to `static/uploads/resume.pdf` + - icon: cv + icon_pack: wc + link: uploads/resume.pdf + - icon: rss + icon_pack: wc + link: ./post/index.xml + +# Highlight the author in author lists? (true/false) +highlight_name: true +--- + +Chien Shiung Wu is a professor of artificial intelligence at the Stanford AI Lab. Her research interests include +distributed robotics, mobile computing and programmable matter. She leads the Robotic Neurobiology group, which develops +self-reconfiguring robots, systems of self-organizing robots, and mobile sensor networks. +{style="text-align: justify; font-size: 0.8em;"} diff --git a/starters/blog/content/authors/admin/avatar.jpg b/starters/blog/content/authors/admin/avatar.jpg new file mode 100644 index 00000000..49337e47 Binary files /dev/null and b/starters/blog/content/authors/admin/avatar.jpg differ diff --git a/starters/blog/content/post/_index.md b/starters/blog/content/post/_index.md new file mode 100644 index 00000000..9bff67d5 --- /dev/null +++ b/starters/blog/content/post/_index.md @@ -0,0 +1,3 @@ +--- +title: Blog +--- diff --git a/starters/blog/content/post/easily-write-any-content/featured.jpg b/starters/blog/content/post/easily-write-any-content/featured.jpg new file mode 100644 index 00000000..e2c0fb24 Binary files /dev/null and b/starters/blog/content/post/easily-write-any-content/featured.jpg differ diff --git a/starters/blog/content/post/easily-write-any-content/index.md b/starters/blog/content/post/easily-write-any-content/index.md new file mode 100644 index 00000000..ea3b58ec --- /dev/null +++ b/starters/blog/content/post/easily-write-any-content/index.md @@ -0,0 +1,113 @@ +--- +title: 🤩 Easily write any kind of content with Wowchemy +summary: Highlight code snippets, take notes on math classes, and draw diagrams from textual representation. +date: 2023-10-24 +math: true +tags: + - Hugo + - Wowchemy + - Markdown +image: + caption: 'Even author content with $\LaTeX$' +--- + +Wowchemy is designed to give technical content creators a seamless experience. You can focus on the content and Wowchemy handles the rest. + +**Highlight your code snippets, take notes on math classes, and draw diagrams from textual representation.** + +On this page, you'll find some examples of the types of technical content that can be rendered with Wowchemy. + +## Examples + +### Math + +Wowchemy supports a Markdown extension for $\LaTeX$ math. You can enable this feature by toggling the `math` option in your `config/_default/params.yaml` file. + +To render _inline_ or _block_ math, wrap your LaTeX math with `{{}}$...${{}}` or `{{}}$$...$${{}}`, respectively. (We wrap the LaTeX math in the Wowchemy _math_ shortcode to prevent Hugo rendering our math as Markdown.) + +Example **math block**: + +```latex +{{}} +$$ +\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2} +$$ +{{}} +``` + +renders as + +{{< math >}} +$$\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}$$ +{{< /math >}} + +Example **inline math** `{{}}$\nabla F(\mathbf{x}_{n})${{}}` renders as {{< math >}}$\nabla F(\mathbf{x}_{n})${{< /math >}}. + +Example **multi-line math** using the math linebreak (`\\`): + +```latex +{{}} +$$f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} & \text{if }k=1, \\ +1-p_{0}^{*} & \text{if }k=0.\end{cases}$$ +{{}} +``` + +renders as + +{{< math >}} + +$$ +f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} & \text{if }k=1, \\ +1-p_{0}^{*} & \text{if }k=0.\end{cases} +$$ + +{{< /math >}} + +### Data Frames + +Save your spreadsheet as a CSV file in your page's folder and then render it by adding the _Table_ shortcode to your page: + +```go +{{}} +``` + +renders as + +{{< table path="results.csv" header="true" caption="Table 1: My results" >}} + +### Code + +Wowchemy utilises Hugo's Markdown extension for highlighting code syntax. The code theme can be selected in the `config/_default/params.yaml` file. + + + ```python + import pandas as pd + data = pd.read_csv("data.csv") + data.head() + ``` + +renders as + +```python +import pandas as pd +data = pd.read_csv("data.csv") +data.head() +``` + +### Todo lists + +You can even write your todo lists in Markdown too: + +```markdown +- [x] Write math example + - [x] Write diagram example +- [ ] Do something else +``` + +renders as + +- [x] Write math example + - [x] Write diagram example +- [ ] Do something else + +### Did you find this page helpful? Consider sharing it 🙌 diff --git a/starters/blog/content/post/easily-write-any-content/results.csv b/starters/blog/content/post/easily-write-any-content/results.csv new file mode 100644 index 00000000..0630ed92 --- /dev/null +++ b/starters/blog/content/post/easily-write-any-content/results.csv @@ -0,0 +1,4 @@ +customer_id, score +1,0 +2,0.5 +3,1 diff --git a/starters/blog/content/uses.md b/starters/blog/content/uses.md new file mode 100644 index 00000000..34ec8dda --- /dev/null +++ b/starters/blog/content/uses.md @@ -0,0 +1,20 @@ +--- +title: Uses +date: 2023-10-24 +--- + +The idea of a Uses page is to tell you about the stuff I use. + +Make sure to check out [uses.tech](https://uses.tech/) for a list of everyone's Uses pages! + +I often get asked about what software or hardware I use, so this page will serve as a living document and a place to point curious readers to when I get asked. + +## Editor + Terminal + +- [Visual Studio Code](https://code.visualstudio.com/) is my current editor +- Chrome is my main browser +- iTerm2 is my terminal + +## Desktop Apps + +- Better Touch Tool for window management and custom keyboard shortcuts diff --git a/starters/blog/go.mod b/starters/blog/go.mod new file mode 100644 index 00000000..b4b514f6 --- /dev/null +++ b/starters/blog/go.mod @@ -0,0 +1,6 @@ +module github.com/wowchemy/wowchemy-hugo-themes/starters/blog + +go 1.19 + +require github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy-plugin-netlify v1.0.1-0.20231024173257-66e3c7e27eb0 +require github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy-tailwind v0.0.0-20231024173257-66e3c7e27eb0 // indirect diff --git a/starters/blog/netlify.toml b/starters/blog/netlify.toml new file mode 100644 index 00000000..e35a1fca --- /dev/null +++ b/starters/blog/netlify.toml @@ -0,0 +1,21 @@ +[build] + command = "hugo --gc --minify -b $URL" + publish = "public" + +[build.environment] + HUGO_VERSION = "0.119.0" + HUGO_ENABLEGITINFO = "true" + +[context.production.environment] + HUGO_ENV = "production" + +[context.deploy-preview] + command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "hugo --gc --minify -b $DEPLOY_PRIME_URL" + +[[plugins]] + package = "netlify-plugin-hugo-cache-resources" + [plugins.inputs] + debug = true diff --git a/starters/blog/static/uploads/resume.pdf b/starters/blog/static/uploads/resume.pdf new file mode 100644 index 00000000..d0489a3a Binary files /dev/null and b/starters/blog/static/uploads/resume.pdf differ