.nav{position:sticky;top:0;z-index:100;background:var(--nav-bg);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--border)}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;height:64px}.nav-brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:.95rem}.nav-logo{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--accent-soft);color:var(--accent-text);font-family:var(--font-mono);font-size:.75rem;font-weight:500;border:1px solid var(--border)}.nav-links{display:flex;gap:2px;padding:4px;background:var(--chip-bg);border:1px solid var(--chip-border);border-radius:12px}.nav-links a{font-size:.9rem;font-weight:500;color:var(--text);padding:6px 14px;border-radius:8px;transition:color .2s,background .2s}.nav-links a:hover{color:var(--accent-text);background:var(--accent-soft)}.nav-contact{font-size:.875rem;padding:6px 12px;border-radius:8px;transition:color .2s,background .2s}.nav-contact:hover{color:var(--text);background:var(--surface-2)}.nav-actions{display:flex;align-items:center;gap:8px}.nav-contact{color:var(--text);border:1px solid var(--border-strong)}@media(max-width:900px){.nav-links{display:none}}@media(max-width:480px){.nav-name{display:none}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;transition:color .2s,border-color .2s,background .2s}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-2)}.theme-toggle svg{width:18px;height:18px}.hero{position:relative;padding:96px 0 104px;overflow:hidden}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(var(--grid-dot) 1px,transparent 1px);background-size:24px 24px;mask-image:radial-gradient(ellipse 80% 70% at 30% 40%,#000 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 80% 70% at 30% 40%,#000 30%,transparent 75%);pointer-events:none}.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:56px;align-items:center}.hero-photo{display:block;flex-shrink:0;width:124px;height:124px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 4px var(--bg),0 0 0 5px var(--accent);margin:5px}.hero-badge{display:inline-flex;align-items:center;padding:6px 14px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface);font-family:var(--font-mono);font-size:.78rem;color:var(--text-soft);margin-bottom:24px}.hero-identity{display:flex;align-items:center;gap:24px;margin-bottom:24px}.hero h1{font-size:clamp(2.25rem,4.5vw,3.5rem);font-weight:700;letter-spacing:-.035em;line-height:1.05}.hero-lead{font-size:clamp(1.1rem,2vw,1.3rem);color:var(--text-muted);line-height:1.5;max-width:34ch;margin-bottom:36px}.hero-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-bottom:36px}.hero-stat{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--surface)}.hero-stat strong{font-size:1.35rem;font-weight:600;letter-spacing:-.02em;white-space:nowrap}.hero-stat span{font-size:.78rem;color:var(--text-faint);line-height:1.35}.hero-actions{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:960px){.hero-grid{grid-template-columns:minmax(0,1fr);gap:48px}}@media(max-width:560px){.hero{padding:56px 0 72px}.hero-identity{gap:16px}.hero-photo{width:84px;height:84px}.hero h1{font-size:2rem}.hero-badge{font-size:.7rem;padding:6px 12px}.hero-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-actions .btn{flex:1 1 calc(50% - 5px);justify-content:center}}.pipeline-card{background:var(--surface);border:1px solid var(--border-strong);border-radius:16px;padding:20px;font-family:var(--font-mono);box-shadow:0 24px 60px -24px #00000073}.pipeline-top{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;color:var(--text-faint);margin-bottom:14px}.pipeline-live{display:inline-flex;align-items:center;gap:6px;color:var(--ok)}.pipeline-live i{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:live-pulse 2s ease-in-out infinite}.pipeline-tabs{display:flex;gap:4px;padding:4px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;margin-bottom:20px}.pipeline-tabs button{flex:1;font-family:var(--font-mono);font-size:.75rem;padding:7px 8px;border:none;border-radius:7px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background .2s,color .2s}.pipeline-tabs button:hover{color:var(--text)}.pipeline-tabs button.active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border-strong)}.pipeline-steps{list-style:none;display:flex;flex-direction:column;gap:16px;margin-bottom:18px}.step{position:relative;display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2);animation:step-in .45s ease both;animation-delay:calc(var(--i) * 80ms);transition:background .35s ease,border-color .35s ease,box-shadow .35s ease}.step.is-active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px var(--accent-soft)}.step.is-active .step-kind{color:var(--accent-text)}.step+.step:before{content:"";position:absolute;top:-17px;left:28px;width:1px;height:16px;background:var(--border-strong)}.step+.step:after{content:"";position:absolute;top:-17px;left:26px;width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:0}.step.is-active+.step:after{animation:flow 1.1s ease-in-out both}.step-kind{flex:0 0 64px;font-size:.68rem;color:var(--text-faint);transition:color .35s ease}.step-name{font-size:.82rem;color:var(--text)}.pipeline-caption{display:block;font-size:.75rem;color:var(--text-muted);line-height:1.5}.pipeline-caption:hover{color:var(--accent-text)}@keyframes step-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes flow{0%,45%{transform:translateY(0);opacity:0}55%{transform:translateY(0);opacity:1}92%{transform:translateY(12px);opacity:1}to{transform:translateY(12px);opacity:0}}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.35}}.about-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:48px}.about .section-head{margin-bottom:0}.about-text{font-size:1.125rem;line-height:1.75;color:var(--text-muted)}@media(max-width:768px){.about-grid{grid-template-columns:minmax(0,1fr);gap:24px}}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.skill-group{padding:24px;background:var(--surface);border:1px solid var(--border-strong);border-radius:16px}.skill-group:last-child:nth-child(3n+1){grid-column:1 / -1}.skill-group h3{display:flex;align-items:center;gap:12px;font-size:1rem;font-weight:600;margin-bottom:18px}.skill-group-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:var(--accent-soft);color:var(--accent-text);flex-shrink:0}.skill-group-icon svg{width:18px;height:18px}.skill-chips{display:flex;flex-wrap:wrap;gap:8px}.skill-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:8px;background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--text);font-size:.875rem;font-weight:500;line-height:1.3;transition:border-color .2s,background .2s}.skill-chip:hover{border-color:var(--accent);background:var(--accent-soft)}.skill-chip svg{width:15px;height:15px;flex-shrink:0;color:var(--accent-text)}@media(max-width:400px){.skills-grid{grid-template-columns:minmax(0,1fr)}.skill-group{padding:20px}}.experience-list{display:flex;flex-direction:column}.job{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;padding:32px 0;border-top:1px solid var(--border)}.job:first-child{border-top:none;padding-top:0}.job-period{font-family:var(--font-mono);font-size:.8rem;color:var(--text-faint);padding-top:4px}.job-body h3{font-size:1.2rem;font-weight:600;letter-spacing:-.01em}.job-company{color:var(--accent-text);font-size:.95rem;margin:2px 0 16px}.job-highlights{list-style:none;display:flex;flex-direction:column;gap:10px}.job-highlights li{position:relative;padding-left:20px;color:var(--text-muted);font-size:.95rem;line-height:1.7}.job-highlights li:before{content:"";position:absolute;left:2px;top:.75em;width:8px;height:1px;background:var(--accent)}.job-highlights strong{color:var(--text);font-weight:600}@media(max-width:768px){.job{grid-template-columns:minmax(0,1fr);gap:8px;padding:28px 0}}.education-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px}.education-card{padding:28px;background:var(--surface);border:1px solid var(--border);border-radius:16px}.edu-top{display:flex;justify-content:space-between;gap:12px;font-family:var(--font-mono);font-size:.75rem;color:var(--text-faint);margin-bottom:16px}.edu-gpa{color:var(--accent-text)}.education-card h3{font-size:1.15rem;font-weight:600}.edu-field{color:var(--text);margin-top:2px}.edu-school{color:var(--text-muted);font-size:.9rem;margin:4px 0 20px}@media(max-width:400px){.education-grid{grid-template-columns:minmax(0,1fr)}.education-card{padding:24px 20px}}.publications-list{display:flex;flex-direction:column;gap:16px}.publication{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;padding:28px 32px;background:var(--surface);border:1px solid var(--border);border-radius:16px}.venue{align-self:start;justify-self:start;font-family:var(--font-mono);font-size:.75rem;color:var(--accent-text);background:var(--accent-soft);border:1px solid var(--border);padding:4px 10px;border-radius:6px}.publication h3{font-size:1.1rem;font-weight:600;line-height:1.4;margin-bottom:8px}.publication p{color:var(--text-muted);font-size:.95rem;line-height:1.65}@media(max-width:768px){.publication{grid-template-columns:minmax(0,1fr);gap:14px;padding:24px 20px}}.projects-list{display:flex;flex-direction:column;gap:20px}.project-card{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;padding:32px;background:var(--surface);border:1px solid var(--border);border-radius:16px;transition:border-color .25s,transform .25s}.project-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.project-meta{display:flex;flex-direction:column;justify-content:space-between;gap:24px}.project-index{font-family:var(--font-mono);font-size:.8rem;color:var(--text-faint)}.project-stat{display:flex;flex-direction:column;gap:4px;padding:16px;border-radius:12px;background:var(--accent-soft);border:1px solid var(--border)}.project-stat strong{font-size:1.4rem;font-weight:600;letter-spacing:-.02em;color:var(--accent-text)}.project-stat span{font-size:.8rem;color:var(--text-muted);line-height:1.4}.project-body h3{font-size:1.3rem;font-weight:600;letter-spacing:-.015em;line-height:1.3;margin-bottom:16px}.project-highlights{list-style:none;display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.project-highlights li{position:relative;padding-left:20px;color:var(--text-muted);font-size:.95rem;line-height:1.65}.project-highlights li:before{content:"";position:absolute;left:2px;top:.7em;width:8px;height:1px;background:var(--accent)}.project-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px}@media(max-width:768px){.project-card{grid-template-columns:minmax(0,1fr);gap:20px;padding:24px 20px}.project-meta{flex-direction:row;align-items:flex-start}.project-stat{flex:1}}.contact-card{position:relative;padding:56px 48px;border-radius:20px;background:var(--surface);border:1px solid var(--border-strong);overflow:hidden}.contact-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(var(--grid-dot) 1px,transparent 1px);background-size:24px 24px;mask-image:radial-gradient(ellipse 60% 80% at 100% 0%,#000 20%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse 60% 80% at 100% 0%,#000 20%,transparent 70%);pointer-events:none}.contact-card>*{position:relative}.contact-card h2{font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:600;letter-spacing:-.025em;line-height:1.15;margin:10px 0 12px}.contact-card p{color:var(--text-muted);font-size:1.05rem;margin-bottom:32px}.contact-actions{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:560px){.contact-card{padding:36px 20px}.contact-actions .btn-primary{width:100%;justify-content:center;overflow:hidden;text-overflow:ellipsis}}.footer{border-top:1px solid var(--border);padding:28px 0}.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:16px;font-family:var(--font-mono);font-size:.78rem;color:var(--text-faint)}.footer-inner a:hover{color:var(--text)}*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #0a0a0f;--surface: #111118;--surface-2: #17171f;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--text: #ededf2;--text-muted: #a1a1b0;--text-faint: #6e6e7e;--text-soft: #d4d4de;--chip-bg: rgba(255, 255, 255, .06);--chip-border: rgba(255, 255, 255, .14);--accent: #f472b6;--accent-strong: #ec4899;--accent-soft: rgba(244, 114, 182, .12);--accent-text: #f9a8d4;--on-accent: #1a0710;--ok: #34d399;--grid-dot: rgba(255, 255, 255, .07);--nav-bg: rgba(10, 10, 15, .72);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:dark}[data-theme=light]{--bg: #fafafa;--surface: #ffffff;--surface-2: #f3f3f6;--border: rgba(15, 15, 25, .08);--border-strong: rgba(15, 15, 25, .16);--text: #111118;--text-muted: #55556a;--text-faint: #8a8a9a;--text-soft: #2e2e40;--chip-bg: rgba(15, 15, 25, .04);--chip-border: rgba(15, 15, 25, .14);--accent: #db2777;--accent-strong: #be185d;--accent-soft: rgba(219, 39, 119, .08);--accent-text: #be185d;--on-accent: #ffffff;--ok: #059669;--grid-dot: rgba(15, 15, 25, .08);--nav-bg: rgba(250, 250, 250, .8);color-scheme:light}html{scroll-behavior:smooth;scroll-padding-top:80px}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .3s,color .3s}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:var(--on-accent)}.container{max-width:1120px;margin:0 auto;padding:0 24px}.section{padding:96px 0;border-top:1px solid var(--border)}.section-head{display:flex;flex-direction:column;gap:8px;margin-bottom:48px}.eyebrow{font-family:var(--font-mono);font-size:.8rem;color:var(--accent-text);letter-spacing:.02em}.section-head h2{font-size:clamp(1.75rem,3vw,2.25rem);font-weight:600;letter-spacing:-.02em;line-height:1.2}.tag{display:inline-block;font-family:var(--font-mono);font-size:.75rem;color:var(--text-soft);background:var(--chip-bg);border:1px solid var(--chip-border);padding:3px 10px;border-radius:6px}.tags{display:flex;flex-wrap:wrap;gap:6px}.btn{display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 18px;border-radius:10px;font-size:.925rem;font-weight:500;border:1px solid var(--border-strong);color:var(--text);background:transparent;white-space:nowrap;transition:background .2s,border-color .2s,transform .2s}.btn:hover{background:var(--surface-2);border-color:var(--text-faint)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:10px;border:1px solid var(--border);color:var(--text-muted);transition:color .2s,border-color .2s}.icon-btn:hover{color:var(--text);border-color:var(--border-strong)}.text-link{display:inline-flex;align-items:center;gap:6px;font-size:.9rem;font-weight:500;color:var(--accent-text)}.text-link:hover{text-decoration:underline;text-underline-offset:4px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(max-width:768px){.section{padding:72px 0}.section-head{margin-bottom:32px}.container{padding:0 16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
