::selection{color:#fff;background-color:#0ca40c}@keyframes slideUnderline{0%{width:0;left:0}to{width:100%}}html{box-sizing:border-box}html.gsap-loading .wordmark,html.gsap-loading nav a,html.gsap-loading nav .sep,html.gsap-loading .eyebrow,html.gsap-loading .hero h1,html.gsap-loading .role,html.gsap-loading .hero p:not(.eyebrow):not(.role),html.gsap-loading #about h2,html.gsap-loading #about p,html.gsap-loading #expertise h2,html.gsap-loading .expertise-row,html.gsap-loading #projects h2,html.gsap-loading .project-row,html.gsap-loading footer p{opacity:0}body,h1,h2,h3,p,ul,li{margin:0;padding:0}body{box-sizing:border-box;color:#fff;background-color:#0d0f11;max-width:900px;margin:0 auto;padding:48px 24px 90px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.6}a{color:#fff;text-underline-offset:2px;text-decoration:underline #00ff1e}a:hover{text-decoration-color:#00ff1e}a:focus-visible{outline-offset:2px;outline:1px solid #e2a640}.hl{display:inline;position:relative}.hl-bg{transform-origin:0;z-index:0;background-color:#00ff1e47;border-radius:2px;height:.5em;position:absolute;bottom:.08em;left:-3px;right:-3px;transform:scaleX(0)}.hl-text{z-index:1;font-weight:inherit;position:relative}header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 20px;margin-bottom:64px;display:flex}.wordmark{color:#9aa1a8;font-size:.95rem;text-decoration:none}.wordmark:hover{color:#00ff1e}nav a{color:#9aa1a8;font-size:.95rem;text-decoration:none;transition:color .2s;position:relative}nav a:after{content:"";background-color:#00ff1e;width:0;height:2px;position:absolute;bottom:-2px;left:0}nav a:hover{color:#f5f5f5}nav a:hover:after{animation:.3s forwards slideUnderline}nav .sep{color:#444a4f;margin:0 6px}.hero{margin-bottom:45px}.eyebrow{color:#6d7378;margin-bottom:8px;font-size:.85rem}h1{color:#f0f1f2;font-size:clamp(2.2rem,6vw,3.2rem);font-weight:700;line-height:1.1}.role{color:#b7bcc1;margin-top:10px;margin-bottom:24px;font-size:1.1rem}.hero p:not(.eyebrow):not(.role){color:#b7bcc1;max-width:560px;margin-bottom:12px}.skills{flex-wrap:wrap;gap:8px 10px;margin-top:28px;list-style:none;display:flex}.skills li{color:#9aa1a8;border:1px solid #262b2f;border-radius:3px;padding:5px 10px;font-size:.82rem}h2{color:#7f868c;text-transform:lowercase;margin-bottom:24px;font-size:.95rem;font-weight:600}section{margin-bottom:45px;scroll-margin-top:24px}#about p{color:#b7bcc1;max-width:640px}.expertise-list{border-top:1px solid #1c1f22}.expertise-row{border-bottom:1px solid #1c1f22;grid-template-columns:44px 190px 1fr;align-items:baseline;gap:4px 24px;padding:18px 0;display:grid}.expertise-row .num{color:#3a4045;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem}.expertise-row h3{color:#f0f1f2;font-size:1rem;font-weight:600}.expertise-row p{color:#8b929a;grid-column:3;font-size:.92rem}.project-list{flex-direction:column;display:flex}.project-row{border-bottom:1px solid #1c1f22;padding:22px 0}.project-row:first-child{padding-top:0}.project-head{flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-bottom:8px;display:flex}.project-head .index{color:#3a4045;margin-right:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem}.project-head h3{color:#f0f1f2;font-size:1.08rem;font-weight:600}.project-head h3 a{color:#f0f1f2;border-bottom:1px solid #00ff1e;text-decoration:none}.project-head h3 a:hover{border-bottom-color:#00ff1e}.project-head .tags{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.project-head .tags span{color:#6d7378;border:1px solid #23272b;border-radius:3px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.72rem}.project-row p{color:#b7bcc1;max-width:620px}.word{display:inline-block}footer{color:#6d7378;margin-top:20px;padding-top:24px;font-size:.9rem}@media (width<=640px){body{padding:40px 20px 70px}.expertise-row{grid-template-columns:32px 1fr;row-gap:6px}.expertise-row p{grid-column:2}.project-head .tags{width:100%;margin-left:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
