:root{color-scheme:dark;--bg:#101112;--text:#edf0e8;--muted:#a1a49e;--line:#30322f;--accent:#d5ee80;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:3rem}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif;font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}button{font:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:7px}.wrap{width:min(1120px,calc(100% - 6rem));margin-inline:auto}.header{display:flex;align-items:center;justify-content:space-between;padding-block:1.8rem;border-bottom:1px solid var(--line)}.signature{font-size:2rem;font-weight:700;letter-spacing:-.1rem;line-height:1}.signature span{color:var(--accent)}nav{display:flex;gap:2rem;font-size:.9375rem}nav a,.socials a,.inline-link{transition:color .2s}nav a:hover,.socials a:hover,.inline-link:hover{color:var(--accent)}.skip{position:absolute;left:2rem;top:-6rem;background:var(--accent);color:var(--bg);padding:.8rem;z-index:5}.skip:focus{top:1rem}.hero{position:relative;display:grid;grid-template-columns:1.45fr 1fr;gap:4rem;padding-top:5.5rem;padding-bottom:5.5rem;align-items:center}.eyebrow{font-family:var(--mono);font-size:.8125rem;letter-spacing:.07em;color:var(--muted);margin:0 0 1.6rem}.separator{margin-inline:.5rem;color:var(--line)}h1{font-size:clamp(4.5rem,9.1vw,8rem);font-weight:500;line-height:.98;letter-spacing:-.065em;margin:0 0 2rem}.name-line{display:block;position:relative;width:fit-content}.surname{color:var(--muted)}.period{color:var(--accent)}.intro{font-size:1.125rem;line-height:1.65;color:var(--muted);margin:0 0 1.8rem}.text-link{display:inline-block;font-size:.9375rem;border-bottom:1px solid var(--accent);padding-bottom:.4rem;transition:color .2s}.text-link:hover{color:var(--accent)}.portrait{max-width:300px;justify-self:end;margin:1rem 0 0;width:100%;transform:translateY(var(--portrait-y,0px));transition:transform .4s ease-out}.portrait-frame{position:relative;overflow:hidden;aspect-ratio:4/5;background:#282a27}.portrait img{height:100%;width:100%;object-fit:cover;object-position:50% 50%;filter:grayscale(1);transition:transform 1s cubic-bezier(.2,.7,.2,1),filter 1s;display:block}.portrait:hover img{transform:scale(1.045);filter:grayscale(.4)}.portrait figcaption{font-family:var(--mono);font-size:.75rem;color:var(--muted);padding-top:1rem}.hero-foot{grid-column:1/-1;display:flex;justify-content:space-between;margin-top:1.5rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;color:var(--muted)}.section{padding-block:4.5rem;border-top:1px solid var(--line);scroll-margin-top:2rem}.section-heading{display:flex;gap:1.6rem;align-items:baseline;margin-bottom:2.8rem}.section-index{color:var(--accent);font-family:var(--mono);font-size:.875rem;white-space:nowrap}h2{font-size:clamp(1.8rem,3vw,2.5rem);font-weight:400;letter-spacing:-.045em;line-height:1.15;margin:0}.about-content{padding-left:4rem}.about-text{font-size:clamp(1.15rem,2vw,1.4rem);line-height:1.65;max-width:830px;color:var(--muted);margin:0 0 3rem}.about-text strong{color:var(--text);font-weight:600}.journey{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.journey-item{border-left:1px solid var(--line);padding-left:1.5rem}.journey-item .eyebrow{margin-bottom:.65rem;font-size:.75rem}.journey h3{font-size:1.4rem;font-weight:400;margin:0 0 .2rem}.journey p{margin:0 0 .5rem;color:var(--muted);font-size:.9375rem}.school,.journey .inline-link{font-size:.875rem;color:var(--muted)}.inline-link{border-bottom:1px solid #5b5e54;padding-bottom:.2rem;font-size:.875rem}.projects-intro{display:flex;align-items:center;justify-content:space-between;gap:2rem;margin-bottom:2.8rem;padding-left:4rem}.projects-intro p{color:var(--muted);margin:0;font-size:1rem}.project{position:relative;display:grid;grid-template-columns:2.5rem 1fr 13rem;gap:1.5rem;align-items:start;padding:2.2rem 0;border-top:1px solid var(--line);transition:padding-left .35s ease,background .35s ease}.project:last-child{border-bottom:1px solid var(--line)}.project:hover{padding-left:.8rem;background:#151715}.project-num{font-family:var(--mono);font-size:.8125rem;color:var(--muted);padding-top:.6rem}.project h3{font-size:clamp(1.5rem,2.5vw,2rem);font-weight:400;letter-spacing:-.035em;margin:0 0 .65rem;line-height:1.25}.project-dot{color:var(--accent);opacity:0;transition:opacity .3s}.project:hover .project-dot,.project:focus-visible .project-dot{opacity:1}.project p{font-size:.9375rem;color:var(--muted);max-width:560px;margin:0;line-height:1.7}.project-meta{display:flex;flex-direction:column;align-items:flex-end;gap:1.7rem;padding-top:.7rem;white-space:nowrap}.project-meta>span:first-child{font-family:var(--mono);font-size:.75rem;color:var(--muted)}.repo-label{font-size:.875rem;color:var(--muted);transition:color .2s}.project:hover .repo-label{color:var(--accent)}.contact{padding-block:4.5rem 5.5rem}.contact-body{padding-left:4rem}.email{display:inline-block;font-size:clamp(1.2rem,3.7vw,3rem);letter-spacing:-.045em;line-height:1.3;border-bottom:1px solid var(--line);padding-bottom:.4rem;transition:color .2s,border-color .2s;overflow-wrap:anywhere}.email:hover{color:var(--accent);border-color:var(--accent)}.socials{display:flex;gap:2rem;margin-top:2rem;font-size:.9375rem}.socials a{display:inline-flex;flex-direction:column;align-items:center;gap:.55rem;transform-origin:center;transition:color .2s ease,transform .2s ease}.socials svg{width:1.625rem;height:1.625rem;flex-shrink:0}.socials a:hover,.socials a:focus-visible{transform:scale(1.08);color:var(--accent)}.footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem;padding-block:1.8rem;color:var(--muted);font-size:.8125rem}.footer a:hover{color:var(--text)}.enter{animation:arrive .8s both cubic-bezier(.16,1,.3,1)}h1.enter{animation-delay:.08s}.intro.enter{animation-delay:.16s}.text-link.enter{animation-delay:.24s}.portrait.enter{animation-delay:.15s}.reveal{transition:opacity .7s ease,translate .7s cubic-bezier(.16,1,.3,1)}.js-motion .reveal.waiting{opacity:0;translate:0 18px}@keyframes arrive{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
@media(min-width:1440px){.hero{padding-top:6.5rem;padding-bottom:6rem}}
@media(max-width:800px){.wrap{width:calc(100% - 3rem)}.hero{gap:2rem;grid-template-columns:1.4fr 1fr;padding-top:4rem}.portrait{max-width:220px}.section{padding-block:3.5rem}.about-content,.contact-body,.projects-intro{padding-left:0}.project{grid-template-columns:1.5rem 1fr;gap:1rem}.project-meta{grid-column:2;flex-direction:row;align-items:center;justify-content:space-between;gap:1rem;padding-top:.3rem}.section-heading{margin-bottom:2rem}.footer{flex-wrap:wrap}}
@media(max-width:540px){.wrap{width:calc(100% - 2.5rem)}.header{padding-block:1.4rem}nav{gap:1.2rem;font-size:.875rem}.hero{grid-template-columns:1fr;padding-top:3.5rem;padding-bottom:2.5rem;gap:2.5rem}h1{font-size:clamp(4.3rem,18vw,6.5rem)}.intro{font-size:1rem}.eyebrow{font-size:.75rem}.portrait{justify-self:start;max-width:none;display:grid;grid-template-columns:120px 1fr;gap:1.3rem;align-items:end;margin:0}.portrait-frame{aspect-ratio:1}.portrait figcaption{max-width:11rem;padding:0 0 .4rem;line-height:1.7}.hero-foot{margin-top:0}.section-heading{gap:1rem}.about-text{font-size:1.125rem}.journey{grid-template-columns:1fr;gap:1.7rem}.projects-intro{align-items:flex-start;flex-direction:column;gap:1.2rem;margin-bottom:2rem}.project{padding-block:1.7rem}.project:hover{padding-left:0}.project-meta{white-space:normal;flex-wrap:wrap;gap:.7rem}.project-meta>span:first-child{font-size:.75rem}.contact{padding-bottom:3.5rem}.footer{column-gap:1.5rem;row-gap:1rem}.footer>span{width:100%}.footer a{order:2}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.js-motion .reveal.waiting{opacity:1;translate:0 0}.portrait{transform:none}}

.project-links{display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}.project-links a:hover,.project-links a:focus-visible{color:var(--accent);text-decoration:underline;text-underline-offset:4px}
