@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}:root{--bg: #101214;--surface: #181b1f;--line: #2b2f35;--text: #e9e7e2;--muted: #a1a5ac;--accent: #d9a05b;--sans: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono: "IBM Plex Mono", Consolas, monospace;color-scheme:dark;font-family:var(--sans);line-height:1.6;color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1.5rem;overflow-x:clip}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.navbar-links a:after{transition:none}}body{min-width:320px}a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:.2em;transition:color .15s,text-decoration-color .15s}a:hover{color:var(--accent);text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}ul{list-style:none}.page{max-width:1040px;margin:0 auto;padding:0 1.5rem}.skip-link{position:absolute;left:1rem;top:-4rem;padding:.5rem 1rem;background:var(--accent);color:var(--bg)}.skip-link:focus{top:1rem}.section{display:grid;grid-template-columns:180px minmax(0,1fr);gap:2rem;padding:4.5rem 0;border-top:1px solid var(--line)}.section-title{font-family:var(--mono);font-size:.875rem;font-weight:400;color:var(--accent)}@media(max-width:760px){.section{grid-template-columns:minmax(0,1fr);gap:1.5rem;padding:3.5rem 0}}.navbar{display:flex;align-items:center;gap:1.5rem;padding:1.5rem 0;font-size:.9375rem}.navbar a{text-decoration:none}.navbar-name{font-weight:600;margin-right:auto}.navbar-links{display:flex;gap:1.5rem}.navbar-links a{position:relative;color:var(--muted)}.navbar-links a:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.navbar-links a:hover{color:var(--accent)}.navbar-links a:hover:after{transform:scaleX(1)}.language-switch{display:flex;gap:.25rem;font-family:var(--mono)}.language-switch button{padding:.25rem .375rem;border:0;background:none;color:var(--muted);font:inherit;font-size:.8125rem;cursor:pointer}.language-switch button:hover{color:var(--text)}.language-switch button[aria-pressed=true]{color:var(--accent)}@media(max-width:640px){.navbar{flex-wrap:wrap;gap:.75rem 1rem}.navbar-links{order:3;flex-wrap:wrap;width:100%;gap:.25rem 1.25rem}}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:4rem;align-items:center;padding:4rem 0 5rem}.hero-text,.hero-photo{position:relative}.hero-backdrop{position:absolute;top:-6rem;bottom:0;left:50%;width:100vw;transform:translate(-50%);overflow:hidden;pointer-events:none;-webkit-mask-image:linear-gradient(#000 94%,transparent);mask-image:linear-gradient(#000 94%,transparent)}.hero-glow{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(217,160,91,.16),transparent 68%);animation:glow-drift 18s ease-in-out infinite alternate}.hero-glow-1{top:-10%;right:max(40px,calc(50% - 604px));width:620px;height:620px}.hero-glow-2{bottom:-25%;left:-5%;width:480px;height:480px;animation-duration:24s;animation-direction:alternate-reverse}.hero-tech{position:absolute;width:44px;height:44px;opacity:.5;animation:tech-float 9s ease-in-out infinite alternate}.hero-tech:nth-of-type(1){top:3%;left:calc(50% - 256px);animation-duration:8s}.hero-tech:nth-of-type(2){top:3%;left:calc(50% - 51px);animation-duration:11s;animation-delay:-3s}.hero-tech:nth-of-type(3){top:14%;left:calc(50% - 154px);animation-duration:9s;animation-delay:-5s}.hero-tech:nth-of-type(4){top:14%;left:calc(50% + 51px);animation-duration:12s;animation-delay:-2s}.hero-tech:nth-of-type(5){top:40%;left:calc(50% + 102px);animation-duration:10s;animation-delay:-6s}.hero-tech:nth-of-type(6){top:62%;left:calc(50% + 102px);animation-duration:8s;animation-delay:-1s}.hero-tech:nth-of-type(7){top:87%;left:calc(50% - 486px);animation-duration:13s;animation-delay:-4s}.hero-tech:nth-of-type(8){top:87%;left:calc(50% - 282px);animation-duration:9s;animation-delay:-7s}.hero-tech:nth-of-type(9){top:87%;left:calc(50% - 77px);animation-duration:11s;animation-delay:-2s}.hero-tech:nth-of-type(10){top:87%;left:calc(50% + 128px);animation-duration:10s;animation-delay:-5s}.hero-tech:nth-of-type(11){top:6%;left:max(4px,calc(50% - 640px));animation-duration:8s;animation-delay:-1s}.hero-tech:nth-of-type(12){top:18%;left:max(40px,calc(50% - 604px));animation-duration:11s;animation-delay:-3s}.hero-tech:nth-of-type(13){top:30%;left:max(4px,calc(50% - 640px));animation-duration:9s;animation-delay:-6s}.hero-tech:nth-of-type(14){top:42%;left:max(40px,calc(50% - 604px));animation-duration:12s;animation-delay:-2s}.hero-tech:nth-of-type(15){top:54%;left:max(4px,calc(50% - 640px));animation-duration:10s;animation-delay:-5s}.hero-tech:nth-of-type(16){top:66%;left:max(40px,calc(50% - 604px));animation-duration:13s;animation-delay:-4s}.hero-tech:nth-of-type(17){top:78%;left:max(4px,calc(50% - 640px));animation-duration:9s;animation-delay:-7s}.hero-tech:nth-of-type(18){top:6%;right:max(4px,calc(50% - 640px));animation-duration:10s;animation-delay:-2s}.hero-tech:nth-of-type(19){top:18%;right:max(40px,calc(50% - 604px));animation-duration:8s;animation-delay:-5s}.hero-tech:nth-of-type(20){top:30%;right:max(4px,calc(50% - 640px));animation-duration:12s;animation-delay:-1s}.hero-tech:nth-of-type(21){top:42%;right:max(40px,calc(50% - 604px));animation-duration:9s;animation-delay:-6s}.hero-tech:nth-of-type(22){top:54%;right:max(4px,calc(50% - 640px));animation-duration:11s;animation-delay:-3s}.hero-tech:nth-of-type(23){top:66%;right:max(40px,calc(50% - 604px));animation-duration:13s;animation-delay:-7s}.hero-tech:nth-of-type(24){top:78%;right:max(4px,calc(50% - 640px));animation-duration:10s;animation-delay:-4s}.hero-text>*,.hero-photo{animation:rise .8s cubic-bezier(.2,.7,.2,1) both}.hero-text>h1{animation-delay:.1s}.hero-text>.hero-lead{animation-delay:.25s}.hero-text>.hero-availability{animation-delay:.4s}.hero-text>.hero-location{animation-delay:.45s}.hero-text>.hero-links{animation-delay:.55s}.hero-photo{animation-delay:.3s}.hero-role{font-family:var(--mono);font-size:.875rem;color:var(--accent)}.hero-role span{display:inline-block;max-width:100%;overflow:hidden;white-space:nowrap;vertical-align:bottom;border-right:2px solid var(--accent);padding-right:2px;animation:typing 1.4s steps(var(--chars)) .3s both,caret 1s step-end infinite}.hero h1{margin:.5rem 0 1.5rem;font-size:clamp(2.5rem,7vw,4.25rem);font-weight:600;line-height:1.05;letter-spacing:-.02em}.hero-lead{max-width:34rem;font-size:1.375rem;line-height:1.4}.hero-availability{display:flex;align-items:center;gap:.625rem;margin-top:1.25rem}.hero-availability:before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 2.4s ease-out infinite}.hero-location{margin-top:.25rem;color:var(--muted)}.hero-links{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-top:2rem}.hero-cta{padding:.625rem 1.25rem;background:var(--accent);color:var(--bg);font-weight:500;text-decoration:none;transition:transform .2s,background-color .2s,box-shadow .2s}.hero-cta:hover{background:var(--text);color:var(--bg);transform:translateY(-2px);box-shadow:0 8px 24px #d9a05b40}.hero-photo{display:block}.hero-photo:before{content:"";position:absolute;inset:0;border:1px solid var(--accent);transform:translate(14px,14px);transition:transform .35s cubic-bezier(.2,.7,.2,1)}.hero-photo:hover:before{transform:translate(6px,6px)}.hero-photo img{position:relative;display:block;width:100%;height:auto;transition:transform .35s cubic-bezier(.2,.7,.2,1)}.hero-photo:hover img{transform:translate(-4px,-4px)}@keyframes rise{0%{opacity:0;transform:translateY(20px)}}@keyframes typing{0%{width:0}to{width:calc(var(--chars) * 1ch + 4px)}}@keyframes caret{50%{border-color:transparent}}@keyframes pulse{0%{box-shadow:0 0 #d9a05b8c}70%,to{box-shadow:0 0 0 10px #d9a05b00}}@keyframes glow-drift{to{transform:translate(-70px,50px) scale(1.15)}}@keyframes tech-float{0%{transform:translateY(-12px) rotate(-5deg)}to{transform:translateY(14px) rotate(5deg)}}@media(max-width:1240px){.hero-tech:nth-of-type(n+11){display:none}}@media(max-width:1040px){.hero{padding:5rem 0 6rem}.hero-backdrop{-webkit-mask-image:linear-gradient(#000 98%,transparent);mask-image:linear-gradient(#000 98%,transparent)}.hero-tech{display:none;width:36px;height:36px}.hero-tech:nth-of-type(1),.hero-tech:nth-of-type(2),.hero-tech:nth-of-type(3),.hero-tech:nth-of-type(6),.hero-tech:nth-of-type(7),.hero-tech:nth-of-type(9),.hero-tech:nth-of-type(12),.hero-tech:nth-of-type(19){display:block;right:auto}.hero-tech:nth-of-type(1){top:100px;left:8%}.hero-tech:nth-of-type(3){top:100px;left:32%}.hero-tech:nth-of-type(6){top:100px;left:56%}.hero-tech:nth-of-type(9){top:100px;left:82%}.hero-tech:nth-of-type(12),.hero-tech:nth-of-type(19),.hero-tech:nth-of-type(2),.hero-tech:nth-of-type(7){top:auto;bottom:16px}.hero-tech:nth-of-type(12){left:12%}.hero-tech:nth-of-type(19){left:36%}.hero-tech:nth-of-type(2){left:60%}.hero-tech:nth-of-type(7){left:84%}}@media(max-width:760px){.hero{grid-template-columns:minmax(0,1fr);gap:2.5rem;padding:2rem 0 3.5rem}.hero-photo{order:-1;max-width:180px}.hero-lead{font-size:1.25rem}.hero-tech:nth-of-type(2),.hero-tech:nth-of-type(7){display:none}.hero-tech:nth-of-type(1),.hero-tech:nth-of-type(3),.hero-tech:nth-of-type(6),.hero-tech:nth-of-type(9),.hero-tech:nth-of-type(12),.hero-tech:nth-of-type(19){bottom:auto}.hero-tech:nth-of-type(1){top:132px;left:232px}.hero-tech:nth-of-type(3){top:170px;left:calc(100% - 44px)}.hero-tech:nth-of-type(6){top:208px;left:232px}.hero-tech:nth-of-type(9){top:246px;left:calc(100% - 44px)}.hero-tech:nth-of-type(12){top:284px;left:232px}.hero-tech:nth-of-type(19){top:322px;left:calc(100% - 44px)}}@media(prefers-reduced-motion:reduce){.hero-glow,.hero-tech,.hero-text>*,.hero-photo,.hero-availability:before{animation:none}.hero-role span{width:auto;border-right:0;animation:none}.hero-cta,.hero-photo:before,.hero-photo img{transition:none}}.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease var(--reveal-delay),transform .7s cubic-bezier(.2,.7,.2,1) var(--reveal-delay)}.reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}.about-body{max-width:44rem}.about-body>p+p{margin-top:1.25rem}.about-facts{margin-top:2rem}.about-facts>div{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:1rem;padding:.75rem 0;border-top:1px solid var(--line)}.about-facts dt{color:var(--muted)}@media(max-width:480px){.about-facts>div{grid-template-columns:minmax(0,1fr);gap:.125rem}}.experience-list{display:grid}.job{position:relative;padding:0 0 3rem 1.75rem}.job:last-child{padding-bottom:0}.job:before{content:"";position:absolute;z-index:1;top:.5rem;left:0;width:9px;height:9px;border:1px solid var(--accent);border-radius:50%;background:var(--bg);transition:background-color .2s,box-shadow .2s}.job:after{content:"";position:absolute;top:.5rem;bottom:-.5rem;left:4px;width:1px;background:var(--line);transform:scaleY(0);transform-origin:top;transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .2s}.job.is-visible:after{transform:scaleY(1)}.job:last-child:after{display:none}.job:hover:before{background:var(--accent);box-shadow:0 0 0 5px #d9a05b29}.job-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 1rem}.job h3{font-size:1.25rem;font-weight:600;transition:color .2s}.job:hover h3{color:var(--accent)}.job-period{font-family:var(--mono);font-size:.8125rem;color:var(--muted)}.job-role{color:var(--muted)}.job ul{margin-top:.875rem}.job li{position:relative;padding-left:1.125rem}.job li+li{margin-top:.5rem}.job li:before{content:"–";position:absolute;left:0;color:var(--muted)}.job-stack{margin-top:.875rem;font-family:var(--mono);font-size:.8125rem;color:var(--muted)}@media(prefers-reduced-motion:reduce){.job:after{transform:none;transition:none}.job.is-visible:before,.job h3{transition:none}}.skills-list>div{display:grid;grid-template-columns:8rem minmax(0,1fr);gap:1rem;padding:.75rem 0;border-top:1px solid var(--line)}.skills-list>div:first-child{padding-top:0;border-top:0}.skills-list dt{color:var(--muted);transition:color .2s,transform .2s}.skills-list>div:hover dt{color:var(--accent);transform:translate(4px)}@media(prefers-reduced-motion:reduce){.skills-list dt{transition:none}.skills-list>div:hover dt{transform:none}}@media(max-width:480px){.skills-list>div{grid-template-columns:minmax(0,1fr);gap:.125rem}}.contact-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3rem}.contact-body h3{font-size:1.5rem;font-weight:500;line-height:1.3}.contact-direct{margin-top:.75rem;color:var(--muted)}.contact-email{margin-top:.5rem;overflow-wrap:anywhere}.contact-form{display:grid;gap:1rem}.contact-form label{display:grid;gap:.375rem;font-size:.9375rem;color:var(--muted)}.contact-form input,.contact-form textarea{width:100%;padding:.625rem .75rem;border:1px solid var(--line);border-radius:0;background:var(--surface);color:var(--text);font:inherit;font-size:1rem;transition:border-color .2s,box-shadow .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #d9a05b29;outline:0}.contact-form textarea{resize:vertical}.contact-form button{justify-self:start;padding:.625rem 1.25rem;border:1px solid var(--accent);background:none;color:var(--accent);font:inherit;font-weight:500;cursor:pointer;transition:background-color .15s,color .15s}.contact-form button:hover:not(:disabled){background:var(--accent);color:var(--bg)}.contact-form button:disabled{opacity:.6;cursor:wait}.form-status:empty{display:none}.form-status{font-size:.9375rem}.form-status.success{color:#7fc29b}.form-status.error,.form-status.sendError{color:#e58a7f}@media(max-width:760px){.contact-body{grid-template-columns:minmax(0,1fr);gap:2rem}}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1.5rem;padding:2rem 0;border-top:1px solid var(--line);font-size:.875rem;color:var(--muted)}
