@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&display=swap";:root{color:#171a1c;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;font-family:DM Mono,monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:#fff;min-width:320px;margin:0}button,a{font:inherit}a{color:inherit}::selection{color:#fff;background:#171a1c}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.site-shell{--ink:#111;--muted:#555;--dim:#888;--line:#ddd;--bg:#fff;background-color:var(--bg);width:min(100%,900px);color:var(--ink);margin:0 auto;padding:0 40px;font-family:DM Mono,monospace}.prompt{color:var(--dim);-webkit-user-select:none;user-select:none;margin-right:8px}h1,h2,h3,h4,p{margin:0}a{color:var(--ink);border-bottom:1px solid var(--line);text-decoration:none;transition:all .2s}a:hover{background-color:var(--ink);color:var(--bg);border-bottom-color:var(--ink)}.site-nav{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:center;margin-bottom:40px;padding:30px 0;display:flex}.wordmark{border:none;font-weight:700}.wordmark:hover{color:var(--ink);border-bottom:1px solid var(--ink);background:0 0}.site-nav nav{gap:20px;display:flex}.site-nav nav a{border:none}.section-sidebar,.mobile-menu-toggle{display:none}.hero{margin-bottom:64px}.hero-copy{animation:.6s cubic-bezier(.22,1,.36,1) both intro-arrive}.hero-facts{color:var(--muted);flex-wrap:wrap;gap:10px 24px;margin-bottom:20px;font-size:.78rem;line-height:1.6;display:flex}.hero-facts a{color:var(--ink)}.eyebrow{color:var(--muted);margin-bottom:16px}.hero h1{margin-bottom:16px;font-size:clamp(1.55rem,6.4vw,2.5rem);font-weight:500}.hero h1:after{content:"";background:var(--ink);width:.34em;height:2px;margin-left:.15em;animation:.85s step-end 3 forwards prompt-blink;display:inline-block}.hero-summary{max-width:600px;color:var(--muted);margin-bottom:32px;font-size:1rem;line-height:1.6}.hero-actions{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.hero-resume{align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.button svg,.hero-resume svg,.project-link svg{transition:transform .22s}.button:hover svg{transform:translateY(3px)}.hero-resume:hover svg,.project-link:hover svg{transform:translate(2px,-2px)}.button{border:1px solid var(--ink);align-items:center;gap:8px;padding:8px 16px;display:inline-flex}.projects-section,.about-section,.records-section{margin-bottom:80px}.section-header{margin-bottom:32px}.section-header h2{font-size:1.2rem;font-weight:500}.section-header>p{color:var(--muted);margin-top:10px;font-size:.85rem;line-height:1.6}section[id],article[id]{scroll-margin-top:30px}.more-projects{margin-top:24px}.more-projects summary{border-bottom:1px dashed var(--line);cursor:pointer;justify-content:space-between;align-items:center;padding:18px 0;font-size:.85rem;list-style:none;display:flex}.more-projects summary::-webkit-details-marker{display:none}.more-projects summary:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.more-projects summary:hover .archive-toggle{transform:rotate(90deg)}.more-projects[open] .archive-toggle{transform:rotate(45deg)}.archive-toggle{font-size:1.2rem;transition:transform .22s}.project-count{color:var(--muted);margin-left:8px}.more-projects>.projects-list{margin-top:24px}.projects-list{flex-direction:column;gap:24px;display:flex}.project-card{border:1px solid var(--line);padding:24px;transition:border-color .22s,box-shadow .22s,transform .22s}@media (hover:hover) and (prefers-reduced-motion:no-preference){.project-card:hover{border-color:var(--ink);transform:translateY(-3px);box-shadow:4px 4px #eee}.skill-chip:hover{border-color:var(--ink);color:var(--ink);transform:translateY(-2px)}}.project-card:focus-within{border-color:var(--ink)}.skill-chip{transition:transform .18s,border-color .18s,color .18s}.reading-progress{display:none}@supports (animation-timeline:scroll()){.reading-progress{z-index:20;background:var(--ink);transform-origin:0;width:100%;height:2px;animation:linear both reading-progress;animation-timeline:scroll();display:block;position:fixed;top:0;left:0}}@keyframes reading-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes intro-arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes prompt-blink{0%,45%{opacity:1}46%,to{opacity:0}}.is-current{border-left:2px solid var(--ink)}.current-label{color:var(--muted);align-items:center;gap:8px;margin-bottom:16px;font-size:.78rem;display:flex}.current-label:before{content:"";border:1px solid var(--ink);background:radial-gradient(circle, var(--ink) 1.5px, transparent 2px);border-radius:50%;flex-shrink:0;width:8px;height:8px}.project-header{align-items:baseline;gap:16px;margin-bottom:16px;display:flex}.project-id{color:var(--dim)}.project-title{font-size:1.2rem;font-weight:700}.project-description{color:var(--muted);margin-bottom:16px;line-height:1.5}.project-tags{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.tag{color:var(--dim);white-space:nowrap;font-size:.85rem}.tag:before{content:"#"}.project-link{align-items:center;gap:4px;font-size:.9rem;display:inline-flex}.project-actions{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.project-writeup-link{border:1px solid var(--line);padding:7px 10px;font-size:.82rem}.project-writeup-link:hover{border-color:var(--ink)}.project-link--muted{color:var(--dim)}.about-copy{color:var(--muted);max-width:700px;margin-bottom:40px;line-height:1.6}.about-copy p{margin-bottom:16px}.experience-list{flex-direction:column;gap:32px;display:flex}.experience-row{gap:40px;display:flex}.experience-row.is-current{padding:20px}.experience-current-label{margin:6px 0 0}.experience-meta{flex-direction:column;flex-shrink:0;gap:4px;width:150px;display:flex}.exp-role{font-weight:700}.exp-date{color:var(--dim);font-size:.9rem}.experience-details h3{margin-bottom:8px;font-size:1.1rem}.exp-desc{color:var(--muted);margin-top:12px;line-height:1.5}.record-grid{flex-direction:column;gap:40px;display:flex}.record-section{border-left:2px solid var(--line);padding-left:24px}.record-label{color:var(--dim);margin-bottom:20px;font-weight:400}.record-content{flex-direction:column;gap:24px;display:flex}.record-item h4{margin-bottom:4px;font-size:1.05rem}.record-sub{color:var(--dim);margin-top:4px;font-size:.9rem}.toolbox-group{line-height:1.6}.toolbox-key{margin-right:8px;font-weight:700}.skills-section{border:1px solid var(--line);border-left:2px solid var(--ink);padding:24px}.skills-section .record-label{color:var(--ink);font-weight:500}.skills-section .toolbox-key{margin:0 0 10px;font-size:.9rem}.skill-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.skill-chip{border:1px solid var(--line);color:var(--muted);overflow-wrap:anywhere;background:#fafafa;max-width:100%;padding:4px 9px;font-size:.82rem}.signal-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.signal-list li,.prompt-text{overflow-wrap:anywhere}.writeups-page,.writeup-page{min-height:500px;margin-bottom:80px}.writeups-intro{max-width:620px;margin-bottom:40px}.writeups-intro>p:first-child,.writeup-not-found>p{color:var(--muted);margin-bottom:16px}.writeups-intro h1,.writeup-not-found h1,.writeup-document h1{margin-bottom:20px;font-size:2rem;font-weight:500}.writeups-intro>p:last-child{color:var(--muted);line-height:1.6}.writeups-list{border-top:1px solid var(--line);flex-direction:column;display:flex}.writeup-row{border-bottom:1px solid var(--line);grid-template-columns:64px minmax(0,1fr) auto;align-items:baseline;gap:16px;padding:18px 0;display:grid}.writeup-row span{color:var(--dim);font-size:.85rem}.writeup-row span:last-child{color:var(--muted)}.writeup-row strong{font-size:1rem;font-weight:500}.writeup-back{color:var(--muted);border:none;margin-bottom:36px;display:inline-flex}.writeup-back:hover{color:var(--ink);border-bottom:1px solid var(--ink);background:0 0}.writeup-document{max-width:720px}.writeup-document-header{border-bottom:1px dashed var(--line);padding-bottom:24px}.writeup-document-header span{color:var(--dim);margin-bottom:14px;display:block}.writeup-document-header h1{margin-bottom:0}.writeup-draft{border-left:2px solid var(--line);color:var(--muted);margin-top:28px;padding-left:16px;line-height:1.6}.markdown-body{color:var(--muted);line-height:1.7}.markdown-body h2,.markdown-body h3,.markdown-body h4{color:var(--ink);margin:38px 0 14px;font-weight:500}.markdown-body h2{font-size:1.35rem}.markdown-body h3{font-size:1.1rem}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body pre,.markdown-body blockquote{margin:20px 0}.markdown-body ul,.markdown-body ol{padding-left:24px}.markdown-body li+li{margin-top:8px}.markdown-body code{color:var(--ink);background:#f4f4f4;padding:1px 4px;font-family:inherit;font-size:.9em}.markdown-body pre{border:1px solid var(--line);background:#fafafa;padding:16px;overflow-x:auto}.markdown-body pre code{background:0 0;padding:0}.markdown-body blockquote{border-left:2px solid var(--line);margin-left:0;padding-left:16px}.site-footer{border-top:1px dashed var(--line);justify-content:space-between;align-items:flex-start;padding:40px 0;display:flex}.prompt-text{margin-bottom:20px}.footer-links{gap:20px;display:flex}.footer-links a{border:none}.footer-meta{color:var(--dim)}@media (width<=768px){.site-shell{padding:0 24px}.hero-facts{flex-direction:column;gap:6px}.project-header{gap:12px}.project-card{padding:20px}.site-nav{margin-bottom:44px;padding:28px 0;position:relative}.mobile-menu-toggle{border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;justify-content:center;align-items:center;padding:6px 10px;display:inline-flex}.mobile-menu-toggle:hover,.mobile-menu-toggle:focus-visible{border-color:var(--ink);background:var(--ink);color:var(--bg);outline:none}.site-nav nav{z-index:10;border:1px dashed var(--line);background:var(--bg);flex-direction:column;gap:0;min-width:148px;padding:8px 0;display:none;position:absolute;top:calc(100% + 10px);right:0}.site-nav nav.is-open{display:flex}.site-nav nav a{padding:9px 12px}.writeups-page,.writeup-page{min-height:420px;margin-bottom:64px}.writeup-row{grid-template-columns:48px minmax(0,1fr);gap:10px}.writeup-row span:last-child{grid-column:2}.experience-row{flex-direction:column;gap:16px}.experience-meta{flex-flow:wrap;justify-content:space-between;gap:8px 16px;width:auto}.site-footer{flex-direction:column;gap:32px}}@media (width>=1024px){.section-sidebar{z-index:5;flex-direction:column;gap:0;display:flex;position:fixed;top:50%;left:clamp(18px,50vw - 540px,72px);transform:translateY(-50%)}.section-sidebar-link{background:0 0;border:none;align-items:center;width:28px;min-height:16px;display:flex;position:relative}.section-sidebar-link:hover,.section-sidebar-link:focus-visible{color:inherit;background:0 0;border:none;outline:none}.section-sidebar-line{background:var(--dim);width:10px;height:2px;transition:width .16s,background-color .16s;display:block}.section-sidebar-link.is-active .section-sidebar-line{background:var(--ink);width:16px}.section-sidebar-link.is-near-hover .section-sidebar-line{background:var(--muted);width:18px}.section-sidebar-label{border:1px dashed var(--line);background:var(--bg);color:var(--ink);opacity:0;pointer-events:none;white-space:nowrap;padding:5px 8px;font-size:.72rem;line-height:1;transition:opacity .16s,transform .16s;position:absolute;top:50%;left:33px;transform:translate(-5px,-50%)}.section-sidebar-link:hover .section-sidebar-line,.section-sidebar-link:focus-visible .section-sidebar-line{background:var(--ink);width:28px}.section-sidebar-link:hover .section-sidebar-label,.section-sidebar-link:focus-visible .section-sidebar-label{opacity:1;transform:translateY(-50%)}}@media (prefers-reduced-motion:reduce){.site-shell *,.site-shell :before,.site-shell :after{transition:none!important;animation:none!important}.hero h1:after,.reading-progress{display:none}}.portfolio-search{max-width:700px;margin:0 0 36px;position:relative}.portfolio-search label{color:var(--muted);margin-bottom:12px;font-size:.85rem;display:block}.portfolio-search-field{border:1px solid var(--line);background:var(--bg);align-items:center;gap:8px;padding:12px 16px;transition:border-color .22s,box-shadow .22s;display:flex;position:relative}.portfolio-search-field:after{content:"";background:var(--ink);transform-origin:0;height:2px;transition:transform .32s cubic-bezier(.22,1,.36,1);position:absolute;bottom:-1px;left:-1px;right:-1px;transform:scaleX(0)}.portfolio-search-field:focus-within:after{transform:scaleX(1)}.portfolio-search-field:focus-within{box-shadow:3px 3px #eee}.search-prompt{color:var(--dim);margin-right:6px;transition:transform .22s,color .22s}.portfolio-search-field:focus-within .search-prompt{color:var(--ink);transform:translate(3px)}.portfolio-search-field:focus-within{border-color:var(--ink)}.portfolio-search input{width:100%;min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:none;padding:0;font-size:.9rem}.portfolio-search input::placeholder{color:var(--muted);opacity:1}.portfolio-search input::-webkit-search-cancel-button{display:none}.portfolio-search kbd{white-space:nowrap;font:inherit;color:var(--muted);font-size:.7rem}.portfolio-search button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:4px;font-size:.78rem}.portfolio-search button:hover{color:var(--ink);text-decoration:underline}.portfolio-search button:focus-visible,.portfolio-search-result:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.portfolio-search-panel{z-index:8;border:1px solid var(--ink);background:var(--bg);transform-origin:top;opacity:1;max-height:min(480px,55vh);transition:opacity .16s ease, transform .16s ease, display .16s allow-discrete;border-top:0;position:absolute;top:100%;left:0;right:0;overflow-y:auto;transform:translateY(0)scale(1);box-shadow:0 8px 18px #0000000a}.portfolio-search-panel[hidden]{opacity:0;pointer-events:none;display:none;transform:translateY(-6px)scale(.985)}.portfolio-search-panel:not([hidden]){animation:.26s cubic-bezier(.22,1,.36,1) both search-unfold}.portfolio-search-list li{animation:.28s cubic-bezier(.22,1,.36,1) both search-result-arrive;animation-delay:calc(var(--result-order,0) * 35ms)}.portfolio-search-suggestions button{transition:background-color .18s,color .18s,border-color .18s}.portfolio-search-suggestions button:hover{background:var(--ink);color:var(--bg);border-color:var(--ink);text-decoration:none}@keyframes search-unfold{0%{opacity:0;transform:translateY(-8px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes search-result-arrive{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.portfolio-search-suggestions{flex-wrap:wrap;gap:10px 16px;padding:18px 16px;display:flex}.portfolio-search-suggestions p{width:100%;color:var(--muted);font-size:.8rem}.portfolio-search-suggestions button{border-bottom:1px solid var(--line)}.portfolio-search-status{color:var(--muted);padding:14px 16px;font-size:.78rem;line-height:1.6}.portfolio-search-list{margin:0;padding:0;list-style:none}.portfolio-search-result{border:0;border-top:1px solid var(--line);border-left:2px solid #0000;padding:16px;transition:background-color .16s,border-left-color .16s;display:block}.portfolio-search-result:hover,.portfolio-search-result:focus-visible{color:var(--ink);border-left-color:var(--ink);background:#f5f5f5}.portfolio-search-result-heading{justify-content:space-between;gap:16px;font-size:.85rem;display:flex}.portfolio-search-result-heading strong{font-weight:500}.portfolio-search-result-heading>span{color:var(--muted);flex-shrink:0;font-size:.72rem}.portfolio-search-excerpt{color:var(--muted);overflow-wrap:anywhere;margin-top:8px;font-size:.8rem;line-height:1.6;display:block}@media (width<=600px){.portfolio-search-field{gap:4px;padding:14px 10px}.portfolio-search input{font-size:16px}.portfolio-search kbd{display:none}.portfolio-search-result-heading{flex-wrap:wrap;gap:6px}}
