:root{--color-bg-default: #0d1117;--color-bg-surface: #161b22;--color-bg-hover: #21262d;--color-text-primary: #c9d1d9;--color-text-muted: #8b949e;--color-border-default: #30363d;--color-primary: #58a6ff;--color-primary-hover: #1f6feb}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--color-bg-default);color:var(--color-text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-primary);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-primary-hover)}ul{list-style:none}main{max-width:1000px;margin:0 auto;padding:0 1.5rem}section{scroll-margin-top:80px}.section-header{display:flex;align-items:center;margin-bottom:2rem}.section-header h2{font-size:1.6rem;font-weight:600;color:var(--color-text-primary);white-space:nowrap;margin-bottom:0;font-family:Inter,monospace}.section-header:after{content:"";flex-grow:1;height:1px;background-color:var(--color-border-default);margin-left:1.5rem;opacity:.5}.fade-in-section{opacity:0;transform:translateY(20px);transition:opacity .6s ease-out,transform .6s ease-out}.fade-in-section.is-visible{opacity:1;transform:none}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--color-bg-default)}::-webkit-scrollbar-thumb{background:var(--color-border-default);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.navbar-brand{font-weight:600;font-size:1.1rem;color:var(--color-text-primary);text-decoration:none;letter-spacing:-.02em}.navbar-brand:hover{color:var(--color-primary)}.navbar-links{display:flex;align-items:center;gap:.2rem}.nav-link{color:var(--color-text-muted);font-size:.85rem;font-weight:500;padding:.4rem .7rem;border-radius:6px;text-decoration:none;transition:color .2s,background-color .2s}.nav-link:hover{color:var(--color-primary)}.navbar-social{display:flex;align-items:center;gap:.25rem;margin-left:1rem;padding-left:1rem;border-left:1px solid var(--color-border-default)}.social-icon{color:var(--color-text-muted);display:flex;align-items:center;padding:.35rem;border-radius:6px;transition:color .2s,background-color .2s}.social-icon:hover{color:var(--color-primary)}.drawer-nav{display:flex;flex-direction:column;gap:.25rem}.drawer-link{color:var(--color-text-muted);font-size:1rem;font-weight:500;padding:.75rem 1rem;border-radius:8px;text-decoration:none;transition:color .2s,background-color .2s}.drawer-link:hover{color:var(--color-text-primary);background-color:var(--color-bg-hover)}.drawer-social{display:flex;gap:.5rem;padding:1.5rem 1rem;margin-top:auto;border-top:1px solid var(--color-border-default)}#intro{display:flex;flex-direction:row;align-items:center;justify-content:center;min-height:100vh;padding:6rem 0 4rem;gap:4vw}.intro-portrait{display:flex;align-items:center;justify-content:center;flex-shrink:0}.point-cloud-container{display:flex;align-items:center;justify-content:center}.point-cloud-container canvas{border-radius:8px}.intro-content{max-width:550px;display:flex;flex-direction:column;align-items:flex-start;text-align:left}.intro-title{font-size:clamp(2.2rem,5vw,3.5rem);font-weight:700;line-height:1.2;margin-bottom:1rem;letter-spacing:-.03em;animation:fadeUp .8s ease-out both}.intro-name{color:var(--color-primary)}.intro-typed{font-size:clamp(1rem,2.5vw,1.3rem);font-weight:400;color:var(--color-text-muted);margin-bottom:1.5rem;min-height:2rem;animation:fadeUp .8s ease-out .2s both}.intro-desc{font-size:1.05rem;max-width:540px;margin-bottom:2rem;color:var(--color-text-muted);line-height:1.7;text-align:justify}.intro-contact{display:inline-flex;align-items:center;gap:8px;font-size:.95rem;font-weight:500;color:var(--color-primary);border:1px solid var(--color-primary);padding:.7rem 1.2rem;border-radius:6px;text-decoration:none;transition:background .2s,transform .2s}.intro-contact:hover{background-color:#58a6ff1a;transform:translateY(-1px);color:var(--color-primary)}@media(max-width:768px){#intro{flex-direction:column;padding-top:5rem;gap:2rem}.intro-content{align-items:center;text-align:center}.intro-desc{text-align:center}}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}#about{padding:5rem 0}.about-content{display:flex;flex-wrap:wrap;gap:3rem;align-items:flex-start}.about-description{flex:1;min-width:280px;text-align:justify}.about-description p{font-size:1rem;color:var(--color-text-primary);margin-bottom:1rem;line-height:1.7}.about-tech-label{font-size:.95rem;color:var(--color-text-muted);margin-bottom:.5rem}.tech-stack{display:grid;grid-template-columns:repeat(2,minmax(140px,200px));gap:.4rem 1.5rem;margin-bottom:1.5rem}.tech-item{font-size:.9rem;color:var(--color-text-muted);position:relative;padding-left:1.2rem}.tech-item:before{content:"▹";position:absolute;left:0;color:var(--color-primary)}.about-image{flex-shrink:0;max-width:300px;width:100%}.about-image img{width:100%;height:auto;object-fit:cover;border-radius:8px;box-shadow:0 8px 24px #0000004d;transition:transform .3s ease,box-shadow .3s ease}.about-image img:hover{transform:translateY(-4px);box-shadow:0 12px 32px #0006}@media(max-width:768px){.about-content{flex-direction:column-reverse;align-items:center}.about-image{max-width:220px}}#experience{padding:5rem 0}.joblist-job-title{font-size:1.05rem;font-weight:600;margin-bottom:.2rem;color:var(--color-text-primary)}.joblist-job-company{color:var(--color-primary);font-weight:500}.joblist-duration{font-size:.85rem;color:var(--color-text-muted);margin-bottom:1rem;font-family:Inter,monospace}.job-description{margin:0;padding-left:1.5rem;text-align:justify}.job-description-item{position:relative;margin-bottom:.8rem;line-height:1.65;color:var(--color-text-primary);font-size:.95rem;list-style:none}.job-description-item:before{content:"▹";position:absolute;left:-1.2rem;color:var(--color-primary)}#education{padding:5rem 0}.education-entry{margin-bottom:2rem}.education-entry h3{font-size:1.1rem;font-weight:600;color:var(--color-text-primary);margin-bottom:.2rem}.edu-meta{font-size:.9rem;color:var(--color-primary);margin-bottom:.4rem}.edu-meta span{color:var(--color-text-muted)}.edu-details{font-size:.9rem;color:var(--color-text-muted);line-height:1.5;text-align:justify}#publications{padding:5rem 0}.publication-list{list-style:disc inside;font-size:1rem;color:var(--color-text-primary)}.publication-list li{margin-bottom:1rem;text-align:justify}.publication-list a{text-decoration:none;color:var(--color-text-primary);font-weight:500}.publication-list a:hover{text-decoration:underline}.venue{font-size:.9rem;color:var(--color-text-muted)}#projects{padding:5rem 0;min-height:50vh}.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(300px,1fr));gap:20px}.projects-card{display:flex;flex-direction:column;justify-content:space-between;height:100%;background-color:var(--color-bg-surface);border-radius:12px;padding:1.5rem;transition:transform .2s ease,background-color .2s ease;box-shadow:0 4px 12px #0000000a}.projects-card:hover{background-color:var(--color-bg-hover);transform:translateY(-6px)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.folder-icon{color:var(--color-primary)}.github-icon,.open-icon{margin:0 .5rem;color:var(--color-text-primary);transition:color .2s}.github-icon:hover,.open-icon:hover{color:var(--color-primary)}.card-title{font-size:1.1rem;font-weight:700;color:var(--color-text-primary);margin-bottom:.5rem;text-align:justify}.card-desc{font-size:.95rem;color:var(--color-text-muted);flex-grow:1;margin-bottom:.5rem;text-align:justify}.card-tech{font-size:.85rem;font-style:italic;color:var(--color-primary);margin-top:auto}@media(max-width:1080px){.projects-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}footer{text-align:center;padding:4rem 0 2rem;border-top:1px solid var(--color-border-default);margin-top:2rem}footer p{font-size:.8rem;color:var(--color-text-muted)}
