diff --git a/README.md b/README.md index dcd92e60..54164053 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Congo is designed to be a fast, lightweight theme for Hugo. It's based upon Tail - Fully responsive layout - Dark mode (auto-switching based upon browser) - Highly customisable configuration +- Multiple homepage layouts - Flexible with any content types, taxonomies and menus - Diagrams and visualisations using Mermaid JS - SVG icons from FontAwesome 5 @@ -44,9 +45,14 @@ Congo is designed to be a fast, lightweight theme for Hugo. It's based upon Tail - [4. Set up your configuration files](#4-set-up-your-configuration-files) - [Configuration](#configuration) - [Getting started](#getting-started) + - [Homepage layout](#homepage-layout) + - [Page layout](#page-layout) + - [Profile layout](#profile-layout) + - [Custom layout](#custom-layout) + - [Recent articles](#recent-articles) - [Organising content](#organising-content) - [Parameters](#parameters) - - [Front Matter](#front-matter) + - [Front matter](#front-matter) - [Shortcodes](#shortcodes) - [Alert](#alert) - [Icon](#icon) @@ -121,11 +127,11 @@ Refer to the Hugo docs for more information or read the next section to learn mo Congo is a highly customisable theme and uses some of the latest Hugo features to simplify how it is configured. -The theme ships with a default configuration that gets you up and running with a basic blog or static website. This default configuration can be found in the `themes/congo/config/_default/` folder. +The theme ships with a default configuration that gets you up and running with a basic blog or static website. > Configuration files bundled with the theme are provided in TOML format as this is the default Hugo syntax. Feel free to convert your config to YAML or JSON as you wish. -The default theme configuration is documented in each file so you can freely adjust the settings to meet your needs. +The default theme configuration is documented in each file so you can freely adjust the settings to meet your needs. If you followed the installation instructions above, you should adjust your theme configuration by modifying the files in the `config/_default/` folder of your Hugo project. ### Getting started @@ -154,6 +160,46 @@ links = [ ] ``` +### Homepage layout + +Congo provides a fully flexible homepage layout. There are two main templates to choose from with additional settings to adjust the design. Alternatively, you can also provide your own template and have complete control over the homepage content. + +The layout of the homepage is controlled by the `homepage.layout` setting in the `params.toml` configuration file. Additionally, all layouts have the option to include a listing of recent articles. + +#### Page layout + +The default layout is the page layout. It's simply a normal content page that displays your Markdown content. It's great for static websites and provides a lot of flexibility. + +![Page layout](https://raw.githubusercontent.com/jpanther/Congo/stable/images/home-page.jpg) + +To enable the page layout, set `homepage.layout = "page"` in the `params.toml` configuration file. + +#### Profile layout + +The profile layout is great for personal websites and blogs. It puts the author's details front and centre by providing an image and links to social profiles. + +The author information is provided in the `author.toml` configuration file. Additionally, any Markdown content that is provided in the homepage content will be placed below the author profile. This allows extra flexibility for displaying a bio or other custom content using shortcodes. + +![Profile layout](https://raw.githubusercontent.com/jpanther/Congo/stable/images/home-profile.jpg) + +To enable the profile layout, set `homepage.layout = "profile"` in the `params.toml` configuration file. + +#### Custom layout + +If the built-in homepage layouts aren't sufficient for your needs, you have the option to provide your own custom layout. This allows you to have total control over the page content and essentially gives you a blank slate to work with. + +To enable the custom layout, set `homepage.layout = "custom"` in the `params.toml` configuration file. + +With the configuration value set, create a new `custom.html` file and place it in `layouts/partials/home/custom.html`. Now whatever is in the `custom.html` file will be placed in the content area of the site homepage. You can use whatever HTML, Tailwind, or Hugo templating functions to define your layout. + +#### Recent articles + +All homepage layouts have the option of displaying recent articles below the main page content. To enable this, simply set the `homepage.showList` setting to `true` in the `params.toml` configuration file. + +![Profile layout with recent articles](https://raw.githubusercontent.com/jpanther/Congo/stable/images/home-profile-list.jpg) + +The articles listed in this section are derived from the `homepage.listSections` setting which allows for whatever content types you are using on your website. For instance, if you had content sections for _posts_ and _projects_ you could set this setting to `["posts", "projects"]` and all the articles in these two sections would be used to populate the recent list. The theme expects this setting to be an array so if you only use one section for all your content, you should set this accordingly: `["blog"]`. + ### Organising content By default, Congo doesn't force you to use a particular content type. In doing so you are free to define your content as you wish. You might prefer _pages_ for a static site, _posts_ for a blog, or _projects_ for a portfolio. @@ -195,23 +241,27 @@ Many of the article defaults here can be overridden on a per article basis by sp |Name|Type|Default|Description| | --- | --- | --- | --- | +|`homepage.layout`|string|`"page"`|The layout of the homepage. Valid values are `page`, `profile` or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file.| +|`homepage.showList`|boolean|`false`|Whether or not recent articles are listed on the homepage beneath the page content.| +|`homepage.listSections`|array of strings|`["blog"]`|The sections of content to include in the recent list when `homepage.showList` is `true`.| |`article.showDate`|boolean|`true`|Whether or not article dates are displayed.| |`article.dateFormat`|string|`"2 January 2006"`|How article dates are formatted. Refer to the [Hugo docs](https://gohugo.io/functions/format/#gos-layout-string) for acceptable formats.| -|`article.showReadingTime`|boolean|`true`|Whether or not article reading times are displayed.| -|`article.showHeadingAnchors`|boolean|`true`|Whether or not heading anchor links are displayed alongside headings within articles.| |`article.showAuthor`|boolean|`true`|Whether or not the author box is displayed in the article footer.| +|`article.showDraftLabel`|boolean|`true`|Whether or not the draft indicator is shown next to articles when site is built with `--buildDrafts`.| +|`article.showHeadingAnchors`|boolean|`true`|Whether or not heading anchor links are displayed alongside headings within articles.| |`article.showPagination`|boolean|`true`|Whether or not the next/previous article links are displayed in the article footer.| -|`taxonomy.showTermCount`|boolean|`true`|Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing.| +|`article.showReadingTime`|boolean|`true`|Whether or not article reading times are displayed.| |`sitemap.excludedKinds`|array of strings|`["taxonomy", "term"]`|Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/templates/section-templates/#page-kinds) for acceptable values.| +|`taxonomy.showTermCount`|boolean|`true`|Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing.| +|`fathomAnalytics.site`|string|_Not set_|The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs](#analyticshtml) below for more details.| +|`fathomAnalytics.domain`|string|_Not set_|If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain.| |`verification.google`|string|_Not set_|The site verification string provided by Google to be included in the site metadata.| |`verification.bing`|string|_Not set_|The site verification string provided by Bing to be included in the site metadata.| |`verification.pinterest`|string|_Not set_|The site verification string provided by Pinterest to be included in the site metadata.| |`verification.yandex`|string|_Not set_|The site verification string provided by Yandex to be included in the site metadata.| -|`fathomAnalytics.site`|string|_Not set_|The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs](#analyticshtml) below for more details.| -|`fathomAnalytics.domain`|string|_Not set_|If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain.| -## Front Matter +## Front matter In addition to the [default Hugo front matter parameters](https://gohugo.io/content-management/front-matter/#front-matter-variables), Congo adds a number of additional options to customise the presentation of individual articles. All the available theme parameters are listed below. diff --git a/config/_default/params.toml b/config/_default/params.toml index 7bd803b6..415e3301 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -4,13 +4,19 @@ # # Refer to the README for more details about each of these parameters. +[homepage] + layout = "page" # valid options: page, profile, custom + showList = false + listSections = ["blog"] + [article] showDate = true dateFormat = "2 January 2006" - showReadingTime = true - showHeadingAnchors = true showAuthor = true + showDraftLabel = true + showHeadingAnchors = true showPagination = true + showReadingTime = true [taxonomy] showTermCount = true @@ -18,12 +24,12 @@ [sitemap] excludedKinds = ["taxonomy", "term"] +[fathomAnalytics] + # site = "ABC12345" + # domain = "llama.yoursite.com" + [verification] # google = "" # bing = "" # pinterest = "" # yandex = "" - -[fathomAnalytics] - # site = "ABC12345" - # domain = "llama.yoursite.com" diff --git a/exampleSite/config.toml b/exampleSite/config.toml index 32347d02..400bf3f8 100755 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -13,8 +13,8 @@ languageCode = "en-AU" title = "Congo" [author] - name = "Freddy Blogger" - image = "https://i.pravatar.cc/150?img=11" + name = "Congo Profile" + image = "/img/author.jpg" links = [ { twitter = "https://twitter.com/" }, { facebook = "https://facebook.com/" }, @@ -22,6 +22,10 @@ title = "Congo" { youtube = "https://youtube.com/" }, ] +[params.homepage] + layout = "custom" + showList = true + [[menu.main]] name = "Blog" pageRef = "blog" diff --git a/exampleSite/content/_index.md b/exampleSite/content/_index.md index 06653c6f..f399bbab 100755 --- a/exampleSite/content/_index.md +++ b/exampleSite/content/_index.md @@ -1,5 +1,5 @@ --- -title: "Welcome to Congo! 🎉" +title: "Welcome to Congo! :tada:" description: "This is a demo of the Congo theme for Hugo" --- @@ -7,8 +7,6 @@ description: "This is a demo of the Congo theme for Hugo" A simple, lightweight theme for Hugo built with Tailwind CSS. {{< /lead >}} -This is the homepage. It's just plain Markdown content and can render whatever you wish. - -Perhaps you'll link to an [about](/about/) page, or direct people to check out your [blog posts](/blog/). It's really up to you. +This is the homepage. It's just plain Markdown content and can render whatever you wish. Perhaps you'll link to an [about](/about/) page, or direct people to check out your [blog posts](/blog/). It's really up to you. {{< figure src="mountains.jpg" caption="Photo by [Anna Scarfiello](https://unsplash.com/@little_anne?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)." >}} diff --git a/exampleSite/layouts/partials/home/custom.html b/exampleSite/layouts/partials/home/custom.html new file mode 100644 index 00000000..56868a64 --- /dev/null +++ b/exampleSite/layouts/partials/home/custom.html @@ -0,0 +1,33 @@ + + +
+ + {{ partial "icon.html" "exclamation-triangle" }} + + + This is a demo of the `page` homepage layout. + + +
+ +
+ {{ partial "partials/home/page.html" . }} +
+
+ {{ partial "partials/home/profile.html" . }} +
diff --git a/exampleSite/static/img/author.jpg b/exampleSite/static/img/author.jpg new file mode 100644 index 00000000..e034edd9 Binary files /dev/null and b/exampleSite/static/img/author.jpg differ diff --git a/images/home-page.jpg b/images/home-page.jpg new file mode 100644 index 00000000..2a619e05 Binary files /dev/null and b/images/home-page.jpg differ diff --git a/images/home-profile-recent.jpg b/images/home-profile-recent.jpg new file mode 100644 index 00000000..319da77b Binary files /dev/null and b/images/home-profile-recent.jpg differ diff --git a/images/home-profile.jpg b/images/home-profile.jpg new file mode 100644 index 00000000..006c8576 Binary files /dev/null and b/images/home-profile.jpg differ diff --git a/images/screenshot.png b/images/screenshot.png index a97682ec..70461340 100644 Binary files a/images/screenshot.png and b/images/screenshot.png differ diff --git a/images/tn.png b/images/tn.png index 96feefa4..8ce0437c 100644 Binary files a/images/tn.png and b/images/tn.png differ diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index e4646492..6865a02b 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -2,7 +2,7 @@ {{- partial "head.html" . -}} {{- partial "header.html" . -}}
{{- block "main" . }}{{- end }}
diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 9c6256a1..428a5ee6 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -1,7 +1,7 @@ {{ define "main" }}
-

{{ .Title }}

+

{{ .Title | emojify }}

{{ partial "article-meta.html" . }} {{ if .Draft }} diff --git a/layouts/index.html b/layouts/index.html index 9defb763..3caa782c 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -1,8 +1,16 @@ {{ define "main" }} -
-
-

{{ .Title }}

-
-
{{ .Content | emojify }}
-
+ {{ $partial := print "partials/home/" .Site.Params.homepage.layout ".html" }} + {{ if templates.Exists $partial }} + {{ partial $partial . }} + {{ else }} + {{ partial "partials/home/page.html" . }} + {{ end }} + {{ if .Site.Params.homepage.showList | default false }} +
+

Recent

+ {{ range first 5 (.Paginate (where .Site.RegularPages "Type" "in" .Site.Params.homepage.listSections)).Pages }} + {{ partial "article-link.html" . }} + {{ end }} +
+ {{ end }} {{ end }} diff --git a/layouts/partials/author-links.html b/layouts/partials/author-links.html new file mode 100644 index 00000000..63c47a23 --- /dev/null +++ b/layouts/partials/author-links.html @@ -0,0 +1,16 @@ +{{ with .Site.Author.links }} +
+ {{ range $links := . }} + {{ range $name, $url := $links }} + {{ partial "icon.html" $name }} + {{ end }} + {{ end }} +
+{{ end }} diff --git a/layouts/partials/author.html b/layouts/partials/author.html index cc8480cb..3bc70ea5 100644 --- a/layouts/partials/author.html +++ b/layouts/partials/author.html @@ -9,22 +9,7 @@ {{ . }}
{{ end }} - {{ with .Site.Author.links }} -
- {{ range $links := . }} - {{ range $name, $url := $links }} - {{ partial "icon.html" $name }} - {{ end }} - {{ end }} -
- {{ end }} + {{ partialCached "author-links.html" . }} {{ end }} diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 0d5210fb..10dca7f9 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -1,4 +1,4 @@ -
+
{{ .Site.Title }}
diff --git a/layouts/partials/home/page.html b/layouts/partials/home/page.html new file mode 100644 index 00000000..b11f84e4 --- /dev/null +++ b/layouts/partials/home/page.html @@ -0,0 +1,8 @@ +
+ {{ with .Title }} +
+

{{ . | emojify }}

+
+ {{ end }} +
{{ .Content | emojify }}
+
diff --git a/layouts/partials/home/profile.html b/layouts/partials/home/profile.html new file mode 100644 index 00000000..6af33fcb --- /dev/null +++ b/layouts/partials/home/profile.html @@ -0,0 +1,21 @@ +
+
+ {{ with .Site.Author.image }} + + {{ end }} +

+ {{ .Site.Author.name | default .Site.Title }} +

+
+ {{ partialCached "author-links.html" . }} +
+
+
{{ .Content | emojify }}
+
diff --git a/static/css/main.css b/static/css/main.css index 60ec0867..1681b4fe 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -1 +1 @@ -/*! tailwindcss v2.2.7 | MIT License | https://tailwindcss.com*//*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,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}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}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}button{background-color:initial;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{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;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#a1a1aa}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#a1a1aa}input::placeholder,textarea::placeholder{opacity:1;color:#a1a1aa}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(228,228,231,var(--tw-border-opacity))}.prose{color:#3f3f46;max-width:65ch}.prose [class~=lead]{color:#52525b;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose a{color:#6d28d9;text-decoration:underline;font-weight:500}.prose a:hover{background-color:#7c3aed;color:#fff;text-decoration:none}.prose strong{color:#18181b;font-weight:600}.prose ol[type=A]{--list-counter-style:upper-alpha}.prose ol[type=a]{--list-counter-style:lower-alpha}.prose ol[type=A s]{--list-counter-style:upper-alpha}.prose ol[type=a s]{--list-counter-style:lower-alpha}.prose ol[type=I]{--list-counter-style:upper-roman}.prose ol[type=i]{--list-counter-style:lower-roman}.prose ol[type=I s]{--list-counter-style:upper-roman}.prose ol[type=i s]{--list-counter-style:lower-roman}.prose ol[type="1"]{--list-counter-style:decimal}.prose ol>li{position:relative;padding-left:1.75em}.prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#71717a;left:0}.prose ul>li{position:relative;padding-left:1.75em}.prose ul>li:before{content:"";position:absolute;background-color:#d4d4d8;border-radius:50%;width:.375em;height:.375em;top:.6875em;left:.25em}.prose hr{border-color:#e4e4e7;border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose blockquote{font-weight:500;font-style:italic;color:#18181b;border-left-width:.25rem;border-left-color:#e4e4e7;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose blockquote p:first-of-type:before{content:open-quote}.prose blockquote p:last-of-type:after{content:close-quote}.prose h1{color:#18181b;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{color:#18181b;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333;position:relative}.prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h3,.prose h4{color:#18181b;font-weight:600;position:relative}.prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose figure figcaption{color:#71717a;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose code{color:#a21caf;font-weight:600;font-size:.875em}.prose code:after,.prose code:before{content:"`"}.prose a code{color:#18181b}.prose pre{color:#e4e4e7;background-color:#fafafa;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose pre code{background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:400;color:#3f3f46;font-size:inherit;font-family:inherit;line-height:inherit}.prose pre code:after,.prose pre code:before{content:none}.prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose thead{color:#18181b;font-weight:600;border-bottom-width:1px;border-bottom-color:#d4d4d8}.prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose tbody tr{border-bottom-width:1px;border-bottom-color:#e4e4e7}.prose tbody tr:last-child{border-bottom-width:0}.prose tbody td{vertical-align:top;padding:.5714286em}.prose{font-size:1rem;line-height:1.75}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose figure,.prose img,.prose video{margin-top:2em;margin-bottom:2em}.prose figure>*{margin-top:0;margin-bottom:0}.prose h2 code{font-size:.875em}.prose h3 code{font-size:.9em}.prose ol,.prose ul{margin-top:1.25em;margin-bottom:1.25em}.prose li{margin-top:.5em;margin-bottom:.5em}.prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.prose>ul>li>:first-child{margin-top:1.25em}.prose>ul>li>:last-child{margin-bottom:1.25em}.prose>ol>li>:first-child{margin-top:1.25em}.prose>ol>li>:last-child{margin-bottom:1.25em}.prose ol ol,.prose ol ul,.prose ul ol,.prose ul ul{margin-top:.75em;margin-bottom:.75em}.prose h2+*,.prose h3+*,.prose h4+*,.prose hr+*{margin-top:0}.prose thead th:first-child{padding-left:0}.prose thead th:last-child{padding-right:0}.prose tbody td:first-child{padding-left:0}.prose tbody td:last-child{padding-right:0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose kbd{background-color:#e4e4e7;padding:.1rem .4rem;border-radius:.25rem;font-size:.9rem;font-weight:600}.icon svg{height:1em;width:1em}.prose .heading-anchor{position:absolute;top:0;text-decoration:none;opacity:0;width:1.1em;left:-1.1em}.prose .heading-anchor:hover{background-color:initial;--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity));text-decoration:underline}.prose .heading-anchor:focus,.prose .heading-anchor:hover,.prose h2:hover>.heading-anchor,.prose h3:hover>.heading-anchor,.prose h4:hover>.heading-anchor{opacity:1}.no-prose>p{margin-top:0}.no-prose>p:last-child{margin-bottom:0}.prose .chroma{border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(250,250,250,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(63,63,70,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.prose .chroma{--tw-bg-opacity:1;background-color:rgba(63,63,70,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(228,228,231,var(--tw-text-opacity))}}.chroma .lntd,.chroma .lntd pre{margin:0;border-style:none;padding:0;vertical-align:top}.chroma .lntable{display:block;width:auto;overflow:hidden;padding:.75rem 1rem;font-size:1rem;line-height:1.5rem;border-spacing:0}.chroma .hl{margin-left:-1rem;margin-right:-1rem;display:block;width:auto;--tw-bg-opacity:1;background-color:rgba(237,233,254,var(--tw-bg-opacity));padding-left:1rem;padding-right:1rem}@media (prefers-color-scheme:dark){.chroma .hl{--tw-bg-opacity:1;background-color:rgba(76,29,149,var(--tw-bg-opacity))}}.chroma .lntd .hl{margin:0;padding:0}.chroma .lnt{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .lnt{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}}.chroma .lnt{margin-right:.4em;padding:0 .4em}.chroma .ln{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ln{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}}.chroma .ln{margin-right:.4em;padding:0 .4em}.chroma .k{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .k{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kc{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .kd{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kd{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kn{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kn{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kp{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kp{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kr{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kr{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kt{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kt{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .n{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .n{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .na{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .na{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .nb{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nb{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .bp{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .bp{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .nc{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nc{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .no{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .no{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .nd{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nd{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .ni{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ni{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .ne{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ne{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .nf{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nf{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .fm{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .fm{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .nl{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nl{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .nn{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nn{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .nx{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nx{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .py{color:#cebc3a}.chroma .nt{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nt{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .nv{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nv{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .vc{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vc{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vg{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .vi{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vi{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .vm{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vm{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .l{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .l{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .ld{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ld{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .s{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .s{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sa{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sa{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sb{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sb{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sc{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sc{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .dl{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .dl{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sd{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sd{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .s2{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .s2{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .se{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .sh{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sh{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .si{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .si{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sx{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sx{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sr{font-weight:600;--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sr{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .s1{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .s1{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ss{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .m{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .m{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mb{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mb{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mf{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mf{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mh{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mh{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mi{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mi{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .il{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .il{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mo{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mo{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .o{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ow{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}}.chroma .c{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .c{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ch{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cm{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cm{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .c1{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .c1{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cs{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cs{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cp{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cp{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cpf{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}.chroma .gi{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .gi{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .go{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .go{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .gp{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .gp{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .gs{font-weight:600}.chroma .gt,.chroma .gu{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}.chroma .gl{text-decoration:underline}.relative{position:relative}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.my-3{margin-top:.75rem}.mb-3,.my-3{margin-bottom:.75rem}.mt-8{margin-top:2rem}.mb-12{margin-bottom:3rem}.mt-12{margin-top:3rem}.mt-0{margin-top:0}.ml-2{margin-left:.5rem}.mb-1{margin-bottom:.25rem}.mt-6{margin-top:1.5rem}.ml-1{margin-left:.25rem}.mr-3{margin-right:.75rem}.-mt-1{margin-top:-.25rem}.ml-3{margin-left:.75rem}.\!mt-0{margin-top:0!important}.\!mb-0{margin-bottom:0!important}.mr-4{margin-right:1rem}.mr-2{margin-right:.5rem}.\!mb-9{margin-bottom:2.25rem!important}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.h-screen{height:100vh}.h-24{height:6rem}.w-36{width:9rem}.w-full{width:100%}.w-24{width:6rem}.max-w-full{max-width:100%}.max-w-7xl{max-width:80rem}.max-w-prose{max-width:65ch}.flex-grow{flex-grow:1}.cursor-default{cursor:default}.list-none{list-style-type:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.overflow-hidden{overflow:hidden}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-dotted{border-style:dotted}.border-gray-400{--tw-border-opacity:1;border-color:rgba(161,161,170,var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(167,139,250,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(212,212,216,var(--tw-border-opacity))}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(237,233,254,var(--tw-bg-opacity))}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.px-2{padding-left:.5rem;padding-right:.5rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-8{padding-top:2rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-xs{font-size:.75rem;line-height:1rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-extrabold{font-weight:800}.font-bold{font-weight:700}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-7{line-height:1.75rem}.leading-6{line-height:1.5rem}.text-gray-400{--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(109,40,217,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(39,39,42,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}.first\:mt-8:first-child{margin-top:2rem}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(109,40,217,var(--tw-text-opacity))}.hover\:underline:hover{text-decoration:underline}@media (prefers-color-scheme:dark){.dark\:prose-light{color:#a1a1aa}.dark\:prose-light a{color:#a78bfa}.dark\:prose-light strong{color:#fff}.dark\:prose-light ol>li:before{color:#a1a1aa}.dark\:prose-light ul>li:before{background-color:#52525b}.dark\:prose-light hr{border-color:#e4e4e7}.dark\:prose-light blockquote{color:#e4e4e7;border-left-color:#52525b}.dark\:prose-light h1,.dark\:prose-light h2,.dark\:prose-light h3,.dark\:prose-light h4{color:#fff}.dark\:prose-light figure figcaption{color:#a1a1aa}.dark\:prose-light code{color:#e879f9}.dark\:prose-light a code{color:#fff}.dark\:prose-light pre{color:#e4e4e7;background-color:#3f3f46}.dark\:prose-light pre code{color:#e4e4e7}.dark\:prose-light thead{color:#fff;border-bottom-color:#a1a1aa}.dark\:prose-light tbody tr{border-bottom-color:#52525b}.dark\:prose-light kbd{background-color:#3f3f46;color:#d4d4d8}.dark\:border-primary-600{--tw-border-opacity:1;border-color:rgba(124,58,237,var(--tw-border-opacity))}.dark\:border-gray-600{--tw-border-opacity:1;border-color:rgba(82,82,91,var(--tw-border-opacity))}.dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgba(39,39,42,var(--tw-bg-opacity))}.dark\:bg-primary-900{--tw-bg-opacity:1;background-color:rgba(76,29,149,var(--tw-bg-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.dark\:text-primary-400{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}.dark\:text-gray-300{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}.dark\:text-gray-600{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity))}.dark\:hover\:text-primary-400:hover{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}@media (min-width:640px){.sm\:mr-7{margin-right:1.75rem}.sm\:w-1\/2{width:50%}.sm\:flex-row{flex-direction:row}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:last\:mr-0:last-child{margin-right:0}}@media (min-width:768px){.md\:w-1\/3{width:33.333333%}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media (min-width:1024px){.lg\:w-1\/4{width:25%}.lg\:px-32{padding-left:8rem;padding-right:8rem}}@media (min-width:1280px){.xl\:w-1\/5{width:20%}} \ No newline at end of file +/*! tailwindcss v2.2.7 | MIT License | https://tailwindcss.com*//*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,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}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}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}button{background-color:initial;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{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;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#a1a1aa}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#a1a1aa}input::placeholder,textarea::placeholder{opacity:1;color:#a1a1aa}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(228,228,231,var(--tw-border-opacity))}.prose{color:#3f3f46;max-width:65ch}.prose [class~=lead]{color:#52525b;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose a{color:#6d28d9;text-decoration:underline;font-weight:500}.prose a:hover{background-color:#7c3aed;color:#fff;text-decoration:none}.prose strong{color:#18181b;font-weight:600}.prose ol[type=A]{--list-counter-style:upper-alpha}.prose ol[type=a]{--list-counter-style:lower-alpha}.prose ol[type=A s]{--list-counter-style:upper-alpha}.prose ol[type=a s]{--list-counter-style:lower-alpha}.prose ol[type=I]{--list-counter-style:upper-roman}.prose ol[type=i]{--list-counter-style:lower-roman}.prose ol[type=I s]{--list-counter-style:upper-roman}.prose ol[type=i s]{--list-counter-style:lower-roman}.prose ol[type="1"]{--list-counter-style:decimal}.prose ol>li{position:relative;padding-left:1.75em}.prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#71717a;left:0}.prose ul>li{position:relative;padding-left:1.75em}.prose ul>li:before{content:"";position:absolute;background-color:#d4d4d8;border-radius:50%;width:.375em;height:.375em;top:.6875em;left:.25em}.prose hr{border-color:#e4e4e7;border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose blockquote{font-weight:500;font-style:italic;color:#18181b;border-left-width:.25rem;border-left-color:#e4e4e7;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose blockquote p:first-of-type:before{content:open-quote}.prose blockquote p:last-of-type:after{content:close-quote}.prose h1{color:#18181b;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{color:#18181b;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333;position:relative}.prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h3,.prose h4{color:#18181b;font-weight:600;position:relative}.prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose figure figcaption{color:#71717a;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose code{color:#a21caf;font-weight:600;font-size:.875em}.prose code:after,.prose code:before{content:"`"}.prose a code{color:#18181b}.prose pre{color:#e4e4e7;background-color:#fafafa;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose pre code{background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:400;color:#3f3f46;font-size:inherit;font-family:inherit;line-height:inherit}.prose pre code:after,.prose pre code:before{content:none}.prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose thead{color:#18181b;font-weight:600;border-bottom-width:1px;border-bottom-color:#d4d4d8}.prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose tbody tr{border-bottom-width:1px;border-bottom-color:#e4e4e7}.prose tbody tr:last-child{border-bottom-width:0}.prose tbody td{vertical-align:top;padding:.5714286em}.prose{font-size:1rem;line-height:1.75}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose figure,.prose img,.prose video{margin-top:2em;margin-bottom:2em}.prose figure>*{margin-top:0;margin-bottom:0}.prose h2 code{font-size:.875em}.prose h3 code{font-size:.9em}.prose ol,.prose ul{margin-top:1.25em;margin-bottom:1.25em}.prose li{margin-top:.5em;margin-bottom:.5em}.prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.prose>ul>li>:first-child{margin-top:1.25em}.prose>ul>li>:last-child{margin-bottom:1.25em}.prose>ol>li>:first-child{margin-top:1.25em}.prose>ol>li>:last-child{margin-bottom:1.25em}.prose ol ol,.prose ol ul,.prose ul ol,.prose ul ul{margin-top:.75em;margin-bottom:.75em}.prose h2+*,.prose h3+*,.prose h4+*,.prose hr+*{margin-top:0}.prose thead th:first-child{padding-left:0}.prose thead th:last-child{padding-right:0}.prose tbody td:first-child{padding-left:0}.prose tbody td:last-child{padding-right:0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose kbd{background-color:#e4e4e7;padding:.1rem .4rem;border-radius:.25rem;font-size:.9rem;font-weight:600}.icon svg{height:1em;width:1em}.prose .heading-anchor{position:absolute;top:0;text-decoration:none;opacity:0;width:1.1em;left:-1.1em}.prose .heading-anchor:hover{background-color:initial;--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity));text-decoration:underline}.prose .heading-anchor:focus,.prose .heading-anchor:hover,.prose h2:hover>.heading-anchor,.prose h3:hover>.heading-anchor,.prose h4:hover>.heading-anchor{opacity:1}.no-prose>p{margin-top:0}.no-prose>p:last-child{margin-bottom:0}.prose .chroma{border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(250,250,250,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(63,63,70,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.prose .chroma{--tw-bg-opacity:1;background-color:rgba(63,63,70,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(228,228,231,var(--tw-text-opacity))}}.chroma .lntd,.chroma .lntd pre{margin:0;border-style:none;padding:0;vertical-align:top}.chroma .lntable{display:block;width:auto;overflow:hidden;padding:.75rem 1rem;font-size:1rem;line-height:1.5rem;border-spacing:0}.chroma .hl{margin-left:-1rem;margin-right:-1rem;display:block;width:auto;--tw-bg-opacity:1;background-color:rgba(237,233,254,var(--tw-bg-opacity));padding-left:1rem;padding-right:1rem}@media (prefers-color-scheme:dark){.chroma .hl{--tw-bg-opacity:1;background-color:rgba(76,29,149,var(--tw-bg-opacity))}}.chroma .lntd .hl{margin:0;padding:0}.chroma .lnt{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .lnt{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}}.chroma .lnt{margin-right:.4em;padding:0 .4em}.chroma .ln{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ln{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}}.chroma .ln{margin-right:.4em;padding:0 .4em}.chroma .k{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .k{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kc{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .kd{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kd{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kn{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kn{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kp{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kp{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kr{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kr{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .kt{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .kt{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .n{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .n{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .na{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .na{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .nb{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nb{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .bp{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .bp{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .nc{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nc{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .no{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .no{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .nd{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nd{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .ni{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ni{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .ne{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ne{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .nf{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nf{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .fm{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .fm{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .nl{--tw-text-opacity:1;color:rgba(112,26,117,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nl{--tw-text-opacity:1;color:rgba(245,208,254,var(--tw-text-opacity))}}.chroma .nn{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nn{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .nx{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nx{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .py{color:#cebc3a}.chroma .nt{--tw-text-opacity:1;color:rgba(134,25,143,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nt{--tw-text-opacity:1;color:rgba(240,171,252,var(--tw-text-opacity))}}.chroma .nv{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .nv{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .vc{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vc{--tw-text-opacity:1;color:rgba(196,181,253,var(--tw-text-opacity))}}.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vg{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .vi{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vi{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .vm{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .vm{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .l{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .l{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .ld{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ld{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .s{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .s{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sa{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sa{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sb{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sb{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sc{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sc{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .dl{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .dl{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sd{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sd{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .s2{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .s2{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .se{--tw-text-opacity:1;color:rgba(217,70,239,var(--tw-text-opacity))}}.chroma .sh{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sh{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .si{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .si{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sx{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sx{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .sr{font-weight:600;--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .sr{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .s1{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .s1{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ss{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .m{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .m{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mb{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mb{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mf{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mf{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mh{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mh{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mi{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mi{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .il{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .il{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .mo{--tw-text-opacity:1;color:rgba(232,121,249,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .mo{--tw-text-opacity:1;color:rgba(192,38,211,var(--tw-text-opacity))}}.chroma .o{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ow{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}}.chroma .c{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .c{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .ch{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cm{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cm{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .c1{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .c1{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cs{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cs{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cp{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cp{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .cpf{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}.chroma .gi{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .gi{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .go{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .go{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .gp{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.chroma .gp{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}.chroma .gs{font-weight:600}.chroma .gt,.chroma .gu{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}.chroma .gl{text-decoration:underline}.relative{position:relative}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.my-3{margin-top:.75rem}.mb-3,.my-3{margin-bottom:.75rem}.mt-8{margin-top:2rem}.mb-12{margin-bottom:3rem}.mt-12{margin-top:3rem}.mt-0{margin-top:0}.ml-2{margin-left:.5rem}.mb-1{margin-bottom:.25rem}.mt-6{margin-top:1.5rem}.ml-1{margin-left:.25rem}.mr-3{margin-right:.75rem}.-mt-1{margin-top:-.25rem}.ml-3{margin-left:.75rem}.\!mt-0{margin-top:0!important}.\!mb-0{margin-bottom:0!important}.mr-4{margin-right:1rem}.\!mb-9{margin-bottom:2.25rem!important}.mb-8{margin-bottom:2rem}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.h-screen{height:100vh}.h-24{height:6rem}.h-full{height:100%}.h-36{height:9rem}.w-36{width:9rem}.w-full{width:100%}.w-24{width:6rem}.max-w-7xl{max-width:80rem}.max-w-prose{max-width:65ch}.max-w-full{max-width:100%}.flex-grow{flex-grow:1}.cursor-default{cursor:default}.list-none{list-style-type:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.overflow-hidden{overflow:hidden}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-dotted{border-style:dotted}.border-gray-400{--tw-border-opacity:1;border-color:rgba(161,161,170,var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(167,139,250,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(212,212,216,var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(237,233,254,var(--tw-bg-opacity))}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.px-2{padding-left:.5rem;padding-right:.5rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-8{padding-top:2rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-xs{font-size:.75rem;line-height:1rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-extrabold{font-weight:800}.font-bold{font-weight:700}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-7{line-height:1.75rem}.leading-6{line-height:1.5rem}.text-gray-400{--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(109,40,217,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(39,39,42,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}.first\:mt-8:first-child{margin-top:2rem}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(109,40,217,var(--tw-text-opacity))}.hover\:underline:hover{text-decoration:underline}@media (prefers-color-scheme:dark){.dark\:prose-light{color:#a1a1aa}.dark\:prose-light a{color:#a78bfa}.dark\:prose-light strong{color:#fff}.dark\:prose-light ol>li:before{color:#a1a1aa}.dark\:prose-light ul>li:before{background-color:#52525b}.dark\:prose-light hr{border-color:#e4e4e7}.dark\:prose-light blockquote{color:#e4e4e7;border-left-color:#52525b}.dark\:prose-light h1,.dark\:prose-light h2,.dark\:prose-light h3,.dark\:prose-light h4{color:#fff}.dark\:prose-light figure figcaption{color:#a1a1aa}.dark\:prose-light code{color:#e879f9}.dark\:prose-light a code{color:#fff}.dark\:prose-light pre{color:#e4e4e7;background-color:#3f3f46}.dark\:prose-light pre code{color:#e4e4e7}.dark\:prose-light thead{color:#fff;border-bottom-color:#a1a1aa}.dark\:prose-light tbody tr{border-bottom-color:#52525b}.dark\:prose-light kbd{background-color:#3f3f46;color:#d4d4d8}.dark\:border-primary-600{--tw-border-opacity:1;border-color:rgba(124,58,237,var(--tw-border-opacity))}.dark\:border-gray-600{--tw-border-opacity:1;border-color:rgba(82,82,91,var(--tw-border-opacity))}.dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgba(39,39,42,var(--tw-bg-opacity))}.dark\:bg-primary-900{--tw-bg-opacity:1;background-color:rgba(76,29,149,var(--tw-bg-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.dark\:text-primary-400{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}.dark\:text-gray-300{--tw-text-opacity:1;color:rgba(212,212,216,var(--tw-text-opacity))}.dark\:text-gray-600{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity))}.dark\:hover\:text-primary-400:hover{--tw-text-opacity:1;color:rgba(167,139,250,var(--tw-text-opacity))}}@media (min-width:640px){.sm\:mr-7{margin-right:1.75rem}.sm\:w-1\/2{width:50%}.sm\:flex-row{flex-direction:row}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:last\:mr-0:last-child{margin-right:0}}@media (min-width:768px){.md\:w-1\/3{width:33.333333%}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media (min-width:1024px){.lg\:w-1\/4{width:25%}.lg\:px-32{padding-left:8rem;padding-right:8rem}}@media (min-width:1280px){.xl\:w-1\/5{width:20%}} \ No newline at end of file