:root{font-family:Manrope,Avenir Next,Segoe UI,Helvetica Neue,Helvetica,sans-serif;line-height:1.6;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{min-height:100%}body{margin:0;min-width:320px}h1,h2,h3,h4,h5,h6,p{margin:0}img{max-width:100%;height:auto}button,input,textarea,select{font:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #315e49;outline-offset:2px}button:focus:not(:focus-visible),a:focus:not(:focus-visible),input:focus:not(:focus-visible),textarea:focus:not(:focus-visible){outline:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.navigation{position:fixed;inset:0 0 auto;z-index:1100;background:#fff;border-bottom:1px solid transparent}.navigation--scrolled{border-bottom-color:var(--stroke)}.navigation__container{max-width:calc(var(--page-width) + 4rem);margin:0 auto;padding:1.3rem 2rem;display:flex;align-items:center;justify-content:space-between;gap:2rem}.navigation__top-row{display:flex;align-items:center;justify-content:space-between}.navigation__logo a{font-size:1.05rem;font-weight:700;letter-spacing:-.04em;color:var(--text-heading);text-decoration:none;white-space:nowrap}.navigation__list{display:flex;list-style:none;margin:0;padding:0;gap:1.7rem}.navigation__link{display:block;color:var(--text-muted);text-decoration:none;font-size:.78rem;font-weight:500;padding:.35rem 0;border-bottom:1px solid transparent}.navigation__link:hover,.navigation__link--active{color:var(--brand);border-bottom-color:var(--brand)}.navigation__toggle{display:none;width:44px;height:44px;border:1px solid var(--stroke);border-radius:4px;background:#fff;align-items:center;justify-content:center;flex-direction:column;gap:4px;cursor:pointer}.navigation__toggle span{width:18px;height:2px;background:var(--text-heading);transition:transform .18s ease,opacity .18s ease}.navigation__toggle--open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.navigation__toggle--open span:nth-child(2){opacity:0}.navigation__toggle--open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}@media (max-width: 768px){.navigation{border-bottom-color:var(--stroke)}.navigation__container{display:block;padding:.7rem 1.25rem}.navigation__toggle{display:flex}.navigation__list{display:none;padding:1rem 0;max-height:calc(100dvh - 70px);overflow-y:auto}.navigation__list--open{display:flex;flex-direction:column;gap:0}.navigation__link{padding:.9rem 0;font-size:.95rem}}.footer{border-top:1px solid var(--stroke);padding:2rem}.footer__container{max-width:var(--page-width);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem}.footer__text,.footer__link{color:var(--text-muted);font-size:.75rem}.footer__link{color:var(--brand)}.footer__links{display:flex;flex-wrap:wrap;gap:1.25rem;margin:0;padding:0;list-style:none}@media (max-width: 768px){.footer{padding:1.5rem 1.25rem}.footer__container{align-items:flex-start;flex-direction:column}}.home{padding:11rem 2rem 6rem}.home__container{max-width:var(--page-width);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:5rem;align-items:end}.home__kicker{display:flex;align-items:center;gap:.65rem;margin-bottom:2rem;color:var(--text-muted);font-size:.78rem}.home__kicker:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--brand);flex-shrink:0}.home__title{font-size:clamp(3.5rem,6.8vw,5.8rem);font-weight:500;line-height:1.08;letter-spacing:-.065em;margin-bottom:1.75rem}.home__name{display:block;color:var(--brand)}.home__subtitle{font-size:1.2rem;font-weight:500;letter-spacing:-.025em;margin-bottom:1rem}.home__description{max-width:560px;color:var(--text-muted);font-size:.96rem;line-height:1.85}.home__cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}.home__links{display:flex;flex-wrap:wrap;gap:1.5rem;margin:1.5rem 0 0;padding:0;list-style:none}.home__links a{color:var(--brand);font-size:.8rem;font-weight:600}.home__note{padding:1.5rem 0 .4rem;border-top:1px solid var(--stroke)}.home__note-label{color:var(--text-muted);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1.1rem}.home__note h2{font-size:1.45rem;font-weight:500;letter-spacing:-.04em;line-height:1.4;margin-bottom:1rem}.home__note>p:not(.home__note-label){color:var(--text-muted);font-size:.85rem;line-height:1.8;margin-bottom:1.25rem}.home__note a{color:var(--brand);font-size:.8rem;font-weight:600}@media (max-width: 1000px){.home__container{gap:2.5rem;grid-template-columns:minmax(0,1fr) 230px}}@media (max-width: 768px){.home{padding:8rem 1.25rem 4rem}.home__container{grid-template-columns:1fr;gap:3rem}.home__title{font-size:clamp(3.2rem,11vw,5rem)}.home__kicker{font-size:.72rem}.home__note{max-width:420px}}.about{background:var(--surface);border-block:1px solid var(--stroke)}.about__content{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:6rem}.about__heading{font-size:1.15rem;font-weight:600;letter-spacing:-.025em;margin-bottom:1.25rem}.about__text p{color:var(--text-muted);font-size:.95rem;line-height:1.9;margin-bottom:1rem}.about__text p:last-child{margin-bottom:0}.skills-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.5rem}.skill-item{border-bottom:1px solid var(--stroke);padding:.7rem 0}.skill-name{font-size:.85rem;font-weight:500}@media (max-width: 768px){.about__content{grid-template-columns:1fr;gap:2.5rem}}.timeline-item{border-top:1px solid var(--stroke);padding:2.25rem 0}.timeline-item:last-child{padding-bottom:0}.experience-card{display:grid;grid-template-columns:230px minmax(0,1fr);gap:.75rem 4rem}.experience-header{display:flex;flex-direction:column;gap:.65rem;grid-column:1;grid-row:1 / 3}.experience-title{font-size:1.15rem;font-weight:600;letter-spacing:-.025em}.experience-period{color:var(--text-muted);font-size:.8rem}.experience-company{grid-column:2;font-size:.85rem;font-weight:600;color:var(--brand)}.experience-description{grid-column:2;padding-left:1rem;margin:0}.experience-description li{color:var(--text-muted);font-size:.9rem;line-height:1.8;margin-bottom:.4rem;padding-left:.25rem}.experience-description li::marker{color:#8b9b90}.experience-technologies{grid-column:2;display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}@media (max-width: 768px){.experience-card{grid-template-columns:1fr;gap:1rem}.experience-header,.experience-company,.experience-description,.experience-technologies{grid-column:1;grid-row:auto}}.teaching{background:var(--surface);border-block:1px solid var(--stroke)}.teaching-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3.5rem}.teaching-card{border-top:1px solid var(--stroke);padding-top:1.75rem}.teaching-header{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.teaching-title{font-size:1.15rem;font-weight:600;letter-spacing:-.03em;margin-bottom:.75rem}.teaching-course{font-size:.87rem;font-weight:500;color:var(--brand);margin-bottom:.3rem}.teaching-institution,.teaching-period{color:var(--text-muted);font-size:.8rem}.teaching-description{margin:0;padding-left:1rem}.teaching-description li{font-size:.88rem;line-height:1.8;color:var(--text-muted);padding-left:.25rem;margin-bottom:.5rem}.teaching-description li::marker{color:#8b9b90}.teaching-volunteer{margin-top:4rem;border-top:1px solid var(--stroke);padding-top:1.75rem}.teaching-volunteer__title{font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:1.25rem}.teaching-volunteer__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 3.5rem}.teaching-volunteer__item{font-size:.95rem;font-weight:600}.teaching-volunteer__item span{font-weight:500;color:var(--brand)}@media (max-width: 768px){.teaching-grid{grid-template-columns:1fr;gap:2rem}.teaching-volunteer{margin-top:2.5rem}.teaching-volunteer__list{grid-template-columns:1fr}}.education-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem}.education-item{border-top:1px solid var(--stroke);padding-top:1.5rem}.education-title{font-size:1.05rem;font-weight:600;line-height:1.5;letter-spacing:-.025em;margin-bottom:1rem}.education-period{font-size:.75rem;color:var(--text-muted)}.education-school{color:var(--brand);font-size:.85rem;font-weight:500;margin:1rem 0 .5rem}.education-gpa{color:var(--text-muted);font-size:.78rem}.education-gpa strong{font-weight:500}.education-section{margin-top:1.5rem}.education-section-title{font-size:.75rem;font-weight:600;margin-bottom:.5rem}.coursework-list{padding-left:1rem;margin:0;font-size:.8rem;color:var(--text-muted);line-height:1.9}@media (max-width: 768px){.education-grid{grid-template-columns:1fr}}.projects{border-top:1px solid var(--stroke)}.projects__header{display:flex;align-items:end;justify-content:space-between;gap:3rem}.projects__intro{max-width:390px;color:var(--text-muted);font-size:.9rem;line-height:1.8}.projects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3.5rem 2rem}.project-card{min-width:0;display:flex;flex-direction:column}.project-image{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:var(--surface);border:1px solid var(--stroke);border-radius:6px}.project-image-img{width:100%;height:100%;object-fit:contain;display:block;padding:1.25rem;transition:transform .25s ease}.project-card:hover .project-image-img{transform:scale(1.025)}.project-image-placeholder{position:absolute;inset:0;align-items:center;justify-content:center;font-size:3rem}.project-content{padding-top:1.5rem;display:flex;flex-direction:column;flex:1}.project-heading{display:flex;align-items:baseline;gap:.75rem;margin-bottom:.75rem}.project-number{color:var(--text-muted);font-size:.7rem}.project-title{font-size:1.3rem;font-weight:600;letter-spacing:-.04em}.project-description{color:var(--text-muted);font-size:.9rem;line-height:1.8;margin-bottom:1.25rem}.project-technologies{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto}.project-links{display:flex;flex-wrap:wrap;gap:1.25rem;margin-top:1.25rem}.project-link{color:var(--brand);font-size:.8rem;font-weight:600;padding-block:.5rem}.project-link:hover{color:var(--text-heading)}@media (max-width: 768px){.projects__header{display:block}.projects__intro{margin-top:1.25rem}.projects-grid{grid-template-columns:1fr;gap:2.5rem}}:root{--text-heading: #202823;--text-muted: #626b65;--brand: #315e49;--surface: #f5f7f5;--stroke: #dfe5df;--page-width: 1120px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--text-heading);background:#fff}a{text-underline-offset:5px}::selection{background:#dce9df}.app{min-height:100vh}main section{scroll-margin-top:5rem}.about,.experience,.teaching,.education,.projects{padding:6rem 2rem}.about__container,.experience__container,.teaching__container,.education__container,.projects__container{max-width:var(--page-width);margin:0 auto}.about__header,.experience__header,.teaching__header,.education__header,.projects__header{margin-bottom:3rem}.section-label{display:block;color:var(--brand);font-size:.73rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;margin-bottom:1rem}.section-title{font-size:clamp(2rem,4vw,2.8rem);line-height:1.2;font-weight:600;letter-spacing:-.055em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:1rem;padding:.85rem 1.3rem;border:1px solid var(--stroke);border-radius:5px;text-decoration:none;font-size:.88rem;font-weight:600;transition:background-color .18s ease,border-color .18s ease}.btn--primary{background:var(--text-heading);border-color:var(--text-heading);color:#fff}.btn--primary:hover{background:var(--brand);border-color:var(--brand)}.btn--secondary{color:var(--text-heading);background:#fff}.btn--secondary:hover{background:var(--surface);border-color:var(--brand)}.tech-tag{display:inline-block;padding:.28rem .65rem;border:1px solid var(--stroke);border-radius:4px;color:var(--text-muted);font-size:.74rem;line-height:1.5;font-weight:500}.skip-link{position:fixed;top:1rem;left:1rem;z-index:1200;padding:.75rem 1rem;color:#fff;background:var(--text-heading);transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}@media (max-width: 768px){.about,.experience,.teaching,.education,.projects{padding:4rem 1.25rem}.about__header,.experience__header,.teaching__header,.education__header,.projects__header{margin-bottom:2rem}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
