@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2")}:root{color-scheme:dark;font-synthesis:none;--background:#151515;--text:#bdbdbb;--strong:#eeeeec;--muted:#92928f;--line:#323230;--subtle:#1e1e1d;--green:#a3c5a6;--blue:#97b7db;--cyan:#8dbdc9;--lavender:#c1b3da;--amber:#cdbb95;--button-background:#ededeb;--button-text:#20201f;background:var(--background);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:450}:root[data-theme=light]{color-scheme:light;--background:#faf9f6;--text:#62615e;--strong:#252522;--muted:#74726d;--line:#dddbd4;--subtle:#f1f0eb;--green:#43734a;--blue:#426991;--cyan:#39727f;--lavender:#756094;--amber:#80662f;--button-background:#292926;--button-text:#faf9f6}*{box-sizing:border-box}html{scroll-padding-top:40px}body{margin:0}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid var(--blue);outline-offset:6px;border-radius:3px}::selection{background:var(--strong);color:var(--background)}img{max-width:100%;display:block}svg{flex-shrink:0}p,h1,h2,h3{margin:0}strong{color:var(--strong);font-weight:620}.page-shell{width:min(100% - 64px,704px);margin:64px auto 0;animation:.36s cubic-bezier(.2,.7,.3,1) both page-enter}@keyframes page-enter{0%{opacity:0}to{opacity:1}}.introduction,.detail-content{animation:.36s cubic-bezier(.2,.7,.3,1) both content-enter}@keyframes content-enter{0%{transform:translateY(6px)}to{transform:translateY(0)}}.site-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:34px;display:flex}.identity{letter-spacing:-.45px;align-items:center;gap:15px;min-width:0;font-size:18px;line-height:1.5;display:inline-flex}.identity img{object-fit:cover;object-position:55% 35%;border-radius:50%;flex-shrink:0;width:44px;height:44px}.identity strong{font-weight:620}.identity-role{color:var(--muted)}.theme-toggle{width:40px;height:40px;color:var(--muted);background:0 0;border:0;border-radius:50%;flex-shrink:0;place-items:center;padding:0;transition:color .15s,background .15s;display:none}.js .theme-toggle{display:grid}.theme-toggle:hover{color:var(--strong);background:var(--subtle)}.theme-toggle svg{width:19px;height:19px}.moon-icon,[data-theme=light] .sun-icon{display:none}[data-theme=light] .moon-icon{display:block}.introduction{letter-spacing:-.35px;font-size:20px;line-height:1.7}.introduction p+p{margin-top:22px}.inline-link{color:var(--strong);text-decoration-line:underline;text-decoration-color:color-mix(in srgb, currentColor 28%, transparent);text-underline-offset:5px;text-decoration-thickness:1px;transition:text-decoration-color .15s}.inline-link:hover{text-decoration-color:currentColor}.green{color:var(--green)}.blue{color:var(--blue)}.cyan{color:var(--cyan)}.lavender{color:var(--lavender)}.amber{color:var(--amber)}.serif{color:var(--strong);white-space:nowrap;font-family:Georgia,Times New Roman,serif;font-size:1.12em;font-weight:400}.contact{margin-top:32px}.contact-actions{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.button{border:1px solid #0000;border-radius:30px;justify-content:center;align-items:center;gap:9px;min-height:38px;padding:8px 16px;font-size:14px;font-weight:500;line-height:1.45;transition:border-color .15s;display:inline-flex}.button svg{width:15px;height:15px}.button-primary{background:var(--button-background);color:var(--button-text)}.button-primary:hover{background:color-mix(in srgb, var(--button-background) 85%, var(--background))}.button-secondary{background:var(--subtle);border-color:var(--line);color:var(--text)}.button-secondary:hover{color:var(--strong);border-color:var(--muted)}.copy-control{max-width:100%}.copy-email-button{display:none}.js .copy-email-button{display:inline-flex}.js .no-js-message{display:none}.copy-email-button,.no-js-message{min-inline-size:174px}.copy-email-button:disabled{cursor:progress}.copy-check,.is-copied .copy-send{display:none}.is-copied .copy-check{display:block}.copy-fallback{max-width:100%;margin-top:12px}.copy-fallback label{color:var(--muted);font-size:12px;display:block}.copy-fallback input{width:min(310px,100%);font:inherit;color:var(--strong);background:var(--subtle);border:1px solid var(--line);border-radius:5px;margin-top:7px;padding:10px 12px;font-size:12px;display:block}.copy-fallback input:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.social-links{align-items:center;gap:20px;margin-top:22px;display:flex}.social-links a{width:24px;height:32px;color:var(--muted);place-items:center;transition:color .15s;display:inline-grid}.social-links a:hover{color:var(--strong)}.social-links svg{width:22px;height:22px}.portfolio-nav{border-top:1px dashed var(--line);color:var(--muted);flex-wrap:wrap;gap:10px 24px;margin-top:34px;padding-top:23px;font-size:15px;line-height:1.8;display:flex}.portfolio-nav a{padding-block:3px}.portfolio-nav a:hover,.portfolio-nav a[aria-current]{color:var(--strong)}.page-heading{margin-bottom:30px}.back-link{color:var(--muted);margin-bottom:26px;font-size:13px;display:inline-block}.back-link:hover{color:var(--strong)}.page-heading h1{letter-spacing:-.7px;color:var(--strong);font-size:28px;font-weight:620;line-height:1.3}.page-heading p{margin-top:12px;font-size:15px;line-height:1.8}.detail-content{padding:7px 0 34px}.detail-content article+article{border-top:1px solid var(--line);margin-top:29px;padding-top:25px}.detail-content h2{color:var(--strong);letter-spacing:-.2px;font-size:18px;font-weight:600;line-height:1.6}.detail-content h2 a{align-items:center;gap:7px;display:inline-flex}.detail-content h2 a:hover{color:var(--blue)}.detail-content h2 svg{width:13px;height:13px;color:var(--muted)}.detail-content p{margin-top:10px;font-size:15px;line-height:1.8}.detail-content .stack-line{color:var(--muted);margin-top:12px;font-size:12px;line-height:1.7}.job-heading{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.job-period{color:var(--muted);font-size:12px;line-height:1.7}.detail-content .job-role{color:var(--muted);margin-top:4px;font-size:12px}.detail-content .job-context{color:var(--muted);margin-top:2px;font-size:12px}.detail-content .client-work{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}.skills-list{margin:0}.skills-list>div{grid-template-columns:140px 1fr;gap:20px;padding:12px 0;font-size:14px;line-height:1.8;display:grid}.skills-list dt{color:var(--strong);font-weight:550}.skills-list dd{margin:0}.hiring-content h2{margin-top:22px}.hiring-content ul{margin-block:14px 22px;padding-left:20px;font-size:15px;line-height:1.85}.hiring-content li+li{margin-top:8px}.hiring-email{overflow-wrap:anywhere}.site-footer{border-top:1px dashed var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:20px;margin-top:60px;padding-top:23px;padding-bottom:52px;font-size:12px;line-height:1.8;display:flex}.footer-location{align-items:center;gap:6px;display:inline-flex}.site-footer nav{align-items:center;gap:18px;display:flex}.site-footer>span>span{margin-inline:5px}.site-footer a{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.site-footer a:hover{color:var(--strong)}.site-footer svg{width:12px;height:12px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--strong);color:var(--background);padding:12px 20px;position:fixed;top:-80px;left:16px}.skip-link:focus{top:16px}.not-found{padding-block:25px 100px}.not-found .eyebrow{color:var(--muted);font-size:13px}.not-found h1{color:var(--strong);letter-spacing:-.8px;margin-block:20px;font-size:30px;font-weight:500}.not-found p{margin-bottom:28px;font-size:17px;line-height:1.8}@media (width<=760px){.page-shell{width:calc(100% - 48px);margin-top:44px}.introduction{font-size:18px;line-height:1.7}.site-header{margin-bottom:30px}.identity{gap:12px;font-size:15px}.identity img{width:38px;height:38px}}@media (width<=480px){html{scroll-padding-top:24px}.page-shell{width:calc(100% - 40px);margin-top:32px}.site-header{gap:8px;margin-bottom:28px}.identity{letter-spacing:-.3px;gap:10px;font-size:13px}.identity img{width:34px;height:34px}.identity-role{font-size:12px;display:block}.identity-comma{display:none}.theme-toggle{width:34px;height:34px}.theme-toggle svg{width:18px;height:18px}.introduction{letter-spacing:-.27px;font-size:17px;line-height:1.75}.introduction p+p{margin-top:20px}.contact{margin-top:32px}.contact-actions{gap:10px}.button{gap:7px;min-height:38px;padding:8px 13px;font-size:12px}.copy-email-button,.no-js-message{min-inline-size:146px}.social-links{margin-top:18px}.portfolio-nav{gap:8px 20px;margin-top:28px;padding-top:20px;font-size:13px}.job-heading{flex-wrap:wrap;gap:3px 14px}.job-period{font-size:10px}.detail-content p{font-size:14px}.detail-content .stack-line{font-size:11px}.skills-list>div{grid-template-columns:1fr;gap:4px}.site-footer{gap:12px;margin-top:35px;padding-bottom:38px;font-size:10px}.site-footer>span>span{margin-inline:2px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media print{:root{--background:white;--text:#333;--strong:#111;--muted:#555;--line:#ddd;color-scheme:light}.page-shell{width:100%;margin-top:0;animation:none}.theme-toggle,.contact-actions,.social-links{display:none!important}.site-header{margin-bottom:30px}.introduction{font-size:12pt}.detail-content{content-visibility:visible;display:block}.introduction,.detail-content{animation:none}.site-footer{padding-bottom:0}}
