body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:Fira Code,source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*,:after,:before{box-sizing:border-box}html{background:linear-gradient(160deg,#fff,#e2e2e2);background-attachment:fixed;min-height:100%;scroll-behavior:smooth}body{background-color:initial;background-image:linear-gradient(#0000000d 1px,#0000 0),linear-gradient(90deg,#0000000d 1px,#0000 0);background-size:28px 28px;color:#1a1a1a;font-family:Fira Code,Courier New,Courier,monospace;height:100%;margin:0;width:100%}.App{position:relative}.bg-network{background-position:50%;background-repeat:no-repeat;background-size:80%;inset:0;mix-blend-mode:multiply;opacity:.13;pointer-events:none;position:fixed;z-index:0}.cursor{animation:blink 1.1s step-end infinite;background:#dc2626;display:inline-block;height:1.1em;margin-left:3px;vertical-align:text-bottom;width:2px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.typing-cursor{animation:pulsateLine 1s ease-in-out infinite;background:#dc2626;border-radius:1px;box-shadow:0 0 6px #dc262680;display:inline-block;height:2.5px;margin-left:2px;vertical-align:middle;width:14px}@keyframes pulsateLine{0%,to{box-shadow:0 0 6px #dc26268c;opacity:1;width:14px}50%{box-shadow:0 0 2px #dc262633;opacity:.35;width:10px}}.page-content{position:relative;z-index:2}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}h1,h2,h3{font-family:Fira Code,Courier New,Courier,monospace;font-weight:400}a{color:#666;text-decoration:none}a:hover{color:#dc2626}input,textarea{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#fff;border:1.5px solid #ddd;border-radius:8px;color:#1a1a1a;font-family:Fira Code,monospace;font-size:1rem;margin-top:.25rem;padding:.65rem .85rem;transition:border-color .2s ease,background-color .2s ease;width:100%}input:focus,textarea:focus{background-color:#fff;border-color:#666;outline:none}.cv-button,button{background-color:#dc2626;border:none;border-radius:8px;color:#fff;cursor:pointer;font-family:Fira Code,monospace;padding:.55rem 1.4rem;transition:background-color .2s ease,transform .15s ease}button:hover{background-color:#b91c1c;transform:translateY(-1px)}button:active{transform:translateY(0)}.cv-button{align-items:center;background-color:initial;border:none;color:#888;display:inline-flex;font-family:Fira Code,monospace;font-size:1.05rem;font-weight:600;letter-spacing:.05em;padding:0;text-decoration:none;transition:color .2s ease}.cv-button:hover{background-color:initial;color:#dc2626}nav.navbar{background-color:#f0f0f0e6;border-bottom:2px solid #dc2626;flex-wrap:wrap;font-family:Fira Code,monospace;height:80px;justify-content:space-between;padding:0 3rem;position:sticky;top:0;z-index:1000}.nav-left,nav.navbar{align-items:center;display:flex}.nav-left{gap:.85rem}.nav-icons{gap:.9rem}.nav-icons,.nav-icons a{align-items:center;display:flex}.nav-icons a{color:#888;transition:color .2s ease}.nav-icons a:hover{color:#dc2626}.nav-name{color:#1a1a1a;font-size:1.15rem;font-weight:700;text-decoration:none;transition:color .2s ease;white-space:nowrap}.nav-name:hover{color:#dc2626}.nav-divider{color:#ddd;font-size:1.1rem;-webkit-user-select:none;user-select:none}.nav-right{align-items:stretch;display:flex;gap:0;height:100%}.nav-right a{align-items:center;border-bottom:2px solid #0000;color:#6e6e73;display:flex;font-size:1rem;font-weight:500;margin-bottom:-2px;padding:0 1.3rem;text-decoration:none;transition:color .2s ease,border-color .2s ease}.nav-right a.active,.nav-right a:hover{border-bottom-color:#dc2626;color:#dc2626}.hero{background-color:initial;justify-content:center;min-height:100vh;padding:4rem 2.5rem}.hero,.hero-content{align-items:center;display:flex}.hero-content{flex-wrap:wrap;gap:4rem;justify-content:space-between;max-width:1060px;width:100%}.hero-text{flex:1 1;min-width:300px}.hero-eyebrow{animation:fadeSlideUp .6s ease-out both;color:#666;font-size:.8rem;font-weight:500;letter-spacing:.12em;margin-bottom:.75rem;text-transform:uppercase}.hero-name{animation:fadeSlideUp .65s ease-out .08s both;color:#0a0a0a;font-family:Fira Code,monospace;font-size:2.75rem;font-weight:700;line-height:1.1;margin:0 0 .5rem}.hero-name .accent{color:#444}.hero-role{animation:fadeSlideUp .65s ease-out .16s both;color:#1a1a1a;font-size:1.05rem;font-weight:400;margin:0 0 1.6rem}.hero-role:before{color:#1a1a1a;content:"// "}.role-institution{color:#1a1a1a;white-space:nowrap}.code-header{animation:fadeSlideUp .65s ease-out .24s both;font-family:Fira Code,monospace;font-size:2rem;font-weight:400;margin:0 0 1.3rem}.hero-desc{animation:fadeSlideUp .65s ease-out .32s both;color:#1a1a1a;font-size:1.1rem;font-weight:400;line-height:1.9;margin-bottom:2.5rem;max-width:560px;min-height:6em}.hero-chips{animation:fadeSlideUp .65s ease-out .42s both;display:flex;flex-wrap:wrap;gap:.5rem}.hero-chip{background:#64646412;border:1px solid #64646433;border-radius:999px;color:#666;font-family:Fira Code,monospace;font-size:.78rem;padding:.3rem .75rem}.hero-image-container{align-items:center;animation:fadeIn .9s ease-out .2s both;display:flex;flex-shrink:0;justify-content:center}.hero-image-wrap{position:relative}.hero-image{border:3px solid #dc2626;border-radius:50%;box-shadow:8px 8px 0 #666;display:block;height:380px;object-fit:cover;transition:transform .3s ease,box-shadow .3s ease;width:380px}.hero-image:hover{box-shadow:12px 12px 0 #666;transform:translate(-3px,-3px)}.projects-wrapper{align-items:center;animation:fadeSlideUp .55s ease-out both;display:flex;flex-direction:column;padding:3rem 1rem 4rem}.projects-header{margin:0 auto .25rem;max-width:820px;padding:0 1rem;width:100%}.project-card{animation:fadeSlideUp .5s ease-out both;background-color:#fff;border:1.5px solid #e5e5e5;border-left:4px solid #dc2626;border-radius:10px;box-shadow:0 2px 10px #0000000d;display:flex;flex-direction:column;font-family:Fira Code,monospace;margin:.65rem;max-width:820px;padding:1.6rem;transition:transform .25s ease,box-shadow .25s ease,border-left-color .25s ease;width:100%}.project-card:hover{border-left-color:#666;box-shadow:0 8px 24px #0000001a;transform:translateY(-4px) translateX(2px)}.project-header h3{color:#1a1a1a;font-size:1.05rem;font-weight:600;line-height:1.45;margin:0 0 .5rem}.project-info,.project-meta{color:#666;font-size:.8rem;margin-bottom:.75rem}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.9rem}.tag{background-color:#6464640f;border:1px solid #64646426;border-radius:4px;color:#666;font-family:Fira Code,monospace;font-size:.72rem;padding:.18rem .6rem}.project-description{color:#444;font-size:.88rem;line-height:1.7;margin-bottom:.85rem}.project-link{color:#dc2626;font-size:.83rem;font-weight:500;text-decoration:none;transition:color .2s ease}.project-link:hover{color:#b91c1c;text-decoration:underline}[id]{scroll-margin-top:70px}.keyword{color:#dc2626;font-weight:700}.punctuation{color:#bbb}.string{color:#666}@media (max-width:900px){.hero-name{font-size:3rem}}@media (max-width:768px){.hero-content{align-items:center;flex-direction:column-reverse;gap:2.5rem;text-align:center}.hero-desc,.hero-name,.hero-text{text-align:center;width:100%}.hero-chips{justify-content:center}.hero-name{font-size:2.6rem}.hero-image{height:220px;width:220px}.project-card{margin-left:auto;margin-right:auto}}@media (max-width:600px){nav.navbar{align-items:flex-start;flex-direction:column;gap:.5rem;height:auto;padding:.75rem 1.25rem}.nav-right{height:auto;width:100%}.nav-right a{border-bottom:none;border-left:2px solid #0000;margin-bottom:0;padding:.4rem .65rem}.nav-right a.active,.nav-right a:hover{border-bottom-color:#0000;border-left-color:#dc2626}.nav-left{width:100%}.hero{padding:3rem 1.5rem}.hero-name{font-size:2.1rem}}@media (max-width:480px){.nav-icons{gap:.5rem}.cv-button{font-size:.68rem;padding:.3rem .6rem}.hero-name{font-size:1.85rem}}.contact-wrapper{animation:fadeSlideUp .55s ease-out both;background-color:#fff;border:1.5px solid #e5e5e5;border-radius:14px;box-shadow:0 4px 24px #0000000f;display:flex;flex-direction:column;font-family:Fira Code,monospace;margin:3rem auto 4rem;max-width:700px;padding:2rem 2.5rem}.contact-intro{color:#6e6e73;font-size:.92rem;line-height:1.75;margin-bottom:2rem}.contact-form{display:flex;flex-direction:column;gap:.9rem}.contact-form label{color:#1a1a1a;font-size:.88rem;font-weight:500}.contact-form button{align-self:flex-start;background-color:#dc2626;border-radius:8px;color:#fff;font-family:Fira Code,monospace;font-size:.9rem;font-weight:600;letter-spacing:.03em;padding:.55rem 1.6rem}.contact-form button:hover{background-color:#b91c1c}.institutions-wrapper{margin:0 auto;max-width:860px;padding:3rem 1.5rem 4rem}.projects-page-header{margin-bottom:2rem}.projects-comment{color:#94a3b8;display:block;font-size:.82rem;margin-bottom:.25rem}.inst-section{animation:fadeSlideUp .5s ease-out both;background-color:#fff;border:1.5px solid #d4d4d4;border-radius:10px;box-shadow:0 2px 8px #0000000a;margin-bottom:1.5rem;overflow:hidden}.inst-header{align-items:center;background-color:#1a1a1a;cursor:pointer;display:flex;gap:1rem;justify-content:space-between;padding:1rem 1.4rem;-webkit-user-select:none;user-select:none}.inst-header:hover{background-color:#222}.inst-header:focus-visible{outline:2px solid #dc2626;outline-offset:-2px}.inst-header-left{display:flex;flex:1 1;flex-direction:column;gap:.25rem;min-width:0}.inst-header-right{align-items:center;display:flex;flex-shrink:0;gap:1rem}.inst-meta-right{align-items:flex-end;display:flex;flex-direction:column;gap:.1rem}.inst-name{color:#f0f0f0;font-size:.95rem;font-weight:700;white-space:nowrap}.inst-name,.inst-path-cmd{font-family:Fira Code,monospace}.inst-path-cmd{color:#888;font-size:.8rem}.inst-dollar{color:#dc2626;margin-right:.35rem}.inst-role{color:#999;font-family:Fira Code,monospace;font-size:.75rem;text-align:right}.inst-period{text-align:right}.inst-count,.inst-period{color:#666;font-family:Fira Code,monospace;font-size:.72rem}.inst-count{white-space:nowrap}.inst-toggle{color:#888;font-size:1.1rem;text-align:center;transition:color .2s;width:16px}.inst-section.open .inst-toggle{color:#dc2626}.inst-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}.inst-section.open .inst-body{grid-template-rows:1fr}.inst-body-inner{overflow:hidden}.proj-card{border-bottom:1px solid #f0f0f0;padding:1.25rem 1.4rem;transition:background .15s}.proj-card:last-child{border-bottom:none}.proj-card:hover{background:#fafafa}.proj-card-top{align-items:baseline;display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:.45rem}.proj-index{color:#dc2626;flex-shrink:0;font-size:.75rem}.proj-filename,.proj-index{font-family:Fira Code,monospace}.proj-filename{color:#555;font-size:.82rem;font-weight:600}.proj-date{color:#999;font-family:Fira Code,monospace;font-size:.75rem;margin-left:auto}.proj-distinction{color:#dc2626;font-size:.72rem;margin-left:.3rem}.proj-title-full{color:#1a1a1a;font-size:.95rem;font-weight:600;line-height:1.45;margin:0 0 .6rem}.proj-desc,.proj-title-full{font-family:Fira Code,monospace}.proj-desc{color:#555;font-size:.84rem;line-height:1.7;margin:0 0 .8rem}.proj-footer{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}.proj-tags-row{display:flex;flex-wrap:wrap;gap:.3rem}.proj-tag-sm{background:#6464640a;border:1px solid #64646433;border-radius:3px;color:#888;font-size:.68rem;padding:.1rem .45rem}.proj-link-sm,.proj-tag-sm{font-family:Fira Code,monospace;white-space:nowrap}.proj-link-sm{color:#dc2626;flex-shrink:0;font-size:.8rem;text-decoration:none}.proj-link-sm:hover{color:#b91c1c;text-decoration:underline}@media (max-width:640px){.inst-header{align-items:flex-start;flex-direction:column;gap:.5rem}.inst-header-right{justify-content:space-between;width:100%}.inst-meta-right{align-items:flex-start}.inst-period,.inst-role{text-align:left}.proj-date{margin-left:0}}
/*# sourceMappingURL=main.14fba33a.css.map*/