﻿@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url("/fonts/jetbrains-mono-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}@font-face{font-family:'JetBrains Mono';font-style:italic;font-weight:100 800;font-display:swap;src:url("/fonts/jetbrains-mono-latin-italic.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}body[a="dark"]{background-color:#1e1f1d;color:#d8d4ca;--bg: #1e1f1d;--fg: #d8d4ca;--dim: #918b80;--rule: #434340}body[a="dark"] a{color:#d8d4ca}body[a="dark"] a:visited{color:#c4c0b6}body[a="dark"] details{border:1px solid #434340}body[a="dark"] details summary{color:#d8d4ca}body[a="dark"] details[open] summary{border-bottom:1px solid #434340}body[a="dark"] pre{background:#191a18}body[a="dark"] code:not(pre>code){background-color:#383936;color:#d8d4ca}body[a="dark"] *:target{background:#33322e;color:#d8d4ca}body[a="dark"] table,body[a="dark"] th,body[a="dark"] td{border:1px solid #434340}body[a="dark"] .toc{border:1px solid #434340;padding:1rem}body[a="dark"] figcaption{color:#918b80}body[a="dark"] blockquote{border-left:2px solid #5f5e5a;border-top:none;border-right:none;border-bottom:none}body[a="dark"] .site-title,body[a="dark"] .site-title:visited{color:#d8d4ca}body[a="dark"] .nav-label a,body[a="dark"] .nav-label a:visited{color:#d8d4ca}body[a="light"]{background-color:#dcd8d0;color:#2c2c28;--bg: #dcd8d0;--fg: #2c2c28;--dim: #5f5a53;--rule: #b9b6ae}body[a="light"] a{color:#2c2c28}body[a="light"] a:visited{color:#4a463f}body[a="light"] details{border:1px solid #b9b6ae}body[a="light"] details summary{color:#2c2c28}body[a="light"] details[open] summary{border-bottom:1px solid #b9b6ae}body[a="light"] pre{background:#d8d3ca}body[a="light"] code:not(pre>code){background-color:#f2f0ed;color:#2c2c28}body[a="light"] *:target{background:#ccc8c0;color:#2c2c28}body[a="light"] table,body[a="light"] th,body[a="light"] td{border:1px solid #b9b6ae}body[a="light"] .toc{border:1px solid #b9b6ae;padding:1rem}body[a="light"] figcaption{color:#5f5a53}body[a="light"] blockquote{border-left:2px solid #9e9c95;border-top:none;border-right:none;border-bottom:none}body[a="light"] .site-title,body[a="light"] .site-title:visited{color:#2c2c28}body[a="light"] .nav-label a,body[a="light"] .nav-label a:visited{color:#2c2c28}@media (prefers-color-scheme: dark){body[a="auto"]{background-color:#1e1f1d;color:#d8d4ca;--bg: #1e1f1d;--fg: #d8d4ca;--dim: #918b80;--rule: #434340}body[a="auto"] a{color:#d8d4ca}body[a="auto"] a:visited{color:#c4c0b6}body[a="auto"] details{border:1px solid #434340}body[a="auto"] details summary{color:#d8d4ca}body[a="auto"] details[open] summary{border-bottom:1px solid #434340}body[a="auto"] pre{background:#191a18}body[a="auto"] code:not(pre>code){background-color:#383936;color:#d8d4ca}body[a="auto"] *:target{background:#33322e;color:#d8d4ca}body[a="auto"] table,body[a="auto"] th,body[a="auto"] td{border:1px solid #434340}body[a="auto"] .toc{border:1px solid #434340;padding:1rem}body[a="auto"] figcaption{color:#918b80}body[a="auto"] blockquote{border-left:2px solid #5f5e5a;border-top:none;border-right:none;border-bottom:none}body[a="auto"] .site-title,body[a="auto"] .site-title:visited{color:#d8d4ca}body[a="auto"] .nav-label a,body[a="auto"] .nav-label a:visited{color:#d8d4ca}}@media (prefers-color-scheme: light){body[a="auto"]{background-color:#dcd8d0;color:#2c2c28;--bg: #dcd8d0;--fg: #2c2c28;--dim: #5f5a53;--rule: #b9b6ae}body[a="auto"] a{color:#2c2c28}body[a="auto"] a:visited{color:#4a463f}body[a="auto"] details{border:1px solid #b9b6ae}body[a="auto"] details summary{color:#2c2c28}body[a="auto"] details[open] summary{border-bottom:1px solid #b9b6ae}body[a="auto"] pre{background:#d8d3ca}body[a="auto"] code:not(pre>code){background-color:#f2f0ed;color:#2c2c28}body[a="auto"] *:target{background:#ccc8c0;color:#2c2c28}body[a="auto"] table,body[a="auto"] th,body[a="auto"] td{border:1px solid #b9b6ae}body[a="auto"] .toc{border:1px solid #b9b6ae;padding:1rem}body[a="auto"] figcaption{color:#5f5a53}body[a="auto"] blockquote{border-left:2px solid #9e9c95;border-top:none;border-right:none;border-bottom:none}body[a="auto"] .site-title,body[a="auto"] .site-title:visited{color:#2c2c28}body[a="auto"] .nav-label a,body[a="auto"] .nav-label a:visited{color:#2c2c28}}html{height:100%;overflow-y:scroll}body{font-family:"JetBrains Mono",ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;font-size:15px;line-height:1.65;margin:0;min-height:100%;overflow-wrap:break-word;-webkit-font-smoothing:antialiased}h1{font-size:20px;letter-spacing:-0.01em}h2{font-size:17px;letter-spacing:-0.005em}h3,h4,h5,h6{font-size:15px}h2,h3,h4,h5,h6{margin-top:2rem;margin-bottom:0.5rem;line-height:1.35}p{margin:1rem 0}li{margin:0.35rem 0}time,.tabular{font-variant-numeric:tabular-nums}a{text-decoration:none}a:hover{text-decoration:underline}hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}pre{padding:1em;overflow-x:auto}table{width:100%}table,th,td{border-collapse:collapse;padding:0.4rem}code{text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%}code:not(pre>code){padding:0.1em 0.2em;font-size:90%}code.has-jax{-webkit-font-smoothing:antialiased;background:inherit !important;border:none !important;font-size:100%}blockquote{padding:1rem}blockquote p{margin:0}img{max-width:100%;display:block;margin:0 auto}figcaption{text-align:center;opacity:0.5}details{padding:1rem}details summary{text-decoration:none}details[open] summary{margin-bottom:0.5em;padding-bottom:0.5em}.post-meta{display:flex;justify-content:space-between;align-items:center;color:var(--dim);font-size:13px}.post-tags{font-size:0}.layout{display:flex;max-width:900px;margin:0 auto;padding:3.5rem 2rem 6rem;gap:3.5rem}.sidebar{width:184px;flex-shrink:0;display:flex;flex-direction:column;gap:1.6rem}.sidebar .site-title{font-weight:700;text-decoration:none;display:block}.sidebar .site-subtitle{font-size:12.5px;margin:0.4rem 0 0 0;color:var(--dim);line-height:1.5}.sidebar nav a,.sidebar nav a:visited{color:inherit}.sidebar nav ul{list-style:none;padding:0;margin:0}.sidebar nav li{margin:0}.sidebar nav a{display:flex;justify-content:space-between;align-items:baseline;gap:0.5em;font-size:13.5px;padding:2px 0;border-bottom:1px solid transparent}.sidebar nav a span{color:var(--dim);font-size:12px;font-variant-numeric:tabular-nums}.sidebar nav a:hover{text-decoration:none;color:var(--fg);border-bottom-color:var(--fg)}.sidebar nav a:hover span{color:var(--fg)}.sidebar .nav-elsewhere{list-style:none;padding:0;margin:0;font-size:12.5px}.sidebar .nav-elsewhere li{margin:0}.sidebar .nav-elsewhere a,.sidebar .nav-elsewhere a:visited{color:var(--dim)}.sidebar .nav-elsewhere a:hover{color:var(--fg)}.w{flex:1;min-width:0;max-width:640px}.w>:first-child,.w>:first-child>:first-child{margin-top:0}@media (max-width: 640px){.layout{flex-direction:column;gap:2rem;padding:2rem 1rem}.sidebar{width:100%;position:static}}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--rule);padding-bottom:0.5rem;margin-bottom:0.25rem}.section-head h1,.section-head h2{margin:0;font-size:13px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;color:var(--dim)}.section-head .section-count{font-size:12.5px;color:var(--dim)}.post-preview{display:grid;grid-template-columns:104px 1fr;gap:1.25rem;padding:0.85rem 0;margin:0;border-bottom:1px solid var(--rule)}.post-preview:last-of-type{border-bottom:none}.post-preview .post-meta{display:block;margin:0;padding-top:2px;font-size:12.5px;color:var(--dim);font-variant-numeric:tabular-nums}.post-preview .post-kind{display:block;margin-top:2px;font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;opacity:0.7}.post-preview h2{margin:0 0 0.15rem 0;font-size:15px;font-weight:500;line-height:1.4}.post-preview h2 a{color:var(--fg)}.post-preview:hover h2 a{text-decoration:underline}.post-preview .post-summary,.post-preview p{margin:0;font-size:13.5px;line-height:1.5;color:var(--dim)}@media (max-width: 480px){.post-preview{grid-template-columns:1fr;gap:0.3rem}.post-preview .post-kind{display:inline;margin-left:0.75em}}.w>h1+p{font-size:13px;color:var(--dim);margin-bottom:2rem}.w ul{list-style:none;padding-left:0}.w ul li span{color:var(--dim);font-size:12.5px;font-variant-numeric:tabular-nums;margin-right:0.5em}.index-more{margin-top:1.5rem;font-size:13px}.index-more a{color:var(--dim)}.index-more a:hover{color:var(--fg)}.archive-year{margin-top:2.5rem}.archive-year h2{margin:0 0 0.25rem 0;font-size:13px;font-weight:500;letter-spacing:0.18em;color:var(--dim);border-bottom:1px solid var(--rule);padding-bottom:0.4rem}article>.post-meta{display:block;margin:0 0 0.35rem 0;font-size:12.5px}article>h1{margin-top:0;margin-bottom:1.75rem;line-height:1.3}.entry-list li{display:grid;grid-template-columns:104px 1fr;gap:1.25rem;margin:0;padding:0.45rem 0;border-bottom:1px solid var(--rule)}.entry-list li:last-child{border-bottom:none}.entry-list a{color:var(--fg)}.entry-list time,.entry-list span{margin-right:0;color:var(--dim);font-size:12.5px;font-variant-numeric:tabular-nums}.project-card{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid var(--rule)}.project-card:last-of-type{border-bottom:none}.project-card h2{margin-top:0;margin-bottom:0.15rem;font-size:15px;font-weight:500}.project-card h2 a{color:var(--fg)}.project-card:hover h2 a{text-decoration:underline}.project-card p{margin:0.4rem 0 0 0;font-size:13.5px;line-height:1.5;color:var(--dim)}.project-meta{margin:0.4rem 0 1.25rem 0;font-size:12.5px;color:var(--dim)}.project-status::before{content:"["}.project-status::after{content:"]"}.project-stack::before{content:" · "}.project-link::before{content:" · "}.project-link a{text-decoration:none}.project-tag{font-size:0}.gallery-left,.gallery-right{width:18%;margin-bottom:1rem}.gallery-left{float:left;margin-right:1.5rem}.gallery-right{float:right;margin-left:1.5rem}.gallery-clear{clear:both}img.gallery-left,img.gallery-right,.gallery-left img,.gallery-right img{cursor:pointer}.lightbox{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.9);z-index:999;cursor:pointer}.lightbox img{max-width:90%;max-height:90%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.toc{padding:1rem}.resume .resume-tagline{font-size:14.5px;margin-bottom:1rem}.resume .resume-intro{font-size:13px;color:var(--dim);margin-top:0}.resume h2{font-size:12px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;color:var(--dim);margin-top:2.5rem;margin-bottom:0.75rem;border-bottom:1px solid var(--rule);padding-bottom:0.35rem}.resume h3{font-size:15px;font-weight:700;margin-bottom:0.1rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--rule)}.resume h2+h3{border-top:none;padding-top:0;margin-top:0}.resume h3+p em{color:var(--dim);font-style:normal;font-size:13px}.resume h2+ul li{font-size:13.5px;margin:0.25rem 0}.resume h2+ul li em{color:var(--dim);font-style:normal}.resume h3~ul li{font-size:13.5px;margin:0.25rem 0}.resume h3~ul li em{color:var(--dim);font-style:normal}.resume ul{margin-top:0.5rem}.resume h2.resume-certs{margin-top:1.5rem}.resume h2.resume-certs+ul li{font-size:13.5px;margin:0.15rem 0}.resume h2.resume-certs+ul li em{color:var(--dim);font-style:normal}.resume h3.resume-prior{border-top:1px solid var(--rule);font-size:13px;font-weight:500;color:var(--dim)}.resume h3.resume-prior+ul li{font-size:13px;margin:0.15rem 0}.resume h3.resume-prior+ul li em{color:var(--dim);font-style:normal}.resume h2.resume-minor{margin-top:3rem}.resume h2.resume-minor,.resume h2.resume-minor+ul,.resume h2.resume-minor+p{font-size:12px;color:var(--dim)}.resume h2.resume-minor+ul li{font-size:12px;color:var(--fg)}
