From 6f98c3646b49e7c80fdc30b8d6e7816788650c3b Mon Sep 17 00:00:00 2001 From: Ivan Schaller Date: Mon, 19 Feb 2024 18:32:24 +0100 Subject: [PATCH] update site Signed-off-by: Ivan Schaller --- .gitignore | 6 +- config.toml | 138 +++++++++--------- content/about/index.md | 60 +++++--- content/projects/asdf-just.md | 3 +- content/projects/docker-baseimages.md | 24 +-- content/projects/flox.md | 25 ---- content/projects/gohfs.md | 17 --- content/projects/ivn-sh.md | 1 + content/projects/letsencrypt_hook.md | 15 -- content/projects/manga-dlp.md | 25 ++-- content/projects/octodns-netbox-dns.md | 14 ++ content/projects/powerdns-arm64.md | 14 ++ content/projects/releasenote-gen.md | 14 ++ content/projects/small-projects.md | 43 ++++++ renovate.json | 6 +- ...s_de1a7f5f1c8c46959803c429bb697ff0.content | 3 - ...scss_de1a7f5f1c8c46959803c429bb697ff0.json | 1 - 17 files changed, 223 insertions(+), 186 deletions(-) delete mode 100644 content/projects/flox.md delete mode 100644 content/projects/gohfs.md delete mode 100644 content/projects/letsencrypt_hook.md create mode 100644 content/projects/octodns-netbox-dns.md create mode 100644 content/projects/powerdns-arm64.md create mode 100644 content/projects/releasenote-gen.md create mode 100644 content/projects/small-projects.md delete mode 100644 resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.content delete mode 100644 resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.json diff --git a/.gitignore b/.gitignore index 9037357..232d68d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,11 +3,11 @@ ### Hugo template # Generated files by hugo -/public/ -/resources/_gen/ +public/ +resources/_gen/ # Executable may be added to repository hugo.exe hugo.darwin hugo.linux - +*.lock diff --git a/config.toml b/config.toml index 5e996b9..d4d5ed6 100644 --- a/config.toml +++ b/config.toml @@ -1,8 +1,8 @@ -baseurl = "https://ivn.sh" -title = "ivn.sh - Ivan Schaller" -languageCode = "en-us" -paginate = 10 -timeZone = "Europe/Zurich" +baseurl = "https://ivn.sh" +title = "ivn.sh - Ivan Schaller" +languageCode = "en-us" +paginate = 10 +timeZone = "Europe/Zurich" archetypeDir = "archetypes" contentDir = "content" @@ -15,101 +15,99 @@ buildFuture = false buildExpired = false canonifyURLs = true -enableRobotsTXT = true -enableGitInfo = false -enableEmoji = true +enableRobotsTXT = true +enableGitInfo = false +enableEmoji = true enableMissingTranslationPlaceholders = false -disableRSS = true -disableSitemap = false -disable404 = false -disableHugoGeneratorInject = false +disableRSS = true +disableSitemap = false +disable404 = false +disableHugoGeneratorInject = false disableKinds = ["taxonomy", "term", "taxonomyTerm"] copyright = 'CC BY-NC 4.0' - [taxonomies] - category = "categories" - tag = "tags" +category = "categories" +tag = "tags" [author] - name = "Ivan Schaller" +name = "Ivan Schaller" [params] - dateform = "Jan 2, 2006" - dateformShort = "Jan 2" - dateformNum = "2006-01-02" - dateformNumTime = "2006-01-02 15:04" +dateform = "Jan 2, 2006" +dateformShort = "Jan 2" +dateformNum = "2006-01-02" +dateformNumTime = "2006-01-02 15:04" - # Subtitle for home - homeTitle = "Ivan Schaller" - homeSubtitle = "DevOps Engineer | Network Engineer" - homeLinktext = "Find or contact me on other platforms" +# Subtitle for home +homeTitle = "Ivan Schaller" +homeSubtitle = "DevOps Engineer | Network Engineer" +homeLinktext = "Find or contact me on other platforms" - # Set a background for the homepage - # backgroundImage = "assets/images/background.jpg" +# Set a background for the homepage +# backgroundImage = "assets/images/background.jpg" - # With this option on, the page user is able to set the scheme he wants. - enableThemeToggle = true +# With this option on, the page user is able to set the scheme he wants. +enableThemeToggle = true - # Set disableReadOtherPosts to true in order to hide the links to other posts. - disableReadOtherPosts = true +# Set disableReadOtherPosts to true in order to hide the links to other posts. +disableReadOtherPosts = true - # Enable sharing buttons, if you like - enableSharingButtons = false +# Enable sharing buttons, if you like +enableSharingButtons = false - enableGlobalLanguageMenu = false +enableGlobalLanguageMenu = false - # Metadata mostly used in document's head - description = "Personal site of Ivan Schaller" - keywords = "homepage, blog" - images = [""] +# Metadata mostly used in document's head +description = "Personal site of Ivan Schaller" +keywords = "homepage, blog" +images = [""] - [params.logo] - logoMark = ">" - logoText = "ivn.sh - Ivan Schaller" - logoHomeLink = "/" +[params.logo] +logoMark = ">" +logoText = "ivn.sh - Ivan Schaller" +logoHomeLink = "/" - [params.footer] - trademark = true - rss = false - copyright = true - author = true +[params.footer] +trademark = true +rss = false +copyright = true +author = true - topText = [] +topText = [] # Menu entrys [[menu.main]] - identifier = "about" - name = "About" - url = "/about" - weight = 1 - [menu.main.params] - class = 'bold' +identifier = "about" +name = "About" +url = "/about" +weight = 1 +[menu.main.params] +class = 'bold' [[menu.main]] - identifier = "projects" - name = "Projects" - url = "/projects" - weight = 2 +identifier = "projects" +name = "Projects" +url = "/projects" +weight = 2 [[menu.main]] - identifier = "contact" - name = "Contact" - url = "/contact" - weight = 3 +identifier = "contact" +name = "Contact" +url = "/contact" +weight = 3 [[menu.main]] - identifier = "links" - name = "Links" - url = "https://links.ivn.sh/" - weight = 4 - +identifier = "links" +name = "Links" +url = "https://links.ivn.sh/" +weight = 4 [[params.social]] - name = "email" - url = "mailto:ivan@schaller.sh" +name = "email" +url = "mailto:ivan@schaller.sh" [[params.social]] - name = "github" - url = "https://github.com/olofvndrhr" \ No newline at end of file +name = "github" +url = "https://github.com/olofvndrhr" diff --git a/content/about/index.md b/content/about/index.md index 5e3a200..c5da1b4 100644 --- a/content/about/index.md +++ b/content/about/index.md @@ -14,45 +14,59 @@ My work is a combination of Operation in Networking and Development in Automatio --- -My main task is the operation of layer 3 site to site vpn's for different customers. It is a managed service, so reconfiguration, -troubleshooting or other related tasks are my daily business. The services heavily uses BGP to propagate all the networks from the different sites to each other, and vrf's to separate different vpn's on the same device. +The main task in our team is the operation of a bgp-mpls core for businesses across switzerland and a few over the top services for it. -I work mostly with Cisco networking equipment, and from configuration to diagnostics I use about every aspect of it. +I work mostly with cisco and juniper networking equipment, and from configuration to diagnostics I use about every aspect of it. -In the development area, I work with automation of networking tasks, administrative tasks and "small" internal application development. +On the development side, I work with the automation of networking tasks and building "small" internal applications. --- -### My skills: (`Rated from 1 to 10`) +### My (subjective) skills: #### Languages -* `10` - German -* `7` - English -* `3` - French +- German + ![](https://geps.dev/progress/100) + +- English + ![](https://geps.dev/progress/85) #### Networking skills -* `8` - Routing & Switching -* `7` - Fiber/xDSL technologies -* `7` - Cisco IOS-X(E/R) -* `7` - Troubleshooting -* `6` - BGP +- Routing & Switching + ![](https://geps.dev/progress/85) -#### Other skills +- Cisco IOS-X(E/R) + ![](https://geps.dev/progress/80) -* `8` - Linux (various areas) -* `7` - Docker -* `6` - VMware vSphere Suite -* `6` - CI/CD (Drone, Jenkins, Woodpecker) -* `6` - Git (GitHub, Gitea, Bitbucket) +- Hardware knowledge + ![](https://geps.dev/progress/75) + +- Fiber technologies + ![](https://geps.dev/progress/70) #### Programming and scripting skills: -* `8` - Shell/Bash -* `6` - Python3 -* `3` - JavaScript -* `2` - PowerShell +- Python3 + ![](https://geps.dev/progress/80) + +- Shell/Bash + ![](https://geps.dev/progress/80) + +- Vanilla JavaScript + ![](https://geps.dev/progress/40) + +#### Other skills + +- Linux (various areas) + ![](https://geps.dev/progress/80) + +- Docker/Container + ![](https://geps.dev/progress/75) + +- Git + CI/CD + ![](https://geps.dev/progress/60) --- diff --git a/content/projects/asdf-just.md b/content/projects/asdf-just.md index 177f600..c0aa301 100644 --- a/content/projects/asdf-just.md +++ b/content/projects/asdf-just.md @@ -17,6 +17,7 @@ It lets you install multiple versions of the same tool at once and change the us I also needed the tool [just](https://github.com/casey/just), which is like [make](https://www.gnu.org/software/make/), but more for automation and less for compiling. -But as the current plugin for just was not working, i wrote my own one and created a [pull-request](https://github.com/asdf-vm/asdf-plugins/pull/629) for the official plugin +But as the current plugin for `just` was not working, i wrote my own one and created a [pull-request](https://github.com/asdf-vm/asdf-plugins/pull/629) in the official plugin repository. repository of asdf. + The [PR](https://github.com/asdf-vm/asdf-plugins/pull/629) was quickly merged, and now it is an official asdf plugin. diff --git a/content/projects/docker-baseimages.md b/content/projects/docker-baseimages.md index e3c6d4e..0d9ca87 100644 --- a/content/projects/docker-baseimages.md +++ b/content/projects/docker-baseimages.md @@ -7,26 +7,26 @@ type = ["default"] --- -## Docker baseimages for app deployment +## Docker base-mages for container deployments -#### https://github.com/olofvndrhr/docker-baseimages +> the code for this project is hosted on my private gitea instance This is a relatively small project. -I thought, that if I deploy my apps with docker, then I should also create the base container images for it. -So I created a normal and slim version. -Both of them feature the [s6 supervisor](https://github.com/just-containers/s6-overlay) and cron. -The normal version also has some commonly used tools bundled with it. +As i deploy quite a few containers myself, some of them eventually have be customized. +For this use case i created my own base-image, to have a common starting point. +The image uses the [s6 supervisor](https://github.com/just-containers/s6-overlay) and already has cron installed. +It also has some commonly used tools bundled with it. So a perfect image for my use cases. -S6 is really practical, because you can map the UID and GID of every service you run in your container. -Also, the services are always supervised, so they will restart if they fail. +The S6 supervisor is also really practical, because you can map the UID and GID of every service you run in your container. +And the services are always supervised, so they will restart if they fail. -Later I also added a base version without the [s6 supervisor](https://github.com/just-containers/s6-overlay) -for use cases which don't require supervision of the application. +Later i created some more variants of the image, one without `s6`, one with `nginx` preinstalled and one with `nginx+php`. + +> `compose.yml` snippet to map the UID and GID for the default user `abc` in a docker-compose file -> Snippet to map the UID and GID for the default user `abc` in a docker-compose file ```yml - environment: +environment: - PUID= - PGID= ``` diff --git a/content/projects/flox.md b/content/projects/flox.md deleted file mode 100644 index 63b6d09..0000000 --- a/content/projects/flox.md +++ /dev/null @@ -1,25 +0,0 @@ -+++ -title = "flox-dockerized" -description = "Dockerization of flox" -date = "2022-04-16" -type = ["default"] -+++ - ---- - -## Dockerization of flox - -#### https://github.com/olofvndrhr/flox-dockerized - -Flox is a personal watchlist, written in php. - -Before I created my version, I used a docker container of flox from another user (I can't remember which one). - -But this version did not have a supervisor installed, so I created my own docker container for it with supervision. - -The baseimage for the flox container is the [debian-s6](https://github.com/olofvndrhr/docker-baseimages) image from myself. -It includes everything needed. - -I also built it for arm64 and amd64, so it can even run on raspberry pi's or other arm processors. - -> The original repository: [devfake/flox](https://github.com/olofvndrhr/docker-baseimages) diff --git a/content/projects/gohfs.md b/content/projects/gohfs.md deleted file mode 100644 index cf9f5ac..0000000 --- a/content/projects/gohfs.md +++ /dev/null @@ -1,17 +0,0 @@ -+++ -title = "gohfs - docker" -description = "Dockerization of gohfs" -date = "2021-06-07" -type = ["default"] -+++ - ---- - -## Dockerization of gohfs - -#### https://github.com/olofvndrhr/gohfs - -To be deployed in my environment I needed this application in a containerized format. -But the original developer did not have a container for it yet. -So I created one with the [s6 supervisor](https://github.com/just-containers/s6-overlay) for easy user mapping and failure detection. -The pull request with the changes was accepted and can also be viewed at the [original repository](https://github.com/finzzz/gohfs). diff --git a/content/projects/ivn-sh.md b/content/projects/ivn-sh.md index 5842212..321ddfa 100644 --- a/content/projects/ivn-sh.md +++ b/content/projects/ivn-sh.md @@ -18,4 +18,5 @@ It was relatively simple to set up and get working. For the deployment, I went with [cloudflare pages](https://developers.cloudflare.com/pages/) for "hosting" and [web analytics](https://developers.cloudflare.com/analytics/web-analytics) for the analytics part. + I choose this option because I already manage all my domains via cloudflare, and so everything is on one platform for simpler management. diff --git a/content/projects/letsencrypt_hook.md b/content/projects/letsencrypt_hook.md deleted file mode 100644 index 5c4fd97..0000000 --- a/content/projects/letsencrypt_hook.md +++ /dev/null @@ -1,15 +0,0 @@ -+++ -title = "Lets Encrypt Bash hook - rewrite" -description = "Improvements to a Lets Encrypt bash script" -date = "2021-11-08" -type = ["default"] -+++ - ---- - -## Improvements to a Lets Encrypt bash script - -#### https://github.com/olofvndrhr/dehydrated-hook-cloudflare - -I changed the script to fit my needs. -In the process I removed one package dependency and increased readability of the script. diff --git a/content/projects/manga-dlp.md b/content/projects/manga-dlp.md index b08a162..b58aaae 100644 --- a/content/projects/manga-dlp.md +++ b/content/projects/manga-dlp.md @@ -7,7 +7,7 @@ type = ["default"] --- -## Manga download script written in python3 +## Manga downloader written in python3 #### https://github.com/olofvndrhr/manga-dlp @@ -17,18 +17,19 @@ which didn't include multiple mangas, or all chapters at the same time. So I took inspiration from mangadex-dl and wrote a script myself. It includes all my needs and is extendable for other sites too. -I also created a docker container for it, built on my own base images. +I also created a docker container for it, built on my own base-image. -> More infos are available in the [README.md](https://github.com/olofvndrhr/manga-dlp/blob/master/README.md) -> or for [docker](https://github.com/olofvndrhr/manga-dlp/blob/master/docker/README.md) +> More infos are available on the official docs: https://manga-dlp.ivn.sh/ **Feature summary:** -* Multiple mangas via a file with links -* Ability to download all chapters available -* Save as zip, cbz, cbr, pdf or folder -* Add volume information -* Select language -* [Docker image](https://hub.docker.com/repository/docker/olofvndrhr/manga-dlp) -* [PyPi package](https://pypi.org/project/manga-dlp/) -* etc. +- Multiple mangas via a file with links +- Ability to download all chapters available +- Save as zip, cbz, cbr, pdf or folder +- Add metadata via the [comicinfo](https://anansi-project.github.io/docs/comicinfo/schemas/v2.0) format +- Multi-language support +- Volume support +- Custom event hooks +- [Docker image](https://hub.docker.com/repository/docker/olofvndrhr/manga-dlp) +- [PyPi package](https://pypi.org/project/manga-dlp/) +- etc. diff --git a/content/projects/octodns-netbox-dns.md b/content/projects/octodns-netbox-dns.md new file mode 100644 index 0000000..8e61891 --- /dev/null +++ b/content/projects/octodns-netbox-dns.md @@ -0,0 +1,14 @@ ++++ +title = "octodns-netbox-dns" +description = "netbox-plugin-dns source for octodns" +date = "2024-01-01" +type = ["default"] ++++ + +--- + +## netbox-plugin-dns source for octodns + +#### https://github.com/olofvndrhr/octodns-netbox-dns + +todo diff --git a/content/projects/powerdns-arm64.md b/content/projects/powerdns-arm64.md new file mode 100644 index 0000000..82c2b9a --- /dev/null +++ b/content/projects/powerdns-arm64.md @@ -0,0 +1,14 @@ ++++ +title = "powerdns for arm64" +description = "powerdns containers for arm64" +date = "2024-01-01" +type = ["default"] ++++ + +--- + +## powerdns containers for arm64 + +#### https://github.com/olofvndrhr/docker-pdns + +todo diff --git a/content/projects/releasenote-gen.md b/content/projects/releasenote-gen.md new file mode 100644 index 0000000..8d1d145 --- /dev/null +++ b/content/projects/releasenote-gen.md @@ -0,0 +1,14 @@ ++++ +title = "releasenote-gen" +description = "release note generator action" +date = "2024-01-01" +type = ["default"] ++++ + +--- + +## release note generator for github actions + +#### https://github.com/olofvndrhr/releasenote-gen + +todo diff --git a/content/projects/small-projects.md b/content/projects/small-projects.md new file mode 100644 index 0000000..c1f20a9 --- /dev/null +++ b/content/projects/small-projects.md @@ -0,0 +1,43 @@ ++++ +title = "small projects" +description = "list of a few small projects" +date = "2024-01-01" +type = ["default"] ++++ + +--- + +## Dockerization of gohfs + +#### https://github.com/olofvndrhr/gohfs + +To be deployed in my environment I needed this application in a containerized format. +But the original developer did not have a container for it yet. + +So I created one with the [s6 supervisor](https://github.com/just-containers/s6-overlay) for easy user mapping and failure detection. + +The pull request with the changes was accepted and can also be viewed at the [original repository](https://github.com/finzzz/gohfs). + +## Dockerization of flox + +#### https://github.com/olofvndrhr/flox-dockerized + +Flox is a personal watchlist, written in php. + +Before I created my version, I used a docker container of flox from another user (I can't remember which one). + +But this version did not have a supervisor installed, so I created my own docker container for it with supervision. + +The baseimage for the flox container is the [debian-s6](https://github.com/olofvndrhr/docker-baseimages) image from myself. +It includes everything needed. + +I also built it for arm64 and amd64, so it can even run on raspberry pi's or other arm processors. + +> The original repository: [devfake/flox](https://github.com/olofvndrhr/docker-baseimages) + +## Improvements to a Lets Encrypt bash script + +#### https://github.com/olofvndrhr/dehydrated-hook-cloudflare + +I changed the script to fit my needs. +In the process I removed one package dependency and increased readability of the script. diff --git a/renovate.json b/renovate.json index baf71c6..c755b19 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,4 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "local>44net/renovate" - ] + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["local>44net/renovate"] } diff --git a/resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.content b/resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.content deleted file mode 100644 index dee85c9..0000000 --- a/resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.content +++ /dev/null @@ -1,3 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */::-webkit-scrollbar{width:8px;height:8px;background:#212020}::-webkit-scrollbar-thumb{background:#888}::-webkit-scrollbar-thumb:hover{background:#dcdcdc}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-display:auto;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-display:auto;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-display:auto;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}code[class*="language-"],pre[class*="language-"]{color:white;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:1em;text-align:left;text-shadow:0 -.1em .2em black;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"],:not(pre)>code[class*="language-"]{background:#141414}pre[class*="language-"]{border-radius:.5em;border:0.3em solid #545454;box-shadow:1px 1px .5em black inset;margin:.5em 0;overflow:auto;padding:1em}pre[class*="language-"]::-moz-selection{background:#27292a}pre[class*="language-"]::selection{background:#27292a}pre[class*="language-"]::-moz-selection,pre[class*="language-"] ::-moz-selection,code[class*="language-"]::-moz-selection,code[class*="language-"] ::-moz-selection{text-shadow:none;background:rgba(237,237,237,0.15)}pre[class*="language-"]::selection,pre[class*="language-"] ::selection,code[class*="language-"]::selection,code[class*="language-"] ::selection{text-shadow:none;background:rgba(237,237,237,0.15)}:not(pre)>code[class*="language-"]{border-radius:.3em;border:0.13em solid #545454;box-shadow:1px 1px .3em -.1em black inset;padding:.15em .2em .05em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#787878}.token.punctuation{opacity:.7}.token.namespace{opacity:.7}.token.tag,.token.boolean,.token.number,.token.deleted{color:#cf694a}.token.keyword,.token.property,.token.selector,.token.constant,.token.symbol,.token.builtin{color:#f9ee9a}.token.attr-name,.token.attr-value,.token.string,.token.char,.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable,.token.inserted{color:#919e6b}.token.atrule{color:#7386a5}.token.regex,.token.important{color:#e9c163}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}pre[data-line]{padding:1em 0 1em 3em;position:relative}.language-markup .token.tag,.language-markup .token.attr-name,.language-markup .token.punctuation{color:#ad895c}.token{position:relative;z-index:1}.line-highlight{background:rgba(84,84,84,0.25);background:linear-gradient(to right, rgba(84,84,84,0.1) 70%, rgba(84,84,84,0));border-bottom:1px dashed #545454;border-top:1px dashed #545454;left:0;line-height:inherit;margin-top:0.75em;padding:inherit 0;pointer-events:none;position:absolute;right:0;white-space:pre;z-index:0}.line-highlight:before,.line-highlight[data-end]:after{background-color:#8794a6;border-radius:999px;box-shadow:0 1px white;color:#f5f2f0;content:attr(data-start);font:bold 65%/1.5 sans-serif;left:.6em;min-width:1em;padding:0 .5em;position:absolute;text-align:center;text-shadow:none;top:.4em;vertical-align:.3em}.line-highlight[data-end]:after{bottom:.4em;content:attr(data-end);top:auto}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,0.08);background:linear-gradient(to right, rgba(153,122,102,0.1) 70%, rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}pre.linkable-line-numbers[id] span.line-numbers-rows{pointer-events:all}pre.linkable-line-numbers[id] span.line-numbers-rows>span:before{cursor:pointer}pre.linkable-line-numbers[id] span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,0.2)}pre.line-numbers[class*="language-"]{position:relative;padding-left:3.8em;counter-reset:linenumber}pre.line-numbers[class*="language-"]>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar .toolbar-item{display:inline-block}div.code-toolbar>.toolbar a{cursor:pointer}div.code-toolbar>.toolbar button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar a,div.code-toolbar>.toolbar button,div.code-toolbar>.toolbar span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}div.code-toolbar>.toolbar a:hover,div.code-toolbar>.toolbar a:focus,div.code-toolbar>.toolbar button:hover,div.code-toolbar>.toolbar button:focus,div.code-toolbar>.toolbar span:hover,div.code-toolbar>.toolbar span:focus{color:inherit;text-decoration:none}:root{--phoneWidth: (max-width: 684px);--tabletWidth: (max-width: 900px)}@font-face{font-family:'Inter';font-style:normal;font-display:auto;font-weight:400;src:url("../fonts/Inter-Regular.woff2") format("woff2"),url("../fonts/Inter-Regular.woff") format("woff")}@font-face{font-family:'Inter';font-style:italic;font-display:auto;font-weight:400;src:url("../fonts/Inter-Italic.woff2") format("woff2"),url("../fonts/Inter-Italic.woff") format("woff")}@font-face{font-family:'Inter';font-style:normal;font-display:auto;font-weight:600;src:url("../fonts/Inter-Medium.woff2") format("woff2"),url("../fonts/Inter-Medium.woff") format("woff")}@font-face{font-family:'Inter';font-style:italic;font-display:auto;font-weight:600;src:url("../fonts/Inter-MediumItalic.woff2") format("woff2"),url("../fonts/Inter-MediumItalic.woff") format("woff")}@font-face{font-family:'Inter';font-style:normal;font-display:auto;font-weight:800;src:url("../fonts/Inter-Bold.woff2") format("woff2"),url("../fonts/Inter-Bold.woff") format("woff")}@font-face{font-family:'Inter';font-style:italic;font-display:auto;font-weight:800;src:url("../fonts/Inter-BoldItalic.woff2") format("woff2"),url("../fonts/Inter-BoldItalic.woff") format("woff")}.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin-bottom:5px;text-decoration:none;text-align:center;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none;background:#fafafa}@media (prefers-color-scheme: dark){button,.button,a.button{background:#1b1c1d;color:inherit}}@media (prefers-color-scheme: light){button,.button,a.button{background:#fafafa}}[data-theme=dark] button,[data-theme=dark] .button,[data-theme=dark] a.button{background:#1b1c1d;color:#000000}[data-theme=light] button,[data-theme=light] .button,[data-theme=light] a.button{background:#fafafa}button.outline,.button.outline,a.button.outline{background:transparent;box-shadow:none;padding:8px 18px;border-color:#eaeaea}@media (prefers-color-scheme: dark){button.outline,.button.outline,a.button.outline{border-color:#3b3d42;color:inherit}}@media (prefers-color-scheme: light){button.outline,.button.outline,a.button.outline{border-color:#eaeaea}}[data-theme=dark] button.outline,[data-theme=dark] .button.outline,[data-theme=dark] a.button.outline{border-color:#3b3d42;color:inherit}[data-theme=light] button.outline,[data-theme=light] .button.outline,[data-theme=light] a.button.outline{border-color:#eaeaea}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.primary,.button.primary,a.button.primary{box-shadow:0 4px 6px rgba(50,50,93,0.11),0 1px 3px rgba(0,0,0,0.08);background:#fe5186}button.primary:hover,.button.primary:hover,a.button.primary:hover{box-shadow:0 2px 6px rgba(50,50,93,0.21),0 1px 3px rgba(0,0,0,0.08);background:#ffffff}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none;background:#eaeaea}@media (prefers-color-scheme: dark){.code-toolbar .toolbar-item a{background:#3b3d42;color:inherit}}@media (prefers-color-scheme: light){.code-toolbar .toolbar-item a{background:#eaeaea}}[data-theme=dark] .code-toolbar .toolbar-item a{background:#3b3d42;color:inherit}[data-theme=light] .code-toolbar .toolbar-item a{background:#eaeaea}.header{display:flex;align-items:center;justify-content:center;position:relative;padding:20px;background:#fafafa}@media (prefers-color-scheme: dark){.header{background:#1b1c1d}}@media (prefers-color-scheme: light){.header{background:#fafafa}}[data-theme=dark] .header{background:#1b1c1d}[data-theme=light] .header{background:#fafafa}.header__right{display:flex;flex-direction:row;align-items:center}@media (max-width: 684px){.header__right{flex-direction:row-reverse}}.header__inner{display:flex;align-items:center;justify-content:space-between;margin:0 auto;width:760px;max-width:100%}.theme-toggle{display:flex;align-items:center;justify-content:center;line-height:1;cursor:pointer}.theme-toggler{fill:currentColor}.not-selectable{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.logo{display:flex;align-items:center;text-decoration:none;font-weight:bold;font-display:auto;font-family:monospace, monospace}.logo img{height:44px}.logo__mark{margin-right:5px}.logo__text{font-size:1.125rem}.logo__cursor{display:inline-block;width:10px;height:1rem;background:#fe5186;margin-left:5px;border-radius:1px;animation:cursor 1s infinite}@media (prefers-reduced-motion: reduce){.logo__cursor{animation:none}}@keyframes cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}.menu{z-index:9999;background:#fafafa}@media (prefers-color-scheme: dark){.menu{background:#1b1c1d}}@media (prefers-color-scheme: light){.menu{background:#fafafa}}[data-theme=dark] .menu{background:#1b1c1d}[data-theme=light] .menu{background:#fafafa}@media (max-width: 684px){.menu{position:absolute;top:50px;right:0;border:none;margin:0;padding:10px}}.menu__inner{display:flex;align-items:center;justify-content:flex-start;max-width:100%;margin:0 auto;padding:0 15px;font-size:1rem;list-style:none}.menu__inner li{margin:0 12px}@media (max-width: 684px){.menu__inner{flex-direction:column;align-items:flex-start;padding:0}.menu__inner li{margin:0;padding:5px}}.menu-trigger{width:24px;height:24px;fill:currentColor;margin-left:10px;cursor:pointer;display:none}@media (max-width: 684px){.menu-trigger{display:block}}.menu a{display:inline-block;margin-right:15px;text-decoration:none}.menu a:hover{text-decoration:underline;color:#fe5186}.menu a:last-of-type{margin-right:0}.submenu{background:#fafafa}@media (prefers-color-scheme: dark){.submenu{background:#1b1c1d}}@media (prefers-color-scheme: light){.submenu{background:#fafafa}}[data-theme=dark] .submenu{background:#1b1c1d}[data-theme=light] .submenu{background:#fafafa}.submenu ul{list-style-type:none;margin:0;padding:0;overflow:hidden}.submenu li a,.submenu .dropbtn{display:inline-block;text-decoration:none}.submenu li.dropdown{display:inline-block}.submenu .dropdown-content{display:none;position:absolute;background:#1b1c1d}@media (prefers-color-scheme: light){.submenu .dropdown-content{background:#fafafa}}[data-theme=dark] .submenu .dropdown-content{background:#1b1c1d}[data-theme=light] .submenu .dropdown-content{background:#fafafa}.submenu .dropdown-content a{padding:12px 20px;text-decoration:none;display:block;text-align:left}.submenu .dropdown-content a:hover{background:#1b1c1d}@media (prefers-color-scheme: light){.submenu .dropdown-content a:hover{background:#fafafa}}[data-theme=dark] .submenu .dropdown-content a:hover{background:#1b1c1d}[data-theme=light] .submenu .dropdown-content a:hover{background:#fafafa}.submenu .dropdown:hover .dropdown-content{display:block}html{box-sizing:border-box;line-height:1.6;letter-spacing:0.06em;scroll-behavior:smooth}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:Inter, -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", Helvetica, Arial, sans-serif;font-display:auto;font-size:1.2rem;line-height:1.54;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "case", "calt", "zero", "ss01", "locl";-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%;display:flex;min-height:100vh;flex-direction:column;background-color:#fff;color:#222}@media (max-width: 684px){body{font-size:1rem}}@media (prefers-color-scheme: dark){body{background-color:#232425;color:#a9a9b3}}@media (prefers-color-scheme: light){body{background-color:#fff;color:#222}}[data-theme=dark] body{background-color:#232425;color:#a9a9b3}[data-theme=light] body{background-color:#fff;color:#222}h2,h3,h4,h5,h6{display:flex;align-items:center;line-height:1.3}h1{font-size:2.625rem}h2{font-size:1.625rem}h3{font-size:1.375rem}h4{font-size:1.125rem}@media (max-width: 684px){h1{font-size:2rem}h2{font-size:1.4rem}h3{font-size:1.15rem}h4{font-size:1.125rem}}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}img.circle{border-radius:50%;max-width:25%;margin:auto}figure{display:table;max-width:100%;margin:25px 0}figure.left{margin-right:auto}figure.left-floated{margin-right:auto;float:left}figure.left-floated img{margin:20px 20px 20px 0}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure.right-floated{margin-left:auto;float:right}figure.right-floated img{margin:20px 0 20px 20px}figure.rounded img{border-radius:50%}figure figcaption{font-size:14px;margin-top:5px;opacity:0.8}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}em,i,strong{color:black}@media (prefers-color-scheme: dark){em,i,strong{color:white}}@media (prefers-color-scheme: light){em,i,strong{color:black}}[data-theme=dark] em,[data-theme=dark] i,[data-theme=dark] strong{color:white}[data-theme=light] em,[data-theme=light] i,[data-theme=light] strong{color:black}code{font-family:Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;font-display:auto;font-feature-settings:normal;padding:1px 6px;margin:0 2px;border-radius:5px;font-size:0.95rem;background:#eaeaea}@media (prefers-color-scheme: dark){code{background:#3b3d42}}@media (prefers-color-scheme: light){code{background:#eaeaea}}[data-theme=dark] code{background:#3b3d42}[data-theme=light] code{background:#eaeaea}pre{padding:10px 10px 10px 20px;border-radius:8px;font-size:0.95rem;overflow:auto}[data-theme=dark] pre{background-color:#3b3d42}[data-theme=light] pre{background-color:#eaeaea}@media (max-width: 684px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{background:none !important;margin:0;padding:0;font-size:inherit;color:#ccc}@media (prefers-color-scheme: dark){pre code{color:inherit}}@media (prefers-color-scheme: light){pre code{color:#ccc}}[data-theme=dark] pre code{color:inherit}[data-theme=light] pre code{color:#ccc}blockquote{border-left:3px solid #3eb0ef;margin:40px;padding:10px 20px}@media (max-width: 684px){blockquote{margin:10px;padding:10px}}blockquote:before{content:"”";font-family:Georgia, serif;font-display:auto;font-size:3.875rem;position:absolute;left:-40px;top:-20px}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}ul,ol{margin-left:40px;padding:0}@media (max-width: 684px){ul,ol{margin-left:20px}}ol ol{list-style-type:lower-alpha}.container{flex:1 auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.content{display:flex;flex-direction:column;flex:1 auto;align-items:center;justify-content:center;margin:0}@media (max-width: 684px){.content{margin-top:0}}hr{width:100%;border:none;height:1px;background:#dcdcdc}@media (prefers-color-scheme: dark){hr{background:#4e4e57}}@media (prefers-color-scheme: light){hr{background:#dcdcdc}}[data-theme=dark] hr{background:#4e4e57}[data-theme=light] hr{background:#dcdcdc}.hidden{display:none}@media (max-width: 684px){.hide-on-phone{display:none}}@media (max-width: 900px){.hide-on-tablet{display:none}}.screen-reader-text{border:0;clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute !important;width:1px;word-wrap:normal !important}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,0.6);clip:auto !important;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:0.875rem;font-weight:bold;height:auto;width:auto;top:5px;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;z-index:100000}.background-image{background-repeat:no-repeat;background-attachment:fixed;background-size:cover;background-position:center center}.highlight{margin:30px auto}.posts{width:100%;max-width:800px;text-align:left;padding:20px;margin:20px auto}@media (max-width: 900px){.posts{max-width:660px}}.posts:not(:last-of-type){border-bottom:1px solid #dcdcdc}@media (prefers-color-scheme: dark){.posts:not(:last-of-type){border-bottom:1px solid #4e4e57}}@media (prefers-color-scheme: light){.posts:not(:last-of-type){border-bottom:1px solid #dcdcdc}}[data-theme=dark] .posts:not(:last-of-type){border-bottom:1px solid #4e4e57}[data-theme=light] .posts:not(:last-of-type){border-bottom:1px solid #dcdcdc}.posts-group{display:flex;margin-bottom:1.9em;line-height:normal}@media (max-width: 900px){.posts-group{display:block}}.posts-list{flex-grow:1;margin:0;padding:0;list-style:none}.posts .post-title{font-size:1rem;margin:5px 0 5px 0}.posts .post-year{padding-top:6px;margin-right:1.8em;font-size:1.6em;opacity:.6}@media (max-width: 900px){.posts .post-year{margin:-6px 0 4px}}.posts .post-item{border-bottom:1px grey dashed}.posts .post-item a{display:flex;justify-content:space-between;align-items:baseline;padding:12px 0;text-decoration:none}.posts .post-day{flex-shrink:0;margin-left:1em;opacity:.6}.post{width:100%;max-width:800px;text-align:left;padding:20px;margin:20px auto}@media (max-width: 900px){.post{max-width:600px}}.post-date:after{content:'—'}.post-title{font-size:2.625rem;margin:0 0 20px}@media (max-width: 684px){.post-title{font-size:2rem}}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:1rem;opacity:0.5}.post-tags a{text-decoration:none}.post-content{margin-top:30px}.post-cover{border-radius:8px;margin:40px -50px;width:860px;max-width:860px;overflow:hidden}@media (max-width: 900px){.post-cover{margin:20px 0;width:100%}}.post-excerpt{color:grey;font-style:italic}.post-info{margin-top:30px;font-size:0.8rem;line-height:normal;opacity:.6}.post-info p{margin:0.8em 0}.post-info a:hover{border-bottom:1px solid white}.post-info svg{margin-right:0.8em}.post-info .tag{margin-right:0.5em}.post-info .tag::before{content:"#"}.post-info .feather{display:inline-block;vertical-align:-.125em;width:1em;height:1em}.post-audio{display:flex;justify-content:center;align-items:center;padding-top:20px}.post-audio audio{width:90%}.post .flag{border-radius:50%;margin:0 5px}.pagination{margin-top:20px}.pagination__title{display:flex;text-align:center;position:relative;margin:20px 0}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;font-size:0.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:0.1em;z-index:1;background:#fff;color:#999}@media (prefers-color-scheme: dark){.pagination__title-h{background:#232425;color:#b3b3bd}}@media (prefers-color-scheme: light){.pagination__title-h{background:#fff;color:#999}}[data-theme=dark] .pagination__title-h{background:#232425;color:#b3b3bd}[data-theme=light] .pagination__title-h{background:#fff;color:#999}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center}.pagination__buttons a{text-decoration:none;font-weight:bold}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;font-weight:600;border-radius:8px;max-width:40%;padding:0;cursor:pointer;appearance:none;background:#eaeaea}@media (prefers-color-scheme: dark){.button{background:#3b3d42}}@media (prefers-color-scheme: light){.button{background:#eaeaea}}[data-theme=dark] .button{background:#3b3d42}[data-theme=light] .button{background:#eaeaea}.button+.button{margin-left:10px}.button a{display:flex;padding:8px 16px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button.next .button__icon{margin-left:8px}.button.previous .button__icon{margin-right:8px}.footer{padding:40px 20px;flex-grow:0;color:#999}.footer__inner{display:flex;align-items:center;justify-content:center;margin:0 auto;width:760px;max-width:100%}@media (max-width: 900px){.footer__inner{flex-direction:column}}.footer__content{display:flex;flex-direction:row;align-items:center;font-size:1rem;color:#999}@media (max-width: 900px){.footer__content{flex-direction:column;margin-top:10px}}.footer__content>*:not(:last-child)::after{content:"•";padding:0 5px}@media (max-width: 900px){.footer__content>*:not(:last-child)::after{content:"";padding:0}}.footer__content>*:last-child{padding:0 0px}@media (max-width: 900px){.footer__content>*:last-child{padding:0}}.sharing-buttons{display:flex;flex-wrap:wrap;justify-content:space-between}.sharing-buttons .resp-sharing-button__icon,.sharing-buttons .resp-sharing-button__link{display:inline-block}.sharing-buttons .resp-sharing-button__link{text-decoration:none;margin:0.5em}.sharing-buttons .resp-sharing-button{border-radius:5px;transition:25ms ease-out;padding:0.5em 0.75em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.sharing-buttons .resp-sharing-button__icon svg{width:1em;height:1em;margin-right:0.4em;vertical-align:top}.sharing-buttons .resp-sharing-button--small svg{margin:0;vertical-align:middle}.post-content table{border-collapse:collapse;margin:25px auto;font-size:0.9em;min-width:400px;max-width:100%}.post-content table th,.post-content table td{padding:12px 15px;border:1px solid #dcdcdc}@media (prefers-color-scheme: dark){.post-content table th,.post-content table td{border:1px solid #4e4e57}}@media (prefers-color-scheme: light){.post-content table th,.post-content table td{border:1px solid #dcdcdc}}[data-theme=dark] .post-content table th,[data-theme=dark] .post-content table td{border:1px solid #4e4e57}[data-theme=light] .post-content table th,[data-theme=light] .post-content table td{border:1px solid #dcdcdc}.post-content table thead tr{text-align:left;background-color:#dcdcdc;color:#222}@media (prefers-color-scheme: dark){.post-content table thead tr{background-color:#4e4e57;color:#a9a9b3}}@media (prefers-color-scheme: light){.post-content table thead tr{background-color:#dcdcdc;color:#222}}[data-theme=dark] .post-content table thead tr{background-color:#4e4e57;color:#a9a9b3}[data-theme=light] .post-content table thead tr{background-color:#dcdcdc;color:#222}.post-content table tbody tr{border:1px solid #dcdcdc}@media (prefers-color-scheme: dark){.post-content table tbody tr{border:1px solid #4e4e57}}@media (prefers-color-scheme: light){.post-content table tbody tr{border:1px solid #dcdcdc}}[data-theme=dark] .post-content table tbody tr{border:1px solid #4e4e57}[data-theme=light] .post-content table tbody tr{border:1px solid #dcdcdc}.btn-404 svg{vertical-align:middle;display:inline-block;margin-right:5px}.btn-404 a{margin:0 10px}input:focus~label,textarea:focus~label,input:valid~label,textarea:valid~label{font-size:1.2em;color:#999;top:-20px;-webkit-transition:all 0.225s ease;transition:all 0.225s ease}.styled-input{float:left;width:293px;margin:1rem 0;position:relative;border-radius:4px}@media only screen and (max-width: 768px){.styled-input{width:100%}}.styled-input label{color:#999;padding:1.3rem 30px 1rem 30px;position:absolute;top:10px;left:0;-webkit-transition:all 0.25s ease;transition:all 0.25s ease;pointer-events:none}.styled-input.wide{width:650px;max-width:100%}input,textarea{padding:30px;border:0;width:100%;font-size:1.2rem;background-color:#2d2d2d;color:white;border-radius:4px}input:focus,textarea:focus{outline:0}input:focus~span,textarea:focus~span{width:100%;-webkit-transition:all 0.075s ease;transition:all 0.075s ease}textarea{width:100%;min-height:15em}.input-container{width:650px;max-width:100%;margin:20px auto 25px auto}.submit-btn{float:right;padding:7px 35px;border-radius:60px;display:inline-block;background-color:#fe5186;color:white;font-size:18px;cursor:pointer;box-shadow:0 2px 5px 0 rgba(0,0,0,0.06),0 2px 10px 0 rgba(0,0,0,0.07);-webkit-transition:all 300ms ease;transition:all 300ms ease}.submit-btn:hover{transform:translateY(1px);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1),0 1px 1px 0 rgba(0,0,0,0.09)}@media (max-width: 768px){.submit-btn{width:100%;float:none;text-align:center}}input[type=checkbox]+label{color:#ccc;font-style:italic}input[type=checkbox]:checked+label{color:#f00;font-style:normal} - -/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.json b/resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.json deleted file mode 100644 index 561e545..0000000 --- a/resources/_gen/assets/scss/scss/main.scss_de1a7f5f1c8c46959803c429bb697ff0.json +++ /dev/null @@ -1 +0,0 @@ -{"Target":"main.93cf4d574710f584a96437593f790a507f811c0e640d70a8d3c7b09b23ee4b04.css","MediaType":"text/css","Data":{"Integrity":"sha256-k89NV0cQ9YSpZDdZP3kKUH+BHA5kDXCo08ewmyPuSwQ="}} \ No newline at end of file