*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--cream: #1c1c1c;--warm-white: #0a0a0a;--ink: #f2f2f2;--muted: #bcbcbc;--accent: #e8463a;--pale-accent: #262626;--rule: #2a2a2a;--serif: "Cormorant Garamond", Georgia, serif;--mono: "DM Mono", monospace;--sans: "Instrument Sans", sans-serif}html{scroll-behavior:smooth}body{background:var(--warm-white);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.7;min-height:100vh}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer}#root,.portfolio-app{min-height:100vh}nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:20px 48px;background:#0a0a0aeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}.nav-logo{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.nav-links{display:flex;gap:36px;list-style:none;flex-wrap:wrap}.nav-links a{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);transition:color .2s}.nav-links a:hover,.nav-links a.active{color:var(--ink)}.nav-links a.active{border-bottom:1px solid var(--accent);padding-bottom:4px}.hero{display:grid;grid-template-columns:1fr 380px;min-height:100vh;padding-top:61px}.hero-image-col{position:relative;overflow:hidden;background:var(--cream)}.hero-placeholder{width:100%;height:100%;min-height:calc(100vh - 61px);background:linear-gradient(160deg,#2c2c2c,#1a1a1a 45%,#0a0a0a);display:flex;align-items:flex-end;padding:40px;position:relative}.hero-placeholder:after,.featured-image:after,.project-card-image:after,.blog-card-image:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.08'/%3E%3C/svg%3E");opacity:.5;mix-blend-mode:screen}.photo-hint,.featured-image-hint,.project-card-image-hint{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:#ffffff59;z-index:1}.hero-sidebar{display:flex;flex-direction:column;padding:56px 40px 48px;border-left:1px solid var(--rule);background:var(--warm-white);position:sticky;top:61px;height:calc(100vh - 61px);overflow-y:auto}.sidebar-eyebrow,.page-eyebrow,.featured-label,.section-label,.resume-section-title,.nav-logo,.tab-btn,.btn-primary,.btn-ghost,.blog-read-more,.project-link,.pub-arrow,.pub-link,.featured-read,.contact-row,.contact-row span.label,.page-meta-label,.page-meta-value,.page-meta-row,.page-meta-item,.page-meta-item *,.stat-label,.nav-links a,.skill-pill,.resume-period,.resume-section-title a,.availability-status,.availability-title,.availability-desc,.info-label,.info-value,.social-link-handle,.social-link-arrow,.article-meta-line,.article-footer a,.email-hero-note,.social-link-name{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase}.sidebar-eyebrow,.page-eyebrow,.featured-label{font-size:9px;color:var(--accent);margin-bottom:20px}.sidebar-name,.page-title,.featured-title,.featured-pub-title,.resume-role,.project-title,.blog-title,.pub-title,.award-title,.social-link-name,.article-card-page h1{font-family:var(--serif);font-weight:300;letter-spacing:-.01em}.sidebar-name{font-size:52px;line-height:1;margin-bottom:6px}.sidebar-name em{font-style:italic;color:var(--accent)}.sidebar-title,.page-intro,.featured-desc,.featured-excerpt,.resume-desc,.project-desc,.blog-excerpt,.pub-authors,.pub-abstract,.availability-desc,.info-value,.social-link-handle,.article-markdown p,.article-meta-line,.contact-layout p,.contact-panel p{color:var(--muted)}.sidebar-title,.page-intro{font-family:var(--serif);font-style:italic;font-size:19px;font-weight:300;line-height:1.6}.sidebar-title{margin-bottom:36px}.sidebar-stats{list-style:none;border-top:1px solid var(--rule);flex:1}.sidebar-stats li{display:flex;justify-content:space-between;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--rule)}.stat-label{font-size:9px;color:var(--muted)}.stat-value{font-family:var(--serif);font-size:15px}.stat-accent{color:var(--accent)}.sidebar-actions{display:flex;flex-direction:column;gap:10px;margin-top:32px}.btn-primary,.btn-ghost,.blog-read-more,.project-link,.featured-read,.article-footer a,.pub-link,.social-link,.social-link-name,.contact-links a,.article-back{transition:all .2s}.btn-primary{background:var(--ink);color:var(--warm-white);border:none;padding:14px 20px;text-align:center;font-size:9px}.btn-primary:hover{background:var(--accent)}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--rule);padding:13px 20px;text-align:center;font-size:9px}.btn-ghost:hover{border-color:var(--ink);color:var(--ink)}main{max-width:1100px;margin:0 auto;padding:0 48px 120px}.tab-nav,.filter-bar{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--rule);background:var(--warm-white)}.tab-nav{margin:80px 0 56px;position:sticky;top:61px;z-index:50;padding-top:20px}.tab-btn,.filter-btn{background:none;border:none;padding:14px 28px 14px 0;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;font-size:9px}.tab-btn.active,.filter-btn.active{color:var(--ink);border-bottom-color:var(--ink)}.tab-btn:hover:not(.active),.filter-btn:hover:not(.active){color:var(--ink)}.tab-panel{display:block;animation:fadeIn .4s ease}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px}.project-card{background:var(--cream);padding:40px;border:1px solid var(--rule);margin:-1px 0 0 -1px;cursor:pointer;transition:background .25s}.project-card:hover{background:var(--pale-accent)}.project-num{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:.15em;margin-bottom:16px}.project-title,.blog-title,.pub-title{font-size:26px;line-height:1.2;margin-bottom:12px}.project-desc,.blog-excerpt,.pub-authors,.pub-abstract,.resume-desc{font-size:13px;line-height:1.7}.project-tags,.featured-tags,.blog-tags,.featured-pub-tags,.skills-cloud,.tag-list,.links-stack{display:flex;flex-wrap:wrap;gap:6px}.tag,.skill-pill{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;padding:5px 11px;border:1px solid var(--rule);color:var(--muted)}.tag-accent{border-color:var(--accent);color:var(--accent)}.pub-list,.archive-list,.blog-grid,.resume-section,.resume-item,.condensed-list{display:flex;flex-direction:column}.pub-item{display:grid;grid-template-columns:60px 1fr auto;gap:24px;align-items:start;padding:32px 0;border-bottom:1px solid var(--rule);cursor:pointer;transition:background .2s,padding-left .2s}.pub-item:first-child{border-top:1px solid var(--rule)}.pub-item:hover{padding-left:12px}.pub-year,.blog-date,.archive-date,.page-meta-label,.contact-row span.label,.resume-period,.section-label,.featured-meta,.article-meta-line,.email-hero-note{font-size:9px;color:var(--muted)}.pub-venue,.blog-date{margin-bottom:8px;color:var(--accent)}.pub-arrow{font-size:16px;color:var(--rule);padding-top:4px}.pub-item:hover .pub-arrow{color:var(--ink);transform:translate(4px)}.featured-project,.featured-post,.featured-pub{display:grid;grid-template-columns:1.1fr 1fr;border:1px solid var(--rule);margin:56px 0}.featured-image{background:linear-gradient(160deg,#2c2c2c,#1a1a1a 45%,#0a0a0a);position:relative;min-height:420px;display:flex;align-items:flex-end;padding:32px;border-right:1px solid var(--rule);overflow:hidden}.featured-body{padding:48px;display:flex;flex-direction:column}.featured-title,.featured-pub-title{font-size:40px;line-height:1.1;margin-bottom:16px}.featured-desc,.featured-excerpt,.featured-pub-abstract{line-height:1.8;margin-bottom:24px}.featured-highlights{list-style:none;margin-bottom:28px;flex:1}.featured-highlights li{font-size:13px;color:var(--ink);padding:10px 0;border-top:1px solid var(--rule);display:flex;gap:12px}.featured-highlights li:first-child{border-top:none}.featured-highlights li:before{content:"—";color:var(--accent);font-family:var(--mono);flex-shrink:0}.featured-links,.featured-pub-links{display:flex;gap:12px;flex-wrap:wrap}.featured-read,.blog-read-more,.article-footer a{font-size:9px;color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:4px;align-self:flex-start}.featured-read:hover,.blog-read-more:hover,.article-footer a:hover,.project-link:hover,.pub-link:hover{color:var(--accent);border-color:var(--accent)}.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 32px}.blog-card{cursor:pointer;display:flex;flex-direction:column}.blog-title,.blog-excerpt{margin-bottom:10px}.resume-layout,.contact-layout{display:grid;grid-template-columns:1fr 300px;gap:72px}.resume-layout{grid-template-columns:1fr 280px}.resume-section{margin-bottom:48px}.resume-section-title,.section-label{margin-bottom:24px;padding-bottom:10px;border-bottom:1px solid var(--rule)}.resume-section-title,.section-label{display:flex;justify-content:space-between;align-items:baseline;font-size:9px}.resume-item{margin-bottom:28px}.resume-item-header,.contact-row,.info-row,.article-toolbar,.article-meta-line,.availability-status{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.resume-role{font-size:19px;margin-bottom:4px}.resume-org{font-size:12px;color:var(--accent);margin-bottom:8px;font-style:italic}.resume-highlights{list-style:none;margin-top:12px;max-width:620px}.resume-highlights li{position:relative;padding-left:18px;font-size:14px;color:var(--muted);line-height:1.75;margin-bottom:6px}.resume-highlights li:before{content:"—";position:absolute;left:0;color:var(--accent);font-family:var(--mono)}.resume-highlights.compact{margin-top:10px}.resume-project-list{display:grid;gap:1.2rem}.resume-project-item{padding:1.1rem 0 0;border-top:1px solid var(--rule)}.resume-project-item:first-child{padding-top:0;border-top:0}.resume-project-header{display:grid;gap:.15rem;margin-bottom:.6rem}.resume-project-kicker{color:var(--muted);font-family:var(--mono);font-size:.64rem;letter-spacing:.16em;text-transform:uppercase}.resume-project-title{color:var(--ink);font-family:var(--serif);font-size:1.35rem;font-weight:400;line-height:1.15;letter-spacing:-.01em}.condensed-item{display:grid;grid-template-columns:60px 1fr;gap:20px;padding:16px 0;border-bottom:1px solid var(--rule)}.condensed-item:last-child{border-bottom:none}.condensed-year{padding-top:2px;color:var(--muted)}.condensed-title{font-family:var(--serif);font-size:17px}.condensed-sub{font-size:11.5px;color:var(--muted);margin-top:2px;font-style:italic}.page-header{padding:180px 48px 56px;max-width:1100px;margin:0 auto;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;align-items:flex-end;gap:40px;flex-wrap:wrap}.page-header-left{flex:1;min-width:280px}.page-header-right{display:flex;flex-direction:column;gap:12px;padding-bottom:8px}.page-title{font-size:72px;line-height:1}.page-intro{max-width:640px}.page-meta-row{display:flex;gap:48px;margin-top:40px;flex-wrap:wrap}.page-meta-item{display:flex;flex-direction:column;gap:6px}.page-meta-value{font-family:var(--serif);font-size:28px;font-weight:300;color:var(--ink)}.filter-bar{padding:40px 0 48px}.featured-pub{border:1px solid var(--rule);padding:48px;margin:56px 0;position:relative;display:block}.featured-pub:before{content:"";position:absolute;top:0;left:0;width:3px;height:100%;background:var(--accent)}.featured-pub-authors{font-size:13px;font-style:italic;margin-bottom:24px}.featured-pub-authors strong{color:var(--ink);font-style:normal}.article-card-page{border:1px solid var(--rule);padding:48px;margin:56px 0;position:relative;background:var(--warm-white)}.article-card-page:before{content:"";position:absolute;top:0;left:0;width:3px;height:100%;background:var(--accent)}.article-meta-line{margin-bottom:24px}.markdown-surface{color:var(--muted);font-size:13px;line-height:1.8}.markdown-surface p{margin:0 0 1rem}.markdown-surface ul,.markdown-surface ol{margin:0 0 1rem;padding-left:1.4rem}.markdown-surface a{color:var(--accent);text-decoration:underline;text-underline-offset:.18em}.article-markdown{max-width:780px}.article-footer{display:flex;justify-content:flex-end;padding-top:18px;border-top:1px solid var(--rule)}.loading-state{min-height:100vh;display:grid;place-items:center;padding:2rem}.loading-card{width:min(38rem,100%);padding:2rem;border:1px solid var(--rule);background:#ffffff05}.loading-card .page-title{font-size:clamp(2rem,5vw,3.5rem)}.profile-text{font-family:var(--serif);font-size:19px;font-weight:300;line-height:1.75;color:var(--ink);max-width:680px}.profile-text strong{color:var(--accent);font-weight:400}.award-item{padding:14px 0;border-bottom:1px solid var(--rule)}.award-item:last-child{border-bottom:none}.award-title{font-size:16px;margin-bottom:2px}.award-org{font-size:11px;color:var(--muted)}.lang-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--rule)}.lang-row:last-child{border-bottom:none}.lang-name{font-family:var(--serif);font-size:15px}.lang-level{font-size:9px;color:var(--muted)}.email-hero{max-width:1100px;margin:0 auto;padding:32px 48px 64px;border-bottom:1px solid var(--rule)}.email-hero a{font-family:var(--serif);font-style:italic;font-weight:300;font-size:clamp(36px,7vw,84px);color:var(--ink);text-decoration:none;display:inline-block;border-bottom:1px solid var(--rule);padding-bottom:8px;word-break:break-word}.email-hero a:hover{color:var(--accent);border-color:var(--accent)}.email-hero-note{margin-top:20px}.contact-layout{padding-top:64px;grid-template-columns:1.3fr 1fr}label{display:block;margin-bottom:12px;color:var(--muted);font-size:9px}input,textarea{width:100%;background:transparent;border:none;border-bottom:1px solid var(--rule);color:var(--ink);font-family:var(--serif);font-size:18px;font-weight:300;padding:8px 0 12px;outline:none}textarea{resize:vertical;min-height:120px;line-height:1.6;font-family:var(--sans);font-size:14px;font-weight:400}input::placeholder,textarea::placeholder{color:#4a4a4a;font-style:italic}input:focus,textarea:focus{border-color:var(--accent)}.form-row{margin-bottom:28px}.form-row-double{display:grid;grid-template-columns:1fr 1fr;gap:24px}.availability-card,.social-link,.info-row,.contact-links a{border:1px solid var(--rule);background:#ffffff05}.availability-card{padding:28px;position:relative;margin-bottom:40px}.availability-card:before{content:"";position:absolute;top:0;left:0;width:3px;height:100%;background:var(--accent)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #e8463a66}70%{box-shadow:0 0 0 6px #e8463a00}to{box-shadow:0 0 #e8463a00}}.social-grid{display:flex;flex-direction:column;gap:10px}.social-link{display:flex;justify-content:space-between;align-items:center;padding:16px 20px}.social-link:hover{border-color:var(--ink);background:var(--cream)}.social-link-arrow{color:var(--rule)}.social-link:hover .social-link-arrow{color:var(--accent);transform:translate(3px,-3px)}.info-block{margin-bottom:40px}.service-row{padding:14px 0;border-bottom:1px solid var(--rule)}.service-row:first-of-type{border-top:1px solid var(--rule)}.service-title{font-family:var(--serif);font-size:17px;color:var(--ink);margin-bottom:4px}.service-desc{color:var(--muted);font-size:13px;line-height:1.55}.info-row{display:flex;justify-content:space-between;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--rule)}.info-row:first-child{border-top:1px solid var(--rule)}.info-label{color:var(--muted);font-size:9px}.info-value{font-family:var(--serif);font-size:16px;text-align:right;color:var(--ink)}.info-value.accent{color:var(--accent)}.contact-links{display:grid;gap:.75rem;align-content:start}.contact-links a{padding:.9rem 1rem;color:var(--ink)}.article-back{color:var(--accent);background:transparent;border:none;padding:0;font-size:9px}.article-header-page .page-header-right{align-items:flex-end}.resume-section-title a,.section-label a{color:var(--muted)}.resume-section-title a:hover,.section-label a:hover{color:var(--accent)}.featured-post{display:grid;grid-template-columns:1.1fr 1fr;border:1px solid var(--rule);margin:56px 0}.featured-post .featured-image{min-height:420px}.featured-meta{display:flex;gap:12px;align-items:center;margin-bottom:14px}.featured-meta .dot{width:3px;height:3px;background:var(--muted);border-radius:50%}.project-card-image{height:200px;position:relative;border-bottom:1px solid var(--rule);overflow:hidden;background:var(--cream)}.project-card-body{padding:32px;display:flex;flex-direction:column;flex:1}.project-footer-row{display:flex;justify-content:space-between;align-items:center;padding-top:16px;border-top:1px solid var(--rule)}.project-arrow{color:var(--rule)}.project-card:hover .project-arrow{color:var(--accent);transform:translate(4px)}.featured-pub:before,.article-card-page:before,.featured-project:before{display:none}.featured-pub .featured-pub-links .btn-primary{padding:14px 24px}.page-header.resume-header{align-items:flex-start}footer{border-top:1px solid var(--rule);padding:32px 48px;display:flex;justify-content:space-between;align-items:center;max-width:1100px;margin:0 auto}footer span{font-family:var(--mono);font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width: 860px){nav{padding:20px 24px}.hero,.page-header,.resume-layout,.contact-layout,.featured-project,.featured-post,.featured-pub,.projects-grid,.blog-grid{grid-template-columns:1fr}.hero{min-height:auto}.hero-sidebar{position:static;height:auto;border-left:0;border-top:1px solid var(--rule)}.hero-placeholder{min-height:24rem}.tab-nav{margin-top:32px}.projects-grid,.blog-grid{gap:1px}.page-title,.sidebar-name{font-size:48px}.page-header{padding:180px 24px 56px}main{padding:0 24px 120px}.email-hero{padding:24px 24px 48px}.contact-layout,.form-row-double{gap:28px}}.markdown-surface{font-size:15px;line-height:1.85}.markdown-surface h2{margin-top:28px}.markdown-surface h3{margin-top:20px}.markdown-surface p{margin-bottom:14px}.markdown-surface li{margin-bottom:6px}.resume-desc,.service-desc,.project-desc,.blog-excerpt,.pub-authors,.featured-desc,.featured-pub-abstract{font-size:14.5px;line-height:1.72}.page-intro{font-weight:400}.featured-label{font-size:10px;letter-spacing:.14em}.stat-label,.info-label,.award-org{font-size:10px}.hero-photo{width:100%;height:100%;min-height:calc(100vh - 61px);object-fit:cover;object-position:center 22%;filter:grayscale(1) contrast(1.03);display:block}.markdown-surface pre:has(.mermaid){background:none;border:none;padding:0;white-space:normal}.mermaid{margin:20px 0;padding:16px;background:#121212;border:1px solid var(--rule);border-radius:10px;overflow-x:auto;text-align:center}.mermaid svg{max-width:100%;height:auto}a.project-card{display:block;text-decoration:none;color:inherit}a.project-card .project-arrow{transition:transform .2s,color .2s}a.project-card:hover .project-arrow{transform:translate(4px);color:var(--accent)}a.project-card:hover .project-title{color:var(--accent)}.nav-logo-short{display:none}@media (max-width: 640px){.nav-logo-full{display:none}.nav-logo-short{display:inline}}
