@font-face{font-family:Bodoni Moda;src:url(/fonts/bodoni-moda-latin.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap}@font-face{font-family:Bodoni Moda;src:url(/fonts/bodoni-moda-italic-latin.woff2)format("woff2");font-weight:400 700;font-style:italic;font-display:swap}:root{--paper:#fcfbf8;--card:#fff;--ink:#17191c;--soft:#55585c;--faint:#8e9094;--accent:#a31f2b;--accent-deep:#86151f;--accent-tint:#f7e9e8;--gold:#a8802f;--gold-tint:#f6efdf;--rule:#e7e4dd;--shadow:0 1px 2px #17191c0d, 0 10px 30px #17191c12;--serif:"Bodoni Moda", "Didot", "Bodoni MT", "Playfair Display", Georgia, serif;--sans:"Segoe UI", "Avenir Next", "Helvetica Neue", system-ui, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#141517;--card:#1c1e21;--ink:#eceae5;--soft:#a8a9ab;--faint:#77797d;--accent:#e05560;--accent-deep:#ef7a83;--accent-tint:#33191c;--gold:#d5a64b;--gold-tint:#2e2510;--rule:#2b2d31;--shadow:0 1px 2px #00000059, 0 10px 30px #0000004d}}:root[data-theme=dark]{--paper:#141517;--card:#1c1e21;--ink:#eceae5;--soft:#a8a9ab;--faint:#77797d;--accent:#e05560;--accent-deep:#ef7a83;--accent-tint:#33191c;--gold:#d5a64b;--gold-tint:#2e2510;--rule:#2b2d31;--shadow:0 1px 2px #00000059, 0 10px 30px #0000004d}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16.5px;line-height:1.65;overflow-x:clip}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--accent-deep)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}img{max-width:100%}.wrap{max-width:1100px;margin:0 auto;padding:0 28px}.rv{opacity:1;transform:none}@media (prefers-reduced-motion:no-preference){.rv{opacity:0;transition:opacity .8s cubic-bezier(.19,1,.22,1),transform .8s cubic-bezier(.19,1,.22,1);transform:translateY(22px)}.rv.in{opacity:1;transform:none}.rv2{transition-delay:.1s}.rv3{transition-delay:.2s}.rv4{transition-delay:.3s}}nav.site-nav{z-index:30;background:color-mix(in srgb, var(--paper) 90%, transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--rule);position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;max-width:1100px;margin:0 auto;padding:15px 28px;display:flex}.nav-name{font-family:var(--serif);letter-spacing:.02em;color:var(--ink);font-size:1.2rem;font-weight:600;text-decoration:none}.nav-links{gap:26px;display:flex}.nav-links a{letter-spacing:.14em;text-transform:uppercase;color:var(--soft);padding-bottom:3px;font-size:.78rem;text-decoration:none;position:relative}.nav-links a:after{content:"";background:var(--accent);width:0;height:1px;transition:width .3s cubic-bezier(.19,1,.22,1);position:absolute;bottom:0;left:0}.nav-links a:hover{color:var(--ink)}.nav-links a:hover:after{width:100%}@media (width<=760px){.nav-links{gap:13px}.nav-links a{letter-spacing:.08em;font-size:.66rem}}.hero{padding:clamp(56px,9vh,100px) 0 0}.hero-grid{grid-template-columns:1.35fr .75fr;align-items:center;gap:clamp(36px,6vw,80px);display:grid}@media (width<=820px){.hero-grid{grid-template-columns:1fr}.hero-photo-wrap{max-width:300px}}.eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--soft);margin:0 0 22px;font-size:.74rem}.eyebrow b{color:var(--accent);font-weight:600}h1{font-family:var(--serif);letter-spacing:-.005em;text-wrap:balance;margin:0 0 16px;font-size:clamp(2.6rem,6vw,4.4rem);font-weight:500;line-height:1.05}.hero-role{font-family:var(--serif);color:var(--ink);margin:0 0 20px;font-size:clamp(1.1rem,2vw,1.4rem);font-style:italic}.hero-sub{color:var(--soft);max-width:34em;margin:0 0 32px;font-size:1.05rem}.hero-sub a{color:var(--ink)}.cta-row{flex-wrap:wrap;gap:14px;display:flex}.btn{letter-spacing:.12em;text-transform:uppercase;padding:13px 26px;font-size:.8rem;text-decoration:none;transition:all .2s;display:inline-block}.btn-solid{background:var(--ink);color:var(--paper)}.btn-solid:hover{background:var(--accent);color:#fff}.btn-ghost{color:var(--ink);border-bottom:1px solid var(--accent);padding:13px 4px}.btn-ghost:hover{color:var(--accent)}.hero-photo-wrap{position:relative}.hero-photo{filter:grayscale()contrast(1.05);border:1px solid var(--rule);width:100%;height:auto;box-shadow:var(--shadow);display:block}.hero-photo-wrap:before{content:"";border:1px solid var(--accent);z-index:-1;position:absolute;inset:14px -14px -14px 14px}.photo-cap{letter-spacing:.2em;text-transform:uppercase;color:var(--faint);text-align:right;margin-top:16px;font-size:.66rem}section.block{padding:clamp(72px,11vh,120px) 0 0}.sec-kicker{letter-spacing:.26em;text-transform:uppercase;color:var(--accent);margin:0 0 12px;font-size:.7rem}h2{font-family:var(--serif);letter-spacing:-.005em;margin:0;font-size:clamp(1.8rem,3.6vw,2.7rem);font-weight:500}.sec-note{color:var(--soft);max-width:46em;margin:12px 0 42px}.cases{grid-template-columns:repeat(2,1fr);gap:22px;display:grid}@media (width<=900px){.cases{grid-template-columns:1fr}}.case{background:var(--card);border:1px solid var(--rule);box-shadow:var(--shadow);flex-direction:column;gap:15px;padding:30px 28px 26px;transition:transform .35s cubic-bezier(.19,1,.22,1),border-color .35s;display:flex}.case:hover{border-color:var(--accent);transform:translateY(-5px)}.case-no{font-family:var(--serif);color:#0000;-webkit-text-stroke:1px var(--faint);font-size:2rem;line-height:1}.case h3{font-family:var(--serif);margin:0;font-size:1.42rem;font-weight:500;line-height:1.2}.case .domain{letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-size:.72rem}.case p.desc{color:var(--soft);flex-grow:1;margin:0;font-size:.95rem}.mini-stats{border-top:1px solid var(--rule);gap:18px;padding-top:14px;display:flex}.mini-stats div b{font-family:var(--serif);font-size:1.15rem;font-weight:500;line-height:1.2;display:block}.mini-stats div span{letter-spacing:.16em;text-transform:uppercase;color:var(--faint);font-size:.62rem}.case-links{letter-spacing:.12em;text-transform:uppercase;gap:20px;font-size:.76rem;display:flex}.case-links a{border-bottom:1px solid var(--accent);color:var(--ink);padding-bottom:2px;text-decoration:none}.case-links a:hover{color:var(--accent)}.book-grid{grid-template-columns:250px 1fr;align-items:center;gap:clamp(34px,5vw,60px);display:grid}@media (width<=720px){.book-grid{grid-template-columns:1fr}}.book-cover-img{width:100%;max-width:250px;box-shadow:var(--shadow);transition:transform .35s cubic-bezier(.19,1,.22,1);display:block}a:hover>.book-cover-img{transform:rotate(-1.5deg)translateY(-4px)}.book-copy h3{font-family:var(--serif);margin:0 0 14px;font-size:1.6rem;font-weight:500}.book-copy p{color:var(--soft);max-width:42em;margin:0 0 26px}.figpanel{grid-template-columns:1.5fr 1fr;align-items:start;gap:22px;margin:0 0 48px;display:grid}@media (width<=880px){.figpanel{grid-template-columns:1fr}}.figure{background:var(--card);border:1px solid var(--rule);box-shadow:var(--shadow);margin:0;padding:24px 24px 18px}.figure h5{letter-spacing:.01em;margin:0 0 2px;font-size:.94rem;font-weight:600}.figure .fig-sub{color:var(--faint);margin:0 0 14px;font-size:.78rem}.figure svg{width:100%;height:auto;display:block}.figure figcaption{border-top:1px solid var(--rule);color:var(--faint);margin-top:12px;padding-top:10px;font-size:.74rem}.figure figcaption b{color:var(--accent);font-weight:600}.viztip{z-index:60;pointer-events:none;opacity:0;background:var(--ink);color:var(--paper);white-space:normal;width:max-content;max-width:min(340px,78vw);box-shadow:var(--shadow);border-radius:3px;padding:7px 11px;font-size:.76rem;transition:opacity .12s;position:fixed;transform:translate(-50%,calc(-100% - 10px))}.viztip.show{opacity:1}.viztip small{opacity:.7;font-size:.68rem;display:block}.filters{flex-wrap:wrap;gap:8px;margin-bottom:38px;display:flex}.filter{letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border:1px solid var(--rule);color:var(--soft);background:0 0;padding:9px 18px;font-family:inherit;font-size:.72rem;transition:all .18s}.filter:hover{border-color:var(--accent);color:var(--accent)}.filter.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}.pub{border-top:1px solid var(--rule);grid-template-columns:84px 1fr;gap:clamp(20px,3.5vw,40px);padding:28px 0;scroll-margin-top:76px;display:grid}.pub:last-of-type{border-bottom:1px solid var(--rule)}.pub[hidden]{display:none}.pub.flash{animation:1.8s pub-flash}@keyframes pub-flash{0%,30%{background:color-mix(in srgb, var(--accent) 9%, transparent)}to{background:0 0}}.pub-year{font-family:var(--serif);color:#0000;-webkit-text-stroke:1px var(--faint);font-size:1.5rem;line-height:1.2}.pub h4{font-family:var(--serif);margin:0 0 7px;font-size:1.22rem;font-weight:500;line-height:1.32}.pub-venue{color:var(--soft);margin:0 0 3px;font-size:.93rem;font-style:italic}.pub-authors{color:var(--faint);letter-spacing:.02em;margin:0 0 12px;font-size:.8rem}.badge-award{letter-spacing:.16em;text-transform:uppercase;color:var(--gold);border:1px solid var(--gold);margin-bottom:12px;padding:4px 11px;font-size:.64rem;font-weight:600;display:inline-block}.pub details{margin:2px 0 8px}.pub summary{cursor:pointer;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-size:.72rem;list-style:none}.pub summary::-webkit-details-marker{display:none}.pub summary:after{content:" +"}.pub details[open] summary:after{content:" −"}.pub details p{color:var(--soft);max-width:58em;margin:10px 0 0;font-size:.94rem}.pub-links{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.link-btn{letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--rule);color:var(--soft);padding:5px 13px;font-size:.68rem;text-decoration:none}.link-btn:hover{border-color:var(--accent);color:var(--accent)}.viz-grid{grid-template-columns:repeat(3,1fr);gap:22px;display:grid}@media (width<=900px){.viz-grid{grid-template-columns:1fr 1fr}}@media (width<=640px){.viz-grid{grid-template-columns:1fr}}.viz-card{background:var(--card);border:1px solid var(--rule);box-shadow:var(--shadow);flex-direction:column;transition:transform .35s cubic-bezier(.19,1,.22,1),border-color .35s;display:flex}.viz-card:hover{border-color:var(--accent);transform:translateY(-5px)}.viz-img{aspect-ratio:16/10;border-bottom:1px solid var(--rule);background:var(--accent-tint);overflow:hidden}.viz-img img{object-fit:cover;width:100%;height:100%;display:block}.viz-img img.contain{object-fit:contain;padding:10px}.viz-body{flex-direction:column;flex-grow:1;gap:10px;padding:20px 22px 22px;display:flex}.viz-body h3{font-family:var(--serif);margin:0;font-size:1.12rem;font-weight:500;line-height:1.3}.viz-body p{color:var(--soft);flex-grow:1;margin:0;font-size:.86rem}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{letter-spacing:.06em;color:var(--soft);background:var(--accent-tint);padding:3px 9px;font-size:.66rem}.viz-body>a{letter-spacing:.12em;text-transform:uppercase;color:var(--ink);border-bottom:1px solid var(--accent);align-self:flex-start;padding-bottom:2px;font-size:.72rem;text-decoration:none}.viz-body>a:hover{color:var(--accent)}.about-grid{grid-template-columns:1fr 1fr;gap:22px;display:grid}@media (width<=760px){.about-grid{grid-template-columns:1fr}}.about-card{border:1px solid var(--rule);background:var(--card);box-shadow:var(--shadow);padding:28px}.about-card h3{font-family:var(--serif);margin:0 0 18px;font-size:1.3rem;font-weight:500}.edu-item{border-top:1px solid var(--rule);grid-template-columns:56px 1fr;gap:16px;padding:12px 0;display:grid}.edu-year{font-family:var(--serif);color:#0000;-webkit-text-stroke:1px var(--faint);font-size:1.05rem}.edu-item b{font-size:.95rem;display:block}.edu-item span{color:var(--soft);font-size:.84rem}.award-item{border-top:1px solid var(--rule);padding:12px 0}.award-item b{color:var(--gold);font-size:.95rem;display:block}.award-item span{color:var(--soft);font-size:.84rem}.role-item{border-top:1px solid var(--rule);padding:12px 0}.role-item b{font-size:.95rem;display:block}.role-item b a{color:var(--ink);border-bottom:1px solid var(--accent);padding-bottom:1px;text-decoration:none}.role-item b a:hover{color:var(--accent)}.role-item span{color:var(--soft);font-size:.84rem;display:block}footer.site-foot{border-top:1px solid var(--rule);margin-top:clamp(80px,12vh,130px);padding:46px 0 60px}.foot{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:22px;display:flex}.foot-name{font-family:var(--serif);font-size:1.3rem;font-weight:600}.foot-links{letter-spacing:.12em;text-transform:uppercase;flex-wrap:wrap;gap:22px;font-size:.76rem;display:flex}.foot-links a{color:var(--soft);text-decoration:none}.foot-links a:hover{color:var(--accent)}.colophon{color:var(--faint);max-width:54em;margin-top:20px;font-size:.78rem}.colophon a{color:var(--soft)}
