[data-v-7e292e4e] h2{margin-top:3rem;margin-bottom:2rem}[data-v-7e292e4e] h3{margin-top:2rem;margin-bottom:.75rem}[data-v-7e292e4e] p{margin-top:.75rem;margin-bottom:.75rem}.work-group[data-v-7e292e4e]{margin-bottom:3rem}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#29d transparent transparent #29d;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes share-this-intro{0%{transform:translateY(-3em);opacity:0}80%{transform:translateY(.5em);opacity:1}to{transform:translateY(0)}}.share-this-popover{max-width:8em;pointer-events:none;filter:drop-shadow(0 1px 3px rgba(0,0,0,.35));animation:share-this-intro .3s}.share-this-popover:before{content:"";position:absolute;bottom:100%;left:50%;width:0;height:0;margin:.25em -.5em;border-color:#333 transparent;border-style:solid;border-width:.5em .5em 0}.share-this-popover>ul{pointer-events:auto;list-style:none;padding:0;margin:-.75em 0 0;white-space:nowrap;background:#333;color:#fff;border-radius:.25em;position:absolute;left:50%;transform:translate(-50%,-100%)}.share-this-popover>ul>li{display:inline-block;width:2em;height:2em;line-height:2em;text-align:center}.share-this-popover>ul>li>a{display:inline-block;width:100%;height:100%;color:inherit;box-sizing:border-box;padding:.35em}.share-this-popover>ul>li>a:focus,.share-this-popover>ul>li>a:hover{background:hsla(0,0%,100%,.25)}@media (pointer:coarse){.share-this-popover{font-size:150%}.share-this-popover:before{bottom:auto;top:100%;border-width:0 .5em .5em;margin-top:0}.share-this-popover>ul{top:100%;transform:translateX(-50%);margin:.5em 0 0}}@media (max-width:575px){.share-this-popover{left:0!important;right:0!important;width:auto!important;max-width:none}.share-this-popover:before{bottom:auto;top:100%;border-width:0 .5em .5em;margin-top:0}.share-this-popover>ul{top:100%;transform:translateX(-50%);margin:.5em 0 0;left:0;width:100%;transform:none;border-radius:0;text-align:center}}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;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;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}#app,body,html{margin:0;padding:0;font-weight:400;font-size:12px;font-family:open-sans,sans-serif}#app,a,body,html{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity));text-decoration:none}.header-anchor{text-decoration:none;transition:all .5s}.header-anchor:hover{text-decoration:underline}@media (min-width:768px){#app,body,html{font-size:14px}}@font-face{font-family:fira-code;src:url(/fonts/fira-code/woff2/FiraCode-Bold.woff2) format("woff2"),url(/fonts/fira-code/woff/FiraCode-Bold.woff) format("woff"),url(/fonts/fira-code/ttf/FiraCode-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-variant-ligatures:common-ligatures}@font-face{font-family:fira-code;src:url(/fonts/fira-code/woff2/FiraCode-Light.woff2) format("woff2"),url(/fonts/fira-code/woff/FiraCode-Light.woff) format("woff"),url(/fonts/fira-code/ttf/FiraCode-Light.ttf) format("truetype");font-weight:300;font-style:normal;font-variant-ligatures:common-ligatures}@font-face{font-family:fira-code;src:url(/fonts/fira-code/woff2/FiraCode-Regular.woff2) format("woff2"),url(/fonts/fira-code/woff/FiraCode-Regular.woff) format("woff"),url(/fonts/fira-code/ttf/FiraCode-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-variant-ligatures:common-ligatures}@font-face{font-family:open-sans;src:url(/fonts/open-sans/opensans-bold-webfont.woff2) format("woff2"),url(/fonts/open-sans/opensans-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:open-sans;src:url(/fonts/open-sans/opensans-regular-webfont.woff2) format("woff2"),url(/fonts/open-sans/opensans-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:open-sans;src:url(/fonts/open-sans/opensans-light-webfont.woff2) format("woff2"),url(/fonts/open-sans/opensans-light-webfont.woff) format("woff");font-weight:300;font-style:normal}.page{margin-left:auto;margin-right:auto;padding:1.25rem;min-height:calc(100vh - 2.5rem)}.page .title{margin-bottom:0;font-size:2.25rem;line-height:2.5rem;position:relative;left:-2px}.page .subtitle{margin-top:0;font-size:1rem;line-height:1.5rem;font-weight:300;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.page .content{font-size:1.5rem;line-height:2rem;font-weight:300;line-height:1.5}.page .content p a span{display:inline-block!important}.page.stacked{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.page.stacked .links{margin-top:.75rem;margin-bottom:.75rem}.page.post a{text-decoration:underline}.page.post>.title{margin-top:18px;left:-4px;position:relative;font-size:3.75rem;line-height:1}.page.post .content h1,.page.post .content h2,.page.post .content h3,.page.post .content h4,.page.post .content h5,.page.post .content h6{margin-bottom:.5rem}.page.post .content h1{font-size:2.25rem;line-height:2.5rem}.page.post .content h2{font-size:1.875rem;line-height:2.25rem}.page.post .content h3{font-size:1.5rem;line-height:2rem}.page.post .content h4{font-size:1.25rem;line-height:1.75rem}.page.post .content h5{font-size:1.125rem;line-height:1.75rem}.page.post .content h6{font-size:1rem;line-height:1.5rem}.page .content a::selection,.page .content em::selection,.page .content p::selection,.page .content strong::selection{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.page .content a::selection,.page .content em::selection,.page .content p::selection,.page .content strong::selection{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.page .content a::-moz-selection,.page .content em::-moz-selection,.page .content p::-moz-selection,.page .content strong::-moz-selection{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.page.stacked .title{font-size:3rem;line-height:1}.page.stacked .subtitle{font-size:1.25rem;line-height:1.75rem}.page.stacked .link{text-decoration:underline}.token.page.list .filter-message{font-style:italic}.page.list .filter-message{font-size:1.5rem;line-height:2rem;font-style:italic}@media (min-width:768px){.page{max-width:56rem}}#work-list .content p a{font-weight:500;text-decoration:underline}div[class*=language-]{position:relative}div.language-js.mac.extra-class:before{position:absolute;font-size:1.125rem;line-height:1.75rem;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity));right:12px;top:8px}div[class~=language-html]:before{content:"html"}div[class~=language-js]:before{content:"js"}div[class~=language-css]:before{content:"css"}code{font-size:1.25rem;line-height:1.75rem}.icon.mac pre{border-radius:9999px}.mac pre{margin-bottom:1rem;overflow:hidden;border-radius:.25rem;--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity));padding:1.5rem;--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.mac pre:before{position:relative;margin-bottom:.5rem;display:block;left:-6px;top:-6px;content:" ";background:url(/images/mac-icons.svg) no-repeat}.icon.vue-container.quote{border-radius:9999px}.vue-container.quote{border-radius:.25rem;padding-left:.5rem;padding-right:.5rem;letter-spacing:.025em}.token.vue-container.quote p{font-style:italic}.vue-container.quote p{font-size:1.875rem;line-height:2.25rem;font-weight:300;font-style:italic;line-height:1.25}.vue-container.quote p:before{font-size:2rem;position:relative;top:-5px;content:"“"}.vue-container.quote p:after{font-size:2rem;position:relative;top:-5px;content:"”"}.post .danger,.post .tip,.post .warning{margin-top:.75rem;margin-bottom:.75rem;border-width:0 0 0 8px;border-style:solid;padding:1rem}.post .danger p,.post .tip p,.post .warning p{margin:.5rem}.post .tip{border-color:rgba(16,185,129,var(--tw-border-opacity));background-color:rgba(229,231,235,var(--tw-bg-opacity))}.post .tip,.post .warning{--tw-border-opacity:1;--tw-bg-opacity:1}.post .warning{border-color:rgba(245,158,11,var(--tw-border-opacity));background-color:rgba(253,230,138,var(--tw-bg-opacity))}.post .danger{--tw-border-opacity:1;border-color:rgba(239,68,68,var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(254,202,202,var(--tw-bg-opacity))}.post .danger .title,.post .tip .title,.post .warning .title{margin-top:.5rem;font-size:1.5rem;line-height:2rem;font-weight:700}@media (min-width:768px){.vue-container.quote{padding:2rem 5rem}.vue-container.quote p{font-size:2.25rem;line-height:2.5rem}}.icontable{border-radius:9999px}table{margin-top:2rem;margin-bottom:1rem;width:100%;border-collapse:collapse;border-radius:.25rem;--tw-border-opacity:1;border:1px solid rgba(229,231,235,var(--tw-border-opacity));padding:1rem;--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}table thead th{font-weight:700}table tbody td{font-weight:300}table tbody td,table thead th{padding:1.5rem}table tbody tr td,table thead tr th{--tw-border-opacity:1;border:solid rgba(229,231,235,var(--tw-border-opacity));border-width:0 0 1px}table tbody tr td[rowspan]{--tw-border-opacity:1;border-right:1px;border-color:rgba(229,231,235,var(--tw-border-opacity));border-style:solid}.contains-task-list{margin-bottom:2rem;list-style-type:none;padding-left:.75rem}.token.contains-task-list{font-style:italic}.contains-task-list{font-size:1.5rem;line-height:2rem;font-style:italic}.contains-task-list .task-list-item{margin-top:.25rem;margin-bottom:.25rem}.contains-task-list .task-list-item-checkbox{position:relative;margin:0 .75rem 0 0;padding:0;zoom:1.25;top:-2px;-ms-transform:scale(1.25);-moz-transform:scale(1.25);-webkit-transform:scale(1.25);-o-transform:scale(1.25);transform-origin:0 0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-o-transform-origin:0 0;-moz-transform-origin:0 0}.mobile .contains-task-list .task-list-item-checkbox{top:0!important}.icon.spoiler{border-radius:9999px}.spoiler{margin-top:2rem;margin-bottom:2rem;border-radius:.25rem;--tw-border-opacity:1;border:1px solid rgba(229,231,235,var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity));padding:2rem;--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.spoiler summary{outline:2px solid transparent;outline-offset:2px;font-size:1.5rem;line-height:2rem}.spoiler[open] summary{margin-bottom:1rem;display:block}.spoiler[open] summary~*{animation:fadeIn .5s}.spoiler[open] p{margin:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.avatar{overflow:hidden;width:128px;height:128px}.avatar,.avatar img{border-radius:9999px}.avatar img{height:8rem;width:8rem}.breadcrumbs{display:none}.breadcrumbs .crumb{margin-bottom:2rem;display:inline-block;font-size:1.125rem;line-height:1.75rem;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.breadcrumbs .crumb a{text-decoration:none}@media (min-width:768px){.breadcrumbs{display:block}}.icon{cursor:pointer;--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity));padding:.75rem;--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity));transition:all .5s}.icon.inverted,.icon:hover{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.icon.inverted:hover{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.icon.static{cursor:default;padding:0;top:8px}.icon.static,.icon.static:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.icon.static:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.icon.inline{position:relative;display:inline-block}.icon.rounded{border-radius:9999px}.icon span{display:block;height:2rem;width:2rem}.icon svg{height:100%;width:100%}.icon.outbound{margin-left:.25rem;border-radius:9999px;--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity));padding:0;--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.quicklink .quick-link{position:fixed;right:0;bottom:0;margin-right:.75rem;margin-bottom:.75rem;outline:2px solid transparent;outline-offset:2px;transition:all .5s;-webkit-tap-highlight-color:rgba(0,0,0,0)}.quicklink .quick-link .feather-home{position:relative;top:-2px}.quicklink .quick-link span{position:relative;top:1px}.readtime{margin-left:.25rem}.readtime .icon{padding:.25rem;top:4px}.readtime .icon,.readtime .icon:hover{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.readtime .icon span{height:1rem;width:1rem}.readtime .icon svg{top:-2px;position:relative}.taglist .icon{margin-right:.75rem;padding:.25rem;top:6px}.taglist .icon span{height:1rem;width:1rem}.taglist .icon svg{top:-2px;position:relative}.icon.taglist .tag{border-radius:9999px}.taglist .tag{border-radius:.25rem;background-color:rgba(209,213,219,var(--tw-bg-opacity));padding:.5rem 1rem;color:rgba(31,41,55,var(--tw-text-opacity));transition:all .5s}.taglist .tag,.taglist .tag:hover{--tw-bg-opacity:1;--tw-text-opacity:1}.taglist .tag:hover{background-color:rgba(31,41,55,var(--tw-bg-opacity));color:rgba(209,213,219,var(--tw-text-opacity))}.teaser{margin-bottom:3rem}.teaser .content{margin-top:.75rem;margin-bottom:.75rem}.share-this-popover{margin-left:1.25rem;margin-right:1.25rem}.share-this-popover>ul{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.share-this-popover>ul>li{width:3em;height:3em;line-height:3em}.share-this-popover>ul>li>a{padding:.5em}.static{position:static}.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.mt-8{margin-top:2rem}.mt-12{margin-top:3rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mb-2{margin-bottom:.5rem}.mb-8{margin-bottom:2rem}.ml-2{margin-left:.5rem}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.rounded{border-radius:.25rem}.bg-gray-600{--tw-bg-opacity:1;background-color:rgba(75,85,99,var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgba(254,226,226,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.italic{font-style:italic}*,:after,:before{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.md\:hidden{display:none}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sw-update-popup[data-v-ef6a919a]{position:fixed;right:1em;bottom:1em;padding:1em;border:1px solid #3eaf7c;border-radius:3px;background:#fff;box-shadow:0 4px 16px rgba(0,0,0,.5);text-align:center;z-index:2}.sw-update-popup>button[data-v-ef6a919a]{margin-top:.5em;padding:.25em 2em}.sw-update-popup-enter-active[data-v-ef6a919a],.sw-update-popup-leave-active[data-v-ef6a919a]{transition:opacity .3s,transform .3s}.sw-update-popup-enter[data-v-ef6a919a],.sw-update-popup-leave-to[data-v-ef6a919a]{opacity:0;transform:translateY(50%) scale(.5)}