h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;margin-bottom:1rem;color:#202020}h1{font-size:2rem}@media(min-width: 768px){h1{font-size:3rem}}h2{font-size:1.5rem}@media(min-width: 768px){h2{font-size:2rem}}h3{font-size:1.25rem}@media(min-width: 768px){h3{font-size:1.5rem}}h4{font-size:1.125rem}@media(min-width: 768px){h4{font-size:1.25rem}}h5{font-size:1rem}@media(min-width: 768px){h5{font-size:1.125rem}}h6{font-size:.875rem}@media(min-width: 768px){h6{font-size:1rem}}p{margin-bottom:1rem}p:last-child{margin-bottom:0}ul,ol{margin-bottom:1rem;padding-left:1.5rem}ul li,ol li{margin-bottom:.5rem}ul li:last-child,ol li:last-child{margin-bottom:0}strong,b{font-weight:700}em,i{font-style:italic}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}.text-primary{color:#404040}.text-secondary{color:gray}.text-dark{color:#202020}.text-light{color:#f5f5f5}.text-muted{opacity:.7}.text-small{font-size:.875rem}.text-large{font-size:1.25rem}a{color:#404040;text-decoration:none;transition:color 150ms ease}a:hover,a:focus{color:rgb(38.5,38.5,38.5);text-decoration:underline}.site-header{padding:1rem 0;background-color:#404040;position:sticky;top:0;z-index:100;box-shadow:0 4px 30px rgba(0,0,0,.1)}.site-header .header-content{display:flex;justify-content:space-between;align-items:center}.site-header .logo{font-size:1.25rem;font-weight:700}.site-header .logo .logo-link{display:flex;align-items:center;color:#f5f5f5;text-decoration:none}.site-header .logo .logo-link:hover{color:#fff}.site-header .logo .logo-text{font-size:1.5rem}.site-header .main-nav .nav-toggle-checkbox{position:absolute;opacity:0;width:0;height:0}.site-header .main-nav .nav-toggle-label{display:flex;flex-direction:column;justify-content:space-between;width:30px;height:21px;background:rgba(0,0,0,0);border:none;cursor:pointer;padding:0;z-index:2}.site-header .main-nav .nav-toggle-label .nav-toggle-bar{display:block;width:100%;height:3px;background-color:#f5f5f5;border-radius:3px;transition:all .3s ease}@media(min-width: 768px){.site-header .main-nav .nav-toggle-label{display:none}}.site-header .main-nav .nav-toggle-checkbox:checked+.nav-toggle-label .nav-toggle-bar:nth-child(2){opacity:0}.site-header .main-nav .nav-toggle-checkbox:checked+.nav-toggle-label .nav-toggle-bar:first-child{transform:translateY(9px) rotate(45deg)}.site-header .main-nav .nav-toggle-checkbox:checked+.nav-toggle-label .nav-toggle-bar:last-child{transform:translateY(-9px) rotate(-45deg)}.site-header .main-nav .nav-toggle-checkbox:checked~.nav-list{visibility:visible;opacity:1;transform:translateY(0)}.site-header .main-nav .nav-list{display:flex;flex-direction:column;position:absolute;top:100%;left:0;width:100%;background-color:#f5f5f5;padding:1rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);visibility:hidden;opacity:0;transform:translateY(-10px);transition:opacity .3s ease,transform .3s ease,visibility .3s ease;z-index:1}@media(prefers-reduced-motion: reduce){.site-header .main-nav .nav-list{transition:opacity .1s ease,visibility .1s ease;transform:none}}@media(min-width: 768px){.site-header .main-nav .nav-list{visibility:visible;opacity:1;transform:none;flex-direction:row;position:static;width:auto;background-color:rgba(0,0,0,0);padding:0;box-shadow:none;transition:none}}.site-header .main-nav .nav-item{margin-bottom:1rem}.site-header .main-nav .nav-item:last-child{margin-bottom:0}.site-header .main-nav .nav-item.active .nav-link{color:#404040;font-weight:600}@media(min-width: 768px){.site-header .main-nav .nav-item.active .nav-link{color:#fff;text-decoration:underline}}@media(min-width: 768px){.site-header .main-nav .nav-item{margin-bottom:0;margin-left:1.5rem}.site-header .main-nav .nav-item:first-child{margin-left:0}}.site-header .main-nav .nav-link{color:#202020;font-weight:500;font-size:1.125rem;transition:color 150ms ease}.site-header .main-nav .nav-link:hover{color:#404040;text-decoration:none}@media(min-width: 768px){.site-header .main-nav .nav-link{color:#f5f5f5}.site-header .main-nav .nav-link:hover{color:#fff}}.site-footer{background-color:#202020;color:#f5f5f5;padding:2rem 0;box-shadow:0 -4px 30px rgba(0,0,0,.1)}.site-footer .footer-content{display:flex;flex-direction:column;align-items:center;text-align:center}@media(min-width: 768px){.site-footer .footer-content{flex-direction:row;justify-content:space-between;text-align:left}}.site-footer .footer-info{margin-bottom:1rem}@media(min-width: 768px){.site-footer .footer-info{margin-bottom:0}}.site-footer .footer-social{display:flex}.site-footer .footer-social .social-link{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background-color:rgba(245,245,245,.1);color:#f5f5f5;margin-left:.5rem;transition:background-color 150ms ease}.site-footer .footer-social .social-link:first-child{margin-left:0}.site-footer .footer-social .social-link svg{width:20px;height:20px;fill:currentColor}.site-footer .footer-social .social-link:hover{background-color:rgba(245,245,245,.2);color:#f5f5f5;text-decoration:none}.section-alt-bg{background-color:#e8e8e8}.intro{padding:3rem 0;background-color:#f5f5f5}.intro .intro-content{max-width:800px;margin:0 auto;text-align:center}.intro .intro-title{margin-bottom:1rem}.intro .intro-title .intro-greeting{display:block;font-size:1.25rem;font-weight:400;margin-bottom:.25rem;color:#333}.intro .intro-title .intro-name{display:block;font-size:2rem;color:#404040}@media(min-width: 768px){.intro .intro-title .intro-name{font-size:3rem}}.intro .intro-tagline{font-size:1.25rem;margin-bottom:1.5rem}@media(min-width: 768px){.intro .intro-tagline{font-size:1.5rem}}.intro .intro-actions{display:flex;flex-direction:column;align-items:center}.intro .intro-actions .btn{margin-bottom:1rem}.intro .intro-actions .btn:last-child{margin-bottom:0}@media(min-width: 768px){.intro .intro-actions{flex-direction:row;justify-content:center}.intro .intro-actions .btn{margin-bottom:0;margin-right:1rem}.intro .intro-actions .btn:last-child{margin-right:0}}.projects{background-color:#f5f5f5}.projects .projects-featured{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-bottom:2rem}@media(min-width: 768px){.projects .projects-featured{grid-template-columns:repeat(2, 1fr)}}@media(min-width: 992px){.projects .projects-featured{grid-template-columns:repeat(3, 1fr)}}.projects .projects-more{text-align:center;margin-top:2rem}.projects-full .projects-grid{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-bottom:2rem}@media(min-width: 768px){.projects-full .projects-grid{grid-template-columns:repeat(2, 1fr)}}@media(min-width: 992px){.projects-full .projects-grid{grid-template-columns:repeat(3, 1fr)}}.skills{background-color:#404040;color:#f5f5f5}.skills .section-title{color:#f5f5f5}.skills .section-title:after{background-color:#f5f5f5}.skills .skills-grid{display:grid;grid-template-columns:1fr;gap:2rem;max-width:1000px;margin:0 auto}@media(min-width: 768px){.skills .skills-grid{grid-template-columns:repeat(2, 1fr)}}.skills .skills-category-title{color:#f5f5f5;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid #a8a8a8;text-align:center;font-size:1.5rem}.skills .skills-card-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(140px, 1fr));gap:1rem}.skills .skills-card{background-color:#202020;border:1px solid #404040;border-radius:.5rem;padding:.5rem 1rem;text-align:center;display:flex;align-items:center;justify-content:center;min-height:48px;box-shadow:0 4px 6px rgba(32,32,32,.2)}.skills .skills-card-text{font-weight:700;color:#f5f5f5;text-shadow:0 1px 2px rgba(0,0,0,.3)}.skills .skills-list{padding-left:0;display:grid;grid-template-columns:1fr;column-gap:1.5rem;row-gap:.5rem}@media(min-width: 576px){.skills .skills-list{grid-template-columns:repeat(2, 1fr)}}@media(min-width: 992px){.skills .skills-list{grid-template-columns:repeat(3, 1fr)}}.skills .skills-item{position:relative;padding-left:1rem;line-height:1.4}.skills .skills-item:before{content:"";position:absolute;left:0;top:10px;width:6px;height:6px;border-radius:50%;background-color:#404040}.about{background-color:#e8e8e8}.about .about-content{max-width:800px;margin:0 auto}.about .about-text{margin-bottom:1.5rem}.about .about-links{text-align:center}.about-full{background-color:#e8e8e8}.about-full .about-content{max-width:800px;margin:0 auto}.about-full .about-content h2{margin-top:2rem;margin-bottom:1rem}.about-full .about-content h2:first-child{margin-top:0}.about-full .about-content ul{margin-left:1rem;margin-bottom:1.5rem}.about-full .about-content ul li{margin-bottom:.5rem;position:relative;padding-left:1rem}.about-full .about-content ul li:before{content:"";position:absolute;left:0;top:12px;width:6px;height:6px;border-radius:50%;background-color:#404040}.contact{background-color:#f5f5f5}.contact .contact-content{max-width:800px;margin:0 auto;text-align:center}.contact .contact-intro{margin-bottom:1.5rem}.contact .contact-methods{display:flex;flex-direction:column;align-items:center;margin-bottom:1.5rem}@media(min-width: 768px){.contact .contact-methods{flex-direction:row;justify-content:center}}.contact .contact-method{margin-bottom:1.5rem}.contact .contact-method:last-child{margin-bottom:0}@media(min-width: 768px){.contact .contact-method{margin-bottom:0;margin-right:3rem}.contact .contact-method:last-child{margin-right:0}}.contact .contact-method-title{margin-bottom:.5rem}.contact .contact-social{display:flex;justify-content:center}.contact .contact-social .social-link{display:flex;align-items:center;margin-right:1rem}.contact .contact-social .social-link:last-child{margin-right:0}.contact .contact-social .social-link .social-icon{margin-right:.25rem}.contact .contact-social .social-link .social-icon svg{width:20px;height:20px;fill:currentColor}.contact-full{background-color:#f5f5f5}.contact-full .contact-content{max-width:800px;margin:0 auto}.contact-full .contact-intro{text-align:center;margin-bottom:2rem}.contact-full .contact-intro p{max-width:600px;margin-left:auto;margin-right:auto}.contact-full .text-center{text-align:center}.contact-full .contact-method{margin-bottom:2rem}.contact-full .contact-method h3{margin-bottom:1rem}.contact-full .contact-method .contact-link{display:inline-block;padding:.5rem 1rem;border-radius:.5rem;transition:all 300ms ease;font-weight:500}.contact-full .contact-method .contact-link:hover{background-color:rgba(64,64,64,.1);color:#404040;transform:translateY(-2px);text-decoration:none}.contact-full .social-profiles-centered{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem}@media(min-width: 576px){.contact-full .social-profiles-centered{flex-direction:row;justify-content:center;gap:2rem}}.contact-full .contact-social-link{display:flex;align-items:center;justify-content:center;padding:.5rem 1rem;border-radius:.5rem;transition:all 300ms ease}.contact-full .contact-social-link:hover{background-color:rgba(64,64,64,.1);transform:translateY(-2px)}.contact-full .contact-social-link .contact-social-icon{margin-right:.5rem}.contact-full .contact-social-link .contact-social-icon svg{width:24px;height:24px;fill:currentColor}.contact-full .contact-social-link .contact-social-name{font-weight:500}.resume-section{padding:2rem 0;position:relative;z-index:1;margin-bottom:0}.resume-section:first-of-type{padding-top:3rem}.resume-section.section-light,.resume-section.section-lightest{background-color:#f5f5f5}.resume-section.section-medium{background-color:#e0e0e0}.resume-section.section-dark{background-color:#404040;color:#f5f5f5}.resume-section.section-darkest{background-color:#202020;color:#f5f5f5}.resume-section.resume-cta{background-color:#fff}.resume-section .section-header{margin-bottom:2rem;text-align:center}.resume-section .section-header .name-title-wrapper{display:flex;flex-direction:column;align-items:center}@media(min-width: 576px){.resume-section .section-header .name-title-wrapper{flex-direction:row;justify-content:center;align-items:baseline}}.resume-section .section-header .name-title-wrapper .title-divider{display:block;width:40px;height:2px;background-color:gray;margin:.5rem auto}@media(min-width: 576px){.resume-section .section-header .name-title-wrapper .title-divider{display:inline-block;width:3px;height:36px;background-color:gray;margin:0 1.5rem;transform:rotate(25deg)}}.resume-section .section-header .name-title-wrapper .title-display{font-size:1.5rem;color:#666;margin-top:.25rem}@media(min-width: 576px){.resume-section .section-header .name-title-wrapper .title-display{margin-top:0}}.resume-section .section-title{color:#404040;font-size:2rem;margin-bottom:.25rem}.resume-section .section-subtitle{color:#404040;font-size:1.5rem;margin-bottom:1rem;position:relative;padding-bottom:.5rem}.resume-section .section-subtitle:after{content:"";position:absolute;bottom:0;left:0;width:60px;height:3px;background-color:gray}.resume-section .section-header .section-title:after{display:none}.resume-section .section-header .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-section .section-subtitle.text-center:after{left:50%;transform:translateX(-50%)}.resume-section .cta-content .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-buttons{display:flex;flex-direction:column;align-items:center;gap:1rem;margin-bottom:2rem}@media(min-width: 576px){.resume-buttons{flex-direction:row;justify-content:center;align-items:center}}.resume-buttons .pdf-notice{margin-bottom:1rem}@media(min-width: 576px){.resume-buttons .pdf-notice{margin-bottom:0;margin-right:1rem}}.resume-buttons .pdf-notice p{display:inline-block;padding:.25rem 1rem;background-color:rgba(128,128,128,.1);color:#404040;border-radius:.5rem;font-style:italic;font-size:.875rem}.resume-buttons .button{display:inline-flex;align-items:center;padding:.5rem 1.5rem;border-radius:.5rem;font-weight:600;text-decoration:none;transition:all 150ms ease}.resume-buttons .button .icon{margin-right:.5rem}.resume-buttons .button.button-primary{background-color:gray;color:#f5f5f5;border:2px solid gray}.resume-buttons .button.button-primary:hover{background-color:rgb(102.5,102.5,102.5);border-color:rgb(102.5,102.5,102.5);transform:translateY(-2px)}.resume-buttons .button.button-secondary{background-color:rgba(0,0,0,0);color:#202020;border:2px solid #202020}.resume-buttons .button.button-secondary:hover{background-color:rgba(32,32,32,.1);transform:translateY(-2px)}.resume-summary{max-width:800px;margin:0 auto;text-align:center;margin-bottom:2rem}.resume-summary .section-subtitle{text-align:center}.resume-summary .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-summary p{font-size:1.125rem;line-height:1.6;text-align:justify}.resume-skills{margin-bottom:2rem}.resume-skills .section-subtitle{text-align:center}.resume-skills .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-skills .skills-grid{display:grid;grid-template-columns:1fr;gap:2rem;max-width:800px;margin:0 auto;padding:0 1rem}@media(min-width: 576px){.resume-skills .skills-grid{grid-template-columns:repeat(2, 1fr);column-gap:3rem;padding:0}}.resume-skills .skills-category h3{font-size:1.25rem;color:#404040;margin-bottom:1rem;text-align:center}.resume-skills .skills-list{display:grid;grid-template-columns:repeat(2, 1fr);gap:1rem;max-width:800px;margin:0 auto;padding:0 1rem}@media(min-width: 576px){.resume-skills .skills-list{column-gap:2rem;row-gap:1rem;padding:0}}@media(min-width: 992px){.resume-skills .skills-list{grid-template-columns:repeat(3, 1fr)}}.resume-skills .skill-item{background-color:#202020;color:#f5f5f5;padding:.25rem .5rem;border-radius:.25rem;font-weight:500;text-align:center;list-style:none;display:flex;justify-content:center;align-items:center;height:100%;border:1px solid #404040;box-shadow:0 2px 4px rgba(32,32,32,.2);font-size:.875rem}@media(min-width: 576px){.resume-skills .skill-item{padding:.5rem 1rem;font-size:1rem}}.resume-experience{max-width:800px;margin:0 auto}.resume-experience .section-subtitle{text-align:center}.resume-experience .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-experience .experience-timeline{position:relative}.resume-experience .experience-item{margin-bottom:2rem;position:relative}@media(max-width: 767px){.resume-experience .experience-item{padding-bottom:2rem;margin-bottom:2rem;border-bottom:1px solid rgba(64,64,64,.1)}.resume-experience .experience-item:last-child{border-bottom:none;padding-bottom:0}}.resume-experience .experience-item:last-child{margin-bottom:0}.resume-experience .experience-item:before{content:"";position:absolute;left:-40px;top:0;width:20px;height:20px;border-radius:50%;background-color:gray;display:none}@media(min-width: 768px){.resume-experience .experience-item:before{display:block}}.resume-experience .experience-item:after{content:"";position:absolute;top:20px;bottom:-40px;left:-30px;width:2px;background-color:rgba(128,128,128,.3);display:none}@media(min-width: 768px){.resume-experience .experience-item:after{display:block}}.resume-experience .experience-item:last-child:after{display:none}.resume-experience .company-header{margin-bottom:1rem}.resume-experience .company-name{font-size:1.25rem;color:#404040;margin-bottom:.25rem}.resume-experience .job-meta{display:flex;flex-wrap:wrap;gap:.5rem 1rem;font-weight:500;margin-bottom:.5rem}.resume-experience .job-meta .job-company{color:#202020}.resume-experience .job-meta .job-location,.resume-experience .job-meta .job-period{color:#666}.resume-experience .positions-list{margin-bottom:1rem}.resume-experience .position-item{margin-bottom:.5rem}.resume-experience .position-item:last-child{margin-bottom:0}.resume-experience .position-header{display:flex;flex-direction:column}@media(min-width: 576px){.resume-experience .position-header{flex-direction:row;justify-content:space-between;align-items:center}}.resume-experience .position-title{font-size:1.125rem;font-weight:600;color:#202020;margin-bottom:.25rem}@media(min-width: 576px){.resume-experience .position-title{margin-bottom:0}}.resume-experience .position-period{font-size:.875rem;color:#666;font-style:italic}.resume-experience .job-description{margin-bottom:1rem;text-align:justify}.resume-experience .achievements-list{padding-left:1rem}.resume-experience .achievements-list .achievement-item{margin-bottom:.5rem;position:relative;text-align:justify}.resume-experience .achievements-list .achievement-item:before{content:"";position:absolute;left:-1rem;top:10px;width:6px;height:6px;border-radius:50%;background-color:gray}.resume-education{max-width:800px;margin:0 auto}.resume-education .section-subtitle{text-align:center}.resume-education .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-education .education-wrapper{display:flex;justify-content:center}.resume-education .education-list{max-width:800px;width:100%}.resume-education .education-item{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid rgba(64,64,64,.1)}.resume-education .education-item:last-child{margin-bottom:0;border-bottom:none}.resume-education .education-item .education-header{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:.25rem}@media(min-width: 576px){.resume-education .education-item .education-header{flex-wrap:nowrap}}.resume-education .education-item .education-header .degree{font-size:1.25rem;color:#404040;margin-bottom:0;margin-right:.25rem}.resume-education .education-item .education-header .institution{font-weight:500;margin-bottom:0;color:#202020;white-space:nowrap;margin-right:.25rem}.resume-education .education-item .education-header .year{color:#666;font-size:.875rem;white-space:nowrap;margin-left:auto}@media(max-width: 575px){.resume-education .education-item .education-header .year{margin-left:0;margin-top:.25rem;display:block;width:100%}}.resume-certifications{max-width:800px;margin:0 auto}.resume-certifications .section-subtitle{text-align:center}.resume-certifications .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-certifications .certifications-wrapper{display:flex;justify-content:center}.resume-certifications .certifications-list{padding-left:0;max-width:800px;width:100%}.resume-certifications .certifications-list .certification-item{list-style:none;padding:.5rem 0 1rem;margin-bottom:1rem;border-bottom:1px solid rgba(64,64,64,.1)}.resume-certifications .certifications-list .certification-item:last-child{margin-bottom:0;border-bottom:none}.resume-certifications .certifications-list .certification-item .cert-header{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:.25rem}@media(min-width: 576px){.resume-certifications .certifications-list .certification-item .cert-header{flex-wrap:nowrap}}.resume-certifications .certifications-list .certification-item .cert-header .cert-name{font-size:1.125rem;font-weight:600;color:#404040;margin-bottom:0;margin-right:.25rem}.resume-certifications .certifications-list .certification-item .cert-header .cert-score{font-weight:500;color:#202020;white-space:nowrap;margin-right:.25rem}.resume-certifications .certifications-list .certification-item .cert-header .cert-year{font-size:.875rem;color:#666;white-space:nowrap;margin-left:auto}@media(max-width: 575px){.resume-certifications .certifications-list .certification-item .cert-header .cert-year{margin-left:0;margin-top:.25rem;display:block;width:100%}}.resume-certifications .certifications-list .certification-item .cert-description{font-size:.875rem;line-height:1.5;text-align:justify}.resume-projects{max-width:800px;margin:0 auto}.resume-projects .section-subtitle{text-align:center}.resume-projects .section-subtitle:after{left:50%;transform:translateX(-50%)}.resume-projects .projects-grid{display:grid;grid-template-columns:1fr;gap:1.5rem}@media(min-width: 768px){.resume-projects .projects-grid{grid-template-columns:repeat(2, 1fr)}}.resume-projects .project-card{background-color:#f5f5f5;border-radius:.5rem;padding:1.5rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);transition:all 150ms ease}.resume-projects .project-card:hover{transform:translateY(-5px);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.resume-projects .project-name{font-size:1.25rem;color:#404040;margin-bottom:.5rem}.resume-projects .project-description{margin-bottom:1rem}.resume-projects .project-technologies{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:1rem}.resume-projects .project-technologies .project-tech{font-size:.875rem;padding:.25rem .5rem;background-color:rgba(128,128,128,.1);color:#404040;border-radius:.25rem;font-weight:500}.resume-projects .project-link{display:inline-flex;align-items:center;color:gray;font-weight:600}.resume-projects .project-link svg{margin-left:.25rem;transition:transform 150ms ease}.resume-projects .project-link:hover{text-decoration:none}.resume-projects .project-link:hover svg{transform:translateX(3px)}.resume-cta{background-color:#fff;color:#202020;text-align:center}.resume-cta .section-subtitle{color:#404040}.resume-cta .section-subtitle:after{background-color:gray}.resume-cta .cta-content{max-width:600px;margin:0 auto}.resume-cta .cta-content p{margin-bottom:1.5rem}.resume-cta .cta-buttons{display:flex;flex-direction:column;align-items:center;gap:1rem}@media(min-width: 576px){.resume-cta .cta-buttons{flex-direction:row;justify-content:center}}.resume-cta .cta-buttons .button.button-primary{background-color:#202020;border-color:#202020;color:#f5f5f5}.resume-cta .cta-buttons .button.button-primary:hover{background-color:#404040;border-color:#404040}.resume-cta .cta-buttons .button.button-secondary{background-color:rgba(0,0,0,0);border-color:#202020;color:#202020}.resume-cta .cta-buttons .button.button-secondary:hover{background-color:rgba(32,32,32,.1)}.btn{display:inline-block;padding:.5rem 1.5rem;border-radius:.5rem;font-weight:600;text-align:center;text-decoration:none;cursor:pointer;transition:all 150ms ease;border:2px solid rgba(0,0,0,0)}.btn:hover{text-decoration:none}.btn-primary{background-color:#404040;color:#f5f5f5}.btn-primary:hover{background-color:rgb(38.5,38.5,38.5);color:#f5f5f5}.btn-secondary{background-color:rgba(0,0,0,0);color:#404040;border-color:#404040}.btn-secondary:hover{background-color:#404040;color:#f5f5f5}.project-card{background-color:#fff;border-radius:.5rem;overflow:hidden;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transition:transform 300ms ease,box-shadow 300ms ease;height:100%}.project-card:hover{transform:translateY(-5px);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.project-card .project-content{padding:1.5rem}.project-card .project-title{margin-bottom:.5rem;color:#202020}.project-card .project-description{margin-bottom:1rem;color:#333}.project-card .project-tech-list{display:flex;flex-wrap:wrap;margin-bottom:1rem;padding-left:0}.project-card .project-tech-item{background-color:rgba(64,64,64,.1);color:#404040;font-size:.875rem;padding:.25rem .5rem;border-radius:.25rem;margin-right:.25rem;margin-bottom:.25rem}.project-card .project-links{display:flex;align-items:center}.project-card .project-link{display:flex;align-items:center;margin-right:1rem;font-size:.875rem;font-weight:600}.project-card .project-link:last-child{margin-right:0}.project-card .project-link .project-link-icon{margin-right:.25rem}.project-card .project-link .project-link-icon svg{width:18px;height:18px;fill:currentColor}.form-group{margin-bottom:1rem}.form-label{display:block;font-weight:600;margin-bottom:.25rem}.form-input,.form-textarea,.form-select{display:block;width:100%;padding:.5rem;font-size:1rem;line-height:1.5;color:#333;background-color:#fff;border:1px solid rgba(32,32,32,.2);border-radius:.25rem;transition:border-color 150ms ease,box-shadow 150ms ease}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:#404040;outline:0;box-shadow:0 0 0 3px rgba(64,64,64,.25)}.form-textarea{resize:vertical}.form-actions{margin-top:1.5rem}@media(prefers-reduced-motion: reduce){.animate-on-scroll,.fade-in,.slide-up,.slide-in-left,.slide-in-right{transition:none !important;opacity:1 !important;transform:none !important;animation:none !important}}.animate-on-scroll{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s ease}.fade-in{opacity:0;transition:opacity 1s ease}.slide-up{transform:translateY(50px);opacity:0;transition:transform .8s ease,opacity .8s ease}.slide-in-left{transform:translateX(-50px);opacity:0;transition:transform .8s ease,opacity .8s ease}.slide-in-right{transform:translateX(50px);opacity:0;transition:transform .8s ease,opacity .8s ease}.delay-1{transition-delay:0.1s}.delay-2{transition-delay:0.2s}.delay-3{transition-delay:0.3s}.delay-4{transition-delay:0.4s}.delay-5{transition-delay:0.5s}.visible{opacity:1 !important;transform:none !important}section:target .animate-on-scroll,section:target .fade-in,section:target .slide-up,section:target .slide-in-left,section:target .slide-in-right{opacity:1;transform:translateY(0)}.initial-visible{opacity:1 !important;transform:none !important;transition:opacity .5s ease,transform .5s ease !important}.intro .animate-on-scroll,.intro .fade-in,.intro .slide-up,.intro .slide-in-left,.intro .slide-in-right{opacity:1;transform:none;transition:opacity .5s ease,transform .5s ease}html{scroll-behavior:smooth}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}}@keyframes fadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes initialFadeIn{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.intro .animate-on-scroll,.intro .fade-in,.intro .slide-up,.intro .slide-in-left,.intro .slide-in-right{animation:initialFadeIn .6s ease forwards}@supports(animation-timeline: scroll()){.animate-on-scroll:not(.intro *),.fade-in:not(.intro *),.slide-up:not(.intro *),.slide-in-left:not(.intro *),.slide-in-right:not(.intro *){animation:fadeIn .8s ease forwards;animation-timeline:scroll();animation-range:entry 10% cover 30%}.slide-in-left:not(.intro *){animation-name:slideInLeft}.slide-in-right:not(.intro *){animation-name:slideInRight}@keyframes slideInLeft{from{opacity:0;transform:translateX(-50px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInRight{from{opacity:0;transform:translateX(50px)}to{opacity:1;transform:translateX(0)}}}.m-xs{margin:.25rem}.mt-xs{margin-top:.25rem}.mr-xs{margin-right:.25rem}.mb-xs{margin-bottom:.25rem}.ml-xs{margin-left:.25rem}.mx-xs{margin-left:.25rem;margin-right:.25rem}.my-xs{margin-top:.25rem;margin-bottom:.25rem}.p-xs{padding:.25rem}.pt-xs{padding-top:.25rem}.pr-xs{padding-right:.25rem}.pb-xs{padding-bottom:.25rem}.pl-xs{padding-left:.25rem}.px-xs{padding-left:.25rem;padding-right:.25rem}.py-xs{padding-top:.25rem;padding-bottom:.25rem}.m-sm{margin:.5rem}.mt-sm{margin-top:.5rem}.mr-sm{margin-right:.5rem}.mb-sm{margin-bottom:.5rem}.ml-sm{margin-left:.5rem}.mx-sm{margin-left:.5rem;margin-right:.5rem}.my-sm{margin-top:.5rem;margin-bottom:.5rem}.p-sm{padding:.5rem}.pt-sm{padding-top:.5rem}.pr-sm{padding-right:.5rem}.pb-sm{padding-bottom:.5rem}.pl-sm{padding-left:.5rem}.px-sm{padding-left:.5rem;padding-right:.5rem}.py-sm{padding-top:.5rem;padding-bottom:.5rem}.m-md{margin:1rem}.mt-md{margin-top:1rem}.mr-md{margin-right:1rem}.mb-md{margin-bottom:1rem}.ml-md{margin-left:1rem}.mx-md{margin-left:1rem;margin-right:1rem}.my-md{margin-top:1rem;margin-bottom:1rem}.p-md{padding:1rem}.pt-md{padding-top:1rem}.pr-md{padding-right:1rem}.pb-md{padding-bottom:1rem}.pl-md{padding-left:1rem}.px-md{padding-left:1rem;padding-right:1rem}.py-md{padding-top:1rem;padding-bottom:1rem}.m-lg{margin:1.5rem}.mt-lg{margin-top:1.5rem}.mr-lg{margin-right:1.5rem}.mb-lg{margin-bottom:1.5rem}.ml-lg{margin-left:1.5rem}.mx-lg{margin-left:1.5rem;margin-right:1.5rem}.my-lg{margin-top:1.5rem;margin-bottom:1.5rem}.p-lg{padding:1.5rem}.pt-lg{padding-top:1.5rem}.pr-lg{padding-right:1.5rem}.pb-lg{padding-bottom:1.5rem}.pl-lg{padding-left:1.5rem}.px-lg{padding-left:1.5rem;padding-right:1.5rem}.py-lg{padding-top:1.5rem;padding-bottom:1.5rem}.m-xl{margin:2rem}.mt-xl{margin-top:2rem}.mr-xl{margin-right:2rem}.mb-xl{margin-bottom:2rem}.ml-xl{margin-left:2rem}.mx-xl{margin-left:2rem;margin-right:2rem}.my-xl{margin-top:2rem;margin-bottom:2rem}.p-xl{padding:2rem}.pt-xl{padding-top:2rem}.pr-xl{padding-right:2rem}.pb-xl{padding-bottom:2rem}.pl-xl{padding-left:2rem}.px-xl{padding-left:2rem;padding-right:2rem}.py-xl{padding-top:2rem;padding-bottom:2rem}.m-auto{margin:auto}.mt-auto{margin-top:auto}.mr-auto{margin-right:auto}.mb-auto{margin-bottom:auto}.ml-auto{margin-left:auto}.mx-auto{margin-left:auto;margin-right:auto}.my-auto{margin-top:auto;margin-bottom:auto}.d-none{display:none !important}.d-block{display:block !important}.d-flex{display:flex !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.text-center{text-align:center !important}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-uppercase{text-transform:uppercase !important}.text-lowercase{text-transform:lowercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-medium{font-weight:500 !important}.font-weight-semibold{font-weight:600 !important}.font-weight-bold{font-weight:700 !important}.text-primary{color:#404040 !important}.text-secondary{color:gray !important}.text-dark{color:#202020 !important}.text-light{color:#f5f5f5 !important}.bg-primary{background-color:#404040 !important}.bg-secondary{background-color:gray !important}.bg-dark{background-color:#202020 !important}.bg-light{background-color:#f5f5f5 !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.rounded{border-radius:.5rem !important}.rounded-sm{border-radius:.25rem !important}.rounded-lg{border-radius:1rem !important}.rounded-circle{border-radius:50% !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:100%;scroll-behavior:smooth}body{font-family:"Open Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;font-weight:400;line-height:1.6;color:#333;background-color:#f5f5f5;overflow-x:hidden}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 1rem}@media(min-width: 768px){.container{padding:0 1.5rem}}.site-container{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1 0 auto}section{padding:2rem 0;position:relative}@media(min-width: 768px){section{padding:3rem 0}}body{background-color:#f5f5f5}section.section-light,section.section-lightest{color:#333}section.section-light .section-title,section.section-light .section-subtitle,section.section-lightest .section-title,section.section-lightest .section-subtitle{color:#404040}section.section-dark,section.section-darkest{color:#f5f5f5}section.section-dark .section-title,section.section-dark .section-subtitle,section.section-darkest .section-title,section.section-darkest .section-subtitle{color:#f5f5f5}section.section-dark a:not(.btn):not(.button),section.section-darkest a:not(.btn):not(.button){color:#f5f5f5}section.section-dark a:not(.btn):not(.button):hover,section.section-darkest a:not(.btn):not(.button):hover{color:#a8a8a8}section.section-lightest{background-color:#fff;color:#333}section.section-light{background-color:#f5f5f5;color:#333}section.section-medium{background-color:#e0e0e0;color:#333}section.section-dark{background-color:#404040;color:#f5f5f5}section.section-darkest{background-color:#202020;color:#f5f5f5}.section-title{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;text-align:center;position:relative}.section-title::after{content:"";display:block;width:60px;height:4px;margin:.5rem auto 0}section.section-lightest .section-title::after,section.section-light .section-title::after,section.section-medium .section-title::after{background-color:#404040}section.section-dark .section-title::after,section.section-darkest .section-title::after{background-color:#a8a8a8}@media(min-width: 768px){.section-title{font-size:2rem;margin-bottom:2rem}}.section-subtitle{font-size:1.25rem;font-weight:600;margin-bottom:1rem}@media(min-width: 768px){.section-subtitle{font-size:1.5rem;margin-bottom:1.5rem}}.page-title{font-size:2rem;font-weight:700;margin-bottom:.5rem}.page-description{font-size:1.25rem;opacity:.8}.page-header{padding:2rem 0;text-align:center;background-color:#404040;color:#f5f5f5}@media(min-width: 768px){.page-header{padding:3rem 0}}.page-header.section-lightest,.page-header.section-light,.page-header.section-medium{color:#202020}.page-header.section-dark,.page-header.section-darkest{color:#f5f5f5}ul{list-style:none}a{color:#404040;text-decoration:none;transition:color .2s ease}a:hover{color:rgb(38.5,38.5,38.5)}img{max-width:100%;height:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}