@media (prefers-color-scheme: light){body{color:var(--foreground);background-color:var(--background);--foreground: #222222;--background: #eeeeee;--background-2: #cccccc;--secondary: gray;--tertiary: #dddddd;--accent: #3d3cba;--link: #1d60a3}body .themed-icon{display:inline;margin:2px;filter:invert(0)}}@media (prefers-color-scheme: dark){body{color:var(--foreground);background-color:var(--background);--foreground: #eeeeee;--background: #161616;--background-2: #262626;--secondary: #999999;--tertiary: #444444;--accent: #959bf0;--link: #1d60a3}body .themed-icon{display:inline;margin:2px;filter:invert(1)}}.dark-mode-buttons{position:absolute;top:1em;right:1em}.dark-mode-button{border:none;background-color:rgba(0,0,0,0)}.dark-mode-button:hover{cursor:pointer}body.light-mode{color:var(--foreground);background-color:var(--background);--foreground: #222222;--background: #eeeeee;--background-2: #cccccc;--secondary: gray;--tertiary: #dddddd;--accent: #3d3cba;--link: #1d60a3}body.light-mode .themed-icon{display:inline;margin:2px;filter:invert(0)}body.light-mode #dark-mode-on{display:inline}body.light-mode #dark-mode-off{display:none}body.dark-mode{color:var(--foreground);background-color:var(--background);--foreground: #eeeeee;--background: #161616;--background-2: #262626;--secondary: #999999;--tertiary: #444444;--accent: #959bf0;--link: #1d60a3}body.dark-mode .themed-icon{display:inline;margin:2px;filter:invert(1)}body.dark-mode #dark-mode-on{display:none}body.dark-mode #dark-mode-off{display:inline}@font-face{font-family:"Montserrat";font-style:normal;font-weight:400;font-display:swap;src:url(/font/montserrat-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Montserrat";font-style:normal;font-weight:400;font-display:swap;src:local("Montserrat"),url(/font/montserrat-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html{font-family:-apple-system,BlinkMacSystemFont,"Montserrat","Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;scrollbar-gutter:stable both-edges}body{margin:0;font-size:18px;line-height:1.5;-webkit-font-smoothing:antialiased}article,aside,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}.container{max-width:42em;margin:0 auto}main{outline:none}h1{font-size:1.35em}h2{font-size:1.2em}h3{font-size:1.1em}a{color:var(--accent);text-decoration:none}a:hover,a:focus,a:active{outline:0}a:hover:not(.image-link),a:focus:not(.image-link),a:active:not(.image-link){filter:brightness(50%);border-bottom:1px solid rgba(163,29,29,.5)}a:active{color:#a31d1d;opacity:.9}a *{pointer-events:none}a.skip-main{left:-999px;position:absolute;top:auto;width:1px;height:1px;overflow:hidden;z-index:-999}a.skip-main:focus,a.skip-main:active{left:auto;top:0px;width:auto;height:auto;overflow:auto;z-index:999;padding:4px 6px 4px 6px;text-decoration:underline;background-color:var(--background);border:1px solid var(--secondary)}.table-wrapper{overflow-x:auto}table{max-width:100%;border-spacing:0}thead{background:var(--tertiary)}th,td{padding:.5em 1em;border:1px double var(--tertiary)}code{background-color:var(--tertiary);padding-left:.2em;padding-right:.2em}pre{padding:1em;max-width:100%;overflow:auto}pre code{background-color:rgba(0,0,0,0);padding-left:0px;padding-right:0px}code,pre,kbd{font-family:monospace;font-size:.9em;line-height:154%}blockquote{border-left:2px solid var(--secondary);padding:.1em 1em;margin-left:.75em}p{margin-top:.5em;margin-bottom:.5em}hr{height:1px;border:0;border-top:1px solid #ccc}ul{padding-left:20px;margin:0px}header.site-header{display:flex;justify-content:space-between;white-space:nowrap;margin-bottom:1em}header.site-header h1{font-size:1em;margin-top:1em;margin-bottom:0;font-weight:normal}header.site-header h2{font-size:1em;margin:0;font-weight:normal}header.site-header nav{display:flex;margin-top:1em;max-width:100%;text-align:right}header.site-header nav a{margin-left:1em}header.site-header nav div{display:inline}main h1{margin-top:0em;line-height:1.1em;margin-bottom:.5em;font-weight:600}main>*{margin-top:1.5em}section.description{display:grid;grid-template-columns:152px 1fr;gap:10px}@media (max-width: 840px){section.description{grid-template-columns:132px 1fr}}section.description .face{width:100%;border-radius:50%}section.description h2{margin:0}article header{display:flex;border-bottom:thin solid var(--secondary);align-items:end}article header h1{flex-grow:1;font-size:1.35em;line-height:1.1em;margin-bottom:0em;padding-bottom:.3em;font-weight:600}article header aside{font-size:.75em;color:grey;padding-bottom:.3em}article p a,article ul a{text-decoration:underline var(--tertiary) dotted}article img{max-width:100%;display:block;height:auto;margin:0 auto .5em}article .read-more{font-size:.85em}article .post-summary{margin-top:.5em;display:block}article details{width:fit-content}article details>summary{padding:4px;padding-right:12px;border:none;cursor:pointer;border-bottom:1px dotted var(--secondary)}article details>summary:hover,article details>summary:focus{color:var(--accent)}.article-info{font-size:.75em;color:grey;margin-top:1em}.article-date{white-space:nowrap}.remark{margin-left:.75em;padding:.1em;padding-left:.75em;padding-right:.75em;background:var(--background-2);font-size:.9em}footer{border-top:thin solid var(--secondary);margin-top:3em;font-size:16px}.bluesky-feed .bluesky-post{padding:.5em;margin:.5em;background-color:var(--background-2)}.bluesky-feed .bluesky-post .article-info{display:flex;gap:.5em}.bluesky-feed .bluesky-post .bluesky-images{display:flex;gap:5px;flex-wrap:wrap}.bluesky-feed .bluesky-post .bluesky-images img{flex-grow:0}.bluesky-alert{display:block;position:relative;animation:1s ease 5s forwards fadeout;-webkit-user-select:none;user-select:none}.bluesky-alert div{display:block;position:absolute;max-width:80vw;width:fit-content;transform:translateX(-80%);top:30px;background:var(--background-2);border:1px solid var(--secondary);padding:.5em}@keyframes fadeout{0%{opacity:1}100%{opacity:0;visibility:hidden}}.hidden{display:none !important}.freelance{--gap: 5px}.freelance .jobs{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:repeat(auto-fit, auto)}.freelance .jobs p{margin:0px}.freelance .jobs .job{display:grid;grid-column:1/4;grid-template-columns:subgrid;grid-template-rows:auto auto 10px;grid-template-areas:"name title time" "description description description" "separator separator separator"}.freelance .jobs .job:not(:last-child) .separator{grid-area:separator;border-bottom:1px solid var(--accent);margin-bottom:5px}@media (max-width: 840px){.freelance .jobs .job{grid-template-rows:1.2em auto auto 10px;grid-template-areas:"name name time" "title title title" "description description description" "separator separator separator"}}.freelance .jobs .job .name{grid-area:name}.freelance .jobs .job .title{grid-area:title;color:var(--secondary);padding-left:10px}.freelance .jobs .job .description{grid-area:description;padding-left:10px}.freelance .jobs .job .time{grid-area:time;justify-self:end}.freelance .jobs .job .time span:nth-of-type(2){display:inline-block;width:6ch}.freelance .jobs .job .time.ongoing span:nth-of-type(2){grid-area:time;font-style:italic}.freelance .familiar-tech{display:grid;grid-template-columns:repeat(6, 1fr)}@media (max-width: 840px){.freelance .familiar-tech{grid-template-columns:repeat(4, 1fr)}}.freelance .familiar-tech .tech.has-extra{cursor:pointer;text-decoration:underline;text-decoration-style:dotted}.freelance .familiar-tech .tech.has-extra .extra{display:none}.freelance .familiar-tech .tech.has-extra:hover .extra{display:block;position:absolute;border:1px solid var(--accent);background:var(--background-2);padding:0 .5em 0 .5em}@media (max-width: 900px){header nav{position:absolute;right:4.3em}}@media (max-width: 840px){body{font-size:16px}.container{max-width:90%;margin:0 auto}article header{display:block;border-bottom:none}article header h1{border-bottom:thin solid var(--secondary)}article header aside{padding-bottom:0em}}