.download-btn:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-width:1px;border-color:rgba(var(--color-border),var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgba(var(--color-card),var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));border-radius:.5rem;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;line-height:1.25rem;transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.download-btn:where(.astro-ecwvkbfv):hover{--tw-border-opacity:1;border-color:rgba(var(--color-accent),var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgba(var(--color-card-muted),var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgba(var(--color-accent),var(--tw-text-opacity,1))}.download-btn:where(.astro-ecwvkbfv) svg:where(.astro-ecwvkbfv){width:1rem;height:1rem}.download-btn:where(.astro-ecwvkbfv):hover svg:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-accent),var(--tw-text-opacity,1))}.download-btn:where(.astro-ecwvkbfv):disabled{cursor:not-allowed;opacity:.5}.resume-section:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.resume-section:where(.astro-ecwvkbfv){margin-bottom:2rem!important}#resume-content:where(.astro-ecwvkbfv) :where(.astro-ecwvkbfv){color:rgb(var(--color-text-base))!important}#resume-content:where(.astro-ecwvkbfv) h2:where(.astro-ecwvkbfv),#resume-content:where(.astro-ecwvkbfv) h3:where(.astro-ecwvkbfv),#resume-content:where(.astro-ecwvkbfv) h4:where(.astro-ecwvkbfv){color:rgb(var(--color-text-base))!important;font-weight:600!important}#resume-content:where(.astro-ecwvkbfv) a:where(.astro-ecwvkbfv){color:rgb(var(--color-accent))!important}.personal-info:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-bottom-width:1px;border-color:rgba(var(--color-border),var(--tw-border-opacity,1));margin-bottom:2rem;padding-bottom:1.5rem;background:0 0!important}.personal-header:where(.astro-ecwvkbfv){text-align:center;margin-bottom:1.5rem}.personal-header:where(.astro-ecwvkbfv) .section-title:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));margin-bottom:.5rem;font-size:1.875rem;font-weight:700;line-height:2.25rem;color:rgb(var(--color-text-base))!important}.job-title:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-size:1.125rem;font-weight:500;line-height:1.75rem;color:rgb(var(--color-text-base))!important;opacity:.7!important}.contact-info:where(.astro-ecwvkbfv){grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem;font-size:.875rem;line-height:1.25rem;display:grid}@media (width>=1024px){.contact-info:where(.astro-ecwvkbfv){grid-template-columns:repeat(2,minmax(0,1fr))}}.contact-item:where(.astro-ecwvkbfv){align-items:center;gap:.5rem;display:flex}.contact-label:where(.astro-ecwvkbfv){--tw-text-opacity:1;min-width:80px;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));color:rgb(var(--color-text-base))!important;font-weight:600!important}.contact-link:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-accent),var(--tw-text-opacity,1))}.contact-link:where(.astro-ecwvkbfv):hover{text-decoration-line:underline}.contact-link:where(.astro-ecwvkbfv){color:rgb(var(--color-accent))!important}.section-heading:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-bottom-width:1px;border-color:rgba(var(--color-border),var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));margin-bottom:1rem;padding-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;color:rgb(var(--color-text-base))!important;border-bottom:1px solid rgb(var(--color-border))!important;font-weight:700!important}.summary-text:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));line-height:1.625;color:rgb(var(--color-text-base))!important}.experience-list:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(1.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.experience-item:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.experience-item:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-left-width:2px;border-color:rgba(var(--color-accent),var(--tw-border-opacity,1));padding-left:1rem}.job-header:where(.astro-ecwvkbfv){flex-direction:column;gap:.5rem;display:flex}@media (width>=1024px){.job-header:where(.astro-ecwvkbfv){flex-direction:row;justify-content:space-between;align-items:flex-start}}.job-title-company:where(.astro-ecwvkbfv){flex:1}.job-position:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-size:1.125rem;line-height:1.75rem;color:rgb(var(--color-text-base))!important;font-weight:600!important}.company-name:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-weight:500;color:rgb(var(--color-text-base))!important;opacity:.7!important}.job-details:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;flex-direction:column;font-size:.875rem;line-height:1.25rem;display:flex}@media (width>=1024px){.job-details:where(.astro-ecwvkbfv){text-align:right}}.job-details:where(.astro-ecwvkbfv){color:rgb(var(--color-text-base))!important;opacity:.7!important}.job-location:where(.astro-ecwvkbfv){font-weight:500;color:rgb(var(--color-text-base))!important}.job-dates:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));color:rgb(var(--color-text-base))!important;opacity:.7!important}.job-description:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));line-height:1.625;color:rgb(var(--color-text-base))!important}.achievements-list:where(.astro-ecwvkbfv){margin-left:1rem;list-style-type:disc;list-style-position:inside}.achievements-list:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.achievements-list:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));color:rgb(var(--color-text-base))!important}.achievement-item:where(.astro-ecwvkbfv){line-height:1.625}.education-list:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(1.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.education-item:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.education-item:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-left-width:2px;border-color:rgba(var(--color-accent),var(--tw-border-opacity,1));padding-left:1rem}.education-header:where(.astro-ecwvkbfv){flex-direction:column;gap:.5rem;display:flex}@media (width>=1024px){.education-header:where(.astro-ecwvkbfv){flex-direction:row;justify-content:space-between;align-items:flex-start}}.degree-info:where(.astro-ecwvkbfv){flex:1}.degree-title:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-size:1.125rem;font-weight:600;line-height:1.75rem}.institution-name:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;font-weight:500}.field-of-study:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;font-size:.875rem;line-height:1.25rem}.education-details:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;flex-direction:column;font-size:.875rem;line-height:1.25rem;display:flex}@media (width>=1024px){.education-details:where(.astro-ecwvkbfv){text-align:right}}.education-dates:where(.astro-ecwvkbfv){font-weight:500}.gpa:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7}.education-achievements:where(.astro-ecwvkbfv){margin-left:1rem;list-style-type:disc;list-style-position:inside}.education-achievements:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.education-achievements:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1))}.skills-grid:where(.astro-ecwvkbfv){grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem;display:grid}@media (width>=1024px){.skills-grid:where(.astro-ecwvkbfv){grid-template-columns:repeat(2,minmax(0,1fr))}}.skill-category:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.skill-category-title:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-bottom-width:1px;border-color:rgba(var(--color-border),var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));padding-bottom:.25rem;font-size:1.125rem;font-weight:600;line-height:1.75rem}.skill-tags:where(.astro-ecwvkbfv){flex-wrap:wrap;gap:.5rem;display:flex}.skill-tag:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-width:1px;border-color:rgba(var(--color-border),var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgba(var(--color-card),var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));border-radius:9999px;padding:.25rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-block}.skill-tag:where(.astro-ecwvkbfv):hover{--tw-bg-opacity:1;background-color:rgba(var(--color-card-muted),var(--tw-bg-opacity,1))}.certifications-list:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.certification-item:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.certification-item:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-left-width:2px;border-color:rgba(var(--color-accent),var(--tw-border-opacity,1));padding-left:1rem}.cert-header:where(.astro-ecwvkbfv){flex-direction:column;gap:.25rem;display:flex}@media (width>=1024px){.cert-header:where(.astro-ecwvkbfv){flex-direction:row;justify-content:space-between;align-items:flex-start}}.cert-name:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-size:1.125rem;font-weight:600;line-height:1.75rem}.cert-date:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;font-size:.875rem;font-weight:500;line-height:1.25rem}.cert-issuer:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;font-weight:500}.cert-id:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;font-size:.875rem;line-height:1.25rem}.projects-list:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(1.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.project-item:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.project-item:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-left-width:2px;border-color:rgba(var(--color-accent),var(--tw-border-opacity,1));padding-left:1rem}.project-name:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-size:1.125rem;font-weight:600;line-height:1.75rem}.project-description:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));line-height:1.625}.project-technologies:where(.astro-ecwvkbfv){flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.tech-label:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-weight:600}.tech-tag:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-width:1px;border-color:rgba(var(--color-border),var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgba(var(--color-card),var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));border-radius:.25rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.25rem;display:inline-block}.project-achievements:where(.astro-ecwvkbfv){margin-left:1rem;list-style-type:disc;list-style-position:inside}.project-achievements:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.project-achievements:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1))}.publications-list:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(1.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.publication-item:where(.astro-ecwvkbfv)>:not([hidden]):where(.astro-ecwvkbfv)~:not([hidden]):where(.astro-ecwvkbfv){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.publication-item:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-left-width:2px;border-color:rgba(var(--color-accent),var(--tw-border-opacity,1));padding-left:1rem}.publication-header:where(.astro-ecwvkbfv){flex-direction:column;gap:.5rem;display:flex}@media (width>=1024px){.publication-header:where(.astro-ecwvkbfv){flex-direction:row;justify-content:space-between;align-items:flex-start}}.publication-title-type:where(.astro-ecwvkbfv){flex:1}.publication-title:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-size:1.125rem;line-height:1.75rem;color:rgb(var(--color-text-base))!important;font-weight:600!important}.publication-type:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));font-weight:500;color:rgb(var(--color-text-base))!important;opacity:.7!important}.publication-details:where(.astro-ecwvkbfv){--tw-text-opacity:1;color:rgba(var(--color-text-base),var(--tw-text-opacity,1));opacity:.7;flex-direction:column;font-size:.875rem;line-height:1.25rem;display:flex}@media (width>=1024px){.publication-details:where(.astro-ecwvkbfv){text-align:right}}.publication-details:where(.astro-ecwvkbfv){color:rgb(var(--color-text-base))!important;opacity:.7!important}.publication-year:where(.astro-ecwvkbfv){font-weight:500;color:rgb(var(--color-text-base))!important}@media print{.resume-header:where(.astro-ecwvkbfv){border-bottom-width:0;padding-bottom:0}.resume-actions:where(.astro-ecwvkbfv){display:none}.resume-container:where(.astro-ecwvkbfv){max-width:none;padding-left:0;padding-right:0}.personal-info:where(.astro-ecwvkbfv),.section-heading:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.experience-item:where(.astro-ecwvkbfv),.education-item:where(.astro-ecwvkbfv),.certification-item:where(.astro-ecwvkbfv),.project-item:where(.astro-ecwvkbfv),.award-item:where(.astro-ecwvkbfv),.publication-item:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-left-width:2px;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.skill-category-title:where(.astro-ecwvkbfv){--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}}