/* Gallery Wall. Layout: an exhibition catalogue. Full-bleed opening plate,
   large serif titles, plates hung asymmetrically on a 12-column wall,
   series as a large text index. Everything works without JavaScript;
   motion is added only when the browser and the visitor allow it. */

@font-face{font-family:"Bodoni Moda";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/bodoni-moda-latin-400-normal.woff2) format("woff2"),url(/fonts/bodoni-moda-latin-400-normal.woff) format("woff")}
@font-face{font-family:"Bodoni Moda";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/bodoni-moda-latin-400-italic.woff2) format("woff2"),url(/fonts/bodoni-moda-latin-400-italic.woff) format("woff")}
@font-face{font-family:"Bodoni Moda";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/bodoni-moda-latin-500-normal.woff2) format("woff2"),url(/fonts/bodoni-moda-latin-500-normal.woff) format("woff")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/hanken-grotesk-latin-400-normal.woff2) format("woff2"),url(/fonts/hanken-grotesk-latin-400-normal.woff) format("woff")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/hanken-grotesk-latin-500-normal.woff2) format("woff2"),url(/fonts/hanken-grotesk-latin-500-normal.woff) format("woff")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/hanken-grotesk-latin-600-normal.woff2) format("woff2"),url(/fonts/hanken-grotesk-latin-600-normal.woff) format("woff")}

:root{
  --paper:#EFEEEB;  /* pale stone */
  --ink:#0E0E0E;
  --stone:#6F6F6B;  /* captions; dark enough for AA contrast on paper */
  --rule:#CFCECA;
  --display:"Bodoni Moda",Didot,"Bodoni 72","Times New Roman",serif;
  --body:"Hanken Grotesk","Helvetica Neue",Helvetica,Arial,sans-serif;
  --gut:16px;
  color-scheme:light;
}
@media (min-width:900px){:root{--gut:40px}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:#EFEEEB;background:var(--paper);color:#0E0E0E;color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.6;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
picture{display:block}
a{color:inherit}
:focus-visible{outline:1px solid var(--ink);outline-offset:3px}
.skip{position:absolute;left:-9999px;top:0;z-index:30;background:var(--ink);color:var(--paper);padding:10px 14px}
.skip:focus{left:var(--gut)}
.wrap{padding-left:var(--gut);padding-right:var(--gut);padding-left:max(var(--gut),env(safe-area-inset-left,0px));padding-right:max(var(--gut),env(safe-area-inset-right,0px))}
.label{font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;margin:0}
.muted{color:var(--stone)}
h1,h2,h3{font-weight:400;margin:0}

/* Header: fixed over the opening photo. mix-blend-mode keeps it legible on any image;
   browsers without it get a solid, readable bar instead. */
.top{position:fixed;top:0;left:0;right:0;z-index:6;color:#fff;mix-blend-mode:difference;pointer-events:none;padding-top:env(safe-area-inset-top,0px)}
@supports not (mix-blend-mode:difference){.top{color:var(--ink);background:var(--paper)}}
.bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:22px;padding-bottom:22px}
.bar a{pointer-events:auto}
.name{text-decoration:none;font-family:var(--display);font-size:20px;letter-spacing:.02em;white-space:nowrap}
/* Home page: the small name waits until the big title has scrolled away (set by site.js) */
.name i{display:inline-block}
.name-wait .name{opacity:0;visibility:hidden;transform:translateY(-10px);pointer-events:none}
.name-wait .name i{transform:translateY(-6px)}
.name-in .name{transition:opacity .7s cubic-bezier(.16,.8,.1,1),transform .9s cubic-bezier(.16,.8,.1,1),visibility 0s}
.name-in .name i{transition:transform 1.1s .08s cubic-bezier(.16,.8,.1,1)}
.name-wait.name-in .name{transition:opacity .35s,transform .35s,visibility 0s .35s}
.top ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:flex-end}
.top li+li{margin-left:26px}
.top nav a{text-decoration:none;font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;position:relative;display:inline-block;padding:6px 0}
.top nav a::after{content:"";position:absolute;left:0;bottom:2px;height:1px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s}
.top nav a:hover::after,.top nav a[aria-current="page"]::after{transform:scaleX(1)}
@media (max-width:520px){.top li+li{margin-left:14px}.name{font-size:17px}.top nav a{letter-spacing:.14em}}
@media (max-width:360px){.top li+li{margin-left:10px}.top nav a{letter-spacing:.08em;font-size:10px}}

/* Pages without an opening photo leave room for the header */
.pagehead{padding-top:clamp(120px,14vw,180px);padding-bottom:40px}
.pagehead .mega{margin-top:14px}
.notice p{max-width:44ch;margin:24px 0}

.mega{font-family:var(--display);font-weight:400;font-size:56px;font-size:clamp(52px,13vw,210px);line-height:.88;letter-spacing:-.03em;text-wrap:balance}
.mega i{font-style:italic}

/* Opening photo */
.hero{position:relative;height:70vh;height:min(88vh,62vw);min-height:420px;overflow:hidden;background:#222}
@supports (height:100svh){.hero{height:min(88svh,62vw)}}
@media (max-width:700px){.hero{height:78vh;height:78svh;min-height:480px}}
.hero-media,.hero-media picture,.hero .slices,.hero .sl{position:absolute;top:0;right:0;bottom:0;left:0}
.hero-media img,.hero .sl img{width:100%;height:100%;object-fit:cover}
.hero .over{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;justify-content:space-between;align-items:flex-end;gap:16px;padding-top:120px;padding-bottom:26px;color:#fff;background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.4))}
.hero .plate{font-size:11px;letter-spacing:.18em;text-transform:uppercase;text-align:right;flex:0 1 auto;max-width:22em}
@media (max-width:600px){.hero .over{flex-direction:column;align-items:flex-start}.hero .plate{text-align:left}}

.statement{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:24px;gap:24px;padding-top:clamp(64px,10vw,140px);padding-bottom:clamp(64px,10vw,140px)}
@media (min-width:900px){.statement{grid-template-columns:3fr 9fr}}
.statement p{font-family:var(--display);font-size:clamp(26px,3.4vw,48px);line-height:1.12;margin:0;max-width:22ch;letter-spacing:-.01em;text-wrap:balance}

/* Plates hung on a 12-column wall */
.hang{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-column-gap:clamp(12px,2vw,28px);grid-row-gap:clamp(48px,8vw,120px);column-gap:clamp(12px,2vw,28px);row-gap:clamp(48px,8vw,120px);padding-top:20px;padding-bottom:40px}
.plate-fig{margin:0;min-width:0;align-self:start}
.h0{grid-column:1/span 7}.h1{grid-column:9/span 4;margin-top:22%}.h2{grid-column:2/span 4}.h3{grid-column:7/span 6;margin-top:-6%}
.h4{grid-column:1/span 5;margin-top:8%}.h5{grid-column:7/span 5}.h6{grid-column:3/span 8}.h7{grid-column:1/span 4}.h8{grid-column:6/span 7;margin-top:14%}
@media (max-width:700px){.hang .plate-fig{grid-column:1/-1;margin-top:0}}
.plate-link{display:block;overflow:hidden;cursor:zoom-in}
.plate-link img{width:100%;transition:transform 1.1s cubic-bezier(.2,.7,.1,1)}
.plate-link:hover img{transform:scale(1.03)}
figcaption{display:flex;align-items:baseline;font-size:13px;margin-top:12px}
figcaption .no{font-family:var(--display);font-style:italic;color:var(--stone);font-size:15px;min-width:2.4em;margin-right:14px}
figcaption .t{font-family:var(--display);font-size:17px}
figcaption .m{color:var(--stone);font-size:12px;letter-spacing:.04em}

/* Series index */
.index-head{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--ink);padding-top:18px;padding-bottom:8px;margin-top:clamp(60px,9vw,120px)}
.index-head a{text-decoration:none}
.sindex{list-style:none;margin:0;padding:0}
.sindex li{border-bottom:1px solid var(--rule)}
.sindex a{display:grid;grid-template-columns:3em minmax(0,1fr) auto;align-items:baseline;grid-column-gap:16px;column-gap:16px;text-decoration:none;padding-top:clamp(14px,2.2vw,28px);padding-bottom:clamp(14px,2.2vw,28px)}
.sindex .n{font-family:var(--display);font-style:italic;color:var(--stone)}
.sindex .tt{font-family:var(--display);font-size:clamp(40px,7vw,110px);line-height:.95;letter-spacing:-.025em;transition:transform .5s cubic-bezier(.2,.7,.1,1);overflow-wrap:anywhere}
.sindex a:hover .tt,.sindex a:focus-visible .tt{transform:translateX(18px);font-style:italic}
.sindex .yr{font-size:12px;letter-spacing:.14em;color:var(--stone);text-align:right}
.sindex .bl{grid-column:2;color:var(--stone);max-width:60ch;margin-top:8px}
.sindex .cov{display:none}
@media (max-width:600px){.sindex a{grid-template-columns:2em minmax(0,1fr)}.sindex .yr{grid-column:2;text-align:left;margin-top:8px}}
/* Wide screens: each series has a thumbnail slot beside its title.
   With a mouse it is revealed on hover; on touch screens it is always shown. */
@media (min-width:900px){
  .sindex a{grid-template-columns:3em minmax(0,1fr) 240px 9em}
  .sindex .cov{display:block;grid-column:3;grid-row:1/span 2;align-self:center;width:240px;max-width:100%;aspect-ratio:4/3;overflow:hidden;background:var(--rule)}
  .sindex .cov picture,.sindex .cov img{width:100%;height:100%}
  .sindex .cov img{object-fit:cover}
  .sindex .yr{grid-column:4;grid-row:1}
}
@media (min-width:900px) and (hover:hover){
  .sindex .cov{background:transparent;-webkit-clip-path:inset(100% 0 0 0);clip-path:inset(100% 0 0 0);transition:clip-path .7s cubic-bezier(.16,.8,.1,1),-webkit-clip-path .7s cubic-bezier(.16,.8,.1,1)}
  .sindex .cov img{transform:scale(1.15);transition:transform 1s cubic-bezier(.16,.8,.1,1)}
  .sindex a:hover .cov,.sindex a:focus-visible .cov{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}
  .sindex a:hover .cov img,.sindex a:focus-visible .cov img{transform:scale(1)}
}

/* Series page */
.s-intro{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:28px;gap:28px;padding-top:clamp(56px,8vw,110px);padding-bottom:clamp(40px,6vw,80px)}
@media (min-width:900px){.s-intro{grid-template-columns:3fr 9fr}}
.s-intro .txt{font-family:var(--display);font-size:clamp(22px,2.4vw,32px);line-height:1.25;max-width:34ch;margin:0}
.pager{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--ink);margin-top:40px}
.pager a{text-decoration:none;padding-top:28px;padding-bottom:40px;display:flex;flex-direction:column}
.pager a .label{margin-bottom:6px}
.pager a:last-child{text-align:right;align-items:flex-end}
.pager .tt{font-family:var(--display);font-size:clamp(28px,4.5vw,64px);line-height:1;letter-spacing:-.02em}
.pager a:hover .tt{font-style:italic}

/* About: set like closing credits */
.credits{text-align:center;padding-top:clamp(120px,16vw,200px);padding-bottom:80px;display:flex;flex-direction:column;align-items:center}
.credits>*+*{margin-top:56px}
.credits>.mega{margin-top:14px;font-size:clamp(48px,9vw,140px)}
.credits .portrait{width:380px;max-width:70vw}
.credits .bio{font-family:var(--display);font-size:clamp(20px,2.2vw,28px);line-height:1.35;max-width:32ch}
.credits .bio p{margin:0 0 .8em}
.credits dl{margin-bottom:0}
.credits dl>div+div{margin-top:28px}
.credits dt{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--stone);margin-bottom:6px}
.credits dd{margin:0;font-family:var(--display);font-size:clamp(22px,2.6vw,34px);line-height:1.15}

/* Contact */
.contact{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:48px;gap:48px;padding-top:clamp(120px,14vw,180px);padding-bottom:80px}
@media (min-width:900px){.contact{grid-template-columns:5fr 7fr}}
.contact .mega{margin-top:14px;font-size:clamp(52px,9vw,140px)}
.contact p{max-width:40ch}
form{display:grid;grid-gap:28px;gap:28px;align-content:start}
.row2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:28px;gap:28px}
label{display:flex;flex-direction:column;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--stone);font-weight:500}
input,select,textarea{font-family:var(--display);font-size:22px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--ink);padding:6px 0 10px;border-radius:0;width:100%;letter-spacing:0;text-transform:none;margin-top:4px;-webkit-appearance:none;appearance:none}
select{background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 12px) 55%,calc(100% - 6px) 55%;background-size:6px 6px;background-repeat:no-repeat;padding-right:28px}
textarea{min-height:140px;resize:vertical;line-height:1.3}
input:focus,select:focus,textarea:focus{outline:none;border-bottom:2px solid var(--ink)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.cf-turnstile{min-height:65px;max-width:420px}
.send{justify-self:start;font-family:var(--body);font-size:11px;letter-spacing:.24em;text-transform:uppercase;font-weight:600;background:var(--ink);color:var(--paper);border:0;border-radius:0;padding:18px 34px;cursor:pointer;-webkit-appearance:none;appearance:none}
.send:hover{background:#333}
.send[disabled]{opacity:.5;cursor:wait}
.sent{font-family:var(--display);font-style:italic;font-size:18px;margin:0;min-height:1.4em}

.foot{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;padding-top:60px;padding-bottom:28px;padding-bottom:max(28px,env(safe-area-inset-bottom,0px));border-top:1px solid var(--rule);margin-top:40px}
.foot>*{margin-top:12px}
.foot .sig{font-family:var(--display);font-size:clamp(32px,5vw,64px);line-height:1;letter-spacing:-.02em;margin-right:16px}

/* Lightbox (built by site.js) */
.lb{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:var(--paper);display:flex;flex-direction:column;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}
.lb[hidden]{display:none}
.lb-top,.lb-bot{display:flex;justify-content:space-between;align-items:center;padding:14px var(--gut);flex:0 0 auto}
.lb-stage{position:relative;flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 72px;touch-action:pan-y}
@media (max-width:600px){.lb-stage{padding:0 8px}}
.lb-stage img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
.lb button{font:inherit;background:none;border:0;color:var(--ink);cursor:pointer;padding:10px}
.lb .nav{position:absolute;top:50%;transform:translateY(-50%);font-family:var(--display);font-style:italic;font-size:18px}
.lb .prev{left:10px}.lb .next{right:10px}
@media (hover:none),(max-width:600px){.lb .nav{display:none}}
.lb-count{font-family:var(--display);font-style:italic;font-size:18px}
.lb-title{font-family:var(--display);font-size:20px;margin-right:16px}
.lb-meta{text-align:right}
body.lb-open{overflow:hidden}

/* ---------- Motion: only with JavaScript and when the visitor hasn't asked for less ---------- */
@media (prefers-reduced-motion:no-preference){
  .js .hero .sl{animation:slice 1.6s cubic-bezier(.16,.8,.1,1) both}
  @keyframes slice{from{opacity:0;transform:translateY(var(--from,40px))}to{opacity:1;transform:translateY(0)}}
  .js .mega .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em}
  .js .mega .w>span{display:inline-block;animation:rise 1.3s cubic-bezier(.16,.8,.1,1) both}
  @keyframes rise{from{transform:translateY(105%)}to{transform:translateY(0)}}
  .js .rv .plate-link{transition:clip-path 1.3s cubic-bezier(.16,.8,.1,1)}
  .js .rv .plate-link img{transition:transform 1.6s cubic-bezier(.16,.8,.1,1)}
  .js .rv.wait .plate-link{-webkit-clip-path:inset(100% 0 0 0);clip-path:inset(100% 0 0 0)}
  .js .rv.wait .plate-link img{transform:scale(1.18)}
  .js .rv figcaption{transition:opacity .8s .4s,transform .8s .4s}
  .js .rv.wait figcaption{opacity:0;transform:translateY(10px)}
  .js .sindex li{transition:opacity .9s,transform .9s cubic-bezier(.16,.8,.1,1)}
  .js .sindex li.wait{opacity:0;transform:translateY(40px)}
  .lb{animation:fade .35s both}
  @keyframes fade{from{opacity:0}to{opacity:1}}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{.top,.lb,.foot{display:none}.hero{height:auto}.hero-media{position:static}}
