@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";body{margin:0;min-width:320px}#root{width:100%}:root{--color-bg: #f8f9fb;--color-surface: #ffffff;--color-text: #1c1f26;--color-text-secondary: #3d4452;--color-text-muted: #6b7280;--color-accent: #2563a0;--color-accent-light: #eff4fa;--color-accent-hover: #1d4f80;--color-accent-subtle: #dbe8f4;--color-border: #e5e7eb;--color-border-light: #f0f1f3;--color-timeline: #d1d5db;--color-dot: #2563a0;--color-tag-bg: #f0f2f5;--color-tag-text: #374151;--color-warm: #b45309;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, monospace;--font-serif: "Georgia", "Times New Roman", serif;--max-width: 880px;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 2.75rem;--space-3xl: 3.5rem;--radius: 10px;--radius-sm: 6px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 3px rgba(0, 0, 0, .03);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06), 0 1px 3px rgba(0, 0, 0, .04);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .08), 0 2px 6px rgba(0, 0, 0, .04);--shadow-card: 0 1px 3px rgba(0, 0, 0, .04), 0 0 0 1px rgba(0, 0, 0, .02)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.6}a{color:var(--color-accent);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-accent-hover)}.resume{min-height:100vh;display:flex;flex-direction:column}.main{max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--space-2xl) var(--space-xl)}.header{background:linear-gradient(160deg,#0f172a,#1e3a5f,#2563a0);color:#fff;padding:var(--space-3xl) var(--space-xl) var(--space-2xl);position:relative;overflow:hidden}.header:before{content:"";position:absolute;top:-50%;right:-20%;width:600px;height:600px;background:radial-gradient(circle,rgba(255,255,255,.04) 0%,transparent 70%);pointer-events:none}.header:after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent)}.header-content{max-width:var(--max-width);margin:0 auto;position:relative;z-index:1}.header-top{display:flex;justify-content:space-between;align-items:flex-start}.print-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;font-size:.8rem;font-weight:600;font-family:var(--font-sans);color:#ffffffe6;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:100px;cursor:pointer;transition:all .2s ease;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.print-btn:hover{background:#ffffff26;border-color:#ffffff40;color:#fff}.print-btn:disabled{opacity:.6;cursor:default}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.name{font-size:2.75rem;font-weight:800;letter-spacing:-.035em;line-height:1.05;margin-bottom:.35rem}.title{font-size:1.05rem;font-weight:400;color:#fff9;margin-bottom:var(--space-xl);letter-spacing:.04em;text-transform:uppercase;font-size:.85rem}.contact-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-lg);font-size:.85rem}.contact-row a,.contact-row .location{display:inline-flex;align-items:center;gap:7px;color:#ffffffb3;transition:color .2s ease}.contact-row a:hover{color:#fff}.contact-row svg{opacity:.6}.highlights{max-width:var(--max-width);width:100%;margin:-1.25rem auto 0;padding:0 var(--space-xl);display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-sm);position:relative;z-index:2}.highlight-card{background:var(--color-surface);border-radius:var(--radius);padding:var(--space-md) var(--space-lg);text-align:center;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:1px;border:1px solid rgba(0,0,0,.03)}.highlight-value{font-size:1.85rem;font-weight:800;color:var(--color-accent);letter-spacing:-.03em;line-height:1.1}.highlight-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text)}.highlight-detail{font-size:.7rem;color:var(--color-text-muted);font-weight:400}.section{margin-bottom:var(--space-2xl)}.section-title{font-size:.75rem;font-weight:700;color:var(--color-accent);letter-spacing:.1em;text-transform:uppercase;margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:2px solid var(--color-accent);display:inline-block}.section-note{font-size:.85rem;color:var(--color-text-muted);margin-bottom:var(--space-md);font-style:italic}.about-text{font-size:1.05rem;color:var(--color-text-secondary);line-height:1.8;padding:var(--space-lg) var(--space-xl);border-radius:var(--radius);border-left:3px solid var(--color-accent);background:linear-gradient(135deg,var(--color-accent-light) 0%,var(--color-surface) 100%)}.oss-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.oss-card{background:var(--color-surface);padding:var(--space-md) var(--space-lg);border-radius:var(--radius);box-shadow:var(--shadow-card);border-left:3px solid transparent;transition:all .25s ease}.oss-card:hover{border-left-color:var(--color-accent);box-shadow:var(--shadow-md);transform:translateY(-1px)}.oss-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.oss-name{font-size:.95rem;font-weight:700;font-family:var(--font-mono);color:var(--color-text)}.oss-stats{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;font-weight:600;color:var(--color-warm);background:#fffbeb;padding:2px 9px;border-radius:100px;border:1px solid #fde68a}.oss-stats svg{color:var(--color-warm)}.oss-role{display:inline-block;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-accent);margin-bottom:var(--space-xs)}.oss-desc{font-size:.8rem;color:var(--color-text-muted);line-height:1.55}.oss-contributions{margin-top:var(--space-sm);font-size:.825rem;color:var(--color-text-muted);line-height:1.6;padding:var(--space-sm) var(--space-md);background:var(--color-accent-light);border-radius:var(--radius-sm)}.oss-contributions strong{font-weight:600;color:var(--color-text-secondary)}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.skill-group{background:var(--color-surface);padding:var(--space-md) var(--space-lg);border-radius:var(--radius);box-shadow:var(--shadow-card)}.skill-category{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:var(--space-sm)}.skill-tags{display:flex;flex-wrap:wrap;gap:5px}.skill-tag{display:inline-block;font-size:.78rem;font-weight:500;padding:3px 11px;background:var(--color-tag-bg);color:var(--color-tag-text);border-radius:100px;white-space:nowrap;transition:all .2s ease;border:1px solid transparent}.skill-tag:hover{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.timeline{position:relative;padding-left:30px}.timeline:before{content:"";position:absolute;left:7px;top:10px;bottom:10px;width:2px;background:linear-gradient(180deg,var(--color-accent) 0%,var(--color-timeline) 30%)}.timeline-entry{position:relative;margin-bottom:var(--space-lg)}.timeline-entry:last-child{margin-bottom:0}.timeline-dot{position:absolute;left:-30px;top:8px;width:16px;height:16px;background:var(--color-surface);border:3px solid var(--color-dot);border-radius:50%;z-index:1;transition:all .2s ease}.timeline-entry:first-child .timeline-dot{background:var(--color-dot);box-shadow:0 0 0 4px #2563a01f}.timeline-content{background:var(--color-surface);padding:var(--space-md) var(--space-lg);border-radius:var(--radius);box-shadow:var(--shadow-card);transition:box-shadow .2s ease}.timeline-content:hover{box-shadow:var(--shadow-md)}.entry-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md);margin-bottom:var(--space-sm)}.entry-title{font-size:1rem;font-weight:700;color:var(--color-text)}.entry-company{font-size:.88rem;font-weight:600;color:var(--color-accent)}.entry-location{font-size:.82rem;color:var(--color-text-muted)}.entry-period{font-size:.75rem;font-weight:500;color:var(--color-text-muted);white-space:nowrap;font-family:var(--font-mono);background:var(--color-accent-light);padding:3px 12px;border-radius:100px}.entry-bullets{list-style:none;padding:0}.entry-bullets li{position:relative;font-size:.85rem;color:var(--color-text-secondary);padding-left:16px;margin-bottom:3px;line-height:1.6}.entry-bullets li:before{content:"";position:absolute;left:0;top:9px;width:4px;height:4px;border-radius:50%;background:var(--color-accent);opacity:.5}.entry-bullets li.collapsed-bullet{display:none}.show-more-btn{display:inline-flex;align-items:center;gap:4px;margin-top:var(--space-sm);padding:4px 14px;font-size:.78rem;font-weight:500;color:var(--color-accent);background:var(--color-accent-light);border:1px solid var(--color-accent-subtle);border-radius:100px;cursor:pointer;transition:all .2s ease;font-family:var(--font-sans)}.show-more-btn:hover{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.show-more-btn svg{transition:transform .2s ease}.show-more-btn.expanded svg{transform:rotate(180deg)}.education-list{display:flex;flex-direction:column;gap:var(--space-sm)}.education-entry{background:var(--color-surface);padding:var(--space-md) var(--space-lg);border-radius:var(--radius);box-shadow:var(--shadow-card)}.thesis{font-size:.82rem;color:var(--color-text-muted);margin-top:var(--space-xs);line-height:1.5}.awards-list{display:flex;flex-direction:column;gap:var(--space-xs)}.award-entry{display:flex;gap:var(--space-md);background:var(--color-surface);padding:var(--space-md) var(--space-lg);border-radius:var(--radius);box-shadow:var(--shadow-card)}.award-year{font-size:.75rem;font-weight:500;color:var(--color-text-muted);font-family:var(--font-mono);min-width:72px;padding-top:2px}.award-title{font-size:.92rem;font-weight:600;color:var(--color-text)}.award-org{font-size:.82rem;color:var(--color-accent);font-weight:500}.award-desc{font-size:.8rem;color:var(--color-text-muted);margin-top:2px}.publications-list{list-style:none;counter-reset:pub;padding:0}.pub-entry{counter-increment:pub;position:relative;padding-left:32px;margin-bottom:var(--space-md)}.pub-entry:before{content:counter(pub) ".";position:absolute;left:0;font-size:.82rem;font-weight:700;color:var(--color-accent);font-family:var(--font-mono)}.pub-title{display:block;font-size:.88rem;font-weight:600;color:var(--color-text);margin-bottom:2px}.pub-meta{font-size:.8rem;color:var(--color-text-muted)}.pub-meta .pub-author-highlight{font-weight:700;color:var(--color-text-secondary)}.presentations-list{display:flex;flex-direction:column;gap:0}.pres-entry{display:flex;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border-light)}.pres-entry:last-child{border-bottom:none}.pres-year{font-size:.75rem;font-weight:500;color:var(--color-text-muted);font-family:var(--font-mono);min-width:48px;padding-top:2px}.pres-title{font-size:.88rem;font-weight:600;color:var(--color-text)}.pres-venue{font-size:.8rem;color:var(--color-text-muted)}.footer{text-align:center;padding:var(--space-xl) var(--space-lg);font-size:.78rem;color:var(--color-text-muted);border-top:1px solid var(--color-border-light);margin-top:auto}@media(max-width:640px){.name{font-size:2rem}.contact-row{flex-direction:column;gap:var(--space-sm)}.highlights{grid-template-columns:repeat(2,1fr);margin-top:-1rem}.oss-grid,.skills-grid{grid-template-columns:1fr}.entry-header,.award-entry,.pres-entry{flex-direction:column;gap:var(--space-xs)}}@media print{@page{size:letter;margin:.5in .55in}:root{--color-bg: #ffffff;--color-surface: #ffffff;--color-text: #111111;--color-text-secondary: #222222;--color-text-muted: #444444;--color-accent: #1a5276;--color-accent-light: #eef3f8;--color-border: #d0d5dd;--space-xs: .15rem;--space-sm: .3rem;--space-md: .5rem;--space-lg: .75rem;--space-xl: .75rem;--space-2xl: .9rem;--space-3xl: .9rem;--radius: 3px;--radius-sm: 2px}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}body{font-size:9pt;line-height:1.4}.resume{display:block}.header{background:#fff!important;border-bottom:2pt solid var(--color-accent);padding:0 0 .3rem}.header:before,.header:after{display:none}.header-content{padding:0}.name{font-size:22pt;font-weight:800;line-height:1;margin-bottom:3px;letter-spacing:-.02em;color:var(--color-text)!important}.title{font-size:9pt;font-weight:500;margin-bottom:.25rem;letter-spacing:.06em;color:var(--color-accent)!important;opacity:1}.contact-row{font-size:8pt;gap:.15rem .75rem;color:var(--color-text)!important}.contact-row a{color:var(--color-text)!important}.contact-row svg{width:10px;height:10px}.print-btn{display:none!important}.highlights{margin-top:0!important;margin-bottom:0!important;padding:.25rem 0;gap:.3rem;grid-template-columns:repeat(4,1fr)}.highlight-card{padding:.2rem .3rem .15rem;box-shadow:none;border:none;background:var(--color-accent-light);border-radius:3px;text-align:center}.highlight-value{font-size:14pt;font-weight:800;color:var(--color-accent);letter-spacing:-.02em}.highlight-label{font-size:6.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text)}.highlight-detail{font-size:6pt;color:var(--color-text-muted)}.main{padding:.2rem 0}.section{margin-bottom:.3rem;break-inside:auto}.section-title{font-size:8pt;font-weight:800;color:var(--color-accent);margin-bottom:.2rem;padding-bottom:2px;border-bottom:1.5pt solid var(--color-accent);letter-spacing:.1em;text-transform:uppercase;display:block;width:100%}.section-note{font-size:7.5pt;margin-bottom:.2rem}.about-text{padding:0;font-size:9pt;line-height:1.4;box-shadow:none;border:none;background:transparent;border-radius:0}.oss-grid{gap:.25rem}.oss-card{padding:.15rem .3rem;box-shadow:none;border:none;border-left:2.5pt solid var(--color-accent);border-radius:0;break-inside:avoid;transition:none;transform:none!important}.oss-name{font-size:9pt;color:var(--color-text)!important}.oss-stats{font-size:7pt;padding:1px 6px}.oss-role{font-size:6.5pt;margin-bottom:2px}.oss-desc{font-size:8pt;line-height:1.35}.oss-contributions{margin-top:.15rem;padding:.1rem .25rem;font-size:7.5pt;line-height:1.3;background:var(--color-accent-light);border-radius:3px}.skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:.2rem}.skill-group{display:block;padding:.1rem 0;box-shadow:none;border:none;border-radius:0;background:transparent}.skill-category{font-size:7pt;font-weight:800;color:var(--color-accent);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px;padding-top:0;display:block}.skill-tags{display:flex;flex-wrap:wrap;gap:2px}.skill-tag{font-size:7pt;padding:1px 5px;background:var(--color-accent-light);border-radius:2px;border:none;white-space:nowrap;color:var(--color-text-secondary)}.skill-tag:after{content:none}.timeline{padding-left:0}.timeline:before{display:none}.timeline-dot,.timeline-entry:first-child .timeline-dot{display:none}.timeline-entry{margin-bottom:.3rem;break-inside:avoid}.timeline-content{padding:.15rem .3rem;box-shadow:none;border:none;border-left:2.5pt solid var(--color-accent);border-radius:0}.timeline-content:hover{box-shadow:none}.entry-header{margin-bottom:.15rem;gap:.3rem}.entry-title{font-size:10.5pt;font-weight:700;color:var(--color-text)}.entry-company{font-size:8.5pt;color:var(--color-accent)!important}.entry-location{font-size:7.5pt}.entry-period{font-size:7.5pt;font-weight:600;padding:1.5px 7px;background:var(--color-accent-light);border:none;border-radius:2px;color:var(--color-accent);font-family:var(--font-mono);letter-spacing:.02em}.entry-bullets li,.entry-bullets li.collapsed-bullet{display:block!important;font-size:8.5pt;line-height:1.35;margin-bottom:1px;padding-left:10px}.entry-bullets li:before{top:6px;width:3px;height:3px;background:var(--color-accent);opacity:.7}.timeline-entry:first-child .entry-bullets li:nth-child(n+9){display:none!important}.show-more-btn{display:none!important}.education-list{gap:.2rem}.education-entry{padding:.1rem .3rem;box-shadow:none;border:none;border-left:2.5pt solid var(--color-accent);border-radius:0;break-inside:avoid}.edu-degree{font-size:9.5pt}.edu-school{color:var(--color-accent)!important}.thesis{display:none}.awards-list{gap:.12rem}.award-entry{padding:.08rem 0;gap:.4rem;box-shadow:none;border:none;border-radius:0;break-inside:avoid}.award-year{font-size:7.5pt;min-width:50px;color:var(--color-accent);font-weight:700}.award-title{font-size:8.5pt}.award-org{font-size:7.5pt;color:var(--color-accent)!important}.award-desc{display:none}.pub-entry{margin-bottom:.1rem;padding-left:16px;break-inside:auto}.pub-entry:before{font-size:7.5pt;color:var(--color-accent);font-weight:700}.pub-title{font-size:8pt;margin-bottom:0}.pub-meta{font-size:7pt}#section-presentations{display:none}.footer{display:none!important}a{color:var(--color-text)!important;text-decoration:none!important}.entry-company a,.edu-school a,.award-org a{color:var(--color-accent)!important}a[href]:after{content:none!important}.cover-letter{max-width:none;padding:0;margin:0}.cl-print-btn{display:none!important}.cl-header{padding:0;margin-bottom:.5rem;border-bottom:none}.cl-letterhead{padding-bottom:.3rem;border-bottom:2px solid var(--color-accent);margin-bottom:.5rem}.cl-name{font-size:16pt;font-weight:800;margin-bottom:1px;letter-spacing:-.02em}.cl-tagline{font-size:7pt;color:var(--color-accent);margin-bottom:.15rem}.cl-contact{font-size:7.5pt;gap:.15rem .5rem;margin-top:.1rem}.cl-sep{color:var(--color-text-muted)}.cl-date{font-size:9pt;margin-bottom:.3rem}.cl-recipient{font-size:9pt;font-weight:500;margin-bottom:0}.cl-body{padding:0}.cl-content p{font-size:9.5pt;line-height:1.55;margin-bottom:.35rem;color:var(--color-text-secondary)}.cl-content p:first-child:first-letter{font-size:1em;font-weight:400}.cl-closing{margin-top:.5rem;font-size:9.5pt}.cl-signature{margin-top:.7rem;font-size:11pt}}.cover-letter{max-width:700px;margin:0 auto;padding:var(--space-3xl) var(--space-xl) var(--space-2xl);min-height:100vh;position:relative}.cl-print-btn{position:fixed;top:var(--space-lg);right:var(--space-xl);display:inline-flex;align-items:center;gap:6px;padding:8px 18px;font-size:.82rem;font-weight:600;font-family:var(--font-sans);color:var(--color-accent);background:var(--color-surface);border:1px solid var(--color-border);border-radius:100px;cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-md);z-index:10}.cl-print-btn:hover{background:var(--color-accent-light);border-color:var(--color-accent);box-shadow:var(--shadow-lg)}.cl-print-btn:disabled{opacity:.6;cursor:default}.cl-header{margin-bottom:var(--space-2xl)}.cl-letterhead{padding-bottom:var(--space-lg);border-bottom:2px solid var(--color-accent);margin-bottom:var(--space-xl)}.cl-sender{margin-bottom:0}.cl-name{font-size:1.85rem;font-weight:800;color:var(--color-text);letter-spacing:-.03em;margin-bottom:.15rem}.cl-tagline{font-size:.78rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);margin-bottom:var(--space-sm)}.cl-contact{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);font-size:.85rem;color:var(--color-text-muted)}.cl-contact a{color:var(--color-text-muted);transition:color .2s ease}.cl-contact a:hover{color:var(--color-accent)}.cl-sep{color:var(--color-border);font-size:.7rem}.cl-date{font-size:.92rem;color:var(--color-text-secondary);margin-bottom:var(--space-md)}.cl-recipient{font-size:1rem;font-weight:500;color:var(--color-text)}.cl-body{padding:0}.cl-content p{font-size:1rem;line-height:1.8;color:var(--color-text-secondary);margin-bottom:var(--space-lg)}.cl-content p:first-child:first-letter{font-size:1.1em;font-weight:600}.cl-content a{color:var(--color-accent);text-decoration:underline;text-decoration-color:#2563a040;text-underline-offset:2px;transition:text-decoration-color .2s ease}.cl-content a:hover{text-decoration-color:var(--color-accent)}.cl-closing{margin-top:var(--space-2xl);font-size:1rem;color:var(--color-text-secondary)}.cl-signature{margin-top:var(--space-lg);font-size:1.15rem;font-weight:700;color:var(--color-text);letter-spacing:-.01em}.cl-loading,.cl-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;text-align:center;color:var(--color-text-muted);padding:var(--space-2xl)}.cl-empty h1{font-size:1.5rem;color:var(--color-text);margin-bottom:var(--space-md)}.cl-empty code{font-family:var(--font-mono);background:var(--color-accent-light);padding:2px 8px;border-radius:4px;font-size:.85rem}
