*,:after,:before{box-sizing:border-box}*{margin:0}body{line-height:1.5;-webkit-font-smoothing:antialiased}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}a{text-decoration:none;color:inherit}.content{background-image:url(/image/endless-constellation.svg);color:#fff}.content>*{display:flex;flex-direction:column;padding:1em}.content>:nth-child(n+2){padding-top:2em}.content>*>*{align-self:center}.header{display:flex;flex-direction:column;padding:1em;background-image:linear-gradient(#fde0d9,#fff2cc);text-align:center}.header>*{align-self:center}.header>:nth-child(2){padding-top:.5em}.profile-image{vertical-align:middle;border-radius:50%;border:3px solid #1a1a1a;max-width:min(250px,60vw);height:auto}.content section{scroll-margin-top:4.5rem}.prompt{color:#8a0038}.profile .prompt{color:#ffc6d5}.site-nav{display:flex;align-items:center;justify-content:space-between;gap:.5em 1.5em;flex-wrap:wrap;padding:.75em 1.25em;background-color:#141414;color:#f2f2f2;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}.site-nav a{text-decoration:none}.site-nav a,.site-nav a:visited{color:#f2f2f2}.site-nav a.active{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.site-nav .site-wordmark{font-weight:700}.site-nav .site-links{display:flex;align-items:center;gap:1.25em;flex-wrap:wrap}.site-nav{position:-webkit-sticky;position:sticky;top:0;z-index:50;border-bottom:2px solid #444}.site-nav .site-links a{padding:.375em .25em}.site-nav .nav-toggle{display:none;font:inherit;color:inherit;background:none;border:2px solid;border-radius:.375em;padding:.5em .75em;min-height:44px;cursor:pointer}@media(max-width:640px){.site-nav .site-wordmark{order:1}.site-nav .nav-toggle{display:block;order:2;margin-left:auto}.site-nav .site-links{order:3}.site-nav .site-links:not(.open) a.collapsible{display:none}.site-nav .site-links{gap:1em}.site-nav .site-links.open{display:flex;flex-basis:100%;flex-direction:column;align-items:stretch;gap:0}.site-nav .site-links.open a{display:block;padding:.75em .25em;border-top:1px solid #444}}.site-footer{display:flex;flex-direction:column;gap:1em;padding:2em 1.25em 2.5em;background-color:#141414;color:#cfcfcf;border-top:1px solid #444;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:.875rem}.site-footer a,.site-footer a:visited{color:#f2f2f2}.site-footer .site-wordmark{font-weight:700;font-size:1rem;color:#f2f2f2;text-decoration:none}.site-footer .site-links{display:flex;flex-wrap:wrap;gap:.5em 1.25em;margin:0}.site-footer .footer-contact{scroll-margin-top:4.5rem;display:flex;flex-direction:column;gap:1em;border-top:1px solid #444;padding-top:1.5em}.site-footer .footer-contact h2{font-size:1.25rem;margin:0}.site-footer .footer-contact .prompt{color:#ffc6d5}.site-footer .footer-contact p{margin:0;padding-top:0}.site-footer .footer-contact .profile-links{justify-content:flex-start}.site-footer .footer-contact .profile-links>*{margin-left:0;margin-right:1em}.back-to-top{position:fixed;right:1.25em;bottom:1.25em;z-index:50;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;color:#f2f2f2;background-color:#141414;border:2px solid #444;border-radius:.375em;padding:.5em .75em;min-height:44px;min-width:44px;cursor:pointer}.about>h3{padding-top:.5em}.experience{background-image:linear-gradient(#cabd80,#e1ceb1);color:#000}.experience>:nth-child(n+3){margin-top:2em}.card{display:flex;flex-direction:column;border:2px solid #1a1a1a;background-color:#fffdf7;color:#1a1a1a;padding:1.25em;width:min(100%,640px);box-sizing:border-box}.card a,.card a:visited{color:#8a0038}.card>*{align-self:center}.card>h3{padding-top:.5em}.card img{height:auto}.meta-block{margin-top:1.5em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}.highlighted-projects>:nth-child(n+3){margin-top:2em}.profile{background-color:#2f4f4f}.profile>:nth-child(n+2){margin-top:1em}.profile-links{display:flex;flex-direction:row;justify-content:center;align-items:center}.profile-links>*{margin-left:1em;margin-right:1em}.blog{background-color:#141414;color:#f2f2f2;min-height:100vh;padding:1em}.blog a,.blog a:visited{color:#ffc6d5}.blog>*{max-width:800px;margin-left:auto;margin-right:auto}.blog-index h1,.blog-post h1{font-size:2.5rem;line-height:1.2;max-width:100%}.blog-list{list-style:none;padding-left:0}.blog-list>li{margin-top:2em}.blog-list>li+li{border-top:1px solid #555;padding-top:1.5em}.blog-list h2{font-size:1.5rem;line-height:1.3}.blog-list h2 a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.blog-year{margin-top:2.5em}.blog-year>h2{font-size:1.25rem;color:#cfcfcf;border-bottom:1px solid #555;padding-bottom:.5em}.blog-search{margin-top:1.5em}.search-field{display:flex;flex-direction:column;gap:.5em;color:#cfcfcf}.search-field,.search-field input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}.search-field input{font-size:1rem;color:#f2f2f2;background-color:#1e1e1e;border:1px solid #555;border-radius:.375em;padding:.75em 1em;min-height:44px;max-width:70ch}.tag-chips{display:flex;flex-wrap:wrap;gap:.5em;margin-top:1em}.tag-chip{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:.875rem;color:#f2f2f2;background:none;border:1px solid #555;border-radius:999px;padding:.5em 1em;min-height:44px;cursor:pointer}.tag-chip[aria-pressed=true]{color:#ffc6d5;border-color:#ffc6d5}.search-meta{margin-top:1.5em}.blog-pages,.search-meta{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;color:#cfcfcf}.blog-pages{display:flex;gap:1.5em;align-items:baseline;flex-wrap:wrap;margin-top:2.5em;padding-top:1.5em;border-top:1px solid #555}.blog-pages button{font:inherit;color:#ffc6d5;background:none;border:none;padding:.375em .25em;min-height:44px;cursor:pointer}.blog-meta,.blog-tags{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;color:#cfcfcf;font-size:1rem;padding-top:.5em}.blog-post{font-size:1.125rem;padding-bottom:3em}.blog-post header{margin-bottom:1em}.blog-post h2{font-size:1.75rem;margin-top:1.5em}.blog-post h3{font-size:1.4rem;margin-top:1.5em}.blog-post ol,.blog-post p,.blog-post ul{max-width:70ch;line-height:1.7}.blog-post a{overflow-wrap:anywhere}.blog-post ol,.blog-post ul{padding-left:1.5em}.blog-post li{margin-top:.5em}.blog-post blockquote{border-left:3px solid #ffc6d5;margin-left:0;padding-left:1em;color:#e2e2e2}.blog-post table{display:block;overflow-x:auto;border-collapse:collapse;margin-top:1.5em;font-size:.95em}.blog-post td,.blog-post th{border:1px solid #555;padding:.5em .75em;text-align:left;vertical-align:top}.blog-post th{background-color:#242424}.blog-post pre{overflow-x:auto;background-color:#1e1e1e;border:1px solid #333;padding:1em;margin-top:1.5em;font-size:.95em;line-height:1.5}.blog-post code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}.blog-post :not(pre)>code{background-color:#2a2a2a;padding:.15em .4em}.blog-post hr{margin-top:2em;border-color:#444}.blog-post .chart-figure{margin:2em 0 0;max-width:100%}.blog-post .chart-figure figcaption{margin-top:1em;max-width:70ch;line-height:1.7;color:#cfcfcf;font-size:1rem}.post-footer{display:flex;flex-direction:column;gap:1em;margin-top:3em;padding-top:1.5em;padding-bottom:3em;border-top:2px solid #555;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}.post-footer-adjacent{display:flex;justify-content:space-between;gap:.5em 2em;flex-wrap:wrap}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.header-subtitle,h1,h2,h3,h4{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}.header-subtitle,h1,h2,h3{text-wrap:balance}h1{font-size:clamp(2rem,8vw,4rem)}h2{font-size:clamp(1.75rem,6vw,3rem)}h3{font-size:clamp(1.35rem,4.5vw,2rem)}h4{font-size:1.5rem;margin-top:.25em;max-width:700px}p{padding-top:1em;max-width:600px}b{font-weight:700}a,a:visited{color:#ffc6d5}.experience a,.experience a:visited,.header a,.header a:visited{color:#8a0038}a:focus-visible{outline:3px solid currentColor;outline-offset:2px}.header-subtitle{font-size:clamp(1.15rem,5vw,2rem);font-weight:700;margin:0;max-width:700px}