@font-face{font-family:inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-latin-400-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-latin-600-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter-latin-700-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}﻿::-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:.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:-.25em}sup{top:-.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:.35em .75em .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}:root{--phoneWidth:(max-width: 684px);--tabletWidth:(max-width: 900px)}.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:#e5e5e5}@media(prefers-color-scheme:dark){button,.button,a.button{background:#0a0a0a;color:inherit}}@media(prefers-color-scheme:light){button,.button,a.button{background:#e5e5e5}}[data-theme=dark] button,[data-theme=dark] .button,[data-theme=dark] a.button{background:#0a0a0a;color:inherit}[data-theme=light] button,[data-theme=light] .button,[data-theme=light] a.button{background:#e5e5e5}button.outline,.button.outline,a.button.outline{background:0 0;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,.11),0 1px 3px rgba(0,0,0,8%)}button.primary:hover,.button.primary:hover,a.button.primary:hover{box-shadow:0 2px 6px rgba(50,50,93,.21),0 1px 3px rgba(0,0,0,8%)}button.link,.button.link,a.button.link{background:0 0;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:#e5e5e5}@media(prefers-color-scheme:dark){.header{background:#0a0a0a}}@media(prefers-color-scheme:light){.header{background:#e5e5e5}}[data-theme=dark] .header{background:#0a0a0a}[data-theme=light] .header{background:#e5e5e5}.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:700;font-display:auto;font-family:monospace,monospace}.logo img{height:44px}.logo__mark{margin-right:5px}.logo__text{font-size:1.125rem;white-space:nowrap}.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:#e5e5e5}@media(prefers-color-scheme:dark){.menu{background:#0a0a0a}}@media(prefers-color-scheme:light){.menu{background:#e5e5e5}}[data-theme=dark] .menu{background:#0a0a0a}[data-theme=light] .menu{background:#e5e5e5}@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}.menu a:last-of-type{margin-right:0}.submenu{background:#e5e5e5}@media(prefers-color-scheme:dark){.submenu{background:#0a0a0a}}@media(prefers-color-scheme:light){.submenu{background:#e5e5e5}}[data-theme=dark] .submenu{background:#0a0a0a}[data-theme=light] .submenu{background:#e5e5e5}.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:#0a0a0a}@media(prefers-color-scheme:light){.submenu .dropdown-content{background:#e5e5e5}}[data-theme=dark] .submenu .dropdown-content{background:#0a0a0a}[data-theme=light] .submenu .dropdown-content{background:#e5e5e5}.submenu .dropdown-content a{padding:12px 20px;text-decoration:none;display:block;text-align:left}.submenu .dropdown-content a:hover{background:#0a0a0a}@media(prefers-color-scheme:light){.submenu .dropdown-content a:hover{background:#e5e5e5}}[data-theme=dark] .submenu .dropdown-content a:hover{background:#0a0a0a}[data-theme=light] .submenu .dropdown-content a:hover{background:#e5e5e5}.submenu .dropdown:hover .dropdown-content{display:block}html{box-sizing:border-box;line-height:1.6;letter-spacing:.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:1rem;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:#0c0c0c;color:#a9a9b3}}@media(prefers-color-scheme:light){body{background-color:#fff;color:#222}}[data-theme=dark] body{background-color:#0c0c0c;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;margin-top:2.5em}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:.8}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}em,i,strong{color:#000}@media(prefers-color-scheme:dark){em,i,strong{color:#fff}}@media(prefers-color-scheme:light){em,i,strong{color:#000}}[data-theme=dark] em,[data-theme=dark] i,[data-theme=dark] strong{color:#fff}[data-theme=light] em,[data-theme=light] i,[data-theme=light] strong{color:#000}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:.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:.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:0 0 !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,.6);clip:auto !important;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;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:50%}.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}.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-inner{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:.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:.8rem;line-height:normal;opacity:.6}.post-info p{margin:.8em 0}.post-info a:hover{border-bottom:1px solid #fff}.post-info svg{margin-right:.8em}.post-info .tag{margin-right:.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:.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1;background:#fff;color:#999}@media(prefers-color-scheme:dark){.pagination__title-h{background:#0c0c0c;color:#b3b3bd}}@media(prefers-color-scheme:light){.pagination__title-h{background:#fff;color:#999}}[data-theme=dark] .pagination__title-h{background:#0c0c0c;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:700}.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}@media(max-width:900px){.footer__content>*:last-child{padding:0}}.sharing-buttons{display:block;margin-top:1.25em;padding-top:1.25em;border-top:1px solid rgba(128,128,128,.2)}.sharing-buttons__label{display:block;margin-bottom:.6em;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;opacity:.4}.sharing-buttons__icons{display:flex;flex-wrap:wrap;align-items:center;gap:.2em;margin-left:-.4em}.share-btn{display:inline-flex;align-items:center;justify-content:center;padding:.4em;border-radius:5px;color:inherit;text-decoration:none;opacity:.5;transition:opacity 150ms ease,color 150ms ease}.share-btn svg{display:block;width:1.2em;height:1.2em}.share-btn:hover{opacity:1;color:#50db9b}.post-content table{border-collapse:collapse;margin:25px auto;font-size:.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}html{letter-spacing:normal !important}h1,h2,h3,h4,h5,h6{display:block !important;align-items:initial !important;font-family:inter,ui-sans-serif,system-ui,-apple-system,sans-serif}h1{font-weight:700;letter-spacing:-.03em;line-height:1.1}h2{font-weight:600;letter-spacing:-.022em;line-height:1.25}h3,h4,h5,h6{font-weight:600;letter-spacing:-.018em;line-height:1.3}a{transition:color .3s ease,opacity .3s ease !important;text-decoration:none !important;border-bottom:none !important}a:hover{color:var(--link-hover-color) !important;text-decoration:none !important;border-bottom:none !important}.social-icons a svg,.social-icons a i{transition:color .3s ease,fill .3s ease,opacity .3s ease !important}.social-icons a:hover svg,.social-icons a:hover i{color:var(--link-hover-color) !important;fill:var(--link-hover-color) !important}.menu a{transition:color .3s ease !important}.menu a:hover{color:var(--link-hover-color) !important}code[class*=language-],pre[class*=language-]{font-family:jetbrains mono,fira code,source code pro,Consolas,Monaco,andale mono,ubuntu mono,monospace !important;font-size:.9em !important;background:0 0 !important}pre[class*=language-],pre code[class*=language-],article pre[class*=language-],.post-content pre[class*=language-],main pre[class*=language-]{background:#282a36 !important;border:none !important;box-shadow:none !important}:not(pre)>code[class*=language-],article :not(pre)>code[class*=language-],.post-content :not(pre)>code[class*=language-],main :not(pre)>code[class*=language-]{background:#282a36 !important;border:none !important;box-shadow:none !important}html body article pre[class*=language-],html body article .post-content pre[class*=language-],html body main pre[class*=language-],html body article :not(pre)>code[class*=language-],html body article .post-content :not(pre)>code[class*=language-],html body main :not(pre)>code[class*=language-]{background:#282a36 !important}.post-feature-image{width:100%;margin:2rem 0}.post-feature-image img{width:100%;height:auto;display:block}.logo__cursor{background:#50db9b !important;animation:cursor 1s infinite !important}@keyframes cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}[data-theme=light] body,[data-theme=light] .container{background:#fff !important}[data-theme=light] .header,[data-theme=light] .menu,[data-theme=light] .submenu,[data-theme=light] button.button,[data-theme=light] .button{background:#e5e5e5 !important}@media(prefers-color-scheme:light){:root:not([data-theme=dark]) body,:root:not([data-theme=dark]) .container{background:#fff !important}:root:not([data-theme=dark]) .header,:root:not([data-theme=dark]) .menu,:root:not([data-theme=dark]) .submenu,:root:not([data-theme=dark]) button.button,:root:not([data-theme=dark]) .button{background:#e5e5e5 !important}}[data-theme=light] main,[data-theme=light] main h1,[data-theme=light] main p,[data-theme=light] main .typing-subtitle,[data-theme=light] main .media-label,[data-theme=light] main .media-content,[data-theme=light] main .social-icons,[data-theme=light] main .social-icons a,[data-theme=light] main .social-icons svg{color:#000 !important}[data-theme=light] main .media-label{opacity:1 !important;color:#000 !important;font-weight:400 !important}@media(prefers-color-scheme:light){:root:not([data-theme=dark]) main,:root:not([data-theme=dark]) main h1,:root:not([data-theme=dark]) main p,:root:not([data-theme=dark]) main .typing-subtitle,:root:not([data-theme=dark]) main .media-label,:root:not([data-theme=dark]) main .media-content,:root:not([data-theme=dark]) main .social-icons,:root:not([data-theme=dark]) main .social-icons a,:root:not([data-theme=dark]) main .social-icons svg{color:#000 !important}:root:not([data-theme=dark]) main .media-label{opacity:1 !important;color:#000 !important;font-weight:400 !important}}html[data-theme=dark],[data-theme=dark] body,[data-theme=dark] .container{background:#0c0c0c !important}[data-theme=dark] .header,[data-theme=dark] .menu,[data-theme=dark] .submenu,[data-theme=dark] button.button,[data-theme=dark] .button{background:#0a0a0a !important}@media(prefers-color-scheme:dark){html:not([data-theme=light]),:root:not([data-theme=light]) body,:root:not([data-theme=light]) .container{background:#0c0c0c !important}:root:not([data-theme=light]) .header,:root:not([data-theme=light]) .menu,:root:not([data-theme=light]) .submenu,:root:not([data-theme=light]) button.button,:root:not([data-theme=light]) .button{background:#0a0a0a !important}}main>div h1{margin-top:0;margin-bottom:.5rem}main>div .typing-subtitle,main>div p{margin-top:.25rem;margin-bottom:.75rem}main>div .social-icons{margin-top:.5rem}.posts .post-item-inner{padding:14px 0}.posts .post-item{border-bottom-color:var(--border)}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{display:block}.post-content h1{font-size:2rem;margin-top:2rem;margin-bottom:1rem;line-height:1.25}.post-content h1:first-child{margin-top:0}.post-content h2{margin-top:1.75em;margin-bottom:.6em;line-height:1.3}.post-content h2:first-child{margin-top:0}.post-content h3{margin-top:1.5em;margin-bottom:.5em;line-height:1.3}.post-content p{line-height:1.7;margin:0 0 1rem}.post-content ul,.post-content ol{line-height:1.7;margin-bottom:1.25rem}.post-content ul li,.post-content ol li{margin-bottom:.5rem}.post-content ul li:last-child,.post-content ol li:last-child{margin-bottom:0}.post .post-excerpt{opacity:.85;font-style:normal;line-height:1.6;margin-bottom:1.25rem}.post .post-info{margin-top:1.75rem;font-size:.8rem;opacity:.75}.post .post-info p{margin:.6em 0}.post .post-info a:hover{border-bottom:none !important}blockquote{border-left-color:var(--link-hover-color)}.post-content pre[class*=language-],.project-content pre[class*=language-]{margin:1.25rem 0;padding:1.25rem 1rem;border-radius:6px}.media-widgets-inline{display:flex;flex-direction:column;gap:.75rem;margin:1.5rem 2rem;padding-top:1.25rem;border-top:1px solid var(--border);opacity:.95;font-size:.75rem !important;align-items:flex-start;color:var(--text) !important}.media-widget-inline{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-size:.75rem !important;color:var(--text) !important;line-height:1.5}.media-widget-inline i{font-size:.75rem !important;display:inline-block;line-height:1;vertical-align:middle}.media-widget-inline .spotify-equalizer,.media-widget-inline .podcast-wave{font-size:.7rem !important}.media-icon-wrapper{display:inline-flex;align-items:center}.media-label{font-size:.75rem !important;color:var(--text) !important;opacity:.6;white-space:nowrap;font-weight:400}.media-content{font-size:.75rem !important;color:var(--text) !important;font-weight:400}.media-content a{font-size:.75rem !important;color:var(--text) !important;text-decoration:none !important;border-bottom:none !important}.media-content a:hover{color:var(--link-hover-color);border-bottom:none !important}.sharing-buttons{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--border);opacity:.9}.sharing-buttons__label{display:block;margin-bottom:.5rem;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;opacity:.6;color:var(--text)}.sharing-buttons__icons{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.share-btn{display:inline-flex;align-items:center;justify-content:center;padding:.4em;border-radius:4px;color:inherit;text-decoration:none !important;opacity:.6;transition:opacity .2s ease,color .2s ease}.share-btn:hover{opacity:1;color:var(--link-hover-color) !important}.share-btn svg{display:block;width:1.1em;height:1.1em}.spotify-equalizer{display:inline-flex;align-items:flex-end;gap:1.5px;height:12px;width:14px;position:relative;vertical-align:middle}.spotify-equalizer .bar{width:2.5px;background:#50db9b;border-radius:1px;animation:equalizer .8s ease-in-out infinite;transform-origin:bottom;display:block}.spotify-equalizer .bar:nth-child(1){animation-delay:0s;height:10px}.spotify-equalizer .bar:nth-child(2){animation-delay:.2s;height:7px}.spotify-equalizer .bar:nth-child(3){animation-delay:.4s;height:9px}.spotify-equalizer .bar:nth-child(4){animation-delay:.6s;height:5px}@keyframes equalizer{0%,100%{transform:scaleY(1)}25%{transform:scaleY(.4)}50%{transform:scaleY(.7)}75%{transform:scaleY(.3)}}.podcast-wave{display:inline-flex;align-items:center;justify-content:center;position:relative;width:16px;height:14px;vertical-align:middle}.podcast-wave i{font-size:.7rem;color:#50db9b;position:relative;z-index:2}.podcast-wave .wave-ring{position:absolute;width:100%;height:100%;border:1.5px solid #50db9b;border-radius:50%;opacity:0;animation:podcast-pulse 2.5s ease-out infinite}.podcast-wave .wave-ring:nth-child(2){animation-delay:0s}.podcast-wave .wave-ring:nth-child(3){animation-delay:1.25s}@keyframes podcast-pulse{0%{transform:scale(.6);opacity:.6}100%{transform:scale(1.8);opacity:0}}html body .container .footer,html body .container .footer *,html body .container .footer__inner,html body .container .footer__inner *,html body .container .footer__content,html body .container .footer__content *,html body .container .footer__content span,html body .container .footer__content a,html body .container .footer__content i,html body .container .footer__content svg{font-size:.75rem !important}.footer{text-align:center !important;padding:40px 20px !important}.footer__inner{display:flex !important;justify-content:center !important;align-items:center !important;margin:0 auto !important;width:100% !important;max-width:100% !important}.footer__content{display:flex !important;flex-direction:row !important;align-items:center !important;justify-content:center !important;flex-wrap:wrap !important;gap:.5rem .75rem !important;font-size:.75rem !important;line-height:1.5 !important}.footer__content span{display:inline-flex !important;align-items:center !important;font-size:.75rem !important;line-height:1.5 !important;white-space:nowrap !important;word-break:keep-all !important}.footer__content a{font-size:.75rem !important;line-height:1.5 !important;display:inline-flex !important;align-items:center !important;text-decoration:none !important;border-bottom:none !important}.footer__content a:hover{text-decoration:none !important;border-bottom:none !important}.footer__content i{font-size:.75rem !important;display:inline-block !important;vertical-align:middle !important;margin:0 .25rem !important}.footer__content i.fa-coffee{margin-left:.5rem !important;margin-right:.4rem !important}.footer__content i.fa-x-twitter{margin-left:.5rem !important;margin-right:.4rem !important}.footer__content svg{width:14px !important;height:14px !important;vertical-align:middle !important;margin:0 .25rem !important}.footer__content>*:not(:last-child)::after{content:"" !important;padding:0 !important}[data-theme=light] .footer,[data-theme=light] .footer *,[data-theme=light] .footer__content,[data-theme=light] .footer__content *,[data-theme=light] .footer__content span,[data-theme=light] .footer__content a,[data-theme=light] .footer__content i,[data-theme=light] .footer__content svg{color:#000 !important;fill:#000 !important;stroke:#000 !important}@media(prefers-color-scheme:light){.footer,.footer *,.footer__content,.footer__content *,.footer__content span,.footer__content a,.footer__content i,.footer__content svg{color:#000 !important;fill:#000 !important;stroke:#000 !important}}@media(max-width:684px){.media-widgets-inline{flex-direction:column;align-items:flex-start;gap:.5rem}.media-label{font-size:.7rem !important;color:var(--text) !important}.media-content{font-size:.7rem !important;color:var(--text) !important}.media-content a{font-size:.7rem !important;color:var(--text) !important}.media-widget-inline i,.media-widget-inline .spotify-equalizer,.media-widget-inline .podcast-wave{font-size:.65rem !important}.spotify-equalizer{height:10px;width:12px}.podcast-wave{width:14px;height:12px}.podcast-wave i{font-size:.6rem}.footer{padding:30px 15px !important}.footer__content{flex-direction:row !important;flex-wrap:wrap !important;gap:.4rem .6rem !important;justify-content:center !important;align-items:center !important;padding:0 10px !important}.footer__content>*:not(:last-child)::after{content:"" !important;padding:0 !important}.footer__content span{display:inline-flex !important;align-items:center !important;white-space:normal !important;word-break:break-word !important;line-height:1.4 !important;max-width:100% !important;flex-shrink:1 !important}html body .container .footer,html body .container .footer *,html body .container .footer__inner,html body .container .footer__inner *,html body .container .footer__content,html body .container .footer__content *,html body .container .footer__content span,html body .container .footer__content a,html body .container .footer__content i{font-size:.7rem !important}html body .container .footer__content svg{width:12px !important;height:12px !important}.footer__content a{line-height:1.4 !important;word-break:break-word !important;white-space:normal !important}.footer__content i,.footer__content svg{margin:0 .2rem !important;flex-shrink:0 !important}}@media(max-width:480px){.footer{padding:20px 8px !important}.footer__content{flex-direction:row !important;flex-wrap:wrap !important;gap:.25rem .4rem !important;justify-content:center !important;align-items:center !important;padding:0 !important;line-height:1.3 !important}.footer__content>*:not(:last-child)::after{content:"" !important;padding:0 !important}.footer__content span{text-align:center !important;white-space:normal !important;word-break:break-word !important;line-height:1.3 !important;display:inline-flex !important;align-items:center !important}.footer__content a{line-height:1.3 !important;white-space:normal !important;word-break:break-word !important}html body .container .footer,html body .container .footer *,html body .container .footer__inner,html body .container .footer__inner *,html body .container .footer__content,html body .container .footer__content *,html body .container .footer__content span,html body .container .footer__content a,html body .container .footer__content i{font-size:.7rem !important;line-height:1.3 !important}html body .container .footer__content svg{width:10px !important;height:10px !important;margin:0 .15rem !important}.footer__content i{font-size:.7rem !important;margin:0 .15rem !important}}.header{width:100%;box-sizing:border-box;padding:max(16px,env(safe-area-inset-top))0 16px !important;border-bottom:1px solid rgba(255,255,255,5%)}.header__inner{display:flex;align-items:center;justify-content:space-between;width:100% !important;max-width:880px;margin:0 auto;padding-left:clamp(1.25rem,5vw,2.5rem);padding-right:clamp(1.25rem,5vw,2.5rem);box-sizing:border-box}[data-theme=light] .header{border-bottom:1px solid rgba(0,0,0,6%)}@media(prefers-color-scheme:light){.header{border-bottom:1px solid rgba(0,0,0,6%)}}.logo{gap:.25rem}.logo__text{font-size:.875rem !important;font-weight:600;letter-spacing:.01em}.logo__mark{margin-right:4px !important;font-size:.875rem;color:var(--text-subtle);transition:color .2s ease}[data-theme=dark] .logo__mark{color:var(--text-subtle) !important}[data-theme=light] .logo__mark{color:#71717a !important}@media(prefers-color-scheme:light){:root:not([data-theme=dark]) .logo__mark{color:#71717a}}.logo:hover .logo__mark{color:#50db9b}.logo__cursor{width:8px !important;height:14px !important}.menu__inner{font-size:.83rem !important;letter-spacing:.01em}.menu__inner li{margin:0 12px}.menu a{margin-right:0 !important;color:var(--text-muted);transition:color .2s ease;font-weight:400}[data-theme=dark] .menu a{color:var(--text-muted) !important}[data-theme=light] .menu a{color:#525252 !important}@media(prefers-color-scheme:light){:root:not([data-theme=dark]) .menu a{color:#525252}}@media(max-width:684px){.menu{left:0;right:0;width:100%;box-sizing:border-box;padding:10px clamp(1.25rem,5vw,2.5rem)}.menu__inner{width:100%}}.footer__inner{width:880px !important;max-width:100%}.footer{padding:2.5rem 20px;border-top:1px solid rgba(255,255,255,5%)}[data-theme=light] .footer{border-top:1px solid rgba(0,0,0,6%)}@media(prefers-color-scheme:light){.footer{border-top:1px solid rgba(0,0,0,6%)}}.footer__content{font-size:.75rem !important;color:var(--text-muted) !important;font-weight:300 !important;letter-spacing:.01em}[data-theme=dark] .footer__content{color:var(--text-muted) !important}[data-theme=light] .footer__content{color:#6b7280 !important}@media(prefers-color-scheme:light){:root:not([data-theme=dark]) .footer__content{color:#6b7280 !important}}.footer__content a{color:inherit !important;transition:color .2s ease}.footer__content a:hover{color:#50db9b !important}@media(max-width:684px){.post-content pre[class*=language-],.project-content pre[class*=language-],.page-content pre[class*=language-],.post-content pre,.project-content pre,.page-content pre{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.site-page .page-content table,.projects-page .project-content table,.post-content table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.media-widgets-inline{margin-left:0;margin-right:0}.header{padding-top:max(16px,env(safe-area-inset-top)) !important}.footer{padding-bottom:max(2.5rem,env(safe-area-inset-bottom)) !important;padding-left:max(15px,env(safe-area-inset-left)) !important;padding-right:max(15px,env(safe-area-inset-right)) !important}}.theme-toggle{color:inherit}.theme-toggler{overflow:visible;color:currentColor;fill:currentColor}.theme-toggler__core,.theme-toggler__cutout,.theme-toggler__rays{transform-origin:12px 12px;transition:transform .5s cubic-bezier(.4,0,.2,1),opacity .35s ease}.theme-toggler__cutout{transform:translate(8px,-8px)}.theme-toggler__rays{opacity:1;transform:scale(1)}.theme-toggler__core{transform:scale(1)}[data-theme=dark] .theme-toggler__cutout{transform:translate(-5px,4px)}[data-theme=dark] .theme-toggler__rays{opacity:0;transform:scale(.4)}[data-theme=dark] .theme-toggler__core{transform:scale(1.12)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggler__cutout{transform:translate(-5px,4px)}:root:not([data-theme=light]) .theme-toggler__rays{opacity:0;transform:scale(.4)}:root:not([data-theme=light]) .theme-toggler__core{transform:scale(1.12)}}@media(prefers-reduced-motion:reduce){.theme-toggler__core,.theme-toggler__cutout,.theme-toggler__rays{transition:none}}.toc-container{margin:1rem 0;font-size:.75rem;background:0 0 !important}.toc-toggle{background:0 0 !important;border:none !important;box-shadow:none !important;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:space-between;width:100%;color:var(--text);font-size:.75rem;font-weight:700;transition:color .2s ease;outline:none !important}.toc-toggle:focus{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}.toc-toggle:focus-visible{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}.toc-toggle:active{background:0 0 !important;outline:none !important;box-shadow:none !important;border:none !important}.toc-toggle:hover{color:var(--link-hover-color)}.toc-toggle-text{flex:1;text-align:left}.toc-toggle-arrow{margin-left:.5rem;font-size:.7rem;transition:transform .2s ease;display:inline-block}.toc-toggle[aria-expanded=true] .toc-toggle-arrow{transform:rotate(180deg)}.toc-hr{margin:.5rem 0;border:none;border-top:1px solid var(--border);opacity:.3}.toc-content{font-size:.75rem;line-height:1.6;margin-top:.75rem;overflow:hidden;transition:max-height .3s ease,opacity .3s ease;max-height:0;opacity:0;background:0 0 !important;font-weight:500}.toc-content.toc-expanded{max-height:2000px;opacity:1}.toc-content ul{list-style:none;padding-left:0;margin:0}.toc-content li{margin:.25rem 0}.toc-content a{color:var(--text);opacity:.7;text-decoration:none;transition:color .2s ease,opacity .2s ease;font-weight:500}.toc-content a:hover{color:var(--link-hover-color);opacity:1;text-decoration:underline}.toc-content ul ul{padding-left:1rem;margin-top:.25rem}.toc-content ul ul ul{padding-left:1rem}.toc-separator{display:flex;align-items:center;margin-top:1rem;gap:.5rem}.toc-separator-line{flex:1;border:none;border-top:1px solid var(--border);opacity:.3;margin:0}.toc-separator-icon{font-size:.7rem;opacity:.5;flex-shrink:0}[data-theme=light] .toc-container{background:0 0 !important}[data-theme=light] .toc-content{background:0 0 !important}[data-theme=light] .toc-toggle{color:#000;background:0 0 !important;font-weight:700}@media(prefers-color-scheme:light){.toc-container{background:0 0 !important}.toc-content{background:0 0 !important}.toc-toggle{color:#000;background:0 0 !important;font-weight:700}}[data-theme=light] .toc-toggle:hover{color:#50db9b}@media(prefers-color-scheme:light){.toc-toggle:hover{color:#50db9b}}[data-theme=light] .toc-hr{border-top-color:#dcdcdc;opacity:.6}@media(prefers-color-scheme:light){.toc-hr{border-top-color:#dcdcdc;opacity:.6}}[data-theme=light] .toc-content a{color:#000;font-weight:500}@media(prefers-color-scheme:light){.toc-content a{color:#000;font-weight:500}}[data-theme=light] .toc-content a:hover{color:#50db9b}@media(prefers-color-scheme:light){.toc-content a:hover{color:#50db9b}}[data-theme=light] .toc-separator-line{border-top-color:#dcdcdc;opacity:.6}@media(prefers-color-scheme:light){.toc-separator-line{border-top-color:#dcdcdc;opacity:.6}}[data-theme=light] .toc-separator-icon{opacity:.4}@media(prefers-color-scheme:light){.toc-separator-icon{opacity:.4}}[data-theme=light] .toc-toggle:focus{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}[data-theme=light] .toc-toggle:focus-visible{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}[data-theme=light] .toc-toggle:active{background:0 0 !important;outline:none !important;box-shadow:none !important;border:none !important}@media(prefers-color-scheme:light){.toc-toggle:focus{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}.toc-toggle:focus-visible{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}.toc-toggle:active{background:0 0 !important;outline:none !important;box-shadow:none !important;border:none !important}}[data-theme=dark] .toc-content a{color:var(--text);opacity:.7;font-weight:500}[data-theme=dark] .toc-content a:hover{color:var(--link-hover-color);opacity:1}@media(prefers-color-scheme:dark){.toc-content a{color:var(--text);opacity:.7;font-weight:500}.toc-content a:hover{color:var(--link-hover-color);opacity:1}.toc-toggle:focus{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}.toc-toggle:focus-visible{outline:none !important;background:0 0 !important;box-shadow:none !important;border:none !important}.toc-toggle:active{background:0 0 !important;outline:none !important;box-shadow:none !important;border:none !important}}.highlight-animated{position:relative;display:inline;padding:.15em .3em;margin:0 -.3em;border-radius:.25em;background:0 0;background-image:linear-gradient(90deg,rgba(80,219,155,.5) 0%,rgba(80,219,155,.5) 100%);background-size:0% 100%;background-position:0;background-repeat:no-repeat;box-decoration-break:clone;-webkit-box-decoration-break:clone;box-shadow:none;color:#fff}.highlight-animated.highlight-visible{animation:highlight-slide 2.5s ease-out forwards}@keyframes highlight-slide{0%{background-size:0% 100%;box-shadow:none}100%{background-size:100% 100%;box-shadow:0 0 8px rgba(80,219,155,.3)}}[data-theme=light] .highlight-animated{background:0 0;background-image:linear-gradient(90deg,rgba(80,219,155,.5) 0%,rgba(80,219,155,.5) 100%);background-size:0% 100%;background-position:0;background-repeat:no-repeat;box-shadow:none;color:#000}[data-theme=light] .highlight-animated.highlight-visible{animation:highlight-slide-light 2.5s ease-out forwards}@keyframes highlight-slide-light{0%{background-size:0% 100%;box-shadow:none}100%{background-size:100% 100%;box-shadow:0 0 6px rgba(80,219,155,.4)}}@media(prefers-color-scheme:light){.highlight-animated{background:0 0;background-image:linear-gradient(90deg,rgba(80,219,155,.5) 0%,rgba(80,219,155,.5) 100%);background-size:0% 100%;background-position:0;background-repeat:no-repeat;box-shadow:none;color:#000}.highlight-animated.highlight-visible{animation:highlight-slide-light 2.5s ease-out forwards}}[data-theme=dark] .highlight-animated{background:0 0;background-image:linear-gradient(90deg,rgba(80,219,155,.5) 0%,rgba(80,219,155,.5) 100%);background-size:0% 100%;background-position:0;background-repeat:no-repeat;box-shadow:none;color:#fff}[data-theme=dark] .highlight-animated.highlight-visible{animation:highlight-slide 2.5s ease-out forwards}@media(prefers-color-scheme:dark){.highlight-animated{background:0 0;background-image:linear-gradient(90deg,rgba(80,219,155,.5) 0%,rgba(80,219,155,.5) 100%);background-size:0% 100%;background-position:0;background-repeat:no-repeat;box-shadow:none;color:#fff}.highlight-animated.highlight-visible{animation:highlight-slide 2.5s ease-out forwards}}.underline-animated{position:relative;display:inline;text-decoration:none;background-image:linear-gradient(90deg,rgba(80,219,155,.8) 0%,rgba(80,219,155,.8) 100%);background-size:0% 2px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:2px;box-decoration-break:clone;-webkit-box-decoration-break:clone;color:#fff}.underline-animated.underline-visible{animation:underline-slide 2.5s ease-out forwards}@keyframes underline-slide{0%{background-size:0% 2px;box-shadow:0 0 rgba(80,219,155,0)}100%{background-size:100% 2px;box-shadow:0 2px 4px rgba(80,219,155,.2)}}[data-theme=light] .underline-animated{background-image:linear-gradient(90deg,rgba(80,219,155,.7) 0%,rgba(80,219,155,.7) 100%);background-size:0% 2px;background-position:0 100%;background-repeat:no-repeat;color:#000}[data-theme=light] .underline-animated.underline-visible{animation:underline-slide-light 2.5s ease-out forwards}@keyframes underline-slide-light{0%{background-size:0% 2px;box-shadow:0 0 rgba(80,219,155,0)}100%{background-size:100% 2px;box-shadow:0 2px 4px rgba(80,219,155,.3)}}@media(prefers-color-scheme:light){.underline-animated{background-image:linear-gradient(90deg,rgba(80,219,155,.7) 0%,rgba(80,219,155,.7) 100%);background-size:0% 2px;background-position:0 100%;background-repeat:no-repeat;color:#000}.underline-animated.underline-visible{animation:underline-slide-light 2.5s ease-out forwards}}[data-theme=dark] .underline-animated{background-image:linear-gradient(90deg,rgba(80,219,155,.8) 0%,rgba(80,219,155,.8) 100%);background-size:0% 2px;background-position:0 100%;background-repeat:no-repeat;color:#fff}[data-theme=dark] .underline-animated.underline-visible{animation:underline-slide 2.5s ease-out forwards}@media(prefers-color-scheme:dark){.underline-animated{background-image:linear-gradient(90deg,rgba(80,219,155,.8) 0%,rgba(80,219,155,.8) 100%);background-size:0% 2px;background-position:0 100%;background-repeat:no-repeat;color:#fff}.underline-animated.underline-visible{animation:underline-slide 2.5s ease-out forwards}}.typing-subtitle{position:relative;min-height:1.5em}.typing-subtitle::after{content:'';display:inline-block;width:2px;height:1em;margin-left:3px;background-color:var(--link-hover-color);vertical-align:text-bottom;animation:typing-cursor 1s infinite}@keyframes typing-cursor{0%,50%{opacity:1}51%,100%{opacity:0}}[data-theme=light] .typing-subtitle::after{background-color:#50db9b}@media(prefers-color-scheme:light){.typing-subtitle::after{background-color:#50db9b}}.site-page,.site-shell{text-align:left}.site-page,.projects-page{width:100%;padding:2.5rem 0 4rem}.site-shell,.projects-shell{max-width:880px;margin:0 auto;padding-left:clamp(1.25rem,5vw,2.5rem);padding-right:clamp(1.25rem,5vw,2.5rem)}.site-page .reveal,.projects-page .reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}.site-page .reveal.is-visible,.projects-page .reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.site-page .reveal,.projects-page .reveal{opacity:1;transform:none;transition:none}}.page-eyebrow,.projects-eyebrow{font-family:jetbrains mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--link-hover-color);font-weight:500;margin:0;line-height:1.4}.page-heading,.projects-heading{margin:.75rem 0 0;font-size:2rem;font-weight:700;letter-spacing:-.03em;line-height:1.1;color:var(--text)}@media(min-width:768px){.page-heading,.projects-heading{font-size:2.5rem}}.page-lede,.projects-lede{margin:1rem 0 0;max-width:36rem;font-size:1rem;line-height:1.65;color:var(--text);opacity:.75}.page-hero{margin-bottom:0}.site-page .page-hero+.page-content,.site-page .page-hero+.toc-container,.site-page .page-hero+.page-cover,.site-page .page-hero+.post-audio{margin-top:2rem}.site-page .page-cover+.page-content,.site-page .page-cover+.toc-container,.site-page .toc-container+.page-content{margin-top:2rem}.page-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem}.page-meta__item{font-family:jetbrains mono,ui-monospace,monospace;font-size:.7rem;letter-spacing:.08em;color:var(--text);opacity:.55}.page-tag,.project-card__tag{font-family:jetbrains mono,ui-monospace,monospace;font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:var(--link-hover-color);opacity:.85;padding:.15rem .45rem;border:1px solid rgba(80,219,155,.25);border-radius:4px}.page-back,.project-back{margin-bottom:1.5rem}.page-back__link,.project-back__link{font-family:jetbrains mono,ui-monospace,monospace;font-size:.75rem;letter-spacing:.06em;color:var(--text) !important;opacity:.6;text-decoration:none !important;transition:color .2s ease,opacity .2s ease}.page-back__link:hover,.project-back__link:hover{color:var(--link-hover-color) !important;opacity:1}.site-page--single,.projects-page--single{padding-top:1.5rem}.page-cover,.project-single__hero{margin:0 0 2.5rem;border-radius:10px;overflow:hidden;border:1px solid var(--border)}.page-cover img,.project-single__hero img{width:100%;height:auto;display:block}.page-cover figcaption,.project-single__hero figcaption{padding:.75rem 1rem;font-size:.85rem;opacity:.65;text-align:center;border-top:1px solid var(--border)}.page-footer,.project-single__footer{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:1.25rem}.page-footer__tags,.project-single__tags{display:flex;flex-wrap:wrap;gap:.5rem}.page-footer__actions,.project-single__actions{display:flex;flex-wrap:wrap;gap:.75rem}.page-footer__meta{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;opacity:.7}.page-footer__meta p{margin:0;display:flex;align-items:center;gap:.5rem}.page-action,.project-action{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1rem;font-family:jetbrains mono,ui-monospace,monospace;font-size:.75rem;letter-spacing:.04em;color:var(--text) !important;text-decoration:none !important;border:1px solid var(--border);border-radius:6px;transition:border-color .2s ease,color .2s ease,background .2s ease}.page-action:hover,.project-action:hover{border-color:rgba(80,219,155,.45);color:var(--link-hover-color) !important;background:rgba(80,219,155,6%)}.posts-archive{margin-top:2.25rem}.posts-archive__group+.posts-archive__group{margin-top:2.75rem}.posts-archive__year{display:flex;align-items:center;gap:.85rem;margin:0 0 .85rem;padding:0;border:none;font-family:jetbrains mono,ui-monospace,monospace;font-size:.72rem;font-weight:500;letter-spacing:.1em;color:var(--link-hover-color);opacity:.75}.posts-archive__year::after{content:'';flex:1;height:1px;background:var(--border);opacity:.55}.posts-list{list-style:none;margin:0;padding:0}.posts-list__item{margin:0}.posts-list__link{display:grid;grid-template-columns:minmax(0,1fr)auto;column-gap:2rem;align-items:start;padding:.65rem .5rem;margin:0 -.5rem;border-radius:6px;color:var(--text) !important;text-decoration:none !important;transition:color .2s ease,background .2s ease}.posts-list__link:hover{color:var(--link-hover-color) !important;background:rgba(80,219,155,4%)}.posts-list__title{font-size:.975rem;font-weight:500;letter-spacing:-.014em;line-height:1.45;color:inherit}.posts-list__date{justify-self:end;padding-top:.15rem;font-family:jetbrains mono,ui-monospace,monospace;font-size:.68rem;letter-spacing:.02em;color:var(--text);opacity:.5;white-space:nowrap;transition:opacity .2s ease,color .2s ease}.posts-list__link:hover .posts-list__date{opacity:.8;color:var(--link-hover-color)}@media(max-width:684px){.posts-list__link{column-gap:1.25rem;padding:.7rem .4rem}.posts-list__title{font-size:.925rem}.posts-list__date{font-size:.62rem}}.projects-grid{display:grid;grid-template-columns:1fr;gap:1.25rem;margin-top:2.5rem}@media(min-width:640px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}}.project-card{margin:0;border-radius:10px;background:linear-gradient(180deg,rgba(255,255,255,.025) 0%,rgba(255,255,255,.5%) 100%);border:1px solid var(--border);overflow:hidden;transition:border-color .25s ease,transform .25s ease,box-shadow .25s ease}.project-card:hover{border-color:rgba(80,219,155,.35);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.12)}.project-card__link{display:flex;flex-direction:column;height:100%;text-decoration:none !important;color:inherit !important}.project-card__media{aspect-ratio:16/10;overflow:hidden;background:var(--border)}.project-card__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}.project-card:hover .project-card__media img{transform:scale(1.03)}.project-card__media--placeholder{display:flex;align-items:center;justify-content:center;color:var(--link-hover-color);opacity:.45;font-size:1.75rem}.project-card__body{display:flex;flex-direction:column;flex:1;padding:1.25rem 1.35rem 1.35rem;gap:.5rem}.project-card__meta{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.project-card__year,.page-meta__item--year{font-family:jetbrains mono,ui-monospace,monospace;font-size:.7rem;letter-spacing:.08em;color:var(--text);opacity:.55}.project-card__title{margin:.25rem 0 0;font-size:1.125rem;font-weight:600;letter-spacing:-.018em;line-height:1.3;color:var(--text);transition:color .2s ease}.project-card:hover .project-card__title{color:var(--link-hover-color)}.project-card__desc{margin:0;font-size:.875rem;line-height:1.6;color:var(--text);opacity:.72;flex-grow:1}.project-card__cta{margin-top:.75rem;font-family:jetbrains mono,ui-monospace,monospace;font-size:.72rem;letter-spacing:.06em;color:var(--text);opacity:.55;transition:color .2s ease,opacity .2s ease}.project-card:hover .project-card__cta{color:var(--link-hover-color);opacity:1}.site-page .page-content,.projects-page .project-content{line-height:1.75;font-size:1rem;max-width:100%;text-align:left}.site-page .page-content h2,.projects-page .project-content h2{margin-top:2.25rem;margin-bottom:.75rem;font-size:1.5rem;font-weight:600;letter-spacing:-.018em;line-height:1.3;color:var(--text)}.site-page .page-content h2:first-child,.projects-page .project-content h2:first-child{margin-top:0}.site-page .page-content h3,.projects-page .project-content h3{margin-top:1.75rem;margin-bottom:.6rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--text)}.site-page .page-content h4,.projects-page .project-content h4{margin-top:1.5rem;margin-bottom:.5rem;font-size:1.1rem;font-weight:600;line-height:1.3;color:var(--text)}.site-page .page-content p,.projects-page .project-content p{margin:0 0 1.1rem;line-height:1.75}.site-page .page-content ul,.site-page .page-content ol,.projects-page .project-content ul,.projects-page .project-content ol{margin:0 0 1.25rem;padding-left:1.35rem;line-height:1.75}.site-page .page-content li,.projects-page .project-content li{margin-bottom:.45rem}.site-page .page-content li::marker,.projects-page .project-content li::marker{color:var(--link-hover-color)}.site-page .page-content hr,.projects-page .project-content hr{margin:2rem 0;border:none;border-top:1px solid var(--border);opacity:.5}.site-page .page-content img,.projects-page .project-content img{max-width:100%;height:auto;border-radius:8px;margin:1.25rem 0;border:1px solid var(--border)}.site-page .page-content blockquote,.projects-page .project-content blockquote{border-left:3px solid var(--link-hover-color);padding-left:1.25rem;margin:1.5rem 0;opacity:.85;font-style:italic}.site-page .page-content code:not([class*=language-]),.projects-page .project-content code:not([class*=language-]){background:var(--border);padding:.15rem .4rem;border-radius:4px;font-size:.9em}.site-page .page-content pre[class*=language-],.projects-page .project-content pre[class*=language-]{margin:1.25rem 0;border-radius:8px}.site-page .page-content table,.projects-page .project-content table{width:100%;border-collapse:collapse;margin:1.25rem 0}.site-page .page-content table th,.site-page .page-content table td,.projects-page .project-content table th,.projects-page .project-content table td{padding:.65rem .85rem;border:1px solid var(--border);text-align:left}.site-page .page-content table th,.projects-page .project-content table th{font-weight:600;background:rgba(255,255,255,3%)}.site-shell .pagination,.projects-shell .pagination{margin-top:2.5rem}[data-theme=light] .project-card{background:linear-gradient(180deg,rgba(0,0,0,.015) 0%,transparent 100%);box-shadow:0 1px 3px rgba(0,0,0,4%)}[data-theme=light] .project-card:hover{box-shadow:0 8px 24px rgba(0,0,0,8%)}@media(prefers-color-scheme:light){.project-card{background:linear-gradient(180deg,rgba(0,0,0,.015) 0%,transparent 100%)}}@media(max-width:684px){.site-page,.projects-page{padding-top:1.5rem;padding-bottom:3rem}.projects-grid{margin-top:2rem}.page-heading,.projects-heading{font-size:1.75rem}.page-footer__actions,.project-single__actions{flex-direction:column}.page-action,.project-action{justify-content:center}}