:root{--bg:#fff;--ink:#111;--accent:#e5262f;--u:58px;--s:1;--lh:90px;--hw:120%;--hx:50%;--hy:50%}
*{box-sizing:border-box;margin:0}
body{font-family:var(--fb,Arial,sans-serif);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
a{color:inherit}
header.site{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:18px clamp(12px,3vw,40px)}
header.site nav a{font:700 13px var(--fh);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;margin-right:24px;padding-bottom:3px;border-bottom:2px solid transparent}
header.site nav a:hover,header.site nav a.on{border-color:var(--accent)}
header.site span{display:block}
header.site.h-left{grid-template-columns:auto 1fr}header.site.h-left .logo{order:-1;margin-right:40px}header.site.h-left nav{justify-self:end}header.site.h-left span{display:none}
header.site.h-stacked{grid-template-columns:1fr;justify-items:center;text-align:center}header.site.h-stacked .logo{order:-1}header.site.h-stacked nav a{margin:0 12px}header.site.h-stacked span{display:none}
/* logo with hover swap */
.logo{position:relative;display:inline-block;line-height:0}
.logo .n{height:var(--lh);width:auto;display:block;transition:opacity .2s}
.logo .h{position:absolute;width:var(--hw);left:var(--hx);top:var(--hy);transform:translate(-50%,-50%) scale(.9) rotate(-2deg);opacity:0;pointer-events:none;z-index:5;transition:opacity .2s,transform .4s cubic-bezier(.3,1.7,.5,1)}
.logo.swap:hover .h{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(-2deg)}.logo.swap:hover .n{opacity:0}
.page{max-width:1400px;margin:0 auto;padding:0 clamp(12px,3vw,40px)}
.grid{display:grid;grid-template-columns:repeat(24,1fr);grid-auto-rows:var(--u);width:100%}
.blk{position:relative;overflow:hidden;min-width:0;min-height:0}
.blk.text{overflow:visible;display:flex}.blk.text>a{display:block;text-decoration:none;color:inherit;width:100%}
.tx{white-space:pre-wrap;overflow-wrap:anywhere;width:100%}
.tx.btn{width:auto;display:inline-block;border:1.5px solid currentColor;border-radius:40px;padding:.55em 1.4em}
.blk.image>a{display:block;height:100%}.blk img,.blk video,.blk iframe{width:100%;height:100%;object-fit:cover;display:block;border:0}
.cap{position:absolute;left:0;right:0;bottom:0;padding:24px 12px 10px;color:#fff;font:600 12px var(--fh);letter-spacing:.14em;text-transform:uppercase;background:linear-gradient(transparent,#0008)}
.ph{height:100%;display:flex;align-items:center;justify-content:center;background:#f1f1f1;color:#999;font:600 13px Arial;text-align:center;padding:10px}
.gal{display:grid;gap:var(--g);height:100%}.gal img{min-width:0;min-height:0;object-fit:var(--fit)}
.gal.grid{grid-template-columns:repeat(var(--c),1fr);grid-template-rows:repeat(var(--r),1fr)}
.gal.mosaic{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr)}.gal.mosaic img:first-child{grid-column:span 2;grid-row:span 2}
.gal.strip{display:flex;overflow-x:auto}.gal.strip img{width:auto;flex:none}
.gal.slideshow{display:block;position:relative}.gal.slideshow img{position:absolute;inset:0;opacity:0;transition:opacity 1s}.gal.slideshow img.on{opacity:1}
.proj{display:grid;grid-template-columns:repeat(var(--c),1fr);gap:var(--g);height:100%;align-content:start}
.card{text-decoration:none;display:block}.card img{aspect-ratio:4/5;height:auto}.card span{display:block;margin-top:8px;font:700 13px var(--fh);letter-spacing:.1em;text-transform:uppercase}
.card:hover img{opacity:.85}
.page.mob .grid{display:flex;flex-direction:column;gap:14px}.page.mob .blk{width:100%;height:auto;aspect-ratio:var(--ar)}
.page.mob .blk.image.compact{width:clamp(32px,var(--mobile-width),96px);margin-left:min(var(--mobile-left),calc(100% - clamp(32px,var(--mobile-width),96px)));flex-shrink:0}
.page.mob .blk.text,.page.mob .blk.projects{aspect-ratio:auto}.page.mob .proj{grid-template-columns:repeat(2,1fr)}
footer.site{padding:40px clamp(12px,3vw,40px);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:12px;color:#777;letter-spacing:.1em;text-transform:uppercase}
footer.site a{margin-left:18px;text-decoration:none}footer.site a:hover{color:var(--accent)}
#lb{position:fixed;inset:0;background:#fffe;display:none;align-items:center;justify-content:center;z-index:99;cursor:zoom-out}#lb.on{display:flex}#lb img{max-width:94vw;max-height:94vh}
.intro{height:100vh;height:100svh;position:relative;overflow:hidden;background:#111;color:#fff;display:flex;align-items:center;justify-content:center;text-align:center}
.intro video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.intro > .logo{position:absolute;left:max(20px,env(safe-area-inset-left));bottom:max(20px,env(safe-area-inset-bottom));z-index:1}
.intro .mid{position:relative;transform:translateY(32px)}.tagl{margin-top:14px;font:600 14px var(--fh);letter-spacing:.22em;text-transform:uppercase}
.enter{display:inline-block;margin-top:26px;padding:10px 28px;border:1.5px solid #fff;border-radius:30px;text-decoration:none;font:700 14px var(--fh)}.enter:hover{background:#fff;color:#000}
.soc{margin-top:22px;font-size:12px;letter-spacing:.16em;text-transform:uppercase}.soc a{margin:0 10px;text-decoration:none}
@media(max-width:700px){header.site,header.site.h-left{grid-template-columns:1fr;justify-items:center;text-align:center}header.site .logo{order:-1;margin:0 0 10px}header.site nav a{margin:0 9px}header.site span{display:none}header.site .logo .n{height:min(var(--lh),64px)}}

/* Extra breathing room after the project research statement on mobile. */
.page.mob .blk[data-id="bmvsklrd863"]{margin-top:20px}

/* Keep the enlarged About graphics proportional on mobile. */
.page.mob .blk.image[data-id="bmvsu1uuh366"]{width:clamp(64px,20.8333%,160px);margin-left:4.1667%;flex-shrink:0}
.page.mob .blk.image[data-id="bmvsub1cx371"]{width:clamp(56px,16.6667%,128px)}
