@font-face{font-family:Plex;src:url('assets/fonts/IBMPlexSans.woff2') format('woff2');font-weight:100 900;font-display:swap}@font-face{font-family:Display;src:url('assets/fonts/IBMPlexSansCondensed-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
:root{--paper:#dfe5e8;--ink:#162938;--muted:#516170;--rule:#aab8c1;--gutter:clamp(24px,4vw,80px)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 Plex,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:5px}img{display:block;max-width:100%}h1,p{margin:0}h1{font:500 clamp(44px,4.5vw,76px)/1.03 Display,sans-serif;letter-spacing:-.035em}header,main,footer{max-width:1960px;margin:auto;padding-inline:var(--gutter)}header{display:flex;justify-content:space-between;align-items:center;min-height:100px;border-bottom:1px solid var(--rule);gap:24px}.brand{font:500 26px/1 Display,sans-serif}nav{display:flex;gap:32px}nav a{display:flex;min-height:44px;align-items:center}nav a[aria-current]{text-decoration:underline;text-underline-offset:8px}main{min-height:calc(100svh - 160px)}.exhibition{display:grid;grid-template-columns:clamp(190px,16vw,260px) minmax(0,1fr) 68px;gap:clamp(32px,4vw,80px);align-items:center;padding-block:36px}.identity{align-self:center}.identity>img{width:160px;height:160px;margin-bottom:26px}.eyebrow{color:var(--muted);font-size:14px;margin-bottom:12px}.identity h1{font-size:clamp(42px,3.4vw,62px)}.text-link{display:inline-flex;gap:40px;align-items:center;min-height:44px;border-bottom:1px solid var(--ink);margin-top:36px;font-size:15px}.stage-wrap{width:min(100%,clamp(400px,calc(100svh - 250px),960px));justify-self:center}.stage{width:100%;height:clamp(400px,calc(100svh - 250px),960px);padding:0;display:flex;align-items:center;justify-content:center}.stage img{width:100%;height:100%;object-fit:contain}.stage-controls{display:flex;justify-content:space-between;align-items:center;font-size:14px;min-height:52px;color:var(--muted)}.stage-controls div{display:flex;gap:12px}.stage-controls button{font-size:24px;width:44px;height:44px;color:var(--ink)}.contact-strip{display:flex;flex-direction:column;gap:14px;max-height:650px;overflow:auto;scrollbar-width:thin;padding:6px}.contact-strip button{padding:0;flex:none;width:56px;height:66px;display:flex;justify-content:center;align-items:center;opacity:.85}.contact-strip img{max-height:100%;width:auto;height:auto}.contact-strip button[aria-pressed=true]{opacity:1;outline:1px solid var(--ink);outline-offset:4px}.contact-strip button:hover{opacity:1}footer{font-size:13px;color:var(--muted);padding-block:18px;border-top:1px solid var(--rule)}[hidden]{display:none!important}.portfolio{padding-block:36px 72px}.portfolio-top{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:32px}.portfolio h1{font-size:clamp(40px,4vw,64px)}.filters{display:flex;flex-wrap:wrap;gap:6px 24px}.filters button{padding:0;min-height:44px;font-size:15px;color:var(--muted)}.filters button[aria-pressed=true]{color:var(--ink);text-decoration:underline;text-underline-offset:8px}.gallery{display:flex;flex-wrap:wrap;gap:28px 18px;align-items:start}.tile{padding:0;display:block;text-align:left}.tile img{width:100%;height:auto}.tile:hover{outline:1px solid var(--rule);outline-offset:5px}.info{max-width:1160px;margin:auto;padding-block:clamp(48px,10vh,130px);display:grid;grid-template-columns:1fr 1fr;gap:72px}.info-copy{border-top:1px solid var(--rule);padding-top:24px}.lead{font-size:clamp(24px,2vw,34px);line-height:1.4;margin-bottom:24px}.info-copy>p:not(.lead){color:var(--muted);max-width:36ch}.sr{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip{position:fixed;top:-80px;z-index:20;background:var(--ink);color:white;padding:12px}.skip:focus{top:8px}dialog{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:72px 64px;background:#14232d;color:#f4f6f7;border:0}dialog[open]{display:flex;align-items:center;justify-content:center}dialog::backdrop{background:#14232d}#large-photo{width:100%;height:100%;object-fit:contain}.viewer-toolbar{position:absolute;top:14px;left:24px;right:24px;display:flex;align-items:center;justify-content:space-between}.viewer-toolbar a,.viewer-toolbar button{min-height:44px;display:flex;align-items:center}.viewer-controls{position:absolute;bottom:10px;left:24px;right:24px;display:flex;justify-content:space-between;align-items:center;font-size:14px}.viewer-controls button{width:52px;height:44px;font-size:24px}#viewer-status{position:absolute;max-width:30ch;text-align:center}#viewer-label{padding-inline:16px;text-align:center}
@media(max-width:1050px){.exhibition{grid-template-columns:170px minmax(0,1fr) 58px;gap:24px}.identity>img{width:130px;height:130px}.identity h1{font-size:40px}.contact-strip button{width:46px;height:60px}.portfolio-top{align-items:start;flex-direction:column;gap:16px}.info{gap:40px}}
@media(max-width:700px){header{min-height:104px;padding-top:20px;padding-bottom:8px;display:block}.brand{font-size:24px}nav{gap:28px;margin-top:8px;font-size:14px}main{min-height:calc(100svh - 160px)}.exhibition{grid-template-columns:1fr;padding-top:24px;gap:20px}.identity{display:flex;gap:18px;align-items:center}.identity>img{width:76px;height:76px;margin:0}.identity h1{font-size:28px;line-height:1.1}.identity h1 br{display:none}.identity .eyebrow{font-size:12px;margin-bottom:8px}.identity .text-link{display:none}.stage{height:clamp(320px,48svh,480px)}.stage-controls{min-height:44px}.contact-strip{flex-direction:row;max-height:none;gap:14px;overflow-x:auto;padding:6px;margin-top:-8px}.contact-strip button{width:48px;height:62px}.portfolio{padding-block:24px 40px}.portfolio-top{margin-bottom:24px;gap:12px}.filters{gap:0 18px}.filters button{font-size:13px;min-height:40px}.gallery{gap:24px}.info{display:block;padding-top:40px}.info-copy{margin-top:32px}.info h1{font-size:52px}dialog{padding:72px 16px 86px}.viewer-controls{left:8px;right:8px;font-size:12px}.viewer-toolbar{left:16px;right:16px}.viewer-toolbar button,.viewer-toolbar a{font-size:14px}.viewer-controls span{max-width:70%}footer{margin-top:0}}
@media(prefers-reduced-motion:no-preference){.contact-strip button{transition:opacity .15s}}

/* Reference study: a photographic spread, not a row of equally sized objects. */
:root{--paper:#f2f1ed;--ink:#232728;--muted:#626866;--rule:#c5c9c4}
header{min-height:88px;border-bottom:0}.exhibition{display:block;max-width:1600px;margin:auto;padding-top:12px}.identity{display:flex;align-items:center;gap:18px;margin-bottom:32px}.identity>img{width:64px;height:64px;margin:0}.identity h1{font-size:26px;letter-spacing:-.015em}.identity h1 br{display:none}.identity .eyebrow{font-size:13px;margin:0 0 3px}.identity .text-link{margin:0 0 0 auto;border:0;font-size:14px}.stage-wrap{width:100%;max-width:1380px;margin:auto}.pair{display:grid;grid-template-columns:var(--first-ratio,.8fr) var(--second-ratio,1fr);gap:clamp(24px,3vw,64px);align-items:center}.stage,.second-stage{width:100%;height:clamp(400px,calc(100svh - 310px),850px);padding:0;display:flex;align-items:center;justify-content:center}.second-stage img{width:100%;height:100%;object-fit:contain}.stage-controls{padding-top:8px}.contact-strip{flex-direction:row;max-height:none;gap:20px;padding:8px 6px;overflow-x:auto;max-width:1380px;margin:22px auto 0;scrollbar-width:thin}.contact-strip button{width:66px;height:80px;opacity:1}.contact-strip button[aria-pressed=true]{outline-color:var(--ink)}footer{border-top:0}.portfolio-top{margin-bottom:20px}.view-switch{display:flex;justify-content:flex-end;gap:18px;margin-bottom:28px}.view-switch button{min-height:44px;padding:0;color:var(--muted);font-size:14px}.view-switch button[aria-pressed=true]{color:var(--ink);text-decoration:underline;text-underline-offset:6px}.gallery.overview{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:28px 24px}.gallery.overview .tile{width:100%!important;height:220px;display:flex;align-items:center;justify-content:center}.gallery.overview img{width:100%;height:100%;object-fit:contain}
@media(max-width:1100px){.gallery.overview{grid-template-columns:repeat(4,minmax(0,1fr))}.gallery.overview .tile{height:200px}}
@media(max-width:700px){:root{--gutter:24px}header{min-height:104px;border-bottom:1px solid var(--rule)}.exhibition{padding-top:24px}.identity{gap:14px;margin-bottom:24px}.identity>img{width:56px;height:56px}.identity h1{font-size:24px}.identity .eyebrow{font-size:12px}.identity .text-link{display:none}.pair{grid-template-columns:1fr;gap:24px}.stage,.second-stage{height:auto}.stage img,.second-stage img{width:100%;height:auto;object-fit:contain}.stage-controls{margin-top:8px}.contact-strip{gap:16px;margin-top:18px}.contact-strip button{width:52px;height:64px}.view-switch{justify-content:flex-start;margin-bottom:20px}.gallery.overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 18px}.gallery.overview .tile{height:210px}.portfolio h1{font-size:42px}.info-copy{margin-top:32px}}
@media(max-width:700px){.stage-wrap{display:grid}.pair{display:contents}.stage{order:1}.stage-controls{order:2;margin-block:8px 16px}.second-stage{order:3}}

.biography>p:not(.lead){max-width:48ch;color:var(--ink);line-height:1.7;margin-bottom:20px}.biography .text-link{margin-top:12px}

/* A single author introduction: portrait and heading share the same composition. */
.info{max-width:1060px;grid-template-columns:320px minmax(0,1fr);gap:64px;align-items:center;min-height:calc(100svh - 170px);padding-block:64px}
.bio-portrait{margin:0;align-self:center}.bio-portrait img{width:100%;height:auto}
.info .biography{border:0;padding:0;margin:0}.biography h1{font-size:64px;margin-bottom:28px}.biography .lead{font-size:26px;line-height:1.4;margin-bottom:22px}.biography>p:not(.lead){font-size:18px;line-height:1.65;max-width:50ch;margin-bottom:20px}.biography .text-link{margin-top:12px}
@media(max-width:1050px) and (min-width:701px){.info{grid-template-columns:240px minmax(0,1fr);gap:40px}.biography h1{font-size:52px}.biography>p:not(.lead){font-size:17px}}
@media(max-width:700px){.info{display:grid;grid-template-columns:104px minmax(0,1fr);gap:24px 20px;min-height:0;padding-block:32px 48px;align-items:center}.bio-portrait{grid-column:1;grid-row:1}.info .biography{display:contents}.biography h1{grid-column:2;grid-row:1;font-size:44px;margin:0}.biography>p,.biography>.text-link{grid-column:1/-1}.biography .lead{font-size:23px;margin:4px 0 0}.biography>p:not(.lead){font-size:16px;margin:0;line-height:1.65}.biography .text-link{justify-self:start;margin-top:0}}

.author-home{max-width:1380px;grid-template-columns:minmax(280px,440px) minmax(0,650px);gap:clamp(48px,5vw,96px);padding-block:72px}.author-home .biography h1{font-size:clamp(52px,4.5vw,78px);line-height:1.08;margin-bottom:32px}.author-home .biography>p{font-size:20px;line-height:1.65;max-width:47ch}.author-home .bio-portrait{align-self:center}.author-home .biography .text-link{margin-top:20px;font-size:16px}
@keyframes enter-page{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes enter-portrait{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(prefers-reduced-motion:no-preference){.page.is-entering .bio-portrait{animation:enter-portrait .8s cubic-bezier(.2,.7,.2,1) both}.page.is-entering .biography h1{animation:enter-page .65s .08s ease-out both}.page.is-entering .biography>p{animation:enter-page .65s .16s ease-out both}.page.is-entering .biography>p+p{animation-delay:.24s}.page.is-entering .biography .text-link{animation:enter-page .55s .32s ease-out both}.page.is-entering .pair{animation:enter-page .65s ease-out both}.page.is-entering .contact-strip{animation:enter-page .65s .12s ease-out both}.page.is-entering .portfolio-top{animation:enter-page .4s ease-out both}.text-link span{transition:transform .2s ease-out}.text-link:hover span{transform:translate(3px,-3px)}}
@media(max-width:1050px) and (min-width:701px){.author-home{grid-template-columns:280px minmax(0,1fr);gap:40px}.author-home .biography h1{font-size:52px}.author-home .biography>p{font-size:18px}}
@media(max-width:700px){.author-home{grid-template-columns:minmax(100px,35%) minmax(0,1fr);gap:28px 20px;padding-block:36px 48px}.author-home .biography h1{font-size:clamp(28px,7.8vw,36px);line-height:1.1;margin:0;letter-spacing:-.025em}.author-home .biography>p{font-size:17px;line-height:1.65}.author-home .biography .text-link{margin-top:0;font-size:15px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* A short, coordinated entrance; controls react faster than content. */
@media (prefers-reduced-motion:no-preference) {
 .page.is-entering .bio-portrait {animation-duration:480ms}
 .page.is-entering .biography h1 {animation-duration:360ms;animation-delay:40ms}
 .page.is-entering .biography>p {animation-duration:360ms;animation-delay:80ms}
 .page.is-entering .biography>p+p {animation-delay:120ms}
 .page.is-entering .biography .text-link {animation-duration:300ms;animation-delay:160ms}
 .page.is-entering .pair {animation-duration:380ms}
 .page.is-entering .contact-strip {animation-duration:300ms;animation-delay:80ms}
 button {transition:opacity 160ms ease-out,transform 160ms ease-out}
 .stage-controls button:active,.viewer-controls button:active,.filters button:active,.view-switch button:active {transform:scale(.94)}
 dialog[open]::backdrop {animation:backdrop-enter 200ms ease-out}
 @keyframes backdrop-enter {from{opacity:0}to{opacity:1}}
}
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
 .contact-strip button:hover {transform:translateY(-3px)}
 .tile:hover {opacity:.92}
}

.pricing{padding-block:clamp(40px,7vw,100px)}.pricing p{margin-top:32px;font-size:20px;color:var(--muted);max-width:40ch}
@media(max-width:700px){nav{gap:20px;flex-wrap:wrap}.pricing p{font-size:17px}}
@media(prefers-reduced-motion:no-preference){.pricing.is-entering{animation:enter-page 300ms ease-out both}}

/* Center the thumbnail sequence; auto margins preserve scroll access on narrow screens. */
.contact-strip{justify-content:flex-start}.contact-strip button:first-child{margin-inline-start:auto}.contact-strip button:last-child{margin-inline-end:auto}

.pricing-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,7vw,120px);margin-top:56px;max-width:1320px}
.pricing h2{font-weight:500;font-size:22px;line-height:1.4;margin:0}
.pricing-offer h2{font:500 clamp(30px,3vw,48px)/1.15 Display,sans-serif;letter-spacing:-.025em}
.pricing .pricing-amount{font:500 clamp(44px,4vw,64px)/1.1 Display,sans-serif;color:var(--ink);margin-top:32px;max-width:none}
.pricing-amount span{font:400 18px/1.5 Plex,sans-serif;color:var(--muted);white-space:nowrap}
.pricing-details ul{list-style:none;padding:0;margin:24px 0 40px}
.pricing-details li{padding:13px 0;border-bottom:1px solid var(--rule);font-size:18px}
.pricing-terms dl{margin-top:20px}.pricing-terms dl>div{display:flex;justify-content:space-between;gap:24px;padding:13px 0;border-bottom:1px solid var(--rule)}
.pricing-terms dt{color:var(--muted)}.pricing-terms dd{margin:0;text-align:right}
@media(max-width:700px){.pricing-layout{grid-template-columns:1fr;gap:40px;margin-top:36px}.pricing h2{font-size:20px}.pricing-offer h2{font-size:32px}.pricing-details li{font-size:17px}.pricing-terms dl>div{gap:16px}.pricing-terms dt,.pricing-terms dd{font-size:15px}}
.public-contacts{display:flex;gap:20px;margin-top:24px}.pricing-terms{max-width:900px;margin:40px auto}.pricing-details p{white-space:pre-line}#inquiry-dialog{max-width:560px;width:calc(100% - 32px);padding:24px;border:1px solid #c5c9c4;background:#f2f1ed}#inquiry-form label{display:block;margin:14px 0}#inquiry-form input:not([type=checkbox]),#inquiry-form select,#inquiry-form textarea{display:block;width:100%;padding:12px;box-sizing:border-box}#inquiry-form button{padding:12px}.honeypot{position:absolute;left:-9999px}
