html{scroll-behavior:smooth;scroll-padding-top:5rem;width:100%;margin:0;overflow-x:hidden}*,*:before,*:after{box-sizing:border-box}:root{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--ink-color);background:var(--background-color);--background-color: #f8f9f9;--surface-color: #fff;--surface-tint: #edf2f5;--ink-color: #23364b;--text-color: #394e63;--text-muted: #5d6f80;--primary-color: #416b8b;--primary-hover: #2f5675;--primary-contrast: #fff;--primary-soft: #e5edf2;--primary-color-rgb: 65, 107, 139;--border-color: rgba(35, 54, 75, .16);color-scheme:light}:root[data-theme=dark]{--background-color: #111a21;--surface-color: #18242c;--surface-tint: #1d2b34;--ink-color: #e8edf0;--text-color: #d0dbe1;--text-muted: #adbbc4;--primary-color: #9abbd2;--primary-hover: #c4dce9;--primary-contrast: #17232b;--primary-soft: #243845;--primary-color-rgb: 154, 187, 210;--border-color: rgba(232, 237, 240, .18);color-scheme:dark}body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden;color:var(--text-color);background:var(--background-color)}a{color:var(--primary-color);text-decoration:none}a:hover{color:var(--primary-hover)}button{font:inherit}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid rgba(var(--primary-color-rgb),.65);outline-offset:4px}h1,h2,h3,h4{margin-top:0;color:var(--ink-color)}p{line-height:1.65}#root{min-height:100vh;display:flex;flex-direction:column}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}main{width:100%;flex:1}.section-shell{width:min(100%,1080px);margin-inline:auto;padding:clamp(3.5rem,7vw,5.5rem) clamp(1.25rem,5vw,2.5rem);scroll-margin-top:5rem}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:2rem;margin-bottom:1.7rem}.section-kicker,.eyebrow{margin:0 0 .65rem;color:var(--primary-color);font-size:.78rem;font-weight:700;letter-spacing:.035em}.section-title{margin:0;font-size:clamp(1.8rem,3.5vw,2.5rem);font-weight:650;line-height:1.12;letter-spacing:-.045em}.section-intro{max-width:390px;margin:0;color:var(--text-muted)}@media(max-width:680px){.section-shell{padding-block:3.5rem}.section-heading{display:block}.section-intro{margin-top:.75rem}}.header{position:sticky;top:0;z-index:1000;background:var(--background-color);border-bottom:1px solid var(--border-color)}.navbar{display:flex;align-items:center;gap:1.1rem;width:min(calc(100% - 2.5rem),1000px);min-height:4.2rem;margin:0 auto}.site-title{order:1;flex:0 0 auto;display:inline-flex;align-items:center;gap:.55rem;color:var(--ink-color);font-size:1rem;font-weight:700;letter-spacing:-.025em}.site-mark{width:2rem;height:2rem;flex:0 0 auto}.nav-links{display:flex;align-items:center;gap:.7rem;margin:0 auto 0 1.1rem;padding:0;list-style:none}.desktop-only{order:2}.nav-links a{display:inline-flex;align-items:center;min-height:2.6rem;color:var(--text-muted);font-size:.83rem;white-space:nowrap}.nav-links a:hover,.nav-links a.active{color:var(--ink-color)}.nav-links a.active{box-shadow:inset 0 -2px var(--primary-color)}.resume-link{order:3;display:inline-flex;align-items:center;gap:.3rem;color:var(--ink-color);font-size:.82rem;white-space:nowrap}.theme-toggle{order:4;display:inline-grid;place-items:center;width:2.2rem;height:2.2rem;padding:0;color:var(--ink-color);background:transparent;border:1px solid var(--border-color);border-radius:50%;cursor:pointer}.theme-toggle:hover{background:var(--surface-tint)}.mobile-nav-toggle{order:5;display:none;padding:.45rem;color:var(--ink-color);background:transparent;border:0;cursor:pointer}.hamburger,.hamburger:before,.hamburger:after{display:block;width:1.35rem;height:2px;background:currentColor}.hamburger{position:relative}.hamburger:before,.hamburger:after{content:"";position:absolute;left:0}.hamburger:before{transform:translateY(-6px)}.hamburger:after{transform:translateY(6px)}.hamburger.open{background:transparent}.hamburger.open:before{transform:rotate(45deg)}.hamburger.open:after{transform:rotate(-45deg)}.mobile-nav-backdrop,.mobile-nav-close{display:none}@media(max-width:760px){.navbar{gap:.8rem}.desktop-only{display:none}.mobile-nav-toggle{display:block}.mobile-nav-backdrop{display:block;position:fixed;inset:0;z-index:1100;background:#0a141c59;opacity:0;pointer-events:none;transition:opacity .18s ease}.mobile-nav-backdrop.open{opacity:1;pointer-events:auto}.mobile-nav{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.8rem;position:fixed;inset:0 0 0 auto;z-index:1200;width:min(88%,380px);margin:0;padding:5rem 2rem 2rem;background:var(--background-color);transform:translate(100%);transition:transform .18s ease}.mobile-nav.expanded{transform:translate(0)}.mobile-nav a{min-height:2.8rem;color:var(--ink-color);font-size:1.2rem}.mobile-nav-close{display:block;position:absolute;top:1.5rem;left:2rem}.mobile-nav-close button{padding:0;color:var(--text-muted);background:none;border:0;cursor:pointer}}@media(max-width:420px){.navbar{width:calc(100% - 1.5rem)}.site-title{font-size:.95rem}.resume-link{font-size:.76rem}}.hero{padding-top:clamp(3.5rem,7vw,5.5rem);padding-bottom:2rem}.hero-content{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(250px,.85fr);align-items:center;gap:clamp(2rem,5vw,4rem)}.hero-copy{max-width:590px}.hero-title{font-family:Georgia,Times New Roman,serif;margin:.25rem 0 1.15rem;color:var(--ink-color);font-size:clamp(3rem,6vw,4.6rem);font-weight:700;line-height:1.03;letter-spacing:-.035em}.hero-summary{max-width:550px;margin:0;color:var(--ink-color);font-size:clamp(1.15rem,2vw,1.35rem);line-height:1.5}.hero-detail{max-width:520px;margin:1rem 0 0;color:var(--text-muted)}.hero-actions{display:flex;flex-wrap:wrap;gap:1.6rem;margin-top:1.65rem}.text-link,.project-link{display:inline-flex;align-items:center;gap:.4rem;color:var(--primary-color);font-weight:600}.text-link{text-decoration:underline;text-underline-offset:.2em}.text-link:hover,.project-link:hover{color:var(--primary-hover)}.hero-portrait-wrap{display:grid;place-items:center;min-width:0;transform-origin:58% 45%;animation:portrait-sway 7s ease-in-out infinite}.profile-pic{display:block;width:min(100%,390px);aspect-ratio:1;object-fit:cover;border-radius:1.5rem;transition:transform .42s cubic-bezier(.2,.8,.2,1),box-shadow .42s ease}@media(hover:hover){.hero-portrait-wrap:hover{animation-play-state:paused}.hero-portrait-wrap:hover .profile-pic{transform:translateY(-6px) rotate(2deg) scale(1.025);box-shadow:0 18px 36px #0003}}@keyframes portrait-sway{0%,to{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-6px) rotate(.8deg)}}@media(prefers-reduced-motion:reduce){.hero-portrait-wrap{animation:none;transform:none}.profile-pic{transition:none}}@media(max-width:720px){.hero{padding-bottom:3.5rem}.hero-content{grid-template-columns:1fr;gap:1rem}.hero-portrait-wrap{grid-row:1}.profile-pic{width:min(62vw,285px)}}@media(max-width:420px){.hero-title{font-size:clamp(2.8rem,14vw,3.5rem)}.hero-actions{gap:1.1rem}}.experience-content{width:100%}.timeline-container{border-top:1px solid var(--border-color)}.timeline-item{border-bottom:1px solid var(--border-color)}.timeline-summary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(210px,.9fr) auto;align-items:center;gap:1.5rem;padding:1.2rem 0;cursor:pointer;list-style:none}.timeline-summary::-webkit-details-marker{display:none}.timeline-marker{display:none}.experience-header{display:grid;grid-template-columns:1fr auto;gap:.2rem .8rem;align-items:baseline;min-width:0}.experience-main-info{display:grid;grid-template-columns:1fr;gap:.15rem}.experience-date{color:var(--text-muted);font-size:.78rem}.experience-company{color:var(--ink-color);font-size:1.1rem;font-weight:650;letter-spacing:-.025em}.experience-role{color:var(--text-muted);font-size:.9rem}.experience-meta{color:var(--text-muted);font-size:.78rem;text-align:right}.experience-summary{color:var(--text-muted);font-size:.88rem;line-height:1.5}.expand-label{color:var(--primary-color);font-size:.78rem;white-space:nowrap}.expand-close,.timeline-item[open] .expand-open{display:none}.timeline-item[open] .expand-close{display:inline}.timeline-content{margin:0 0 0 .25rem;padding:0 0 1.3rem}.experience-description-list{display:grid;gap:.55rem;margin:0 0 1rem;padding-left:1.1rem;color:var(--text-muted);line-height:1.55}.experience-description-list li::marker{color:var(--primary-color)}.experience-tech{color:var(--primary-color);font-size:.82rem;line-height:1.6}.tech-pill{display:inline;color:inherit;font-size:inherit;font-weight:500}.tech-pill:not(:last-child):after{content:" ·"}@media(max-width:720px){.timeline-summary{grid-template-columns:minmax(0,1fr) auto;gap:.7rem 1rem}.experience-header{grid-template-columns:1fr}.experience-meta{text-align:left}.experience-summary{grid-column:1 / -1}}.volunteering-content{width:100%}.volunteering-grid{margin-top:1.5rem}.volunteering-card{padding:0}.volunteering-header{display:flex;flex-wrap:wrap;gap:.45rem 1rem;align-items:baseline;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.volunteering-sector,.volunteering-role,.volunteering-date{color:var(--text-muted);font-size:.82rem}.volunteering-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.75rem;margin:0;padding:0;list-style:none}.volunteering-details li{padding:.9rem 0;border-top:1px solid var(--border-color)}.volunteering-details strong{display:block;margin-bottom:.3rem;color:var(--ink-color);font-size:.92rem;font-weight:600}.detail-desc{color:var(--text-muted);font-size:.84rem;line-height:1.55}@media(max-width:640px){.volunteering-details{grid-template-columns:1fr}}.footer{padding:1.5rem 1.25rem;border-top:1px solid var(--border-color)}.footer-content{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:min(100%,1000px);margin:0 auto}.footer-content p{margin:0;color:var(--text-muted);font-size:.78rem}.footer-links{display:flex;flex-wrap:wrap;gap:1rem}.footer-links a{color:var(--text-muted);font-size:.8rem}.footer-links a:hover{color:var(--primary-color)}@media(max-width:620px){.footer-content{align-items:flex-start;flex-direction:column}}.projects{padding-top:2.25rem}.projects-heading .section-intro{max-width:345px}.project-list{border-top:1px solid var(--border-color)}.project-row{display:grid;grid-template-columns:6.5rem minmax(0,1fr) auto;align-items:center;gap:1.5rem;padding:1.45rem 0;border-bottom:1px solid var(--border-color);scroll-margin-top:5rem}.project-logo{display:block;width:5.5rem;height:5.5rem;object-fit:contain}.project-copy{min-width:0}.project-eyebrow{margin:0 0 .25rem;color:var(--text-muted);font-size:.75rem}.project-copy h3{margin:0;font-size:1.2rem;font-weight:650;letter-spacing:-.025em}.project-description{margin:.3rem 0 0;color:var(--text-muted);font-size:.92rem;line-height:1.5}.project-technology{margin:.35rem 0 0;color:var(--primary-color);font-size:.82rem}.project-link{padding:.4rem 0;font-size:.84rem;white-space:nowrap}@media(max-width:680px){.projects{padding-top:1.5rem}.project-row{grid-template-columns:4.25rem minmax(0,1fr);gap:.9rem;padding:1.25rem 0}.project-logo{width:4rem;height:4rem}.project-link{grid-column:2;justify-self:start}}@media(max-width:380px){.project-row{grid-template-columns:3.5rem minmax(0,1fr);gap:.65rem}.project-logo{width:3.25rem;height:3.25rem}}.contact-content{width:100%;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(230px,.8fr);gap:1.5rem 3rem;align-items:center}.contact .section-title{max-width:600px}.contact-intro{max-width:620px;margin:.85rem 0 0;color:var(--text-muted)}.contact-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem}.button,.copy-email-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.7rem;padding:.65rem .9rem;border:1px solid var(--primary-color);border-radius:4px;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}.button.primary{color:var(--primary-contrast);background:var(--primary-color)}.button.primary:hover{color:var(--primary-contrast);background:var(--primary-hover);border-color:var(--primary-hover)}.copy-email-button{color:var(--ink-color);background:transparent;border-color:var(--border-color)}.copy-email-button:hover{background:var(--surface-tint)}.copy-email-status{width:100%;min-height:1rem;color:var(--primary-color);font-size:.75rem}.contact-links{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:.75rem 1.4rem;padding-top:1.1rem;border-top:1px solid var(--border-color)}.contact-links a{display:inline-flex;align-items:center;gap:.4rem;color:var(--text-muted);font-size:.84rem}.contact-links a:hover{color:var(--primary-color)}@media(max-width:720px){.contact-content{grid-template-columns:1fr}.contact-actions{max-width:380px}.contact-links{grid-column:auto}}.notes-content{width:100%}.notes-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem 2rem;margin:0;padding:0;list-style:none;counter-reset:note}.notes-list li{padding-top:.8rem;border-top:1px solid var(--border-color);color:var(--ink-color);font-size:1rem}.notes-list li:before{display:block;margin-bottom:.8rem;color:var(--primary-color);font-size:.75rem;counter-increment:note;content:"0" counter(note)}@media(max-width:680px){.notes-list{grid-template-columns:1fr;gap:.8rem}}
