@import "https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@90,400;90,500;90,600;100,400;100,500;100,600&family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&display=swap";:root{--canvas:#f4f7f6;--surface:#fff;--ink:#12201d;--muted:#65716e;--line:#d9e1de;--signal:#176d60;--signal-dark:#0f554b;--signal-soft:#e0efeb;--display:"Archivo", "Helvetica Neue", sans-serif;--body:"IBM Plex Sans", "Helvetica Neue", sans-serif;--utility:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;color:var(--ink);background:var(--canvas);font-family:var(--body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--canvas);min-width:320px;min-height:100vh;margin:0}body,button,a{font-family:var(--body)}a{color:inherit;text-decoration:none}p,li{text-wrap:pretty}button,a{-webkit-tap-highlight-color:transparent}::selection{color:#fff;background:var(--signal)}:focus-visible{outline:2px solid var(--signal);outline-offset:4px}.site-shell{min-height:100vh;overflow:clip}.container{width:min(1180px,100% - 64px);margin-inline:auto}.site-header{z-index:50;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f4f7f6db;border-bottom:1px solid #12201d17;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;height:72px;display:flex}.wordmark{font-family:var(--display);letter-spacing:-.025em;align-items:center;gap:11px;font-size:.94rem;font-weight:600;display:inline-flex}.wordmark-dot{background:var(--signal);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #176d601a}.header-actions,.primary-nav{align-items:center;display:flex}.header-actions{gap:42px}.primary-nav{gap:30px}.primary-nav a{min-height:40px;color:var(--muted);align-items:center;padding-block:8px;font-size:.875rem;transition:color .18s;display:flex;position:relative}.primary-nav a:after{background:var(--signal);content:"";transform-origin:100%;height:1px;transition:transform .22s;position:absolute;bottom:2px;left:0;right:0;transform:scaleX(0)}.primary-nav a:hover{color:var(--ink)}.primary-nav a:hover:after{transform-origin:0;transform:scaleX(1)}.resume-link{align-items:center;gap:7px;min-height:40px;font-size:.84rem;font-weight:500;display:inline-flex}.resume-link svg{width:15px;height:15px;transition:transform .18s}.resume-link:hover svg{transform:translate(2px,-2px)}.hero{background:var(--canvas);position:relative}.hero:after{background:var(--line);content:"";height:1px;position:absolute;bottom:0;left:0;right:0}.hero-inner{padding-block:clamp(72px,8vw,108px)}.hero-content{grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);align-items:end;gap:clamp(64px,10vw,144px);display:grid}.hero-intro h1{font-family:var(--display);letter-spacing:-.058em;text-wrap:balance;margin:0;font-size:clamp(3.5rem,6vw,5.75rem);font-weight:500;font-stretch:90%;line-height:.96}.hero-intro>p{color:#475451;max-width:600px;margin:26px 0 0;font-size:clamp(1.04rem,1.45vw,1.2rem);line-height:1.68}.hero-links{align-items:center;gap:28px;margin-top:34px;display:flex}.button{border-radius:5px;justify-content:center;align-items:center;gap:10px;min-height:48px;padding:0 17px 0 19px;font-size:.9rem;font-weight:500;transition:background .18s,transform .18s;display:inline-flex}.button svg{width:16px;height:16px}.button-primary{color:#fff;background:var(--signal)}.button-primary:hover{background:var(--signal-dark);transform:translateY(-2px)}.button:active{transform:scale(.96)}.text-link{border-bottom:1px solid var(--line);min-height:40px;color:var(--ink);align-items:center;gap:7px;padding-block:8px;font-size:.9rem;font-weight:500;transition:border-color .18s,color .18s;display:inline-flex}.text-link svg{width:16px;height:16px;transition:transform .18s}.text-link:hover{border-color:var(--signal);color:var(--signal-dark)}.text-link:hover svg{transform:translate(2px,-2px)}.now-note{border-top:1px solid var(--line);padding-top:20px}.now-label,.now-note small{font-family:var(--utility);letter-spacing:.07em;text-transform:uppercase;font-size:.68rem}.now-label{color:var(--signal-dark);align-items:center;gap:9px;display:flex}.now-dot{background:var(--signal);border-radius:50%;flex:none;width:7px;height:7px;box-shadow:0 0 0 4px #176d601a}.now-note strong{max-width:320px;font-family:var(--display);letter-spacing:-.025em;text-wrap:balance;margin:14px 0 12px;font-size:1.08rem;font-weight:500;line-height:1.42;display:block}.now-note small{color:var(--muted);line-height:1.5;display:block}.section{padding-block:clamp(64px,7vw,96px);scroll-margin-top:88px}.section-heading{align-items:center;gap:18px;display:flex}.section-heading:after{background:var(--line);content:"";flex:1;height:1px}.section-heading h2{color:var(--signal-dark);font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.71rem;font-weight:500}.experience-section{background:var(--surface)}.career-line{margin-top:34px;position:relative}.career-line:before{background:var(--line);content:"";width:1px;position:absolute;top:0;bottom:0;left:199px}.career-item{border-top:1px solid var(--line);grid-template-columns:180px 40px minmax(0,1fr);padding-block:42px;display:grid;position:relative}.career-item:last-child{border-bottom:1px solid var(--line)}.career-time{color:var(--muted);font-family:var(--utility);letter-spacing:.045em;text-transform:uppercase;padding-top:7px;font-size:.7rem;line-height:1.55}.career-marker{z-index:1;justify-content:center;padding-top:9px;display:flex;position:relative}.career-marker span{border:2px solid var(--surface);background:#9ca8a5;border-radius:50%;width:9px;height:9px;display:block;box-shadow:0 0 0 1px #9ca8a5}.career-item.is-current .career-marker span{background:var(--signal);width:11px;height:11px;box-shadow:0 0 0 1px var(--signal), 0 0 0 7px var(--signal-soft)}.career-body{max-width:850px;padding-left:34px}.career-title-row{justify-content:space-between;align-items:flex-start;gap:32px;display:flex}.career-company{color:var(--signal-dark);margin:0 0 8px;font-size:.9rem;font-weight:600}.career-body h3{font-family:var(--display);letter-spacing:-.045em;margin:0;font-size:clamp(1.65rem,3vw,2.55rem);font-weight:500;line-height:1.08}.current-label{color:var(--signal-dark);background:var(--signal-soft);font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;border:1px solid #b7d8d1;border-radius:999px;flex:none;padding:6px 10px;font-size:.64rem}.career-focus{color:var(--muted);font-family:var(--utility);letter-spacing:.045em;text-transform:uppercase;margin:20px 0 0;font-size:.69rem;line-height:1.6}.career-summary{color:#46514f;max-width:720px;margin:24px 0 0;font-size:1.02rem;line-height:1.74}.career-highlights{border-top:1px solid var(--line);max-width:780px;margin:30px 0 0;padding:26px 0 0;list-style:none}.career-highlights li{color:#46514f;padding-left:22px;font-size:.93rem;line-height:1.68;position:relative}.career-highlights li+li{margin-top:13px}.career-highlights li:before{background:var(--signal);content:"";border-radius:50%;width:5px;height:5px;position:absolute;top:.68em;left:0}.work-section{background:var(--canvas)}.project-list{border-bottom:1px solid var(--line);margin-top:34px}.project-row{border-top:1px solid var(--line);grid-template-columns:minmax(220px,.85fr) minmax(300px,1.35fr) minmax(150px,.65fr) 34px;align-items:start;gap:clamp(28px,4vw,58px);padding-block:38px;transition:border-color .18s,color .18s;display:grid}.project-name p{color:var(--signal-dark);font-family:var(--utility);letter-spacing:.07em;text-transform:uppercase;margin:0 0 12px;font-size:.66rem}.project-name h3{font-family:var(--display);letter-spacing:-.045em;margin:0;font-size:clamp(1.65rem,2.8vw,2.35rem);font-weight:500;line-height:1.08;transition:color .18s}.project-summary,.project-detail{margin:0}.project-summary{color:#46514f;font-size:.98rem;line-height:1.72}.project-detail{color:var(--muted);font-family:var(--utility);letter-spacing:.035em;text-transform:uppercase;font-size:.67rem;line-height:1.7}.project-arrow{justify-content:flex-end;align-items:center;display:flex}.project-arrow svg{width:21px;height:21px;transition:color .18s,transform .18s}.project-row:hover .project-name h3,.project-row:hover .project-arrow{color:var(--signal)}.project-row:hover .project-arrow svg{transform:translate(4px,-4px)}.github-link{align-items:center;gap:9px;min-height:40px;margin-top:34px;font-size:.9rem;font-weight:500;display:inline-flex}.github-link svg{width:17px;height:17px;transition:transform .18s}.github-link:hover{color:var(--signal-dark)}.github-link:hover svg{transform:translate(4px)}.contact-section{color:#f5faf8;background:var(--ink);scroll-margin-top:88px}.contact-inner{grid-template-columns:minmax(180px,.75fr) minmax(360px,1.25fr);align-items:center;gap:clamp(56px,9vw,128px);padding-block:clamp(56px,6vw,80px);display:grid}.contact-inner h2{color:#f5faf8;font-family:var(--display);letter-spacing:-.05em;text-wrap:balance;margin:0;font-size:clamp(2.25rem,4vw,3.5rem);font-weight:500;line-height:1}.contact-actions{justify-self:end;width:100%;max-width:560px}.email-link{border-top:1px solid #f5faf82e;border-bottom:1px solid #f5faf82e;justify-content:space-between;align-items:center;gap:20px;padding:20px 0;font-size:.94rem;transition:border-color .18s,color .18s;display:flex}.email-link span{align-items:center;gap:11px;display:flex}.email-link svg{width:18px;height:18px}.email-link>svg{transition:transform .18s}.email-link:hover{color:#9bd6cc;border-color:#7fc4b8}.email-link:hover>svg{transform:translate(3px,-3px)}.social-links{flex-wrap:wrap;gap:24px;margin-top:20px;display:flex}.social-links a{color:#f5faf8ad;align-items:center;gap:8px;min-height:40px;font-size:.86rem;transition:color .18s;display:inline-flex}.social-links a:hover{color:#fff}.social-links svg{width:16px;height:16px}.site-footer{border-top:1px solid #f5faf821}.footer-inner{color:#f5faf87a;min-height:64px;font-family:var(--utility);letter-spacing:.07em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:.65rem;display:flex}@media (width<=900px){.hero-content,.contact-inner{grid-template-columns:1fr}.hero-content{align-items:start;gap:48px}.now-note strong{max-width:440px}.project-row{grid-template-columns:minmax(180px,.7fr) minmax(300px,1.3fr) 30px}.project-detail{grid-column:2}.project-arrow{grid-area:1/3}.contact-actions{justify-self:start;max-width:620px}.contact-inner{gap:34px}}@media (width<=720px){.container{width:min(100% - 40px,1180px)}.header-inner{height:64px}.section,.contact-section{scroll-margin-top:72px}.primary-nav{display:none}.header-actions{gap:0}.hero-inner{padding-block:56px}.hero-intro h1{letter-spacing:-.055em;font-size:clamp(3.1rem,15vw,4.25rem)}.hero-intro>p{font-size:1.02rem;line-height:1.62}.hero-links{flex-direction:column;align-items:flex-start;gap:14px;margin-top:30px}.button{width:100%}.now-note{padding-top:18px}.career-line{margin-top:28px}.career-line:before{left:7px}.career-item{grid-template-columns:16px minmax(0,1fr);column-gap:22px;padding-block:34px}.career-time{grid-area:1/2;margin-bottom:20px;padding-top:0}.career-marker{grid-area:1/1/span 2;justify-content:flex-start;padding-top:3px}.career-body{grid-area:2/2;padding-left:0}.career-title-row{gap:18px}.current-label{display:none}.career-focus{margin-top:17px}.career-summary{margin-top:20px;font-size:.96rem}.career-highlights{margin-top:25px;padding-top:22px}.project-list{margin-top:28px}.project-row{grid-template-columns:1fr;gap:22px;padding:31px 38px 31px 0;position:relative}.project-name,.project-summary,.project-detail{grid-column:1}.project-detail{grid-row:auto}.project-arrow{grid-area:auto;position:absolute;top:32px;right:0}.contact-inner{gap:30px;padding-block:52px}.contact-inner h2{font-size:2.35rem}.email-link{align-items:flex-start}.email-link span{word-break:break-word;align-items:flex-start}.email-link span svg{flex:none;margin-top:2px}.footer-inner{flex-direction:column;justify-content:center;align-items:flex-start;gap:8px;padding-block:24px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
