*{box-sizing:border-box}body{margin:0;background:#000;color:#f3f1ee;font:17px/1.65 Helvetica,Arial,sans-serif}header{max-width:1500px;margin:auto;padding:20px 28px;display:flex;justify-content:space-between;gap:20px;font-size:14px}header span{color:#aaa;font-size:11px;letter-spacing:.1em}a{color:inherit;text-underline-offset:4px}main{max-width:1500px;margin:auto;padding:16px 28px 80px}h1{font:500 clamp(28px,4vw,48px)/1.15 Helvetica,Arial,sans-serif;margin:20px 0 32px}h2{font:500 26px/1.25 Helvetica,Arial,sans-serif;margin:32px 0 16px}.portraits,.gallery{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.photo{border:0;margin:0;padding:0;background:none;cursor:zoom-in;min-width:0;display:block}.photo img{width:100%;height:auto;display:block}.portraits .photo{align-self:start}.gallery{align-items:start;gap:20px 12px}.gallery img{height:200px;object-fit:contain;object-position:center top}article{max-width:760px;margin:36px auto 56px}.date{font-size:14px;color:#b7b7b7}.viewer{padding:0;background:#000;border:0;width:96vw;height:94dvh;max-width:none;max-height:none;overflow:hidden}.viewer::backdrop{background:#000c}.viewer>img{width:100%;height:100%;object-fit:contain;padding:48px 12px 12px}.close{position:absolute;right:8px;top:8px;border:0;background:#222;color:#fff;width:44px;height:44px;font-size:32px;cursor:pointer}:focus-visible{outline:3px solid #ffe66a;outline-offset:4px}@media(max-width:760px){header{padding:16px}main{padding:10px 16px 48px}.portraits{gap:5px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 10px}.gallery img{height:230px}h1{margin:16px 0 22px}article{margin-top:28px}}
.installation-top{position:absolute;inset:0 0 auto;z-index:-1;width:100%;pointer-events:none;}
.installation-top img{display:block;width:100%;height:auto;}
.installation-top::after{content:"";position:absolute;inset:0;background:linear-gradient(#0005 0%,#0008 35%,#000d 70%,#000 100%);}
body{isolation:isolate}body>header{position:relative;text-shadow:0 1px 4px #000;min-height:100px}h1{text-shadow:0 2px 10px #000}
.portraits .photo{aspect-ratio:4/5}.portraits .photo img{width:100%;height:100%;object-fit:contain}.portraits .photo img[src$="IMG_4186.webp"]{object-fit:cover;object-position:center}
.room-section{margin:52px -12px}.black-room{position:relative;aspect-ratio:3/2;width:100%;background:url('./images/black-room.webp') center/100% 100% no-repeat;}
.black-room .room-work{position:absolute;transform-origin:center center;cursor:zoom-in}.room-work img{width:100%;height:auto;}
.room-work-1{left:8%;top:37%;width:12%;transform:skewY(20deg)}.room-work-2{left:21%;top:41%;width:7%;transform:skewY(20deg)}
.room-work-3{left:34%;top:42%;width:13%}.room-work-4{left:52%;top:43%;width:10%}
.room-work-5{left:72%;top:40%;width:12%;transform:skewY(-20deg)}.room-work-6{left:86%;top:36%;width:7%;transform:skewY(-20deg)}
.room-copy{margin-top:22px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:760px){body>header{min-height:70px}.room-section{margin:36px -12px}.room-copy{padding:0 12px}}
.room-work-1{top:30%}.room-work-2{top:39%}.room-work-3{left:34%;top:37%;width:12%}.room-work-4{left:52%;top:38%;width:9%}.room-work-5{top:37%}.room-work-6{top:30%}
/* Revised composition and a room projected with one physical camera. */
.portraits{max-width:1120px;width:84%;margin:0 auto;gap:12px}body>header{min-height:110px}.installation-top::after{background:linear-gradient(#0004,#0006 45%,#000 100%)}
.room-section{margin:65px -12px 0}.room-sign{display:block;width:62%;max-width:780px;height:auto;margin:0 auto -1px}.black-room{background:none;aspect-ratio:16/9;overflow:hidden}.room-space{position:absolute;left:0;top:0;width:1280px;height:720px;transform-origin:0 0}.room-surfaces{position:absolute;inset:0;width:1280px;height:720px}.black-room .room-work{position:absolute;left:0;top:0;transform-origin:0 0;padding:0;margin:0}.black-room .room-work img{width:100%;height:100%;object-fit:contain}.room-copy{margin:30px auto 0}.viewer>img{padding:54px 70px 56px}.viewer-prev,.viewer-next{position:absolute;z-index:2;top:50%;transform:translateY(-50%);width:52px;height:64px;border:0;border-radius:6px;background:#222a;color:white;font:48px/1 Arial,sans-serif;cursor:pointer}.viewer-prev{left:10px}.viewer-next{right:10px}.viewer-prev:disabled,.viewer-next:disabled{opacity:.2;cursor:default}.viewer-caption{position:absolute;bottom:4px;left:65px;right:65px;margin:8px 0;text-align:center;font:14px/1.4 Helvetica,Arial,sans-serif}
@media(max-width:1100px){.portraits{grid-template-columns:repeat(3,minmax(0,1fr));width:76%;max-width:650px}.installation-top img{height:700px;object-fit:cover;object-position:center top}}
@media(max-width:600px){.portraits{grid-template-columns:repeat(2,minmax(0,1fr));width:76%;max-width:360px;gap:10px}body>header{min-height:76px}.installation-top img{height:850px}.room-sign{width:80%}.viewer>img{padding:54px 48px 64px}.viewer-prev,.viewer-next{width:40px;height:56px;font-size:40px}.viewer-prev{left:2px}.viewer-next{right:2px}.viewer-caption{left:30px;right:30px;font-size:12px}}
@media(max-width:600px){.viewer-prev,.viewer-next{width:44px}}

/* Photographed molton installation; original artworks retain their physical projection. */
.room-backdrop{position:absolute;inset:0;width:1280px;height:720px;object-fit:fill;pointer-events:none}

.page-footer{max-width:760px;margin:40px auto 0;padding-top:12px;font-size:17px}

@media(max-width:600px){.room-section{margin-left:-16px;margin-right:-16px}.black-room{aspect-ratio:1.244444}.room-copy,.page-footer{padding-left:16px;padding-right:16px}}

.room-sign{width:15.5%;max-width:195px;transform:rotate(-2deg);margin:0 auto 7px}
@media(max-width:600px){.room-sign{width:40%;max-width:390px}}

/* Let the hanging sign overlap the room ceiling. */
.room-sign{position:relative;z-index:2;margin-bottom:-28px}
@media(max-width:600px){.room-sign{margin-bottom:-14px}}

/* Floating artwork view, without a panel or popup frame. */
.viewer{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;background:transparent;border:0}
.viewer::backdrop{background:#0009}
.viewer>.fly-image{position:fixed;left:0;top:0;padding:0;max-width:none;max-height:none;object-fit:fill;transform-origin:0 0;pointer-events:none;z-index:1}
.viewer>.close{z-index:3;background:transparent;font-size:38px;text-shadow:0 1px 5px #000}
.viewer-prev,.viewer-next{z-index:3;background:transparent;text-shadow:0 1px 5px #000}
.viewer-caption{z-index:3;text-shadow:0 1px 5px #000}

.viewer-caption{color:#fff}

/* Exhibition photos grouped by format; keep the complete images. */
.gallery{display:block}
.exhibition-landscape,.exhibition-portrait{display:grid;gap:12px;align-items:start}
.exhibition-landscape{grid-template-columns:1.893fr 1.508fr 1.508fr 1.508fr 1.508fr;margin-bottom:24px}
.exhibition-portrait{grid-template-columns:.663fr .75fr .75fr .75fr .75fr .793fr .75fr}
.gallery .photo img{width:100%;height:auto;object-fit:contain;display:block}
@media(max-width:760px){.exhibition-landscape,.exhibition-portrait{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 10px}.exhibition-landscape .photo{aspect-ratio:3/2}.exhibition-portrait .photo{aspect-ratio:3/4}.gallery .photo img{height:100%;object-position:center}}

.portraits .photo img{filter:drop-shadow(2px 4px 5px rgb(0 0 0 / 45%))}

body,header span,.date,.viewer,.viewer-caption,.viewer>.close,.viewer-prev,.viewer-next{color:#ffe66a}
