:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--background:#0a0a0a;--text:#d4d4d4;--text-mid:#999;--text-dim:#5f5f5f;--border:#3a3a3a;--accent:#8bb9e1;--accent-selection:#8bb9e126;--content-gap:20px;font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace}*{box-sizing:border-box}html{scrollbar-width:none;min-width:320px;min-height:100%}html::-webkit-scrollbar{display:none}body{background:var(--background);min-width:320px;min-height:100vh;color:var(--text);margin:0;font-size:14px;font-weight:300;line-height:1.8}button,a{font:inherit}::selection{background:var(--accent-selection);color:#fff}.page-shell{width:min(100%,800px);min-height:100vh;margin:0 auto;padding-inline:32px}.intro{padding-top:100px}.section-label{color:var(--text-mid);font:inherit;margin:0}h1{margin:0 0 var(--content-gap);color:#fff;font:inherit;letter-spacing:-.02em;text-transform:uppercase;font-size:32px;font-weight:500;line-height:1.3}.bio{margin:0}.bio,.project-description,.project-summary,.description-copy,.carousel-caption{color:var(--text-mid);line-height:1.75}.work{padding-top:var(--content-gap)}.projects{padding-top:calc(var(--content-gap) * 3);padding-bottom:100px}.projects-heading{color:#fff;letter-spacing:-.02em;text-transform:uppercase;font-size:20px;font-weight:500;line-height:1.3}.projects-header{justify-content:space-between;align-items:center;gap:var(--content-gap);margin-bottom:var(--content-gap);display:flex}.category-filter{flex-wrap:wrap;justify-content:flex-end;gap:4px 14px;display:flex}.category-filter button,.carousel-controls button{cursor:pointer;background:0 0;border:0;padding:0;transition:color .25s}.category-filter button{color:var(--text-dim);text-transform:lowercase;border-bottom:1px solid #0000;padding-bottom:2px;font-size:13px}.category-filter button:hover,.category-filter button:focus-visible{color:var(--accent)}.category-filter button.active{color:#fff}.category-filter button:focus-visible{outline:1px solid var(--accent);outline-offset:4px}.work-list{margin:0;padding:0;list-style:none}.work-list li{color:var(--text-mid);padding-left:20px;position:relative}.work-list li:before{color:var(--accent);content:"·";position:absolute;top:0;left:0}.text-accent{color:var(--accent)}.intro .bio,.work .section-label,.work-list li{color:#fff}.project-list{gap:var(--content-gap);display:grid}.filter-fade{animation:.25s both detail-reveal}.project{color:inherit;border-radius:6px;margin:0 -12px;padding:10px 12px;text-decoration:none;transition:background-color .25s;display:block}.project-name,.project-description{margin:0;font-size:14px}.project-name{color:var(--text);font-size:15px;font-weight:600;transition:color .25s}.project:hover .project-name,.project:focus-visible .project-name{color:var(--accent)}.project:hover,.project:focus-visible{background-color:#ffffff0a}.project:focus-visible{outline-offset:2px;outline:1px solid #8bb9e159}.project-page{padding-block:100px}.project-title-row{margin-bottom:var(--content-gap);align-items:center;gap:20px;display:flex}.project-title-row h1{margin-bottom:0}.project-title-link{color:inherit;text-decoration:none;transition:color .25s}.project-title-link:hover,.project-title-link:focus-visible{color:var(--accent)}.project-title-link:focus-visible{outline:1px solid var(--accent);outline-offset:5px}.github-link{color:var(--text-mid);flex:none;transition:color .25s;display:inline-flex}.github-link svg{width:21px;height:21px}.project-source:hover,.project-source:focus-visible,.github-link:hover,.github-link:focus-visible,.carousel-controls button:hover,.carousel-controls button:focus-visible,.social-links a:hover,.social-links a:focus-visible{color:var(--accent)}.project-source:focus-visible,.github-link:focus-visible,.carousel-controls button:focus-visible,.social-links a:focus-visible{outline:1px solid var(--accent);outline-offset:5px}.project-summary{margin:0}.project-source,.social-links a{border-bottom:1px solid var(--border);font-weight:400;text-decoration:none;transition:color .25s}.project-source{margin-top:var(--content-gap);color:var(--text);display:inline-block}.project-writeup{margin-top:calc(var(--content-gap) * 2)}.detail-divider{margin-bottom:calc(var(--content-gap) * 1.5);border-top:1px solid var(--border)}.description-copy{color:#fff}.description-copy p{margin:0 0 var(--content-gap)}.description-copy p:last-child{margin-bottom:0}.carousel{gap:calc(var(--content-gap) * 2);margin-top:calc(var(--content-gap) * 2);grid-template-columns:minmax(0,500px) minmax(180px,1fr);align-items:start;display:grid}.carousel-media{min-width:0}.carousel-frame{border-radius:6px;overflow:hidden}.carousel-frame img{width:100%;display:block}.carousel-controls{color:var(--text-dim);grid-template-columns:1fr auto 1fr;align-items:center;margin-top:10px;font-size:13px;display:grid}.carousel-controls button{width:fit-content;color:var(--text-dim)}.carousel-controls button:last-child{justify-self:end}.carousel-caption{align-self:center}.carousel-caption p{margin:0}.social-section{padding-top:var(--content-gap)}.social-links{gap:var(--content-gap);flex-wrap:wrap;display:flex}.social-links a{color:#fff}.fade-in{opacity:0;transition:opacity .6s ease var(--fade-delay,0s), transform .6s ease var(--fade-delay,0s);transform:translateY(12px)}.fade-in.visible{opacity:1;transform:translateY(0)}.detail-fade{animation:.6s both detail-reveal}.project-writeup.detail-fade{animation-delay:.1s}.carousel.detail-fade{animation-delay:.2s}@keyframes detail-reveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width<=600px){.intro{padding-top:60px}h1{font-size:20px}.projects{padding-bottom:60px}.project-page{padding-block:60px}.carousel{gap:var(--content-gap);grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important}.fade-in{opacity:1;transform:none}.detail-fade,.filter-fade{animation:none}}
