:root{--bg: #f6f0e6;--bg-alt: #ece2d2;--paper: #fcfaf5;--paper-strong: #f2eadc;--ink: #1f252c;--ink-soft: #5d645d;--edge: rgba(73, 63, 48, .16);--edge-strong: rgba(73, 63, 48, .3);--accent: #1d6b78;--accent-strong: #144952;--accent-soft: rgba(29, 107, 120, .12);--accent-2: #8e6a2e;--accent-2-soft: rgba(142, 106, 46, .13);--chip-bg: #ece3d3;--chip-border: rgba(94, 79, 49, .24);--chip-text: #615339;--selection-bg: rgba(29, 107, 120, .22);--selection-ink: #16323a;--shadow-soft: 0 18px 45px rgba(40, 31, 24, .08);--shadow-strong: 0 26px 60px rgba(40, 31, 24, .12);--radius-xl: 28px;--radius-lg: 20px;--radius-md: 14px;--radius-sm: 10px;--reading-width: 56rem;--header-offset: 5.8rem}:root[data-theme=dark]{--bg: #312f2e;--bg-alt: #393837;--paper: #3f3d3c;--paper-strong: #484543;--ink: #f7dbc5;--ink-soft: #c6b1a0;--edge: rgba(247, 219, 197, .14);--edge-strong: rgba(247, 219, 197, .22);--accent: #ff9029;--accent-strong: #ffb15b;--accent-soft: rgba(255, 144, 41, .16);--accent-2: #7fc0ad;--accent-2-soft: rgba(127, 192, 173, .16);--chip-bg: #464543;--chip-border: rgba(247, 219, 197, .18);--chip-text: #efd7c4;--selection-bg: rgba(255, 144, 41, .24);--selection-ink: #fff2ec;--shadow-soft: 0 22px 55px rgba(15, 12, 10, .28);--shadow-strong: 0 30px 80px rgba(15, 12, 10, .38);--portrait-hover-accent: #ffad5a;--portrait-hover-glow: rgba(255, 143, 48, .2);--portrait-hover-shadow: rgba(255, 143, 48, .12)}*{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-behavior:smooth}body{min-height:100vh;position:relative;color:var(--ink);background:radial-gradient(circle at top left,color-mix(in oklab,var(--accent-2) 16%,transparent),transparent 30%),radial-gradient(circle at top right,color-mix(in oklab,var(--accent) 12%,transparent),transparent 26%),linear-gradient(180deg,color-mix(in oklab,var(--paper) 18%,var(--bg) 82%),var(--bg));color-scheme:light dark;font-family:Space Grotesk,Avenir Next,Segoe UI,sans-serif;line-height:1.68;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(to right,rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.025) 1px,transparent 1px);background-size:36px 36px;mask-image:linear-gradient(180deg,rgba(0,0,0,.28),rgba(0,0,0,.08) 45%,transparent);opacity:.32}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-decoration:none;text-decoration-thickness:.08em;text-underline-offset:.16em}a:hover{color:var(--accent-strong)}h1,h2,h3,h4{margin:0;line-height:1.08;letter-spacing:-.03em}h1{font-size:clamp(2.9rem,2.2rem + 3vw,5rem)}h2{font-size:clamp(1.45rem,1.2rem + 1vw,2.25rem)}h3{font-size:clamp(1.05rem,.95rem + .45vw,1.35rem)}p,ul,ol{margin:0}button,input{font:inherit}:focus-visible{outline:2px solid color-mix(in oklab,var(--accent) 72%,transparent);outline-offset:3px}:root{--portrait-hover-accent: color-mix(in oklab, var(--accent) 88%, white 12%);--portrait-hover-glow: color-mix(in oklab, var(--accent) 18%, transparent);--portrait-hover-shadow: color-mix(in oklab, var(--accent) 8%, transparent)}::selection{background:var(--selection-bg);color:var(--selection-ink)}::-moz-selection{background:var(--selection-bg);color:var(--selection-ink)}.shell{width:min(1180px,92vw);margin:0 auto}.skip-link{position:absolute;left:1rem;top:.5rem;transform:translateY(-200%);padding:.8rem 1rem;border-radius:999px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow-soft);z-index:100}.skip-link:focus-visible{transform:translateY(0)}.site-header{position:fixed;inset:.75rem 0 auto;z-index:30;transform:translateY(0);opacity:1;transition:transform .26s cubic-bezier(.22,1,.36,1),opacity .22s ease}.site-header.is-hidden{transform:translateY(calc(-100% - .85rem));opacity:.01;pointer-events:none}.site-header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1.1rem;border:1px solid var(--edge);border-radius:999px;background:color-mix(in oklab,var(--paper) 84%,transparent);backdrop-filter:blur(12px);box-shadow:var(--shadow-soft)}.site-brand{display:flex;align-items:center;gap:.8rem;min-width:0;color:inherit}.site-brand img{border-radius:12px;filter:drop-shadow(0 8px 16px rgba(0,0,0,.08))}.site-brand span{display:grid;min-width:0}.site-brand strong{font-size:.98rem;font-weight:700}.site-brand em{font-style:normal;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--ink-soft)}.header-actions{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;justify-content:flex-end}.nav-list,.social-list,.chip-list,.hero-proof,.cv-highlight-list{list-style:none;margin:0;padding:0}.nav-list{display:flex;flex-wrap:wrap;gap:.25rem}.nav-list a,.theme-toggle,.pill-toggle,.cv-filter-chip,.cv-contact-pill,.portrait-socials a,.social-list a{min-height:44px}.nav-list a{display:inline-flex;align-items:center;justify-content:center;padding:.6rem .95rem;border-radius:999px;border:1px solid transparent;color:var(--ink-soft);font-weight:600;transition:color .18s ease,border-color .18s ease,background-color .18s ease,transform .18s ease}.nav-list a:hover,.nav-list a:focus-visible{color:var(--ink);border-color:color-mix(in oklab,var(--accent) 34%,transparent);background:var(--accent-soft)}.nav-list a.is-active{color:var(--ink);background:color-mix(in oklab,var(--paper-strong) 84%,var(--accent-soft) 16%);border-color:var(--edge-strong)}.theme-toggle{appearance:none;display:inline-flex;align-items:center;gap:.45rem;padding:.6rem 1rem;border-radius:999px;border:1px solid var(--edge-strong);background:color-mix(in oklab,var(--paper) 92%,transparent);color:var(--ink-soft);font-weight:600;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease,transform .18s ease}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--ink);border-color:color-mix(in oklab,var(--accent) 44%,transparent);background:var(--accent-soft)}.theme-toggle span{color:var(--ink)}.page-content{--page-rhythm: clamp(1.4rem, 1rem + 1vw, 2.2rem);display:grid;gap:var(--page-rhythm);padding-top:calc(var(--page-rhythm) + var(--header-offset));padding-bottom:3rem}.reveal-in{animation:rise-in .56s cubic-bezier(.22,1,.36,1) both}@keyframes rise-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.eyebrow,.section-kicker,.article-kicker,.status-dot,.timeline-card span,.meta-row,.editorial-entry-meta span,.cv-meta,.cv-timeplace{font-family:IBM Plex Mono,Consolas,monospace;font-size:.78rem;letter-spacing:.06em}.eyebrow,.section-kicker,.article-kicker{text-transform:uppercase;color:var(--accent)}.section-head{display:grid;gap:.45rem}.section-head p:last-child{max-width:62ch;color:var(--ink-soft)}.block,.hero-card,.portrait-panel,.article,.feature-story,.project-feature,.cv-hero{border:1px solid var(--edge);border-radius:var(--radius-xl);background:linear-gradient(180deg,color-mix(in oklab,var(--paper) 96%,transparent),color-mix(in oklab,var(--paper) 90%,var(--bg-alt) 10%));box-shadow:var(--shadow-soft)}.block,.hero-card,.portrait-panel,.article,.cv-hero{padding:clamp(1.2rem,.9rem + .9vw,1.8rem)}.block,.page-intro{display:grid;gap:1rem}.page-intro--split{grid-template-columns:minmax(0,1.4fr) minmax(18rem,.9fr);align-items:end}.page-intro-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.page-intro-stats article{display:grid;gap:.25rem;padding:.95rem 1rem;border-radius:var(--radius-md);border:1px solid var(--edge);background:color-mix(in oklab,var(--paper) 92%,var(--paper-strong) 8%)}.page-intro-stats span{font-size:clamp(1.1rem,.95rem + .7vw,1.8rem);line-height:1.1;color:var(--ink)}.page-intro-stats p{color:var(--ink-soft)}.hero-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(16rem,.75fr);gap:1.2rem}.hero-stack{--hero-rhythm: .9rem;display:grid;gap:var(--hero-rhythm)}.hero-card h1{font-size:clamp(2.35rem,1.95rem + 2vw,3.8rem)}.hero-note{color:var(--ink);font-weight:600;max-width:58ch}.hero-intro{max-width:52rem;color:var(--ink-soft);font-size:clamp(1.06rem,.98rem + .35vw,1.2rem)}.hero-actions{display:flex;flex-wrap:wrap;gap:.7rem}.cta-link,.inline-link{display:inline-flex;align-items:center;gap:.45rem;width:fit-content;min-height:44px;font-weight:700;transition:transform .18s ease,border-color .18s ease,background-color .18s ease,color .18s ease}.cta-link{padding:.68rem 1rem;border-radius:999px;border:1px solid var(--edge-strong)}.cta-link.is-primary{background:linear-gradient(135deg,color-mix(in oklab,var(--accent) 20%,var(--paper-strong) 80%),color-mix(in oklab,var(--accent-2) 12%,var(--paper) 88%));color:var(--ink)}.cta-link.is-secondary{background:color-mix(in oklab,var(--paper) 96%,transparent);color:var(--ink)}.cta-link:hover,.cta-link:focus-visible,.inline-link:hover,.inline-link:focus-visible{transform:translateY(-1px)}.cta-link:hover,.cta-link:focus-visible{border-color:color-mix(in oklab,var(--accent) 44%,transparent)}.inline-link{color:var(--accent)}.inline-link:after{content:"->";font-family:IBM Plex Mono,Consolas,monospace;font-size:.82rem}.hero-proof,.chip-list{display:flex;flex-wrap:wrap;gap:.45rem}.hero-proof li,.chip-list li{border:1px solid var(--chip-border);border-radius:999px;background:var(--chip-bg);color:var(--chip-text);font-family:IBM Plex Mono,Consolas,monospace;font-size:.76rem;padding:.35rem .68rem}.fact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.fact-card{position:relative;display:grid;align-content:start;gap:.55rem;padding:1rem .95rem;border-radius:var(--radius-md);border:1px solid var(--edge);background:color-mix(in oklab,var(--paper-strong) 84%,transparent);overflow:hidden;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.fact-card:after{content:"";position:absolute;inset:0;border-radius:inherit;border:2px solid color-mix(in oklab,var(--accent) 88%,white 12%);box-shadow:0 0 0 1px color-mix(in oklab,var(--accent) 52%,transparent),0 0 18px color-mix(in oklab,var(--accent) 12%,transparent);opacity:0;pointer-events:none;transition:opacity .18s ease}.fact-card:hover,.fact-card:focus-within{border-color:color-mix(in oklab,var(--accent) 28%,var(--edge));background:color-mix(in oklab,var(--paper-strong) 90%,transparent);box-shadow:0 10px 26px color-mix(in oklab,var(--accent) 8%,transparent),inset 0 1px color-mix(in oklab,white 14%,transparent)}.fact-card:hover:after,.fact-card:focus-within:after{opacity:1}.fact-card h2{font-family:IBM Plex Mono,Consolas,monospace;font-size:1rem;letter-spacing:-.01em;transition:color .18s ease}.fact-card h2:before{content:"> ";color:var(--accent)}.fact-card:hover h2,.fact-card:focus-within h2{color:color-mix(in oklab,var(--ink) 88%,var(--accent) 12%)}.fact-card p{color:var(--ink-soft);font-size:.94rem;line-height:1.5;max-width:22ch;transition:color .18s ease}.fact-card:hover p,.fact-card:focus-within p{color:color-mix(in oklab,var(--ink-soft) 82%,var(--ink) 18%)}.portrait-panel{display:grid;align-content:start;justify-items:center;gap:var(--hero-rhythm, .9rem);text-align:center}.portrait-image{position:relative;width:clamp(190px,20vw,260px);max-width:100%;border-radius:calc(var(--radius-xl) - 8px);overflow:hidden;isolation:isolate;transition:box-shadow .18s ease}.portrait-image:after{content:"";position:absolute;inset:0;border-radius:inherit;border:2px solid var(--portrait-hover-accent);box-shadow:0 0 0 1px color-mix(in oklab,var(--portrait-hover-accent) 58%,transparent),0 0 14px var(--portrait-hover-glow);opacity:0;pointer-events:none;transition:opacity .18s ease}.portrait-base{width:100%;aspect-ratio:1 / 1;object-fit:cover;object-position:center;border-radius:inherit;border:1px solid var(--edge);box-shadow:var(--shadow-soft);transition:filter .24s ease,transform .24s ease}.portrait-panel:hover .portrait-base,.portrait-panel:focus-within .portrait-base{filter:none}.portrait-panel:hover .portrait-image,.portrait-panel:focus-within .portrait-image{box-shadow:0 0 0 1px color-mix(in oklab,var(--portrait-hover-accent) 24%,transparent),0 0 18px var(--portrait-hover-glow),0 16px 30px var(--portrait-hover-shadow)}.portrait-panel:hover .portrait-image:after,.portrait-panel:focus-within .portrait-image:after{opacity:1}.portrait-intro,.portrait-contact{color:var(--ink-soft)}.portrait-contact{font-size:.98rem;line-height:1.4;word-break:break-word}.portrait-contact a{color:var(--accent)}.portrait-socials,.social-list{display:flex;flex-wrap:wrap;gap:.5rem}.portrait-socials{margin:0;padding:0;list-style:none;justify-content:center}.portrait-socials a,.social-list a{filter:drop-shadow(0 0 0 transparent)}.portrait-socials a,.social-list a{width:44px;height:44px;border-radius:999px;border:1px solid var(--edge-strong);background:color-mix(in oklab,var(--paper) 94%,transparent);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;transition:transform .18s ease,border-color .18s ease,background-color .18s ease,color .18s ease}.portrait-socials a:hover,.portrait-socials a:focus-visible,.social-list a:hover,.social-list a:focus-visible{transform:translateY(-1px);border-color:color-mix(in oklab,var(--accent) 44%,transparent);background:color-mix(in oklab,var(--paper) 90%,transparent)}.portrait-socials iconify-icon,.social-list iconify-icon{font-size:1rem;pointer-events:none}.portrait-socials a[href*="mailto:"]:hover,.portrait-socials a[href*="mailto:"]:focus-visible,.social-list a[href*="mailto:"]:hover,.social-list a[href*="mailto:"]:focus-visible{color:#bb001b;border-color:#bb001b;filter:drop-shadow(0 2px 6px rgba(187,0,27,.4))}.portrait-socials a[href*="github.com"]:hover,.portrait-socials a[href*="github.com"]:focus-visible,.social-list a[href*="github.com"]:hover,.social-list a[href*="github.com"]:focus-visible{color:#333;border-color:#333;filter:drop-shadow(0 2px 6px rgba(51,51,51,.4))}.portrait-socials a[href*="gitlab.com"]:hover,.portrait-socials a[href*="gitlab.com"]:focus-visible,.social-list a[href*="gitlab.com"]:hover,.social-list a[href*="gitlab.com"]:focus-visible{color:#fc6d26;border-color:#fc6d26;filter:drop-shadow(0 2px 6px rgba(252,109,38,.4))}.portrait-socials a[href*="linkedin.com"]:hover,.portrait-socials a[href*="linkedin.com"]:focus-visible,.social-list a[href*="linkedin.com"]:hover,.social-list a[href*="linkedin.com"]:focus-visible{color:#0a66c2;border-color:#0a66c2;filter:drop-shadow(0 2px 6px rgba(10,102,194,.4))}.portrait-socials a[href*="orcid.org"]:hover,.portrait-socials a[href*="orcid.org"]:focus-visible,.social-list a[href*="orcid.org"]:hover,.social-list a[href*="orcid.org"]:focus-visible{color:#a6ce39;border-color:#a6ce39;filter:drop-shadow(0 2px 6px rgba(166,206,57,.4))}.portrait-socials a[href*="letterboxd.com"]:hover,.portrait-socials a[href*="letterboxd.com"]:focus-visible,.social-list a[href*="letterboxd.com"]:hover,.social-list a[href*="letterboxd.com"]:focus-visible{color:#00d735;border-color:#00d735;filter:drop-shadow(0 2px 6px rgba(0,215,53,.4))}.split-layout{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(0,.92fr);gap:1.2rem}.pathway-list{display:grid;gap:.85rem}.pathway-card{display:grid;grid-template-columns:auto 1fr;gap:.95rem;align-items:start;padding:1rem 0;border-top:1px solid var(--edge)}.pathway-card:first-child{padding-top:.1rem;border-top:0}.pathway-card p{color:var(--ink-soft)}.pathway-index{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:999px;border:1px solid var(--edge);background:color-mix(in oklab,var(--paper-strong) 86%,transparent);color:var(--accent);font-family:IBM Plex Mono,Consolas,monospace;font-size:.78rem}.timeline{display:grid;gap:.85rem;margin:0;padding:0 0 0 1rem;list-style:none;border-left:1px solid var(--edge-strong)}.timeline>li{position:relative}.timeline>li:before{content:"";position:absolute;top:1.15rem;left:-1.37rem;width:.72rem;height:.72rem;border-radius:999px;background:var(--paper);border:2px solid color-mix(in oklab,var(--accent) 46%,var(--paper) 54%)}.timeline-card{padding:.95rem 1rem;border-radius:var(--radius-md);border:1px solid var(--edge);background:color-mix(in oklab,var(--paper) 94%,var(--paper-strong) 6%)}.timeline-card header{display:flex;justify-content:space-between;gap:.8rem;margin-bottom:.35rem}.timeline-card h3{font-size:1rem}.timeline-subtitle{margin-top:.18rem;color:var(--ink-soft);font-size:.88rem;line-height:1.35}.timeline-card span{color:var(--ink-soft)}.timeline-meta{margin-bottom:.3rem;color:var(--accent);font-weight:600}.timeline-card p:last-child{color:var(--ink-soft)}.pill-row{display:flex;flex-wrap:wrap;gap:.55rem}.pill-toggle{appearance:none;padding:.6rem .95rem;border-radius:999px;border:1px solid var(--edge);background:color-mix(in oklab,var(--paper) 92%,transparent);color:var(--ink-soft);font-weight:600;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease}.pill-toggle:hover,.pill-toggle:focus-visible{border-color:color-mix(in oklab,var(--accent) 46%,transparent);color:var(--ink)}.pill-toggle.is-active{color:var(--ink);border-color:color-mix(in oklab,var(--accent) 52%,transparent);background:linear-gradient(135deg,color-mix(in oklab,var(--accent) 18%,var(--paper-strong) 82%),color-mix(in oklab,var(--accent-2) 14%,var(--paper) 86%))}.overview-panels{padding:1.1rem;border-radius:var(--radius-lg);border:1px dashed color-mix(in oklab,var(--accent) 32%,var(--edge) 68%);background:color-mix(in oklab,var(--paper-strong) 50%,transparent)}.overview-panel{display:grid;gap:.8rem}.overview-panel[hidden]{display:none!important}.overview-panel p{color:var(--ink-soft)}.domain-panel .chip-list li{background:color-mix(in oklab,var(--accent-soft) 45%,var(--chip-bg) 55%)}.feature-story{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:1.1rem;padding:clamp(1.2rem,1rem + .8vw,1.6rem)}.feature-story-media img,.project-feature-media img{width:100%;height:100%;min-height:18rem;object-fit:cover;border-radius:calc(var(--radius-xl) - 8px);border:1px solid var(--edge)}.feature-story-body,.project-feature-body{display:grid;align-content:start;gap:.8rem}.feature-story-copy{color:var(--ink-soft);font-size:1.02rem}.meta-row{display:flex;flex-wrap:wrap;gap:.5rem .9rem;color:var(--ink-soft)}.editorial-feed{display:grid;gap:0}.editorial-entry{display:grid;grid-template-columns:minmax(9rem,11rem) minmax(0,1fr) auto;gap:1rem;align-items:start;padding:1.2rem 0;border-top:1px solid var(--edge)}.editorial-entry:first-child{padding-top:.2rem;border-top:0}.editorial-entry-meta{display:grid;gap:.25rem}.editorial-entry-body{display:grid;gap:.45rem}.editorial-entry-body p{color:var(--ink-soft)}.project-rail{display:grid;gap:1.25rem}.project-feature{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:1rem;padding:clamp(1.1rem,.95rem + .6vw,1.5rem)}.project-feature.is-reversed .project-feature-media{order:2}.project-feature.is-reversed .project-feature-body{order:1}.publication-year-grid{display:grid;gap:1.4rem}.publication-year-group{display:grid;grid-template-columns:6.5rem minmax(0,1fr);gap:1rem;align-items:start}.publication-year-label{position:sticky;top:7rem}.publication-year-label span{display:inline-flex;align-items:center;justify-content:center;min-width:5rem;padding:.65rem .9rem;border-radius:999px;border:1px solid var(--edge);background:color-mix(in oklab,var(--paper-strong) 90%,transparent);color:var(--accent);font-family:IBM Plex Mono,Consolas,monospace;font-weight:600}.publication-year-list{display:grid;gap:.9rem}.publication-record{padding:1rem 1.1rem;border-left:3px solid color-mix(in oklab,var(--accent) 42%,transparent);border-radius:0 var(--radius-md) var(--radius-md) 0;background:color-mix(in oklab,var(--paper) 94%,var(--paper-strong) 6%)}.publication-record header{display:grid;gap:.3rem}.publication-authors{margin-top:.6rem;color:var(--ink-soft)}.publication-authors strong{color:var(--ink);font-weight:700}.link-row{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.75rem}.link-row a{display:inline-flex;align-items:center;min-height:40px;padding:.5rem .8rem;border-radius:999px;border:1px solid var(--edge);background:color-mix(in oklab,var(--paper) 92%,transparent);color:var(--ink);font-family:IBM Plex Mono,Consolas,monospace;font-size:.76rem;transition:transform .18s ease,border-color .18s ease,background-color .18s ease}.link-row a:hover,.link-row a:focus-visible{transform:translateY(-1px);border-color:color-mix(in oklab,var(--accent) 44%,transparent);background:var(--accent-soft)}.article{display:grid;gap:1.3rem;min-width:0}.article>*{width:100%;max-width:var(--reading-width)}.article-header{display:grid;gap:.75rem;padding-bottom:1rem;border-bottom:1px solid var(--edge)}.article-header>p:last-of-type{color:var(--ink-soft);font-size:1.04rem}.article section{display:grid;gap:.7rem}.article p,.article li,.notebook-content p,.notebook-content li{color:var(--ink-soft);overflow-wrap:anywhere}.article a,.notebook-content a{overflow-wrap:anywhere}.article ol,.article ul,.notebook-content ol,.notebook-content ul{padding-left:1.2rem}.article img,.article figure,.notebook-content pre,.notebook-content table,.notebook-content img,.notebook-content figure{max-width:min(64rem,100%)}.article img,.notebook-content img{border-radius:var(--radius-md);border:1px solid var(--edge);box-shadow:var(--shadow-soft)}.notebook-article{gap:1.5rem}.notebook-content{display:grid;gap:1rem;min-width:0}.notebook-content>*{width:100%;max-width:var(--reading-width)}.notebook-content h2,.notebook-content h3,.notebook-content h4{margin-top:.8rem}.notebook-content h2{font-size:clamp(1.8rem,1.6rem + 1.5vw,2.8rem)}.notebook-content h3{font-size:clamp(1.4rem,1.25rem + 1vw,2rem)}.notebook-content h4{font-size:clamp(1.1rem,.95rem + .7vw,1.5rem)}.notebook-content pre{overflow-x:auto;padding:1rem 1.05rem;border-radius:var(--radius-md);border:1px solid var(--edge);background:color-mix(in oklab,var(--paper-strong) 88%,transparent);font-family:IBM Plex Mono,Consolas,monospace;font-size:.84rem;line-height:1.55}.notebook-content p{font-size:1.1em}.notebook-content code{font-family:IBM Plex Mono,Consolas,monospace;font-size:1em}.notebook-content blockquote{margin:0;padding:.8rem 1rem;border-left:3px solid color-mix(in oklab,var(--accent) 46%,transparent);background:var(--accent-soft);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.notebook-content table{width:100%;display:block;overflow-x:auto;border-collapse:collapse;border-radius:var(--radius-md);font-size:.92rem}.notebook-content th,.notebook-content td{border:1px solid var(--edge);padding:.55rem .7rem}.notebook-content th{background:color-mix(in oklab,var(--paper-strong) 90%,transparent);color:var(--ink)}.notebook-content figure{display:grid;gap:.5rem}.notebook-content figcaption{color:var(--ink-soft);font-size:.88rem}.cv-hero{display:grid;grid-template-columns:minmax(0,1fr);gap:0;align-items:start}.cv-hero-main{display:grid;gap:.8rem;min-width:0}.cv-hero h1{font-size:clamp(2.5rem,2.2rem + 2.1vw,4rem);line-height:.98;max-width:none;white-space:nowrap}.cv-title{color:var(--accent);font-weight:700;font-size:clamp(.96rem,.9rem + .32vw,1.14rem);letter-spacing:-.02em;max-width:none}.cv-summary-lead{max-width:min(80ch,100%);color:var(--ink-soft);font-size:clamp(1rem,.97rem + .22vw,1.12rem);line-height:1.62}.cv-highlight-list{margin-top:.9rem;display:flex;flex-wrap:wrap;gap:.5rem}.cv-highlight-list li{display:grid;gap:.15rem;padding:.6rem .8rem;border-radius:14px;border:1px solid var(--edge);background:color-mix(in oklab,var(--paper-strong) 86%,transparent)}.cv-highlight-list span{font-family:IBM Plex Mono,Consolas,monospace;font-size:.72rem;text-transform:uppercase;color:var(--ink-soft)}.cv-highlight-list strong{font-size:.95rem}.cv-meta{margin-top:.15rem;display:inline-flex;align-items:center;gap:.35rem;color:var(--ink-soft);font-size:.98rem}.cv-meta iconify-icon,.cv-location iconify-icon,.cv-org iconify-icon{color:var(--accent)}.cv-meta-links{margin-top:.15rem;display:flex;flex-wrap:wrap;gap:.5rem}.cv-contact-pill{--cv-pill-accent: var(--accent);display:inline-flex;align-items:center;gap:.45rem;width:fit-content;max-width:100%;min-height:2.55rem;padding:.52rem .8rem;border-radius:999px;border:1px solid color-mix(in oklab,var(--edge-strong) 82%,var(--cv-pill-accent) 18%);background:color-mix(in oklab,var(--paper) 94%,var(--paper-strong) 6%);color:color-mix(in oklab,var(--ink-soft) 78%,var(--ink) 22%);font-family:IBM Plex Mono,Consolas,monospace;font-size:.74rem;white-space:nowrap;box-shadow:inset 0 1px color-mix(in oklab,white 10%,transparent);transition:transform .18s ease,border-color .18s ease,background-color .18s ease,box-shadow .18s ease,color .18s ease}.cv-contact-pill span{overflow-wrap:anywhere}.cv-contact-pill:hover,.cv-contact-pill:focus-visible{transform:translateY(-1px);border-color:color-mix(in oklab,var(--cv-pill-accent) 52%,var(--edge-strong) 48%);background:color-mix(in oklab,var(--cv-pill-accent) 12%,var(--paper) 88%);color:color-mix(in oklab,var(--cv-pill-accent) 58%,var(--ink) 42%);box-shadow:0 10px 24px color-mix(in oklab,var(--cv-pill-accent) 10%,transparent),0 0 0 1px color-mix(in oklab,var(--cv-pill-accent) 14%,transparent),inset 0 1px color-mix(in oklab,white 12%,transparent)}.cv-contact-pill iconify-icon{font-size:.86rem;flex-shrink:0;color:color-mix(in oklab,var(--cv-pill-accent) 44%,var(--ink-soft) 56%)}.cv-contact-pill.is-email,.cv-contact-pill.is-phone{--cv-pill-accent: var(--accent)}.cv-contact-pill.is-linkedin{--cv-pill-accent: #0a66c2}.cv-contact-pill.is-github{--cv-pill-accent: #333333}.cv-contact-pill.is-gitlab{--cv-pill-accent: #fc6d26}.cv-contact-pill.is-orcid{--cv-pill-accent: #a6ce39}.cv-contact-pill.is-pdf{--cv-pill-accent: #c0392b}.cv-skill-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.cv-skill-card,.cv-experience-card,.cv-education-card,.cv-language-card,.cv-detail-panel{border-radius:var(--radius-md);border:1px solid var(--edge);background:color-mix(in oklab,var(--paper) 94%,var(--paper-strong) 6%)}.cv-skill-card{padding:.95rem}.cv-skill-card h3{display:inline-flex;align-items:center;gap:.45rem;margin-bottom:.4rem}.cv-skill-card h3 iconify-icon{color:var(--accent)}.cv-skill-card p{color:var(--ink-soft)}.cv-controls{display:grid;gap:.8rem}.cv-search{display:grid;gap:.35rem}.cv-search input{width:min(38rem,100%);min-height:48px;padding:.7rem .85rem;border-radius:var(--radius-sm);border:1px solid var(--edge-strong);background:color-mix(in oklab,var(--paper) 96%,transparent);color:var(--ink)}.cv-filter-group{display:flex;flex-wrap:wrap;gap:.45rem}.cv-filter-chip{appearance:none;padding:.55rem .8rem;border-radius:999px;border:1px solid var(--edge);background:color-mix(in oklab,var(--paper) 92%,transparent);color:var(--ink-soft);font-family:IBM Plex Mono,Consolas,monospace;font-size:.78rem;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease,transform .18s ease}.cv-filter-chip:hover,.cv-filter-chip:focus-visible{transform:translateY(-1px);border-color:color-mix(in oklab,var(--accent) 42%,transparent)}.cv-filter-chip.is-active{color:var(--ink);border-color:color-mix(in oklab,var(--accent) 48%,transparent);background:linear-gradient(135deg,color-mix(in oklab,var(--accent) 18%,var(--paper-strong) 82%),color-mix(in oklab,var(--accent-2) 12%,var(--paper) 88%))}.cv-filter-chip.is-clear{border-style:dashed}.cv-result{color:var(--ink-soft)}.cv-experience-list,.cv-education-list,.cv-languages-list{display:grid;gap:.8rem}.cv-experience-card,.cv-education-card{padding:1rem;display:grid;gap:.65rem}.cv-experience-card[hidden]{display:none!important}.cv-experience-card header,.cv-education-card header{display:flex;justify-content:space-between;gap:.8rem}.cv-org{display:inline-flex;align-items:center;gap:.35rem;color:var(--accent);font-weight:600}.cv-timeplace{display:grid;gap:.18rem;justify-items:end;text-align:right;color:var(--ink-soft)}.cv-location{display:inline-flex;align-items:center;gap:.3rem}.cv-summary{color:var(--ink-soft)}.cv-experience-card ul,.cv-education-card ul{display:grid;gap:.28rem;padding-left:1.15rem;color:var(--ink-soft)}.cv-tag-list{display:flex!important;flex-wrap:wrap;gap:.35rem;padding-left:0!important}.cv-tag-list li{list-style:none;display:inline-flex;align-items:center;min-height:2rem;padding:.38rem .62rem;border-radius:999px;border:1px solid color-mix(in oklab,var(--edge-strong) 82%,var(--accent) 18%);background:linear-gradient(180deg,color-mix(in oklab,var(--paper) 96%,transparent),color-mix(in oklab,var(--paper-strong) 92%,transparent));color:color-mix(in oklab,var(--ink-soft) 82%,var(--ink) 18%);box-shadow:inset 0 1px color-mix(in oklab,white 9%,transparent);font-family:IBM Plex Mono,Consolas,monospace;font-size:.72rem;line-height:1;letter-spacing:.01em}.cv-detail-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,.85fr);gap:.95rem}.cv-detail-panel{padding:.95rem}.cv-language-card{padding:.9rem;display:grid;gap:.22rem}.cv-language-card p{color:var(--accent);font-weight:600}.cv-language-card span{color:var(--ink-soft);font-size:.88rem}.site-footer{margin-top:.2rem;padding-bottom:2rem}.site-footer-inner{display:flex;justify-content:space-between;gap:1.25rem;padding-top:1.2rem;border-top:1px solid var(--edge);align-items:flex-end}.footer-identity{display:grid;gap:.35rem;max-width:40rem}.footer-kicker{font-family:IBM Plex Mono,Consolas,monospace;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.footer-identity p:last-of-type{color:var(--ink-soft)}.footer-links{display:flex;flex-wrap:wrap;gap:.9rem}.footer-links a{color:var(--ink);font-weight:600}@media(max-width:1080px){.hero-grid,.split-layout,.page-intro--split,.feature-story,.project-feature,.cv-hero,.cv-detail-grid{grid-template-columns:1fr}.cv-skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.publication-year-group{grid-template-columns:1fr}.publication-year-label{position:static}.cv-hero h1{white-space:normal}.project-feature.is-reversed .project-feature-media,.project-feature.is-reversed .project-feature-body{order:initial}}@media(max-width:860px){:root{--header-offset: 0px}.site-header-inner,.site-footer-inner,.editorial-entry,.cv-experience-card header,.cv-education-card header{grid-template-columns:1fr}.site-header-inner,.site-footer-inner{display:grid;border-radius:var(--radius-xl)}.site-header{position:static;inset:auto;transform:none;opacity:1;pointer-events:auto;transition:none}.header-actions{justify-content:flex-start}.page-intro-stats,.fact-grid,.cv-skill-grid,.editorial-entry{grid-template-columns:1fr}.cv-timeplace{justify-items:start;text-align:left}}@media(max-width:640px){.shell{width:min(1180px,94vw)}h1{font-size:clamp(2.35rem,1.9rem + 3vw,3.5rem)}.site-brand{align-items:flex-start}.site-brand strong,.site-brand em{line-height:1.25}.nav-list{gap:.35rem}.nav-list a,.theme-toggle,.cta-link,.cv-contact-pill{width:100%;justify-content:center}.cv-contact-pill{white-space:normal;text-align:center}.hero-actions{display:grid;grid-template-columns:1fr}.timeline{padding-left:.85rem}.timeline-card header{flex-direction:column}.article,.block,.hero-card,.portrait-panel,.cv-hero{padding:1rem}.social-list,.portrait-socials,.footer-links,.chip-list,.hero-proof{gap:.4rem}}@media(prefers-reduced-motion:reduce){.site-header{transition:none!important}*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
