:root{--body-fonts:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--hamburger-size:40px}
/*! tailwindcss v2.1.4 | 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:baseline}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:baseline}::-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:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}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{border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[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}*{--tw-shadow:0 0 #0000;--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 #0000;--tw-ring-shadow:0 0 #0000}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1rem;padding-left:1rem}@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}}.static{position:static}.relative{position:relative}.fixed{position:fixed}.absolute{position:absolute}.right-8{right:2rem}.z-10{z-index:10}.mx-auto{margin-left:auto;margin-right:auto}.my-14{margin-top:3.5rem;margin-bottom:3.5rem}.mb-20{margin-bottom:5rem}.mt-32{margin-top:8rem}.mt-12{margin-top:3rem}.mb-16{margin-bottom:4rem}.mt-10{margin-top:2.5rem}.mr-4{margin-right:1rem}.mr-10{margin-right:2.5rem}.mr-2{margin-right:.5rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-5{margin-bottom:1.25rem}.ml-4{margin-left:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.hidden{display:none}.h-full{height:100%}.h-\[3rem\]{height:3rem}.h-\[3px\]{height:3px}.min-h-\[100px\]{min-height:100px}.w-\[3rem\]{width:3rem}.w-\[24px\]{width:24px}.max-w-3xl{max-width:48rem}.flex-col{flex-direction:column}.content-center{align-content:center}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-\[5px\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(5px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5px * var(--tw-space-y-reverse))}.whitespace-nowrap{white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.border-b-2{border-bottom-width:2px}.border-t-\[1px\]{border-top-width:1px}.border-gray-100{--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity))}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.pl-20{padding-left:5rem}.text-center{text-align:center}.text-6xl{font-size:3.75rem;line-height:1}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-light{font-weight:300}.font-bold{font-weight:700}.lowercase{text-transform:lowercase}.leading-\[40px\]{line-height:40px}.leading-\[38px\]{line-height:38px}.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\:relative{position:relative}.md\:right-0{right:0}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-full{width:100%}.md\:justify-between{justify-content:space-between}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.md\:pr-\[15\.5rem\]{padding-right:15.5rem}.md\:pr-28{padding-right:7rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:leading-\[58px\]{line-height:58px}.md\:leading-\[36px\]{line-height:36px}}@font-face{font-family:RecoletaAlt;src:url(/fonts/RecoletaAlt/r500.woff2);font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Recoleta Regular;src:url(/fonts/RecoletaAlt/recoleta-alt-regular400.woff2);font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Recoleta Medium;src:url(/fonts/RecoletaAlt/recoleta-alt-medium500.woff2);font-style:normal;font-weight:500;font-display:swap}*,:after,:before{box-sizing:border-box}body,body[data-theme=light]{--color-text-primary:#373a3c;--color-text-secondary:#432ee9;--color-text-menu-link:#fff;--color-text-nav-counter:#b6b6b6;--color-bg-primary:#fff;--color-bg-offset:#f7f7f9;--color-border:#eceeef;--color-text-highlight:#ededed;--color-text-highlight-hover:#f5bfd2;--color-focus-state:var(--color-text-secondary);--color-bg-hamburger-menu:#f7f7f7;--color-bg-hamburger-menu-hover:#eceeef;--color-bg-mobile-menu:#05141e;--color-menuicon-bar:#05141e;--color-menuicon-bar-offset:#fff;--color-menu-border-active:var(--color-text-secondary);--color-menu-border-hover:#0d2a3d;--color-tag-home-assistant:#f5bfd2;--color-tag-smart-home:#e5db9c;--color-tag-food:#d0bcac;--color-tag-code:#beb4c5;--color-tag-diy:#e6a57e;--color-tag-general:#eb96aa;--color-tag-writing:#98d4bb;--color-tag-design:#9ad9db;--color-tag-bg:#ececec;--color-tag-text:rgba(60,72,86,0.6);--color-inline-code-bg:rgba(115,125,140,0.17);--color-inline-code-text:rgba(115,125,140,0.17)}body[data-theme=dark]{--color-text-primary:#fff;--color-text-secondary:#2ee9c6;--color-text-menu-link:#05141e;--color-text-nav-counter:#b6b6b6;--color-bg-primary:#05141e;--color-bg-offset:#f7f7f9;--color-border:#15252f;--color-text-highlight:#697075;--color-text-highlight-hover:var(--color-text-secondary);--color-focus-state:var(--color-text-secondary);--color-bg-hamburger-menu:#183142;--color-bg-hamburger-menu-hover:#204258;--color-bg-mobile-menu:#fff;--color-menuicon-bar:#eceeef;--color-menuicon-bar-offset:#05141e;--color-menu-border-active:var(--color-text-secondary);--color-menu-border-hover:#f0f0f0;--color-tag-home-assistant:#f5bfd2;--color-tag-smart-home:#e5db9c;--color-tag-food:#d0bcac;--color-tag-code:#beb4c5;--color-tag-diy:#e6a57e;--color-tag-general:#eb96aa;--color-tag-writing:#98d4bb;--color-tag-design:#9ad9db;--color-tag-bg:#15252f;--color-tag-bg-hover:#1f3441;--color-tag-text:#5c6c80;--color-inline-code-bg:rgba(15,125,140,0.5);--color-inline-code-text:rgba(115,125,140,0.17)}body{background-color:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--body-fonts);transition:background-color .25s ease-in-out;overflow-x:hidden}.no-scroll{overflow:hidden}.wrapper{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}.heading,h1{font-family:Recoleta Medium}p{font-size:var(--font-size-md)}article,p,section{line-height:1.5}:focus{outline:.15rem dashed var(--color-focus-state);outline-offset:.25rem}:focus:not(:focus-visible){outline:none}main:focus{outline:none}img{max-width:100%}main a{color:var(--color-text-secondary)}main a:hover{text-decoration:underline}.divider,.tag{color:var(--color-tag-text)}.tag{background-color:var(--color-tag-bg)}.tag:is(:hover,:focus){background-color:var(--color-text-secondary);text-decoration:none;color:var(--color-text-menu-link)}.tag span{background-color:var(--color-text-menu-link);text-decoration:none;color:var(--color-text-secondary)}.post-content :is(h1,h2,h3,h4,h5){font-family:Recoleta Medium;margin:25px 0}.post-content h1{font-size:3rem}.post-content h2{font-size:2.25rem;line-height:2.5rem}.post-content h3{font-size:1.875rem;line-height:2.25rem}.post-content h4{font-size:1.5rem;line-height:2rem}.post-content h5{font-size:1.25rem;line-height:1.75rem}.page-content :is(p,ul,ol),.post-content :is(p,ul,ol){font-size:1.125rem}.post-intro-lead :is(p){font-size:25px}.post-content>:is(ol,ul){padding-left:30px}.post-content ol ol,.post-content ul ul{padding-left:30px}.page-content>p,.post-content>p{margin-bottom:1em}.post-content ul{list-style-type:disc}.post-content ol{list-style-type:decimal}.post-content>ul{margin-top:0;margin-bottom:1em}.post-content :not(pre)>code{display:inline-block;font-family:Fira Code,Menlo,Monaco,Consolas,Andale Mono,Courier New,monospace;background-color:var(--color-inline-code-bg);border-radius:.25rem;padding:4px;margin:0 2px;font-size:75%;letter-spacing:-.5px}.hamburger-button_hamburgerButton__1Zy4A{background-color:var(--color-bg-hamburger-menu);border-radius:50%}.hamburger-button_hamburgerButton__1Zy4A:hover{background-color:var(--color-bg-hamburger-menu-hover)}.hamburger-button_cross__2zFul,.hamburger-button_cross__2zFul:hover{background-color:transparent}.hamburger-button_menuiconBar__102Xm{background-color:var(--color-menuicon-bar);transition:.4s}.hamburger-button_rotateBottomBar__3w4ML,.hamburger-button_rotateTopBar__GQeMT{transition:.4s;background-color:var(--color-menuicon-bar-offset)}.hamburger-button_rotateTopBar__GQeMT{transform:rotate(-45deg) translate(-2px,2px)}.hamburger-button_rotateBottomBar__3w4ML{transform:rotate(45deg) translate(-4px,-4px)}.mobile-menu_mobileMenu__3hBeA{background-color:var(--color-bg-mobile-menu);height:100%;width:100%;position:fixed;inset:0;-webkit-clip-path:circle(10px at calc(100vw - 2.2rem - (var(--hamburger-size) / 2)) calc(2.8rem + (var(--hamburger-size) / 2)));clip-path:circle(10px at calc(100vw - 2.2rem - (var(--hamburger-size) / 2)) calc(2.8rem + (var(--hamburger-size) / 2)));transition:all .8s cubic-bezier(.86,0,.07,1);display:none}@media screen and (max-width:767px){.mobile-menu_isOpen__2eR_N{-webkit-clip-path:circle(150% at 89vw 13vw);clip-path:circle(150% at 89vw 13vw)}.mobile-menu_mobileMenu__3hBeA{display:block}}.mobile-menu_navLink__2Dg9N{color:var(--color-text-menu-link);font-family:Recoleta Medium;position:relative}.mobile-menu_mainNavItem_inActive__1eNkZ{position:relative;transition:transform .3s cubic-bezier(.86,0,.07,1)}.mobile-menu_mainNavItem_inActive__1eNkZ:after{content:"";display:block;height:10px;width:100%;position:absolute;right:60%;bottom:-10px;z-index:-1;transform:scaleX(0);transform-origin:0 50%;transition:transform .3s cubic-bezier(.86,0,.07,1);background-color:var(--color-menu-border-hover)}.mobile-menu_mainNavItem_inActive__1eNkZ:hover:after{transform:scaleX(1)}.mobile-menu_mainNavItem_active__1oTyV{position:relative}.mobile-menu_mainNavItem_active__1oTyV:after{background-color:var(--color-menu-border-active);content:"";display:block;height:10px;width:100%;position:absolute;right:60%;bottom:-10px;z-index:-1}.mobile-menu_navCounter__KLJ1S{color:var(--color-text-nav-counter);font-family:var(--body-fonts)}.footer_socialLink__2H3wt:not(:last-child){margin-right:20px;display:inline-block;position:relative}.footer_socialLink__2H3wt:not(:last-child):after{content:"/";position:absolute;right:-12px}