:root{--ink:#222;--soft-ink:#7b7b7b;--muted:#8a8a8a;--paper:#f8f8f8;--white:#fff;--line:#ddd;--accent:#7a2328;--accent-soft:#7a23284d;--accent-muted:#7a232829;--accent-line:#7a232847;--desktop-canvas:1680px;--desktop-scale-cap:calc(var(--desktop-canvas) / 100);--desktop-gutter:clamp(28px, 4vw, 76px)}*{box-sizing:border-box}html,body{scrollbar-width:none;-ms-overflow-style:none;height:100%;overflow:hidden}html::-webkit-scrollbar{width:0;height:0;display:none}body::-webkit-scrollbar{width:0;height:0;display:none}body{color:var(--ink);background:#ededed;margin:0;font-family:Arial,Helvetica,sans-serif}button,a{color:inherit;font:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{text-decoration:none}.page-shell{background:radial-gradient(circle at 68% 18%, #fffffff0, transparent 27rem), radial-gradient(circle at 10% 92%, var(--accent-muted), transparent 16rem), linear-gradient(120deg, var(--white) 0%, var(--paper) 48%, #f0f0f0 100%);height:100svh;position:relative;overflow:hidden}.header{z-index:100;padding:28px var(--desktop-gutter) 28px;grid-template-columns:1fr auto;align-items:start;gap:clamp(14px,2vw,28px);font-size:13px;display:grid;position:relative}.brand-nav{z-index:101;align-items:center;gap:clamp(10px,1.4vw,16px);display:flex;position:relative}.name-mark{letter-spacing:-.075em;white-space:nowrap;font-size:clamp(20px,2vw,28px);font-weight:300}.brand-divider{color:var(--accent);flex-shrink:0;align-items:center;display:inline-flex}.brand-divider-icon{width:clamp(14px,1.6vw,20px);height:clamp(32px,3.4vw,44px)}.nav,.social-links{align-items:center;gap:clamp(18px,2.8vw,36px);display:flex}.nav a,.social-links a{color:var(--ink);text-decoration:none}.nav a:hover,.social-links a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:4px}.nav a.is-current{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:4px}.social-links{z-index:101;justify-self:end;position:relative}.social-links a span[aria-hidden=true]{color:var(--accent)}.panel-stage{z-index:1;position:absolute;inset:0;overflow:hidden}.panel{padding:148px var(--desktop-gutter) 28px;position:absolute;inset:0}.panel-scroll-sentinel{pointer-events:none;flex-shrink:0;width:100%;height:1px;margin:0}.panel.is-active{z-index:5;visibility:visible;pointer-events:auto}.panel.is-hidden{z-index:1;visibility:hidden;pointer-events:none}.swipe-hint{z-index:12;color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;position:absolute;top:50%;transform:translateY(-50%)}.swipe-hint--back{left:12px}.swipe-hint--forward{right:12px}.swipe-hint-icon{border:1px solid var(--accent-line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(90deg,#ffffffdb 0%,#fffffffa 48%,#ffffffdb 100%);border-radius:999px;flex-shrink:0;place-content:center;width:34px;height:72px;padding:0;display:grid;box-shadow:0 8px 22px #2222221a,inset 1px 0 #ffffffe6,inset -1px 0 #7a232814}.swipe-hint-icon svg{width:16px;height:16px;stroke:var(--accent);fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.swipe-hint--back .swipe-hint-icon svg{animation:1.5s ease-in-out infinite swipe-hint-nudge-left}.swipe-hint--forward .swipe-hint-icon svg{animation:1.5s ease-in-out infinite swipe-hint-nudge-right}.swipe-hint:hover .swipe-hint-icon{border-color:var(--accent);background:linear-gradient(90deg,#ffffffeb 0%,#fff 48%,#ffffffeb 100%)}@keyframes swipe-hint-nudge-right{0%,to{transform:translate(-2px)}50%{transform:translate(3px)}}@keyframes swipe-hint-nudge-left{0%,to{transform:translate(2px)}50%{transform:translate(-3px)}}.hero-panel{isolation:isolate;box-shadow:inset -40px 0 90px var(--accent-muted);grid-template-columns:92px minmax(0,1fr);padding-top:132px;display:grid}.page-shell--skeleton{pointer-events:none}.page-skeleton__block,.page-skeleton__portrait{background:linear-gradient(90deg,#e2e2e2 0%,#ececec 42%,#f4f4f4 50%,#ececec 58%,#e2e2e2 100%) 0 0/220% 100%;animation:1.35s ease-in-out infinite page-skeleton-shimmer}@keyframes page-skeleton-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}.page-skeleton__block{border-radius:6px;display:block}.page-skeleton__header{align-items:center}.page-skeleton__brand{width:clamp(180px,22vw,280px);height:clamp(24px,2.4vw,32px)}.page-skeleton__nav-item{width:clamp(72px,8vw,112px);height:14px}.page-skeleton__socials{align-items:center;gap:12px;display:flex}.page-skeleton__social{width:clamp(52px,6vw,84px);height:14px}.page-skeleton__hero{grid-template-columns:minmax(0,1fr);padding-top:132px}.page-skeleton__copy{z-index:2;flex-direction:column;justify-content:center;min-height:calc(100svh - 168px);padding-top:8px;display:flex;position:relative}.page-skeleton__stats{align-items:center;gap:clamp(30px,5vw,72px);margin-bottom:clamp(40px,8vh,90px);display:flex}.page-skeleton__stat{width:clamp(72px,10vw,120px);height:clamp(52px,7vw,88px)}.page-skeleton__stat--compact{width:clamp(48px,6vw,72px);height:clamp(52px,7vw,88px)}.page-skeleton__stat--small{width:clamp(56px,8vw,92px);height:clamp(52px,7vw,88px)}.page-skeleton__intro{gap:18px;display:grid}.page-skeleton__title{border-radius:10px;width:min(72%,760px);height:clamp(88px,14vw,180px)}.page-skeleton__subtitle{width:min(42%,360px);height:18px;margin-left:24px}.page-skeleton__footer{width:min(48%,420px);height:14px;margin-top:auto}.page-skeleton__portrait{z-index:0;aspect-ratio:828/694;border-radius:12px;width:min(62vw,780px);min-height:clamp(280px,38vw,620px);position:absolute;bottom:-1px;right:clamp(-36px,-.5vw,8px)}@media (max-width:980px){.page-skeleton__nav-item--hide-mobile,.page-skeleton__social--hide-mobile{display:none}.page-skeleton__hero{min-height:100svh;padding-top:0}.page-skeleton__copy{justify-content:flex-end;min-height:100svh;padding:clamp(112px,18vh,168px) clamp(24px,5vw,40px) clamp(40px,6vw,56px)}.page-skeleton__portrait{aspect-ratio:auto;opacity:.72;border-radius:0;width:100%;max-width:none;height:100%;min-height:100svh;inset:0 auto auto 0}}@media (max-width:720px){.page-skeleton__header{grid-template-columns:1fr;gap:14px}}.side-rail{z-index:2;color:var(--muted);align-content:stretch;justify-items:center;padding:48px 0 22px;font-size:13px;display:grid;position:relative}.side-rail span,.side-rail strong{color:var(--accent);writing-mode:vertical-rl;font-weight:400;transform:rotate(180deg)}.side-rail i{background:var(--accent);width:1px;min-height:180px;margin:24px 0}.hero-copy{z-index:4;flex-direction:column;justify-content:center;min-height:calc(100svh - 168px);padding-top:8px;display:flex;position:relative}.stats{align-items:center;gap:clamp(30px,5vw,72px);margin-bottom:clamp(40px,8vh,90px);display:flex}.stat-cluster{align-items:center;gap:clamp(30px,5vw,72px);display:flex}.stat-item{align-content:center;justify-items:start;gap:4px;display:grid}.stats strong{color:var(--ink);font-variant-numeric:proportional-nums;letter-spacing:-.08em;font-size:clamp(52px,7vw,88px);font-weight:300;line-height:1;display:block}.stats span{color:var(--soft-ink);font-size:clamp(15px,1.2vw,18px);line-height:1.2}.stat-label-offset{margin-left:2px;display:inline-block}.stat-cluster .stat-item:nth-child(2) strong{margin-left:-.07em}.stat-cluster .stat-item:nth-child(3) span{margin-left:6px;display:inline-block}.stat-cluster .stat-item:nth-child(4) span{margin-left:4px;display:inline-block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.intro h1{color:var(--accent);letter-spacing:-.085em;margin:0;font-size:clamp(112px,17vw,228px);font-weight:300;line-height:.8}.intro p{color:var(--ink);letter-spacing:-.03em;margin:16px 0 0 24px;font-size:clamp(15px,1.3vw,18px);font-weight:300}.hero-footer{border-top:1px solid var(--accent);width:fit-content;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:auto 0 0 2px;padding-top:18px;font-size:12px;display:inline-flex}.hero-footer-location,.hero-footer-copy{text-transform:none;align-items:center;gap:6px;display:inline-flex}.hero-footer-divider{color:var(--accent);font-size:10px}.hero-footer-icon{width:12px;height:12px;fill:var(--accent);flex-shrink:0}.portrait-wrap{z-index:0;pointer-events:none;width:min(62vw,780px);position:absolute;bottom:-1px;right:clamp(-36px,-.5vw,8px)}.portrait-wrap:before{z-index:-1;filter:blur(66px);content:"";pointer-events:none;background:radial-gradient(at 50% 66%,#7a232852 0%,#7a232838 28%,#7a23281f 50%,#7a23280f 72%,#0000 100%);position:absolute;inset:4% -8% 0;transform:scale(1.16)}.portrait-wrap:after{z-index:2;filter:blur(80px);content:"";pointer-events:none;background:linear-gradient(#0000 0%,#ffffff03 18%,#ffffff0a 38%,#ffffff1a 60%,#fff3 82%,#ffffff52 100%);height:64%;position:absolute;bottom:-40px;left:-12%;right:-12%;-webkit-mask-image:linear-gradient(#0000 0%,#0000002e 26%,#0000007a 50%,#000000c7 76%,#000000f2 100%);mask-image:linear-gradient(#0000 0%,#0000002e 26%,#0000007a 50%,#000000c7 76%,#000000f2 100%)}.portrait{filter:drop-shadow(0 0 26px #7a232838)drop-shadow(0 0 52px #7a232824)drop-shadow(0 52px 104px #7a23283d)drop-shadow(0 32px 72px #7a23282e)drop-shadow(0 16px 44px #7a23281f)drop-shadow(0 8px 24px #7a232812)contrast(1.06)saturate(1.1)brightness(1.05);width:100%;height:auto;display:block}.content-panel{background:radial-gradient(circle at 82% 18%, #fffffff5, transparent 22rem), radial-gradient(circle at 14% 78%, var(--accent-muted), transparent 20rem), linear-gradient(135deg, var(--white) 0%, var(--paper) 100%);box-shadow:inset 0 0 110px 42px var(--accent-muted), inset 0 0 56px 22px #7a232814;flex-direction:column;justify-content:flex-start;gap:10px;padding-top:128px;display:flex}.panel-kicker{color:var(--accent);letter-spacing:.2em;text-transform:uppercase;font-size:11px}.content-panel h2{letter-spacing:-.09em;max-width:680px;margin:0;font-size:clamp(32px,5vw,56px);font-weight:300;line-height:.92}.content-panel p{max-width:580px;color:var(--soft-ink);margin:14px 0 0;font-size:15px;line-height:1.55}.about-card,.review-box,.publication-card,.skill-row,.cert-card,.award-card{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffa3;border:1px solid #7a23281a}.about-card{box-shadow:0 20px 44px #7a232824, 0 8px 18px var(--accent-muted)}.review-box{box-shadow:12px 16px 36px #7a23281f, 0 6px 14px var(--accent-muted)}.publication-card{box-shadow:-10px 18px 40px #7a232821, 0 5px 16px var(--accent-muted)}.skill-row{box-shadow:0 14px 32px #7a23281c, 0 6px 16px var(--accent-muted)}.cert-card{box-shadow:0 16px 38px #7a232826, -6px 8px 20px var(--accent-muted)}.award-card{box-shadow:0 18px 42px #7a23281f,0 4px 12px #7a232814}.about-card span,.review-box span,.publication-card span:not(.publication-citation-count),.cert-card span:not(.cert-status),.award-card span,.misc-group-label,.skills-heading,.side-sub-label{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;font-size:11px}.skills-heading{letter-spacing:.18em}.about-layout{grid-template-columns:minmax(0,1.15fr) minmax(240px,.85fr);align-items:stretch;gap:clamp(16px,2.5vw,28px);display:grid}.about-main{flex-direction:column;gap:14px;display:flex}.about-lead h2{font-size:clamp(34px,5vw,52px)}.about-lead p{text-align:justify;width:100%;max-width:none;font-size:15px;line-height:1.52}.skills-stack{flex-direction:column;gap:10px;display:flex}.skill-row{grid-template-columns:44px minmax(0,1fr);align-items:stretch;padding:0;display:grid;overflow:hidden}.skill-index{border-right:1px solid var(--accent-line);color:var(--accent);background:var(--accent-muted);letter-spacing:-.06em;place-content:center;font-size:13px;font-weight:300;display:grid}.skill-body{padding:12px 14px}.skill-body strong{letter-spacing:-.04em;font-size:17px;font-weight:500;display:block}.skill-chips{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.skill-chips span{border:1px solid var(--line);color:var(--ink);letter-spacing:-.02em;text-transform:none;background:#ffffffb8;padding:5px 10px;font-size:12px;line-height:1}.about-side{grid-template-rows:auto minmax(0,1fr) auto;align-content:stretch;gap:6px;min-height:100%;display:grid}.about-side-spacer{min-height:0}.employment-card{margin-top:0}.about-card{padding:16px 18px}.info-entry{margin-top:10px}.info-entry:first-of-type{margin-top:8px}.info-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.info-head strong,.info-head h3,.info-head .info-title{color:var(--ink);letter-spacing:-.05em;flex:1;margin:0;font-size:clamp(22px,2.6vw,30px);font-weight:500;line-height:1.12}.about-card .info-head strong{font-size:clamp(17px,2vw,22px);line-height:1.18}.info-head time{color:var(--soft-ink);letter-spacing:0;text-align:right;white-space:nowrap;flex-shrink:0;font-size:13px;font-weight:400;line-height:1.3}.info-entry>p{max-width:none;color:var(--soft-ink);margin:10px 0 0;font-size:14px;line-height:1.45}.info-place{color:var(--ink);letter-spacing:-.02em;margin:8px 0 0;font-size:13px;font-weight:500;line-height:1.35}.education-card{padding:15px 17px}.employment-card{padding:12px 14px}.education-card .info-entry{margin-top:8px}.education-card .info-entry:first-of-type{margin-top:7px}.employment-card .info-entry,.employment-card .info-entry:first-of-type{margin-top:6px}.education-card .info-place{margin-top:7px}.employment-card .info-place{margin-top:6px;font-size:12px;line-height:1.3}.education-card .info-entry>p{margin-top:7px;font-size:14px;line-height:1.4}.employment-card .info-entry>p{margin-top:6px;font-size:13px;line-height:1.34}.education-card .thesis-note{background:linear-gradient(90deg,#7a23280e 0%,#7a232805 58%,#0000 100%);border-left:2px solid #7a2328b8;border-radius:0 4px 4px 0;margin-top:7px;padding:5px 8px 5px 10px}.education-card .thesis-label{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;margin:0 0 2px;font-size:10px;font-weight:600;line-height:1;display:block}.education-card .thesis-title{color:var(--ink);letter-spacing:-.01em;margin:0;font-size:13px;font-weight:500;line-height:1.33}.education-card .thesis-supervisor{color:var(--soft-ink);margin:3px 0 0;font-size:11px;line-height:1.25}.education-divider{background:var(--accent-line);height:1px;margin:12px 0 3px}.review-box .info-entry+.info-entry{border-top:1px solid var(--accent-line);margin-top:14px;padding-top:14px}.side-section-divider{background:var(--accent-line);height:1px;margin:16px 0 12px}.publication-layout{flex-direction:column;gap:0;display:flex}.publication-main{flex-direction:column;min-width:0;display:flex}.publication-main h2{font-size:clamp(24px,3.4vw,36px)}.publication-cards-row{grid-template-rows:auto auto;grid-template-columns:minmax(0,1.38fr) minmax(190px,.62fr);align-items:stretch;gap:clamp(14px,2.5vw,24px);margin-top:8px;display:grid}.publication-pager{grid-area:1/1;gap:8px;min-width:0;display:grid}.publication-side{grid-area:1/2;align-self:stretch;min-width:0;display:flex}.publication-cards-row .pager-controls{grid-area:2/1;margin-top:0}.publication-card{padding:11px 13px}.pager-controls{border-top:1px solid var(--accent-line);justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding-top:12px;display:flex}.pager-controls button{border:1px solid var(--accent-line);color:var(--ink);letter-spacing:-.01em;cursor:pointer;background:#ffffffb8;padding:6px 12px;font-size:12px}.pager-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:3px}.pager-controls button:disabled{opacity:.35;cursor:not-allowed}.pager-controls span{color:var(--soft-ink);letter-spacing:.04em;text-transform:none;font-size:12px}.publication-card .info-head .publication-category{color:var(--ink);letter-spacing:-.03em;text-transform:none;flex:1;font-size:clamp(17px,2vw,22px);font-weight:500;line-height:1.15}.publication-card .info-head time{color:var(--accent);font-size:12px}.publication-card h3{letter-spacing:-.04em;margin:8px 0 6px;font-size:clamp(16px,2vw,20px);font-weight:500;line-height:1.2}.publication-card h3 a{color:var(--ink);text-decoration:none}.publication-card h3 a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:3px}.publication-card p{margin:0;font-size:13px;line-height:1.4}.publication-card small{color:var(--soft-ink);margin-top:8px;font-size:12px;line-height:1.4;display:block}.publication-links{flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:8px;display:flex}.publication-link{color:var(--ink);justify-content:center;align-items:center;gap:5px;font-size:12px;line-height:1;text-decoration:none;display:inline-flex}.publication-link span[aria-hidden=true]{color:var(--accent)}.publication-link-icon{width:11px;height:11px;stroke:var(--accent);fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;transform:translateY(1.5px)}.publication-link:hover{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:3px}.publication-citation-count{color:var(--ink);letter-spacing:-.01em;text-transform:none;white-space:nowrap;background:#7a23280d;border:1px solid #7a232838;border-radius:999px;align-items:center;padding:4px 10px;font-size:12px;line-height:1;display:inline-flex}.publication-cards-row .review-box{flex-direction:column;flex:1;justify-content:flex-start;height:100%;padding:11px 13px;display:flex;overflow:hidden}.publication-cards-row .review-box .info-entry,.publication-cards-row .review-box .info-entry:first-of-type{margin-top:6px}.publication-cards-row .review-box .info-head strong{font-size:clamp(14px,1.6vw,17px);line-height:1.18}.publication-cards-row .review-box .info-entry>p{margin-top:5px;font-size:12px;line-height:1.32}.publication-cards-row .review-box .side-section-divider{margin:8px 0 6px}.publication-cards-row .review-box .info-head time{font-size:11px}.review-box{flex-direction:column;justify-content:flex-start;padding:13px 14px;display:flex;overflow:hidden}.review-box p strong,.review-box p small{display:block}.review-box .info-head strong{font-size:clamp(16px,1.8vw,19px);font-weight:500;line-height:1.22}.review-box .info-entry>p{font-size:13px}.misc-layout{grid-template-columns:minmax(200px,.48fr) minmax(0,1.52fr);align-items:start;gap:clamp(16px,2.5vw,28px);display:grid}.misc-intro h2{font-size:clamp(28px,4vw,44px)}.misc-intro p{font-size:14px;line-height:1.48}.misc-groups{flex-direction:column;gap:18px;display:flex}.misc-group{flex-direction:column;gap:12px;display:flex}.cert-grid,.award-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.cert-grid{padding-top:6px;padding-right:6px;overflow:visible}.cert-card,.award-card{padding:16px 18px}.cert-card{position:relative;overflow:visible}.award-card{border-left:3px solid var(--accent)}.cert-body,.award-body{flex-direction:column;gap:10px;display:flex}.cert-body>span,.award-body>span{margin:0;line-height:1.35;display:block}.cert-head{align-items:center}.cert-head h3{flex:1;min-width:0;margin:0}.cert-status{z-index:2;border:1px solid var(--accent-line);color:var(--accent);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;background:#fffffff5;border-radius:999px;padding:3px 8px;font-size:9px;font-weight:600;line-height:1;position:absolute;top:-7px;right:-7px;box-shadow:0 4px 12px #7a23281f}.cert-head time{color:var(--soft-ink);flex-shrink:0;font-size:12px;line-height:1}.cert-body h3 a{color:inherit;text-decoration:none}.cert-body h3 a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:3px}.cert-body .info-head,.award-body .info-head{gap:14px}.cert-body p,.award-body p{color:var(--soft-ink);margin:2px 0 0;font-size:14px;line-height:1.48}@media (min-width:981px){body:not(.mobile-stack){background:linear-gradient(90deg,#e4e4e4 0%,#ededed 18% 82%,#e4e4e4 100%);overflow:hidden}.page-shell:not(.page-shell--stack){width:min(100%, var(--desktop-canvas));--desktop-gutter:clamp(28px, 4cqw, 76px);margin-inline:auto;overflow-x:clip;box-shadow:-24px 0 48px #0000000a,24px 0 48px #0000000a;container:portfolio/inline-size}.page-shell:not(.page-shell--stack) .header{z-index:120;padding:28px var(--desktop-gutter);align-items:center;gap:clamp(14px,2cqw,28px);transition:transform .28s,opacity .28s,visibility .28s;position:absolute;top:0;left:0;right:0}.page-shell:not(.page-shell--stack) .header.header--scroll-hidden{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-110%)}.page-shell:not(.page-shell--stack) .brand-nav{gap:clamp(10px,1.4cqw,16px)}.page-shell:not(.page-shell--stack) .name-mark{font-size:clamp(20px,2cqw,28px)}.page-shell:not(.page-shell--stack) .brand-divider-icon{width:clamp(14px,1.6cqw,20px);height:clamp(32px,3.4cqw,44px)}.page-shell:not(.page-shell--stack) .nav,.page-shell:not(.page-shell--stack) .social-links{gap:clamp(18px,2.8cqw,36px)}.page-shell:not(.page-shell--stack) .stats{flex-wrap:nowrap;align-items:flex-end;gap:clamp(20px,3.2cqw,48px);margin-bottom:clamp(40px,8vh,90px)}.page-shell:not(.page-shell--stack) .stat-cluster{flex-wrap:nowrap;flex:auto;align-items:flex-end;gap:clamp(20px,3.2cqw,48px);width:100%;min-width:0;display:flex}.page-shell:not(.page-shell--stack) .stats strong{font-size:clamp(52px,7cqw,88px)}.page-shell:not(.page-shell--stack) .stats span{font-size:clamp(15px,1.2cqw,18px)}.page-shell:not(.page-shell--stack) .intro h1{font-size:clamp(112px,17cqw,228px)}.page-shell:not(.page-shell--stack) .intro p{font-size:clamp(15px,1.3cqw,18px)}.page-shell:not(.page-shell--stack) .content-panel h2{font-size:clamp(32px,5cqw,56px)}.page-shell:not(.page-shell--stack) .about-lead h2{font-size:clamp(34px,5cqw,52px)}.page-shell:not(.page-shell--stack) .info-head strong,.page-shell:not(.page-shell--stack) .info-head h3,.page-shell:not(.page-shell--stack) .info-head .info-title{font-size:clamp(22px,2.6cqw,30px)}.page-shell:not(.page-shell--stack) .about-card .info-head strong{font-size:clamp(17px,2cqw,22px)}.page-shell:not(.page-shell--stack) .misc-intro h2{font-size:clamp(28px,4cqw,44px)}.page-shell:not(.page-shell--stack) .publication-main h2{font-size:clamp(24px,3.4cqw,36px)}.page-shell:not(.page-shell--stack) .publication-card .info-head .publication-category{font-size:clamp(16px,1.8cqw,20px)}.page-shell:not(.page-shell--stack) .publication-card h3{font-size:clamp(16px,2cqw,20px)}.page-shell:not(.page-shell--stack) .publication-cards-row{grid-template-columns:minmax(0,1.4fr) minmax(200px,.6fr)}.page-shell:not(.page-shell--stack) .publication-card p{font-size:13px}.page-shell:not(.page-shell--stack) .publication-card small,.page-shell:not(.page-shell--stack) .publication-link,.page-shell:not(.page-shell--stack) .publication-citation-count,.page-shell:not(.page-shell--stack) .pager-controls button,.page-shell:not(.page-shell--stack) .pager-controls span{font-size:12px}.page-shell:not(.page-shell--stack) .review-box .info-head strong,.page-shell:not(.page-shell--stack) .cert-card h3,.page-shell:not(.page-shell--stack) .award-card h3{font-size:clamp(16px,1.8cqw,19px)}.page-shell:not(.page-shell--stack) .about-layout,.page-shell:not(.page-shell--stack) .publication-layout,.page-shell:not(.page-shell--stack) .misc-layout{gap:clamp(16px,2.5cqw,28px)}.page-shell:not(.page-shell--stack) .hero-copy{max-width:72%}.page-shell:not(.page-shell--stack) .content-panel{min-width:0;overflow-x:clip}.page-shell:not(.page-shell--stack) .panel.is-active{height:100%;max-height:100%;overflow:clip hidden}html.desktop-zoom-active .page-shell:not(.page-shell--stack) .about-panel.is-active,html.desktop-zoom-active .page-shell:not(.page-shell--stack) .publications-panel.is-active,html.desktop-zoom-active .page-shell:not(.page-shell--stack) .misc-panel.is-active{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;overflow-y:auto}html.desktop-zoom-active .page-shell:not(.page-shell--stack) .about-panel.is-active::-webkit-scrollbar{width:0;height:0;display:none}html.desktop-zoom-active .page-shell:not(.page-shell--stack) .publications-panel.is-active::-webkit-scrollbar{width:0;height:0;display:none}html.desktop-zoom-active .page-shell:not(.page-shell--stack) .misc-panel.is-active::-webkit-scrollbar{width:0;height:0;display:none}.page-shell:not(.page-shell--stack) .panel{padding-inline:var(--desktop-gutter)}.page-shell:not(.page-shell--stack) .info-head strong,.page-shell:not(.page-shell--stack) .publication-card h3,.page-shell:not(.page-shell--stack) .thesis-title{overflow-wrap:anywhere}.page-shell:not(.page-shell--stack) .nav a,.page-shell:not(.page-shell--stack) .social-links a{align-items:center;line-height:1;display:inline-flex}.page-shell:not(.page-shell--stack) .portrait-wrap{width:min(56%,780px);max-width:780px;right:clamp(20px,4%,64px)}.page-shell:not(.page-shell--stack) .about-layout,.page-shell:not(.page-shell--stack) .publication-layout,.page-shell:not(.page-shell--stack) .misc-layout{width:100%;max-width:calc(var(--desktop-canvas) - var(--desktop-gutter) * 2);min-width:0;margin-inline:auto}.page-shell:not(.page-shell--stack) .about-main,.page-shell:not(.page-shell--stack) .about-side,.page-shell:not(.page-shell--stack) .publication-main,.page-shell:not(.page-shell--stack) .publication-side,.page-shell:not(.page-shell--stack) .misc-intro,.page-shell:not(.page-shell--stack) .misc-groups,.page-shell:not(.page-shell--stack) .publication-pager,.page-shell:not(.page-shell--stack) .skills-stack{min-width:0}.page-shell:not(.page-shell--stack) .info-head strong,.page-shell:not(.page-shell--stack) .info-head h3,.page-shell:not(.page-shell--stack) .info-head .info-title,.page-shell:not(.page-shell--stack) .publication-card h3,.page-shell:not(.page-shell--stack) .publication-card .info-head .publication-category{overflow-wrap:anywhere}.page-skeleton__portrait{width:min(56%,780px);max-width:780px;min-height:auto;right:clamp(20px,4%,64px)}}@supports not (width:1cqw){@media (min-width:981px){.page-shell:not(.page-shell--stack){--desktop-gutter:clamp(28px, min(4vw, calc(4 * var(--desktop-scale-cap))), 76px)}.page-shell:not(.page-shell--stack) .intro h1{font-size:clamp(112px, min(17vw, calc(17 * var(--desktop-scale-cap))), 228px)}.page-shell:not(.page-shell--stack) .stats strong{font-size:clamp(52px, min(7vw, calc(7 * var(--desktop-scale-cap))), 88px)}.page-shell:not(.page-shell--stack) .publication-main h2{font-size:clamp(24px, min(3.4vw, calc(3.4 * var(--desktop-scale-cap))), 36px)}.page-shell:not(.page-shell--stack) .publication-card h3{font-size:clamp(16px, min(2vw, calc(2 * var(--desktop-scale-cap))), 20px)}.page-shell:not(.page-shell--stack) .content-panel h2{font-size:clamp(32px, min(5vw, calc(5 * var(--desktop-scale-cap))), 56px)}.page-shell:not(.page-shell--stack) .about-lead h2{font-size:clamp(34px, min(5vw, calc(5 * var(--desktop-scale-cap))), 52px)}.page-shell:not(.page-shell--stack) .info-head strong,.page-shell:not(.page-shell--stack) .info-head h3,.page-shell:not(.page-shell--stack) .info-head .info-title{font-size:clamp(22px, min(2.6vw, calc(2.6 * var(--desktop-scale-cap))), 30px)}.page-shell:not(.page-shell--stack) .about-card .info-head strong{font-size:clamp(17px, min(2vw, calc(2 * var(--desktop-scale-cap))), 22px)}.page-shell:not(.page-shell--stack) .misc-intro h2{font-size:clamp(28px, min(4vw, calc(4 * var(--desktop-scale-cap))), 44px)}.page-shell:not(.page-shell--stack) .publication-card .info-head .publication-category{font-size:clamp(16px, min(1.8vw, calc(1.8 * var(--desktop-scale-cap))), 20px)}.page-shell:not(.page-shell--stack) .review-box .info-head strong{font-size:clamp(16px, min(1.8vw, calc(1.8 * var(--desktop-scale-cap))), 19px)}.page-shell:not(.page-shell--stack) .about-layout,.page-shell:not(.page-shell--stack) .misc-layout{gap:clamp(16px, min(2.5vw, calc(2.5 * var(--desktop-scale-cap))), 28px)}.page-shell:not(.page-shell--stack) .publication-cards-row{gap:clamp(14px, min(2.5vw, calc(2.5 * var(--desktop-scale-cap))), 24px)}}}@media (min-width:1681px){.page-shell:not(.page-shell--stack){width:var(--desktop-canvas);max-width:var(--desktop-canvas);--desktop-gutter:76px}}@container portfolio (max-width:1280px){.page-shell:not(.page-shell--stack) .nav,.page-shell:not(.page-shell--stack) .social-links{flex-wrap:wrap;row-gap:8px}.page-shell:not(.page-shell--stack) .info-head time{white-space:normal;text-align:right}}@media (max-width:980px){.header{grid-template-columns:1fr;gap:10px;padding-bottom:20px}.brand-nav{flex-wrap:wrap;gap:12px 20px}.nav,.social-links{flex-wrap:wrap;justify-self:start}.panel{padding-top:168px}.content-panel{padding-top:148px}.hero-panel{grid-template-columns:62px minmax(0,1fr);padding-top:156px}.portrait-wrap{opacity:.72;width:min(78vw,670px);right:-120px}.about-layout,.misc-layout{grid-template-columns:1fr}.publication-cards-row{grid-template-rows:auto;grid-template-columns:1fr}.publication-pager,.publication-side,.publication-cards-row .pager-controls{grid-area:auto/1}.cert-grid,.award-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.page-shell--stack .header--stack{gap:8px;padding:9px 16px}.page-shell--stack .site-footer{min-height:54px;padding:9px 16px}.page-shell--stack .hero-cover-top .name-mark--cover{white-space:nowrap;font-size:clamp(18px,4.8vw,24px)}.header{padding:18px 22px 16px}.name-mark:not(.name-mark--cover){white-space:normal;font-size:18px}.brand-nav{gap:10px 14px}.nav,.social-links{gap:10px 14px;font-size:11px}.panel{padding:132px 20px 16px}.hero-panel{grid-template-columns:1fr;padding-top:128px}.side-rail{display:none}.hero-copy{min-height:calc(100svh - 160px)}.stats{gap:24px;margin-bottom:36px}.stat-cluster{gap:24px}.stats strong{font-size:44px}.stats span{font-size:13px}.intro h1{font-size:clamp(84px,26vw,148px)}.intro p{margin-left:8px;font-size:14px}.portrait-wrap{opacity:.38;width:92vw;bottom:0;right:-148px}.content-panel{gap:8px;padding-top:112px}.panel-kicker{font-size:10px}.content-panel h2{font-size:clamp(26px,8vw,36px)}.about-layout{grid-template-columns:1fr .88fr;gap:10px}.about-lead h2{font-size:clamp(24px,6vw,32px)}.about-lead p{font-size:12px;line-height:1.38}.skill-row{grid-template-columns:36px minmax(0,1fr)}.skill-index{font-size:11px}.skill-body{padding:10px 12px}.skill-chips span{padding:4px 8px;font-size:10px}.about-card{padding:12px 14px}.skill-body strong{font-size:15px}.info-head strong,.info-head h3,.info-head .info-title{font-size:clamp(18px,4vw,22px)}.info-head time{font-size:11px}.info-entry>p{font-size:12px}.publication-cards-row{grid-template-columns:1fr;gap:10px}.publication-main h2{font-size:clamp(24px,6vw,32px)}.publication-pager{gap:8px}.publication-card{padding:9px 10px}.publication-card h3{margin:8px 0 6px;font-size:13px}.publication-card p,.publication-card small,.publication-link,.publication-citation-count{font-size:11px}.review-box{padding:12px 14px}.review-box .info-head strong{font-size:13px}.review-box .info-entry>p{font-size:11px}.publication-card h3{font-size:15px}.misc-intro p{font-size:12px}.misc-groups{gap:16px}.cert-grid,.award-grid{grid-template-columns:1fr;gap:12px}.cert-card,.award-card{padding:14px 16px}.cert-body,.award-body{gap:8px}.cert-body .info-head h3,.award-body .info-head h3{font-size:clamp(17px,3.8vw,20px)}.cert-body p,.award-body p{font-size:12px;line-height:1.44}}html:has(body.mobile-stack){-webkit-overflow-scrolling:touch;height:auto;overflow:hidden auto}body.mobile-stack{-webkit-overflow-scrolling:touch;height:auto;overflow:hidden auto}@media (max-width:1024px){html,body{-webkit-overflow-scrolling:touch;height:auto;min-height:100%;overflow:hidden auto}.page-shell:not(.page-shell--stack) .panel.is-active{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;overflow-y:auto}}.page-shell--stack{height:auto;min-height:100svh;overflow:visible}.page-shell--stack .side-rail{display:none}.page-shell--stack .header--stack{z-index:120;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--accent-line);opacity:0;pointer-events:none;background:#fffffff5;flex-direction:row;justify-content:space-between;align-items:center;gap:clamp(10px,2.4vw,16px);padding:11px 20px;transition:transform .28s,opacity .28s;display:flex;position:fixed;top:0;left:0;right:0;transform:translateY(-100%)}.page-shell--stack .header--stack.header--stack-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.page-shell--stack .header--stack .brand-nav{flex:auto;gap:0;min-width:0}.page-shell--stack .header--stack .brand-divider-icon{width:clamp(12px,3.2vw,16px);height:clamp(26px,6.8vw,34px)}.page-shell--stack .header--stack>.brand-nav .name-mark{white-space:nowrap;text-overflow:ellipsis;width:auto;font-size:clamp(10px,2.6vw,12px);display:block;overflow:hidden}.page-shell--stack .header--stack .social-links--compact{flex-wrap:nowrap;flex:0 auto;justify-content:flex-end;align-items:center;gap:clamp(4px,1.1vw,6px);max-width:62%;padding-top:0;font-size:clamp(8px,2.1vw,10px);line-height:1.2;display:flex}body.mobile-stack-nav-visible .page-shell--stack .panel.is-stacked:not(.hero-panel),body.mobile-stack-nav-visible .page-shell--stack .site-footer{scroll-margin-top:54px}.page-shell--stack .panel-stage--stack{position:relative;inset:auto;overflow:visible}.page-shell--stack .panel.is-stacked{z-index:1;visibility:visible;pointer-events:auto;scroll-margin-top:0;position:relative;inset:auto}.page-shell--stack .hero-panel.is-stacked{isolation:isolate;height:100svh;min-height:100svh;box-shadow:none;background:#f0f0f0;padding:0;scroll-margin-top:0;display:block;position:relative;overflow:hidden}.page-shell--stack .portrait-wrap--mobile-bg{z-index:0;opacity:1;width:100%;max-width:none;height:100%;min-height:100svh;position:absolute;inset:0 auto auto 0;overflow:hidden}.page-shell--stack .portrait-wrap--mobile-bg>span{width:100%!important;height:100%!important;position:absolute!important;inset:0!important}.page-shell--stack .portrait-wrap--mobile-bg>span:after{content:"";z-index:1;pointer-events:none;filter:blur(22px);background:radial-gradient(72% 48% at 50% 40%,#ffffff1a 0%,#ffffff0d 42%,#0000 74%);position:absolute;inset:0}.page-shell--stack .portrait-wrap--mobile-bg:before{z-index:2;filter:blur(30px);background:linear-gradient(#ffffffeb 0%,#ffffff9e 14%,#ffffff4d 26%,#0000 40%);inset:0;transform:none;-webkit-mask-image:linear-gradient(#000 0%,#000000c7 36%,#0000 58%);mask-image:linear-gradient(#000 0%,#000000c7 36%,#0000 58%)}.page-shell--stack .portrait-wrap--mobile-bg:after{z-index:3;filter:blur(42px);background:linear-gradient(#0000 46%,#ffffff38 62%,#ffffff7a 76%,#ffffffc7 88%,#fffffffa 100%);height:100%;inset:0;-webkit-mask-image:linear-gradient(#0000 28%,#0000008c 52%,#000000eb 72%,#000 100%);mask-image:linear-gradient(#0000 28%,#0000008c 52%,#000000eb 72%,#000 100%)}.page-shell--stack .portrait--mobile-bg{-o-object-fit:cover;object-fit:cover;-o-object-position:center 8%;object-position:center 8%;filter:contrast(1.04)saturate(1.08)brightness(1.02);max-width:none;display:block;position:absolute;inset:0;width:100%!important;height:100%!important}.page-shell--stack .hero-cover-top{z-index:5;justify-content:space-between;align-items:center;gap:clamp(12px,3vw,20px);padding:clamp(20px,4.5vw,32px) clamp(20px,5vw,36px) 0;transition:opacity .24s;display:flex;position:absolute;top:0;left:0;right:0}.page-shell--stack .hero-cover-top--hidden{opacity:0;pointer-events:none}.page-shell--stack .name-mark--cover{color:var(--ink);letter-spacing:-.075em;text-shadow:0 1px 12px #fffc;font-size:clamp(18px,4.8vw,24px);font-weight:300;line-height:1.1}.page-shell--stack .hero-cover-location{color:var(--ink);letter-spacing:-.075em;text-shadow:0 1px 12px #fffc;flex-shrink:0;align-items:center;gap:7px;font-size:clamp(16px,4.2vw,20px);font-weight:300;line-height:1.1;display:inline-flex}.page-shell--stack .hero-cover-location-icon{width:clamp(13px,3.4vw,16px);height:clamp(13px,3.4vw,16px);fill:var(--accent);flex-shrink:0}.page-shell--stack .hero-panel.is-stacked .hero-copy--mobile{z-index:4;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:0;max-width:min(100%,520px);min-height:0;padding:0 clamp(20px,5vw,36px) clamp(14px,3.5vw,24px);display:flex;position:absolute;inset:auto 0 0;transform:translateY(clamp(28px,6vh,44px))}.page-shell--stack .hero-mobile-rail{z-index:4;opacity:.8;pointer-events:none;align-content:center;justify-items:center;padding:0;display:grid;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.page-shell--stack .hero-mobile-rail span,.page-shell--stack .hero-mobile-rail strong{color:var(--accent);letter-spacing:.2em;text-transform:uppercase;writing-mode:vertical-rl;font-size:11px;font-weight:400;transform:rotate(180deg)}.page-shell--stack .hero-mobile-rail i{background:var(--accent);width:1px;min-height:72px;margin:14px 0}.page-shell--stack .intro--mobile h1{color:var(--accent);letter-spacing:-.075em;text-shadow:0 2px 18px #ffffffa6;margin:0;font-size:clamp(84px,26vw,148px);font-weight:300;line-height:.82}.page-shell--stack .intro--mobile p{border-left:2px solid var(--accent);max-width:24ch;color:var(--ink);letter-spacing:-.02em;text-shadow:0 1px 12px #ffffffb3;margin:clamp(16px,3vh,24px) 0 0;padding-left:18px;font-size:clamp(16px,4.2vw,19px);font-weight:300;line-height:1.45}.page-shell--stack .stats--mobile{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffff85;border-top:1px solid #7a232838;border-bottom:1px solid #7a232838;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:0;width:100%;margin-top:clamp(20px,4vh,32px);padding:clamp(16px,3.5vw,22px) 0;display:grid}.page-shell--stack .stats--mobile .stat-item{text-align:center;align-content:center;justify-items:center;gap:10px;padding:0 10px;display:grid}.page-shell--stack .stats--mobile .stat-item+.stat-item{border-left:1px solid #7a23282e}.page-shell--stack .stats--mobile strong{color:var(--ink);letter-spacing:-.08em;font-size:clamp(40px,11vw,56px);font-weight:300;line-height:1}.page-shell--stack .stats--mobile .stat-item:nth-child(2) strong{margin-left:-.07em}.page-shell--stack .stats--mobile span{max-width:12ch;color:var(--ink);white-space:nowrap;font-size:clamp(12px,3.2vw,14px);line-height:1.35}.page-shell--stack .stats--mobile .stat-item:nth-child(4) span{max-width:none;font-size:clamp(10px,3vw,12px);line-height:1.2}.page-shell--stack .content-panel.is-stacked{min-height:auto;padding:58px 20px 48px}.page-shell--stack .misc-panel.is-stacked{padding-bottom:24px}.page-shell--stack .about-layout,.page-shell--stack .misc-layout{grid-template-columns:1fr}.page-shell--stack .publication-cards-row{grid-template-rows:auto;grid-template-columns:1fr}.page-shell--stack .publication-pager,.page-shell--stack .publication-side,.page-shell--stack .publication-cards-row .pager-controls{grid-area:auto/1}.page-shell--stack .cert-grid,.page-shell--stack .award-grid{grid-template-columns:1fr}.page-shell--stack .site-footer{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--accent-line);text-align:center;background:#fffffff5;justify-content:center;align-items:center;min-height:54px;padding:11px 20px;scroll-margin-top:0;display:flex}.page-shell--stack .site-footer-line{display:none}.page-shell--stack .site-footer p{color:var(--muted);letter-spacing:.04em;margin:0;font-size:12px;line-height:1.2}@media (min-width:721px) and (max-width:1024px){.page-shell--stack .hero-cover-top{padding-top:clamp(28px,5vw,40px);padding-inline:clamp(32px,6vw,56px)}.page-shell--stack .name-mark--cover{font-size:clamp(22px,3.6vw,28px)}.page-shell--stack .hero-cover-location{font-size:clamp(18px,3vw,22px)}.page-shell--stack .header--stack{padding-inline:clamp(32px,6vw,56px)}.page-shell--stack .site-footer{min-height:60px;padding-inline:clamp(32px,6vw,56px)}.page-shell--stack .header--stack>.brand-nav .name-mark{font-size:clamp(14px,2.6vw,16px)}.page-shell--stack .header--stack .social-links--compact{flex-wrap:wrap;gap:clamp(9px,1.6vw,14px);max-width:58%;font-size:clamp(12px,2vw,13px);line-height:1.25}body.mobile-stack-nav-visible .page-shell--stack .panel.is-stacked:not(.hero-panel),body.mobile-stack-nav-visible .page-shell--stack .site-footer{scroll-margin-top:60px}.page-shell--stack .portrait--mobile-bg{-o-object-position:center 14%;object-position:center 14%}.page-shell--stack .hero-panel.is-stacked .hero-copy--mobile{padding-inline:clamp(32px,6vw,56px);padding-bottom:clamp(18px,4vw,28px);transform:translateY(clamp(36px,7vh,56px))}.page-shell--stack .hero-mobile-rail{right:clamp(20px,4vw,32px)}.page-shell--stack .intro--mobile h1{font-size:clamp(108px,18vw,168px)}.page-shell--stack .intro--mobile p{max-width:32ch;font-size:clamp(17px,2.4vw,20px)}.page-shell--stack .stats--mobile strong{font-size:clamp(48px,7vw,64px)}.page-shell--stack .stats--mobile span{font-size:14px}.page-shell--stack .stats--mobile .stat-item:nth-child(4) span{font-size:12px}.page-shell--stack .content-panel.is-stacked{padding-inline:clamp(32px,6vw,56px)}}
