@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600&family=Manrope:wght@400;500;600&display=swap');
:root{color-scheme:dark;--bg:#080808;--text:#c6c6c6;--muted:#777;--line:#202020}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:55px}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.85 'DM Sans',sans-serif}::selection{background:#333;color:#ddd}a{color:inherit;text-decoration:none}a:focus-visible{outline:1px solid #777;outline-offset:8px}a:hover{color:#eee}header,main,footer{max-width:1320px;margin:auto}header{display:flex;justify-content:space-between;align-items:center;padding:38px 7%;font-size:12px}.brand{font:500 24px 'Manrope',sans-serif;letter-spacing:-2px}.brand span{color:#555}nav{display:flex;gap:32px;color:#888}.nav-contact{color:#aaa}.nav-contact span{margin-left:14px}.skip{position:fixed;left:20px;top:-100px;background:#171717;padding:10px 18px;z-index:30}.skip:focus{top:12px}.hero{padding:110px 7% 100px;min-height:760px}.eyebrow{font:9px/1.7 monospace;letter-spacing:2px;color:#666;margin:0 0 28px}.status-dot{display:none}.hero-name{font-size:11px;letter-spacing:2.5px;color:#969696;margin:0 0 22px}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3{font-family:'Manrope',sans-serif;font-weight:400}h1{font-size:clamp(48px,7.8vw,108px);line-height:1.1;letter-spacing:-5.5px;margin-bottom:40px}em{font-style:normal;color:#606060}.intro{max-width:410px;font-size:14px;line-height:1.95;color:#888}.actions{display:flex;gap:36px;margin-top:34px;font-size:12px}.actions a,.quiet{border-bottom:1px solid #333;padding-bottom:7px}.actions span,.quiet span{margin-left:18px;color:#777}.hero-foot{display:flex;justify-content:space-between;margin-top:100px;font:8px monospace;letter-spacing:1.5px;color:#555}.section{padding:100px 7%;border-top:1px solid var(--line)}.section-head{display:grid;grid-template-columns:1.2fr 1fr;gap:0 80px;margin-bottom:64px}.section-head .eyebrow{grid-column:1/-1}h2{font-size:clamp(38px,5vw,64px);line-height:1.15;letter-spacing:-2.8px;margin-bottom:0}.section-head>p:last-child:not(.eyebrow){color:#777;font-size:13px;max-width:320px;align-self:end;justify-self:end;margin-bottom:0}.featured,.project{background:transparent;border:0}.featured{padding:10px 0 50px}.project-copy{display:grid;grid-template-columns:1fr 1.35fr;column-gap:80px}.project-copy .eyebrow{grid-column:1;margin-bottom:15px}.project-copy h3{grid-column:1;grid-row:2 / span 2}.project-copy>p:not(.eyebrow){grid-column:2}.project-copy .project-sub{grid-row:1 / span 2;font-size:19px;color:#aaa;line-height:1.6;margin-bottom:20px}.project-copy p{font-size:13px;color:#818181;max-width:540px}.project-copy h3{font-size:34px;letter-spacing:-1.2px;line-height:1.3}.tags{grid-column:2;display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;font:9px/1.8 monospace;color:#626262}.project-note{grid-column:2;display:flex;gap:18px;align-items:center;margin-top:30px}.project-note span{font:8px monospace;color:#555;letter-spacing:1px}.project-note strong{font-size:11px;font-weight:400;color:#888}.project-grid{display:block}.project-grid .project{padding:50px 0;border-top:1px solid var(--line)}.project-grid .project-copy>p:not(.eyebrow){grid-row:1 / span 3}.project-grid .tags{margin-top:8px}.github-link{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:24px;color:#828282;font-size:11px}.timeline article{display:grid;grid-template-columns:1fr 1.35fr;gap:80px;border-top:1px solid var(--line);padding:36px 0}.date{font:9px/2 monospace;color:#696969;letter-spacing:1px}.date span{color:#464646}.timeline h3{font-size:23px;line-height:1.4;letter-spacing:-.5px;margin-bottom:7px;color:#bcbcbc}.timeline h4{font-size:12px;font-weight:400;color:#777;margin-bottom:17px}.timeline p{font-size:13px;color:#808080;margin-bottom:0}.role-heading{display:flex;align-items:center;gap:18px}.current{font:8px monospace;letter-spacing:1px;color:#666}.skill-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px 80px}.skill-grid article{border-top:1px solid var(--line);padding:25px 0}.skill-grid article>span{font:9px monospace;color:#515151}.skill-grid h3{font-size:20px;letter-spacing:-.5px;margin:20px 0 14px}.skill-grid p{font-size:13px;color:#777;line-height:2}.learning{display:grid;grid-template-columns:1fr 1.35fr;gap:80px;border-top:1px solid var(--line);padding-top:28px;margin-top:25px}.learning p{font-size:12px;color:#777;margin:0}.learning strong{font-weight:400;color:#a1a1a1}.about{display:grid;grid-template-columns:1fr 1.1fr;gap:100px}.about-text{font-size:14px;color:#858585;margin:28px 0}.quiet{font-size:12px}.about-details>div+div{margin-top:35px;padding-top:28px;border-top:1px solid var(--line)}.about-details .eyebrow{margin-bottom:16px}.about-details h3{font-size:16px;letter-spacing:-.3px;margin-bottom:3px}.about-details p{font-size:12px;color:#777}.languages{display:grid;grid-template-columns:1fr 1fr;gap:10px 40px;font-size:12px}.languages span{display:flex;justify-content:space-between}.languages b{font-weight:400;color:#626262}.contact{padding:110px 7% 90px;border-top:1px solid var(--line)}.contact h2{font-size:clamp(45px,6.5vw,88px);letter-spacing:-4px}.contact-email{display:inline-block;margin-top:40px;padding-bottom:10px;border-bottom:1px solid #333;font-size:clamp(16px,2.2vw,26px);letter-spacing:-.4px;color:#aaa}.contact-email span{margin-left:40px;color:#777}.contact-bottom{display:flex;justify-content:space-between;gap:35px;margin-top:60px;font-size:11px;color:#737373}.contact-bottom p{margin:0}.contact-bottom>div{display:flex;gap:28px;align-items:end}footer{display:flex;justify-content:space-between;align-items:center;padding:32px 7%;border-top:1px solid var(--line);font:8px monospace;letter-spacing:1px;color:#555}.reveal{transition:opacity .85s ease,transform .85s cubic-bezier(.2,.65,.3,1)}.js .reveal.pending{opacity:0;transform:translateY(24px)}.hero h1,.hero .intro,.hero .actions{animation:arrive .9s both}.hero .intro{animation-delay:.1s}.hero .actions{animation-delay:.18s}@keyframes arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.hero{padding-top:90px;min-height:700px}h1{font-size:78px;letter-spacing:-4px}.section-head,.project-copy,.timeline article,.learning{column-gap:45px}.about{gap:50px}.section{padding-top:80px;padding-bottom:80px}}@media(max-width:760px){header{padding:28px 7%}nav{gap:17px;font-size:10px}nav a:nth-child(2){display:none}.nav-contact{font-size:10px}.nav-contact span{margin-left:4px}.hero{padding:80px 7% 55px;min-height:650px}h1{font-size:clamp(45px,10vw,70px);letter-spacing:-2.5px;margin-bottom:30px}.hero .eyebrow{font-size:8px;letter-spacing:1.3px}.hero-name{font-size:9px;letter-spacing:2px}.intro{font-size:13px}.hero-foot{margin-top:75px;font-size:7px}.hero-foot span:last-child{display:none}.section{padding:65px 7%}.section-head{grid-template-columns:1fr;gap:25px;margin-bottom:40px}.section-head .eyebrow{margin-bottom:0}.section-head>p:last-child:not(.eyebrow){justify-self:start;max-width:340px}h2{font-size:42px;letter-spacing:-2px}.project-copy{display:block}.project-copy h3{font-size:29px;margin-bottom:22px}.project-copy .project-sub{font-size:17px}.project-copy p{font-size:13px}.tags{font-size:8px;margin-top:22px}.project-note{gap:16px}.featured{padding-bottom:35px}.project-grid .project{padding:35px 0}.timeline article{grid-template-columns:1fr;gap:15px;padding:30px 0}.date br{display:none}.date span{margin-left:15px}.timeline h3{font-size:22px}.skill-grid{grid-template-columns:1fr;gap:10px}.skill-grid article{padding:24px 0}.skill-grid h3{margin-top:15px}.learning{grid-template-columns:1fr;gap:10px}.about{grid-template-columns:1fr;gap:45px}.contact{padding:75px 7% 65px}.contact h2{font-size:45px;letter-spacing:-2.5px}.contact-email{font-size:18px}.contact-email span{margin-left:14px}.contact-bottom{flex-direction:column;margin-top:35px}.contact-bottom>div{gap:25px;font-size:10px}footer{gap:20px;font-size:7px}footer>span{max-width:110px;text-align:center}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal.pending{opacity:1;transform:none}}
