.site-header{position:sticky;top:0;z-index:100;width:100%;background:#fafaf9;border-bottom:1px solid rgba(0,0,0,.06);padding:var(--space-3) var(--space-6)}.header-inner{max-width:960px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:500}.header-item{display:inline-flex;align-items:center}.header-sep{color:#00000038;margin:0 var(--space-1);-webkit-user-select:none;user-select:none}.header-link{color:#404040;text-decoration:none}.header-link:hover{text-decoration:underline;text-underline-offset:3px;opacity:.9}.header-link:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media(min-width:768px){.site-header{padding:var(--space-4) var(--space-10)}.header-inner{font-size:var(--text-base)}}.typewriter{font-family:var(--font-body);display:inline-block}.typewriter-text{letter-spacing:.02em}.typewriter-cursor{display:inline-block;animation:typewriter-blink 1s step-end infinite;margin-left:1px;color:inherit;opacity:.9}@keyframes typewriter-blink{0%,50%{opacity:1}51%,to{opacity:.15}}.introduction{margin-bottom:var(--space-6);position:relative}.introduction-headings{text-align:center}.introduction-headings h1{font-family:var(--font-heading);font-weight:600;line-height:1.2;text-align:center;color:inherit;letter-spacing:-.02em}.introduction-hero{font-size:var(--text-4xl);margin-bottom:var(--space-5)}.introduction-headings h1:not(.introduction-hero){font-size:var(--text-xl);font-weight:500;color:#404040}.introduction-headings h1:not(.introduction-hero):not(:last-child){margin-bottom:var(--space-1)}.ascii-section-title{margin-bottom:var(--space-8);opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease;text-align:center}.ascii-section-title.visible{opacity:1;transform:translateY(0)}.ascii-section-title-box{font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;line-height:1.4;margin:0 auto;color:inherit;letter-spacing:.05em;opacity:.85;display:inline-block;text-align:left}.ascii-section-title-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.education-section{width:100%;margin-bottom:var(--space-20)}.education-list{display:flex;flex-direction:column;align-items:center;gap:var(--space-10);max-width:640px;margin:0 auto;text-align:center}.education-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);text-align:center}.education-label{font-size:var(--text-sm);font-weight:600;color:#525252;text-transform:uppercase;letter-spacing:.04em}.education-period{font-size:var(--text-sm);font-weight:500;color:#737373}.education-institution{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:600;letter-spacing:-.02em;margin:0}.education-link{color:inherit;text-decoration:none}.education-link:hover{text-decoration:underline;text-underline-offset:3px;opacity:.9}.education-link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.education-description{font-size:var(--text-base);line-height:1.6;color:#404040;margin:0;white-space:pre-line}.education-exchange{margin-top:var(--space-6);padding-top:var(--space-5);border-top:2px solid rgba(0,0,0,.1);display:flex;flex-direction:column;align-items:center;gap:var(--space-2);text-align:center}.education-exchange-label{font-size:var(--text-sm);font-weight:600;color:#525252;text-transform:uppercase;letter-spacing:.04em}.education-exchange-period{font-size:var(--text-sm);font-weight:500;color:#737373}.education-exchange-institution{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:600;letter-spacing:-.02em;margin:0}.education-exchange-description{font-size:var(--text-sm);line-height:1.6;color:#404040;margin:0}.experience-section{width:100%;margin-bottom:var(--space-20);text-align:center}.experience-timeline-wrap{width:100%;max-width:700px;margin:0 auto}.experience-timeline{width:100%;padding:0}.experience-timeline .MuiTimelineItem-root{min-height:72px}.experience-timeline .MuiTimelineContent-root{padding:var(--space-1) var(--space-4) var(--space-4)}.experience-timeline .MuiTimelineDot-outlinedPrimary{border-width:2px;border-color:#6366f1;background:transparent}.experience-timeline .MuiTimelineConnector-root{background:#0000001f}.experience-item{display:flex;flex-direction:column;gap:var(--space-1);align-items:center;text-align:center}.experience-timeline .MuiTimelineItem-root:nth-of-type(odd) .MuiTimelineContent-root{text-align:left}.experience-timeline .MuiTimelineItem-root:nth-of-type(odd) .experience-item{align-items:flex-start;text-align:left}.experience-timeline .MuiTimelineItem-root:nth-of-type(odd) .experience-heading{align-items:flex-start}.experience-timeline .MuiTimelineItem-root:nth-of-type(2n) .MuiTimelineContent-root{text-align:right}.experience-timeline .MuiTimelineItem-root:nth-of-type(2n) .experience-item{align-items:flex-end;text-align:right}.experience-timeline .MuiTimelineItem-root:nth-of-type(2n) .experience-heading{align-items:flex-end}.experience-period{font-size:var(--text-sm);font-weight:500;color:#525252}.experience-heading{display:flex;flex-direction:column;gap:2px;align-items:center}.experience-org{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em;color:inherit}.experience-org:hover{opacity:.85}a.experience-org{text-decoration:underline;text-underline-offset:3px}.experience-title-role{font-size:var(--text-base);font-weight:500;color:#404040}.experience-location{font-size:var(--text-sm);color:#737373}.apps{padding:var(--space-12) 0 var(--space-24)}.apps-masonry-wrap{width:100%;display:flex;justify-content:center}.apps-masonry{width:100%;max-width:960px;margin:0 auto;align-content:center!important}.project-card{background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:16px;padding:var(--space-5) var(--space-5);transition:border-color .2s,box-shadow .2s;opacity:.001;transform:translateY(20px);transition:opacity .5s ease-out,transform .6s cubic-bezier(.34,1.56,.64,1),border-color .2s,box-shadow .2s}.project-card.visible{opacity:1;transform:translateY(0)}.project-card:hover{border-color:#0000001a;box-shadow:0 4px 20px #0000000f}.project-card-image-wrap{margin:calc(-1 * var(--space-5)) calc(-1 * var(--space-5)) var(--space-3);border-radius:16px 16px 0 0;overflow:hidden;background:#f8f8f8}.project-card-image{width:100%;height:180px;object-fit:cover;display:block;vertical-align:middle;filter:grayscale(100%);transition:filter .3s ease}.project-card-image-wrap:hover .project-card-image{filter:grayscale(0%)}.project-card-header{margin-bottom:var(--space-3);text-align:center}.project-card-title{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:600;letter-spacing:-.02em;margin:0 0 var(--space-1) 0;color:inherit;text-align:center}.project-card-period{display:block;font-size:var(--text-sm);font-weight:500;color:#525252;margin-bottom:2px}.project-card-event{display:block;font-size:var(--text-sm);color:#737373}.project-card-description{font-size:var(--text-sm);line-height:1.55;color:#404040;margin:0 0 var(--space-4) 0}.project-card-highlights{margin-bottom:var(--space-4)}.project-card-highlights-label{font-size:var(--text-sm);font-weight:600;display:block;margin-bottom:var(--space-2)}.project-card-highlights ul{margin:0;padding-left:var(--space-5);font-size:var(--text-sm);line-height:1.5;color:#404040}.project-card-highlights li{margin-bottom:var(--space-1)}.project-card-skills{margin-bottom:var(--space-4)}.project-card-skills-label{font-size:var(--text-sm);font-weight:600;display:block;margin-bottom:var(--space-1)}.project-card-skills-list{font-size:var(--text-sm);color:#525252}.project-card-links{display:flex;flex-wrap:wrap;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid rgba(0,0,0,.06)}.project-card-link{font-size:var(--text-sm);font-weight:500;color:#6366f1;text-decoration:none}.project-card-link:hover{text-decoration:underline;text-underline-offset:3px}.project-card-link:focus-visible{outline:2px solid rgba(99,102,241,.4);outline-offset:2px}.app{min-height:100vh;width:100%;max-width:960px;margin:0 auto;padding:var(--space-8) var(--space-6)}.intro-section{text-align:center;padding:var(--space-24) 0 var(--space-16);opacity:0;transform:translateY(20px);animation:heroFadeIn .6s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes heroFadeIn{to{opacity:1;transform:translateY(0)}}@media(min-width:768px){.app{padding:var(--space-12) var(--space-10)}}*{margin:0;padding:0;box-sizing:border-box}:root{--font-heading: "IBM Plex Mono", monospace;--font-body: "IBM Plex Mono", monospace;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.25rem}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:#fafaf9;font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;min-height:100vh;color:#171717}#root{min-height:100vh}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid currentColor;outline-offset:2px}
