.project-gallery{grid-gap:2rem;box-sizing:border-box;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(180px,240px));padding:1rem 0;width:100%}.project-card{background:#fff;border-radius:12px;box-shadow:0 2px 12px #00000014;color:inherit;display:block;flex-direction:column;justify-content:flex-end;max-width:none;min-height:160px;overflow:hidden;position:relative;text-decoration:none;transition:transform .2s,box-shadow .2s}.project-card:hover{box-shadow:0 8px 24px #00000021;transform:translateY(-6px) scale(1.03)}.project-card-content{padding:1.2rem 1rem .5rem;z-index:2}.project-title{color:#222;font-size:1.15rem;margin:0 0 .5rem}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem}.project-tag{background:#fff;border-radius:6px;color:#fff;font-size:.85rem;font-weight:500;padding:.2rem .7rem}.project-description{background:#222222f5;border-bottom-left-radius:12px;border-bottom-right-radius:12px;bottom:2.5rem;color:#fff;font-size:.98rem;left:0;min-height:60px;opacity:0;padding:1rem;pointer-events:none;position:absolute;right:0;transition:opacity .25s}.project-card:hover .project-description{opacity:1;pointer-events:auto}.modal-overlay{align-items:center;background-color:#0009;display:flex;height:100%;justify-content:center;left:0;overflow-y:auto;padding:2rem 1rem;position:fixed;top:0;width:100%;z-index:1000}.modal-content-long{max-height:60vh}.modal-content,.modal-content-long{background:#fff;border-radius:12px;box-shadow:0 10px 30px #0003;max-width:700px;overflow-y:auto;padding:2rem;position:relative;width:100%}.modal-content{max-height:50vh}.modal-close-button{margin-top:1rem}.modal-link-button{align-items:center;color:#333;display:flex;flex-direction:column;font-size:.85rem;font-weight:500;gap:.25rem;justify-content:center;text-decoration:none}.modal-links{color:#333;display:flex;gap:2rem;justify-content:left;margin:1rem 0}.modal-banner-image{border-radius:8px;display:block;height:auto;margin:0 auto 1rem;max-height:300px;max-width:100%;object-fit:contain;width:auto}.hover-card{background:#fff;border:1px solid #ddd;border-radius:12px;box-shadow:0 12px 30px #00000026;display:flex;flex-direction:column;left:0;margin-top:.75rem;overflow:hidden;position:absolute;top:100%;width:320px;z-index:20}.hover-card-banner{background-color:#fff;background-position:50%;background-repeat:no-repeat;background-size:cover;height:120px}.hover-card-body{padding:1rem}.hover-card-title{color:#222;font-size:1.1rem;font-weight:600;margin:.5rem 0}.hover-card-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem}.hover-card-links{align-items:center;display:flex;gap:.75rem;margin:.5rem 0}.hover-card-icon{cursor:pointer;height:24px;opacity:.85;transition:opacity .2s;width:24px}.hover-card-icon:hover{opacity:1}.hover-full-description{color:#333;font-size:.9rem;line-height:1.4;margin-top:.5rem}.pagination-controls{align-items:center;display:flex;gap:1rem;justify-content:center;margin-top:1.5rem}.pagination-controls button{background-color:#2b6cb0;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:600;padding:.4rem .8rem;transition:background-color .2s}.pagination-controls button:disabled{background-color:#bbb;cursor:default}.topbar{background:#222;box-shadow:0 2px 8px #00000012;color:#fff;padding:.5rem max(.5rem,env(safe-area-inset-right)) .5rem max(.5rem,env(safe-area-inset-left));position:sticky;top:0;width:100%;z-index:100}.topbar-content{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;margin:0 auto;max-width:1100px;padding:0 1rem}.topbar-content>*{min-width:0}.nav-links{display:flex;flex-wrap:wrap;gap:1.25rem;justify-content:center;list-style:none;margin:0 auto;padding:0}.nav-links.left{justify-content:flex-start}.nav-links.right{justify-content:flex-end}.nav-links li{display:block}.nav-links a{border-radius:4px;color:#fff;font-size:1.05rem;font-weight:500;overflow-wrap:anywhere;padding:.3rem .6rem;text-decoration:none;transition:background .2s,color .2s;white-space:normal;word-break:break-word}.nav-links a:focus-visible,.nav-links a:hover{background:#ff9800;color:#222;outline:none}@media (max-width:600px){.topbar-content{align-items:stretch;flex-direction:column}.nav-links{gap:.9rem}.nav-links,.nav-links.right{justify-content:center}}@media (max-width:380px){.nav-links a{font-size:.98rem;padding:.28rem .52rem}.nav-links{gap:.7rem}}.footer{background:#222;color:#fff;font-size:.95rem;margin-top:2rem;padding:1rem 0 .5rem;text-align:center;width:100%}*,:after,:before{box-sizing:border-box}.home-intro{align-items:center;display:flex;flex-direction:column;margin:0 auto;max-width:800px;padding:3rem 1rem;text-align:center}.home-intro>*{min-width:0}.intro-image{align-items:center;display:flex;justify-content:center}.intro-image img{aspect-ratio:1/1;border-radius:50%;box-shadow:0 4px 12px #0000001a;max-width:300px;object-fit:cover;object-position:center top;width:100%}.intro-text{padding:2rem}.intro-links a,.intro-links button,.intro-text,.intro-text p,.tag{overflow-wrap:anywhere;word-break:break-word}.intro-text p{color:#444;font-size:1rem;-webkit-hyphens:auto;hyphens:auto;line-height:1.6;margin-bottom:1rem;text-align:justify}@media (max-width:768px){.intro-text{padding:1rem}}.intro-text h1{text-wrap:balance;color:#222;font-size:clamp(1.75rem,4vw,2rem);margin-bottom:1rem}.intro-text h3{color:#333;font-size:1.1rem;font-weight:600;margin-top:2rem}.intro-text ul{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;list-style:none;margin-top:.5rem;padding:0}.intro-text ul li{background:#f0f0f0;border-radius:999px;font-size:.9rem;padding:.5rem 1rem}.collab-note{color:#333;font-size:1rem;font-weight:500;margin:1.5rem 0 1rem}.interests-tags{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:.75rem}.tag{align-items:center;background:#f3f3f3;border-radius:999px;box-shadow:0 1px 3px #00000014;cursor:default;display:flex;font-size:.9rem;font-weight:500;padding:.4rem .8rem;transition:all .2s ease}.tag .emoji{font-size:1.1rem;margin-right:.5rem}.intro-links{display:flex;flex-wrap:wrap;gap:1.2rem;justify-content:center;margin-top:1.8rem}.intro-links a,.intro-links button{align-items:center;background:#f5f5f5;border:none;border-radius:999px;box-shadow:0 1px 4px #0000000f;color:#1a1a1a;cursor:pointer;display:flex;font-family:inherit;font-size:inherit;font-weight:500;gap:.4rem;padding:.6rem 1rem;text-decoration:none;transition:background .2s ease}.intro-links a:hover,.intro-links button:hover{background:#eaeaea}.highlight{color:#2b6cb0;font-weight:600}.highlight-name{color:#1a202c;font-weight:700}.email-container{align-items:center;display:flex;gap:.5rem}.projects-header,.publications-header,.publications-section{margin-bottom:1.5rem;padding:1rem;text-align:center}.projects-header h1,.publications-header h1{color:#222;font-size:2rem;margin-bottom:.5rem}.projects-header p,.publications-header p{color:#555;font-size:1.1rem;margin:0 auto 1rem;max-width:600px}.publications-section{margin:0 auto;max-width:800px;padding:3rem 1rem}.publications-list{list-style:none;padding:0}.publication-item{border-bottom:1px solid #eee;margin-bottom:2rem;padding-bottom:1rem}.publication-title a{color:#1a1a1a;font-size:1.1rem;font-weight:600;text-decoration:none}.publication-title a:hover{text-decoration:underline}.publication-meta{color:#666;font-size:.95rem;margin-top:.25rem}.highlight-name{color:#000!important;display:inline!important;font-weight:700!important}body{font-family:sans-serif;margin:0}svg{background:#f9f9f9;display:block;margin:0 auto}circle{cursor:pointer;transition:r .2s,fill .2s,opacity .2s}line{transition:stroke-opacity .2s}circle.minimized{opacity:.3}circle.highlighted{stroke:#ff9800;stroke-width:3;opacity:1}.app{display:flex;flex-direction:column;min-height:100vh}main{flex:1 1}.projects-section{align-items:flex-start;box-sizing:border-box;display:flex;gap:2.5rem;justify-content:center;margin:2rem auto;max-width:1200px;width:95vw}.graph-container{flex:1 1 400px;min-width:500px}.graph-container,.project-panel-container{box-sizing:border-box;max-width:600px;overflow:hidden}.project-panel-container{flex:1 1 350px;min-width:320px}.graph-container,.project-panel-container{flex:1 1 100%}@media (max-width:900px){.projects-section{flex-direction:column;gap:1.5rem}.graph-container,.project-panel-container{max-width:100%;min-width:0}}.graph-tip{animation:fadeInUp .6s ease-out;background:#f1f8ff;border-left:4px solid #007acc;border-radius:8px;color:#1a1a1a;display:inline-block;font-size:.95rem;margin:0 auto;max-width:600px;padding:.75rem 1rem}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes youtubeHighlight{0%{background-color:initial;box-shadow:0 0 0 0 #fde047cc;color:inherit;transform:scale(1)}50%{background-color:#fde0471a;box-shadow:0 0 12px 8px #fde04766;transform:scale(1.05)}to{background-color:initial;box-shadow:0 0 0 0 #fde04700;transform:scale(1)}}.youtube-flash{animation:youtubeHighlight 1.5s ease-in-out;border-radius:.375rem}
/*# sourceMappingURL=main.30eb1188.css.map*/