:root{--mobile-breakpoint: 768px;--small-mobile-breakpoint: 480px;--mobile-padding: 20px;--mobile-section-margin: 1.5rem;--small-mobile-padding: 15px;--small-mobile-section-margin: 1rem;--mobile-h1-size: 24px;--mobile-h2-size: 20px;--small-mobile-h1-size: 22px;--mobile-base-font: 16px}.mobile-only{display:none}.desktop-only{display:block}@media (max-width: 768px){.mobile-only{display:block}.desktop-only{display:none}.mobile-full-width{width:100%;box-sizing:border-box}.mobile-center{text-align:center}.mobile-stack{flex-direction:column;align-items:flex-start}}@media (max-width: 768px){.button-mobile-friendly{padding:.75rem 1rem;display:block;width:100%;text-align:center;box-sizing:border-box}}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#fffbeb;overflow-x:hidden}.container{display:flex;height:100vh;overflow:hidden}.sidebar{width:150px;padding:20px;overflow-y:auto;border-right:1px solid #eee;transition:transform .3s ease}.main{flex:1;overflow-y:auto;padding:40px;scroll-behavior:smooth}.section{min-height:min-content;padding-top:20px;border-bottom:1px solid rgba(0,0,0,.1);margin-bottom:var(--resume-spacing-xl, 2rem);padding-bottom:var(--resume-spacing-xl, 2rem)}.section h2{font-size:24px;margin-bottom:16px;font-weight:600;color:var(--resume-text-primary, #1a1a1a)}.section:last-child{border-bottom:none;margin-bottom:0}.menu-toggle{display:none;position:fixed;top:20px;right:20px;z-index:100;background:#317039;color:#fff;border:none;border-radius:50%;width:50px;height:50px;cursor:pointer;box-shadow:0 2px 5px #0003}.mobile-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:90}@media (max-width: 768px){.container{flex-direction:column}.sidebar{position:fixed;top:0;left:0;width:80%;height:100vh;background:#fffbeb;z-index:99;transform:translate(-100%);box-shadow:2px 0 5px #0000001a}.sidebar.open{transform:translate(0)}.main{padding:var(--mobile-padding);margin-top:60px}.menu-toggle{display:flex;align-items:center;justify-content:center}.section{margin-bottom:var(--resume-spacing-lg, 1.5rem);padding-bottom:var(--resume-spacing-lg, 1.5rem)}.section h2{font-size:var(--mobile-h2-size)}}@media (max-width: 480px){.main{padding:var(--small-mobile-padding)}.section h2{font-size:18px}}.toc-container{position:sticky;top:10px;font-size:14px}.toc-links{position:relative;display:flex;flex-direction:column;max-height:80vh;overflow-y:auto}.toc-link{position:relative;padding:4px 0;color:#524e4e;text-decoration:none;transition:color .2s;z-index:2}.toc-link:hover{color:#948989}.toc-link.active{color:#317039;font-weight:800}.toc-thumb{position:absolute;top:0;left:0;pointer-events:none;z-index:1}.thumb-indicator{position:absolute;left:0;width:100%;background-color:#317039;transition:top .6s ease,height .3s ease;will-change:top,height}.toc-static-line{position:absolute;top:0;left:12px;width:1px;height:100%;background-color:#317039;z-index:0}@media (max-width: 768px){.toc-container{width:100%}.toc-link{padding:8px 0;font-size:var(--mobile-base-font)}.toc-thumb{opacity:.3}.thumb-indicator{background-color:#317309;left:2px;width:4px}}:root{--resume-primary-color: #317039;--resume-secondary-color: #4a9251;--resume-text-primary: #1a1a1a;--resume-text-secondary: #444;--resume-text-muted: #666;--resume-background: #fffbeb;--resume-card-shadow: 0 2px 8px rgba(0, 0, 0, .04);--resume-border: 1px solid rgba(0, 0, 0, .06);--resume-border-radius: 12px;--resume-spacing-sm: .5rem;--resume-spacing-md: 1rem;--resume-spacing-lg: 1.5rem;--resume-spacing-xl: 2rem}.experience-item,.project-item{margin-bottom:var(--resume-spacing-xl)}.experience-item h3,.project-item h3{font-weight:600;color:var(--resume-text-primary)}.degree,.company,.project-tech{color:var(--resume-text-secondary);margin-bottom:var(--resume-spacing-sm);font-weight:500}.details{display:flex;justify-content:space-between;color:var(--resume-text-muted);margin-bottom:var(--resume-spacing-sm)}.experience-header,.project-header{margin-bottom:var(--resume-spacing-md)}.period,.project-date{color:var(--resume-text-muted);font-style:italic;font-weight:400}.experience-description li,.project-description li{margin-bottom:var(--resume-spacing-sm);line-height:1.6}@media (max-width: 768px){.details{flex-direction:column;align-items:flex-start}.details span{margin-bottom:.25rem}.experience-description li,.project-description li{margin-bottom:.75rem;line-height:1.5}.experience-item,.project-item{margin-bottom:var(--resume-spacing-lg)}}@media (max-width: 480px){.experience-item,.project-item{margin-bottom:var(--resume-spacing-md)}}.profile-section{margin-bottom:var(--resume-spacing-xl)}.profile-content{display:flex;align-items:flex-start;gap:var(--resume-spacing-xl)}.profile-text{flex:1;display:flex;flex-direction:column}.profile-header{text-align:right;margin-bottom:var(--resume-spacing-lg)}.profile-paragraphs{text-align:left;line-height:1.1;padding-left:var(--resume-spacing-md);border-left:2px solid var(--resume-primary-color);margin-top:var(--resume-spacing-md)}.profile-paragraphs p{margin-bottom:var(--resume-spacing-lg);color:var(--resume-text-secondary)}.name{margin:0 0 var(--resume-spacing-sm) 0;font-weight:600;color:var(--resume-text-primary)}.subtitle{color:var(--resume-text-secondary);margin-bottom:.25rem;font-weight:500}.location{color:var(--resume-text-muted);margin:0}.headshot{flex-shrink:0;border-radius:8px;width:400px;height:500px;object-fit:cover}@media (max-width: 768px){.profile-content{flex-direction:column;text-align:center;gap:var(--resume-spacing-md)}.profile-text,.profile-header{text-align:center}.profile-paragraphs{text-align:left}.headshot{width:150px;height:150px;align-self:center}}@media (max-width: 480px){.headshot{width:180px;height:280px}}.education-section{margin-bottom:var(--resume-spacing-xl)}.education-section h3{font-size:1.3rem;font-weight:600;color:var(--resume-text-primary);margin-bottom:var(--resume-spacing-sm)}.degree{color:var(--resume-text-secondary);margin-bottom:var(--resume-spacing-md);font-weight:500}.education-details{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--resume-spacing-lg);padding:var(--resume-spacing-sm) 0;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(0,0,0,.1)}.education-details span{color:var(--resume-text-muted)}.gpa{color:#fff;padding:.3rem .6rem;border-radius:4px;font-weight:600;font-size:.9rem}.coursework h4{font-weight:600;color:var(--resume-text-primary);margin-bottom:var(--resume-spacing-sm);font-size:1rem}.course-list{display:flex;flex-wrap:wrap;gap:var(--resume-spacing-sm)}.course-list span{background:#f8f9fa;color:var(--resume-text-secondary);padding:.4rem .8rem;border-radius:4px;font-size:.9rem;border:1px solid #e9ecef}@media (max-width: 768px){.education-details{flex-direction:column;align-items:flex-start;gap:var(--resume-spacing-sm)}.course-list{gap:.3rem}.course-list span{font-size:.85rem;padding:.3rem .6rem}}.projects-intro{text-align:center;margin-bottom:2rem;padding:var(--resume-spacing-xl) 0}.projects-intro-title{font-size:2.2rem;font-weight:700;color:var(--resume-text-primary);margin-bottom:var(--resume-spacing-md)}.projects-intro-underline{height:3px;background:linear-gradient(90deg,var(--resume-primary-color),var(--resume-secondary-color));margin:0 auto var(--resume-spacing-lg);border-radius:2px;max-width:150px}.projects-intro-description{font-size:1.1rem;color:#555;max-width:600px;margin:0 auto;line-height:1.6}@media (max-width: 768px){.projects-intro{padding:var(--resume-spacing-md) 0}.projects-intro-title{font-size:1.8rem}.projects-intro-description{font-size:1rem;padding:0 var(--resume-spacing-md)}}.contact-info{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--resume-spacing-sm)}.contact-info p{margin:0;color:var(--resume-text-secondary)}.green{color:var(--resume-primary-color)}.contact-info a{color:var(--resume-primary-color);text-decoration:none;font-weight:500;transition:color .2s ease}.contact-info a:hover{text-decoration:underline;color:var(--resume-secondary-color)}@media (max-width: 768px){.contact-info{flex-direction:column;align-items:center;gap:.5rem;text-align:center}}.personal-section{max-width:800px}.personal-content{line-height:1.6}.personal-content p{margin-bottom:var(--resume-spacing-lg);color:var(--resume-text-secondary)}.personal-content p:last-child{margin-bottom:0}@media (max-width: 768px){.personal-section{max-width:100%}.personal-content p{margin-bottom:var(--resume-spacing-md)}}.content-section{max-width:900px;margin:0 auto}.content-grid{display:flex;flex-direction:column;gap:var(--resume-spacing-xl)}.content-card{padding:var(--resume-spacing-lg);background:var(--resume-background);border-radius:var(--resume-border-radius);border:var(--resume-border);box-shadow:var(--resume-card-shadow);transition:all .3s ease}.content-card:hover{box-shadow:0 4px 15px #3170391a;transform:translateY(-2px)}.content-card.featured{border-left:4px solid var(--resume-primary-color)}.content-header{margin-bottom:var(--resume-spacing-md)}.content-title-row{display:flex;align-items:center;gap:var(--resume-spacing-md);margin-bottom:var(--resume-spacing-sm)}.content-title{font-size:1.3rem;font-weight:600;color:var(--resume-text-primary);margin:0;flex:1}.content-date{color:var(--resume-text-muted);font-size:.9rem;font-style:italic}.content-type-badge,.content-status-badge{padding:.25rem .75rem;border-radius:16px;font-size:.8rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.content-type-badge{background:var(--resume-primary-color);color:#fff}.content-status-badge.published{background:#28a745;color:#fff}.content-status-badge.in-review{background:#ffc107;color:#212529}.content-status-badge.draft{background:#6c757d;color:#fff}.paper-meta{display:flex;justify-content:space-between;align-items:center;margin-top:var(--resume-spacing-sm)}.paper-venue{color:var(--resume-primary-color);font-weight:500;font-style:italic}.content-description{color:var(--resume-text-secondary);line-height:1.6;margin:0 0 var(--resume-spacing-md) 0}.paper-abstract{font-style:italic}.content-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:var(--resume-spacing-md)}.content-tag{background:#f8f9fa;color:var(--resume-text-secondary);padding:.25rem .75rem;border-radius:4px;font-size:.85rem;border:1px solid #e9ecef}.content-actions{display:flex;gap:var(--resume-spacing-md);margin-top:var(--resume-spacing-md);padding-top:var(--resume-spacing-md);border-top:1px solid rgba(0,0,0,.1)}.content-link{color:var(--resume-primary-color);text-decoration:none;font-weight:500;transition:color .2s ease}.content-link:hover{color:var(--resume-secondary-color);text-decoration:underline}.content-link.primary{background:var(--resume-primary-color);color:#fff;padding:.5rem 1rem;border-radius:4px;text-decoration:none}.content-link.primary:hover{background:var(--resume-secondary-color);color:#fff;text-decoration:none}.content-link.secondary{color:var(--resume-text-muted)}@media (max-width: 768px){.content-card{padding:var(--resume-spacing-md)}.content-title-row{flex-direction:column;align-items:flex-start;gap:var(--resume-spacing-sm)}.paper-meta{flex-direction:column;align-items:flex-start;gap:.25rem}.content-actions{flex-direction:column;gap:.75rem}.content-link.primary,.content-link.secondary{text-align:center;display:block}}.content-author{color:var(--resume-text-secondary);font-size:.9rem;font-style:italic;margin-bottom:var(--resume-spacing-sm)}.book-status{display:flex;justify-content:flex-end;margin-top:var(--resume-spacing-md)}.status-badge{padding:.25rem .75rem;border-radius:16px;font-size:.8rem;font-weight:500;text-transform:capitalize}.status-badge.currently-reading{background:var(--resume-primary-color);color:#fff}.status-badge.wanting-to-read{background:#ffc107;color:#212529}.status-badge.completed{background:#28a745;color:#fff}.reading-list-title{font-size:1.8rem;font-weight:600;color:var(--resume-text-primary);margin:0 0 var(--resume-spacing-xl) 0;text-align:center;position:relative}.reading-list-title:after{content:"";display:block;width:80px;height:3px;background:linear-gradient(90deg,var(--resume-primary-color),var(--resume-secondary-color));margin:var(--resume-spacing-md) auto 0;border-radius:2px}.terminal-card{margin-bottom:2rem;border-radius:8px;background:#f0fff0;overflow:hidden;font-family:Monaco,Menlo,Ubuntu Mono,monospace;border:1px solid #8fae8f}.terminal-header{background:#2a2d2a;padding:.75rem 1rem;display:flex;align-items:center;gap:1rem;justify-content:space-between}.terminal-dots{display:flex;gap:.5rem}.dot{width:12px;height:12px;border-radius:50%}.dot.red{background:#bfd454}.dot.yellow{background:#e5fb79}.dot.green{background:#cbe25a}.terminal-title{color:#c8e4c8;font-size:.9rem;font-weight:500;flex:1}.terminal-date{color:#a1b5a1;font-size:.8rem;font-family:Monaco,Menlo,Ubuntu Mono,monospace;margin-left:auto}.terminal-body{padding:1rem;color:#2a2d2a;font-size:.9rem;line-height:1.5}.terminal-line{margin-bottom:.5rem}.prompt{color:#5c705c;margin-right:.5rem;font-weight:600}.command{color:#353b35;font-weight:500}.terminal-output{margin:.5rem 0 1rem 1.5rem;color:#2a2d2a}.terminal-output p{margin:.25rem 0;color:#2a2d2a}.terminal-output p:first-child{margin-top:0}.terminal-output p:last-child{margin-bottom:0}.terminal-tech{margin:.5rem 0 1rem 1.5rem;color:#687d68}.terminal-tech-item{margin-right:1rem;font-weight:500}.terminal-links{margin-left:1.5rem}.terminal-links a{color:#bfd454;text-decoration:none;margin-right:1rem;font-weight:500}.terminal-links a:hover{text-decoration:underline;color:#b1c44f}@media (max-width: 768px){.terminal-body{padding:.75rem;font-size:.85rem}.terminal-header{flex-direction:column;align-items:flex-start;gap:.5rem}.terminal-date{margin-left:0;align-self:flex-end}}.terminal-workflow{margin:.5rem 0 1rem 1.5rem;color:#2a2d2a;font-family:Monaco,Menlo,Ubuntu Mono,monospace}.workflow-line{margin:.2rem 0;line-height:1.4;font-size:.9rem}.terminal-architecture{margin:.5rem 0 1rem 1.5rem;color:#2a2d2a;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.85rem}.architecture-line{margin:0;line-height:1.2;white-space:pre}.terminal-line .command{color:#353b35;font-weight:500}.terminal-line:has(.command:contains("workflow_diagram")) .command,.terminal-line:has(.command:contains("system_architecture")) .command{color:#5c705c;font-weight:600}@media (max-width: 768px){.terminal-workflow,.terminal-architecture{margin-left:1rem;font-size:.8rem}.workflow-line{font-size:.85rem}.architecture-line{font-size:.75rem;line-height:1.1}.terminal-architecture{overflow-x:auto;white-space:nowrap}}@media (max-width: 480px){.terminal-workflow,.terminal-architecture{margin-left:.5rem}.architecture-line{font-size:.7rem}}.experience-intro{text-align:center;margin-bottom:2.5rem;padding:var(--resume-spacing-lg) 0}.experience-intro-title{font-size:2rem;font-weight:600;color:var(--resume-text-primary);margin-bottom:var(--resume-spacing-md)}.experience-intro-description{font-size:1rem;color:var(--resume-text-secondary);max-width:580px;margin:0 auto;line-height:1.6}@media (max-width: 768px){.experience-intro{padding:var(--resume-spacing-md) 0}.experience-intro-title{font-size:1.6rem}.experience-intro-description{font-size:.95rem;padding:0 var(--resume-spacing-md)}}.experience-item{margin-bottom:2rem;padding:1.5rem 0;border-bottom:1px solid #f0f0f0;transition:opacity .2s ease}.experience-item:last-child{border-bottom:none;margin-bottom:0}.experience-item:hover{opacity:.8}.experience-header{margin-bottom:1rem}.experience-header h3{font-size:1.2rem;font-weight:600;color:var(--resume-text-primary);margin:0 0 .25rem;line-height:1.3}.experience-header .company{color:var(--resume-text-secondary);font-weight:500;font-size:1rem;margin:0 0 .25rem}.experience-header .period{color:var(--resume-text-muted);font-size:.9rem;font-weight:400;margin:0}.experience-description{margin:0;padding:0}.experience-description p{margin-bottom:1rem;line-height:1.6;color:var(--resume-text-secondary);font-size:.95rem}.experience-description p:last-child{margin-bottom:0}@media (max-width: 768px){.experience-item{padding:1.25rem 0;margin-bottom:1.5rem}.experience-header{margin-bottom:.75rem}.experience-header h3{font-size:1.1rem}.experience-description li{margin-bottom:.5rem;font-size:.9rem;line-height:1.5}}@media (max-width: 480px){.experience-item{padding:1rem 0;margin-bottom:1rem}.experience-header h3{font-size:1rem}.experience-header .company{font-size:.95rem}.experience-header .period{font-size:.85rem}}.experience-link{margin-top:1.25rem;padding-top:1rem;border-top:1px solid rgba(0,0,0,.1)}.experience-link a{display:inline-flex;align-items:center;gap:.5rem;color:var(--resume-primary-color);text-decoration:none;font-weight:500;font-size:.9rem;padding:.5rem 1rem;border:1px solid var(--resume-primary-color);border-radius:6px;background:transparent;transition:all .3s ease}.experience-link a:hover{background:var(--resume-primary-color);color:#fff;transform:translateY(-1px);box-shadow:0 2px 8px #31703933}.experience-link a:after{content:"→";font-weight:600;transition:transform .3s ease}.experience-link a:hover:after{transform:translate(2px)}@media (max-width: 768px){.experience-link{margin-top:1rem;padding-top:.75rem}.experience-link a{display:block;text-align:center;width:100%;box-sizing:border-box;justify-content:center}}@media (max-width: 480px){.experience-link a{font-size:.85rem;padding:.75rem 1rem}}.experience-repolinks{margin-top:1.25rem;padding-top:1rem;border-top:1px solid rgba(0,0,0,.1);display:flex;flex-wrap:wrap;gap:.75rem}.experience-repolinks a{display:inline-flex;align-items:center;justify-content:center;flex:1 1 auto;min-width:150px;height:2.5rem;color:var(--resume-primary-color);text-decoration:none;font-weight:500;font-size:.9rem;padding:0 1rem;border:1px solid var(--resume-primary-color);border-radius:6px;background:transparent;transition:all .3s ease}.experience-repolinks a:hover{background:var(--resume-primary-color);color:#fff;transform:translateY(-1px);box-shadow:0 2px 8px #31703933}.experience-repolinks a:after{content:"→";font-weight:600;margin-left:.5rem;transition:transform .3s ease}.experience-repolinks a:hover:after{transform:translate(2px)}@media (max-width: 768px){.experience-repolinks{margin-top:1rem;padding-top:.75rem;flex-direction:column;gap:.5rem}.experience-repolinks a{flex:1 1 100%;width:auto}}@media (max-width: 480px){.experience-repolinks a{font-size:.85rem;padding:.75rem 1rem}}.pdf-embed-container{margin:var(--resume-spacing-lg) 0;border:1px solid #ddd;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.pdf-object{display:block}.pdf-embed-container p{padding:2rem;text-align:center;color:#666}.pdf-embed-container a{color:#317039;text-decoration:none}.pdf-embed-container a:hover{text-decoration:underline}@media (max-width: 768px){.pdf-embed-container{height:400px}.pdf-object{height:100%}}.resume-button{display:inline-block;margin:var(--resume-spacing-md) 0;padding:var(--resume-spacing-sm) var(--resume-spacing-md);background:var(--resume-primary-color);color:#fff;text-decoration:none;border-radius:4px;transition:background-color .3s;font-weight:500}.resume-button:hover{background-color:var(--resume-secondary-color)}@media (max-width: 768px){.resume-button{padding:.75rem var(--resume-spacing-md);display:block;width:100%;text-align:center;box-sizing:border-box}}@media (max-width: 480px){a[href="/resume.pdf"]{padding:.75rem var(--resume-spacing-lg);display:block;width:100%;text-align:center;box-sizing:border-box}}
