.virtual-gallery{padding:38px 3vw 0;max-width:1800px;margin:auto}.tour-heading{display:flex;justify-content:space-between;gap:30px;align-items:end;padding:0 1vw 30px}.tour-heading .eyebrow{font-size:10px;letter-spacing:1.8px}.tour-heading h1{font:800 clamp(32px,4.3vw,68px)/1.05 InterTight,Arial,sans-serif;letter-spacing:-.025em;margin:15px 0 0}.tour-heading p{font-size:13px;line-height:1.7;margin:0;color:#666}.room-viewport{position:relative;height:min(66vw,650px);min-height:430px;overflow:hidden;background:#f7f6f3;perspective:1100px;perspective-origin:50% 43%;isolation:isolate;touch-action:pan-y}.room-space{position:absolute;inset:0;transform-style:preserve-3d;transform:translateZ(90px);--depth:320px}.room-wall{position:absolute;top:0;height:100%;backface-visibility:hidden;background:#f6f5f2;transform-style:preserve-3d}.wall-back{left:0;width:100%;transform:translateZ(calc(-1*var(--depth)));background:radial-gradient(ellipse at 38% 18%,#fff 0,#fafaf8 40%,#efeeea 100%);border-bottom:7px solid #dddcd6;box-shadow:inset 0 -12px 18px #00000003}.wall-left{left:0;width:var(--depth);transform-origin:left center;transform:rotateY(90deg);background:linear-gradient(90deg,#e2e1dd,#f4f3ef);border-bottom:7px solid #d2d0c8}.wall-right{right:0;width:var(--depth);transform-origin:right center;transform:rotateY(-90deg);background:linear-gradient(90deg,#f4f3ef,#e2e1dd);border-bottom:7px solid #d2d0c8}.room-floor{position:absolute;left:0;top:100%;width:100%;height:var(--depth);transform-origin:center top;transform:rotateX(-90deg);background:repeating-linear-gradient(90deg,transparent 0 79px,#93857722 80px 81px),linear-gradient(#d4c7b5,#e3d9cb);box-shadow:inset 0 20px 30px #5143351c}.back-collection{position:absolute;left:18%;right:18%;top:17%;bottom:23%;display:flex;align-items:center;justify-content:center;gap:18%}.room-art{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;border:0;padding:0;color:#333;background:transparent;cursor:zoom-in;min-width:0;min-height:0;text-decoration:none;touch-action:manipulation}.back-collection .room-art{flex:1;height:100%;container-type:size}.room-art .art-image-window{position:absolute;top:50%;left:50%;width:min(100cqw,calc(88cqh * var(--ratio)));aspect-ratio:var(--ratio);transform:translate(-50%,-50%);overflow:hidden;filter:drop-shadow(3px 5px 3px #00000026)}.art-image-window img,.viewer-window img{position:absolute;display:block;max-width:none;width:var(--iw);height:var(--ih);left:var(--ix);top:var(--iy);object-fit:fill}.room-art .work-plaque{position:absolute;left:50%;bottom:-10%;font-size:10px;letter-spacing:1px;color:#666;transform:translateX(-50%);white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ccc}.side-collection{position:absolute;top:22%;bottom:25%;left:16%;right:16%}.side-collection .room-art{width:100%;height:100%;container-type:size}.wall-sign{position:absolute;left:0;right:0;bottom:8%;text-align:center;font-size:clamp(13px,1.8vw,25px);font-family:InterTight,Arial,sans-serif;font-weight:800;letter-spacing:.04em;color:#8c8a84}.wall-sign span{display:block;font:8px/2.4 Arial,sans-serif;letter-spacing:3px;color:#a09d94}.room-label{position:absolute;left:25px;top:24px;display:flex;flex-direction:column;gap:8px;z-index:2;pointer-events:none}.room-label-number{font-size:9px;letter-spacing:2px;color:#777}.room-label-title{font-size:13px;color:#333}.room-hint{position:absolute;right:23px;bottom:18px;z-index:2;font-size:10px;letter-spacing:.3px;color:#766b60}.tour-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:21px 1vw;border-bottom:1px solid #ddd}.tour-bar button{background:none;border:0;color:#000;cursor:pointer;min-height:44px;display:flex;align-items:center;gap:16px;font-size:12px;padding:0 4px}.tour-bar button>span:first-child,.tour-bar button>span:last-child{line-height:1.5}.room-progress{display:flex;flex-direction:column;align-items:center;gap:8px}.room-counter{font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:1px;color:#777}.room-dots{display:flex;gap:10px}.room-dots button{display:block;min-height:18px;width:9px;padding:0;position:relative}.room-dots button::after{content:'';position:absolute;left:1px;top:6px;width:5px;height:5px;border:1px solid #aaa;border-radius:50%;background:transparent}.room-dots button[aria-current=true]::after{background:#000;border-color:#000}.tour-index{margin:0 1vw}.index-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;background:none;color:#000;padding:25px 0;cursor:pointer;font-size:13px}.index-toggle>span:last-child{font-size:22px;font-weight:400}.work-index{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:28px;margin:10px 0 45px}.work-index[hidden]{display:none}.index-work{border:0;padding:0;background:none;color:#000;cursor:pointer;min-width:0;text-align:center}.index-work .art-image-window{display:block;position:relative;width:100%;aspect-ratio:var(--ratio);overflow:hidden}.index-work>span:last-child{display:block;font-size:10px;letter-spacing:.5px;margin-top:9px}.gallery-outro{margin:20px 1vw 0;padding:36px 0 65px;border-top:1px solid #ddd;display:flex;align-items:center;justify-content:space-between;gap:25px}.gallery-outro p{font:800 clamp(22px,3vw,40px)/1.15 InterTight,Arial,sans-serif;margin:0}.gallery-outro a{font-size:12px;text-decoration:underline;text-underline-offset:6px}.gallery-outro a span{margin-left:12px}
.art-viewer{inset:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;border:0;padding:15px 4vw;background:#fff;color:#000;overflow:hidden}.art-viewer[open]{display:grid;grid-template-rows:52px minmax(0,1fr) auto 64px;gap:12px}.art-viewer::backdrop{background:#fff}.viewer-header{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:bold}.viewer-work-number{font-size:10px;letter-spacing:1px;color:#777;margin-left:14px;font-weight:400}.art-viewer button{float:none;background:transparent;color:#000;border:0;min-height:44px;padding:8px 12px;cursor:pointer}.viewer-close{display:flex;align-items:center;gap:18px;font-size:13px}.viewer-close span{font-size:32px;font-weight:400;line-height:1}.viewer-canvas{position:relative;container-type:size;display:flex;align-items:center;justify-content:center;min-height:0;touch-action:pan-y}.viewer-window{position:relative;width:min(100cqw,calc(100cqh * var(--ratio)));aspect-ratio:var(--ratio);overflow:hidden}.viewer-details{text-align:center}.viewer-details[hidden]{display:none}.viewer-details h2{font-size:19px;margin:0 0 8px;font-weight:500}.viewer-details p{font-size:12px;color:#666;margin:0;white-space:pre-line}.viewer-controls{display:flex;justify-content:space-between;align-items:center;font-size:13px;gap:15px}.viewer-prev,.viewer-next{display:flex;align-items:center;gap:18px;min-width:110px}.viewer-next{justify-content:flex-end}.viewer-counter{font-variant-numeric:tabular-nums;white-space:nowrap;color:#555;font-size:12px}html.art-viewer-open{overflow:hidden}
@media(max-width:767px){.virtual-gallery{padding:25px 0 0}.tour-heading{padding:0 6vw 25px;display:block}.tour-heading h1{font-size:36px;margin-top:12px}.tour-heading p{font-size:12px;line-height:1.6;margin-top:14px}.tour-heading p br{display:none}.tour-heading .eyebrow{font-size:9px;letter-spacing:1.2px}.room-viewport{height:520px;min-height:0;perspective:820px;perspective-origin:50% 45%}.room-space{--depth:180px;transform:translateZ(60px)}.back-collection{left:8%;right:8%;top:18%;bottom:24%;gap:10%}.side-collection{left:20%;right:20%;top:22%;bottom:33%}.room-art .work-plaque{font-size:8px;letter-spacing:.5px;bottom:-7%;padding:5px 6px}.room-label{left:18px;top:19px;gap:5px}.room-label-number{font-size:8px}.room-label-title{font-size:11px}.wall-sign{font-size:15px;bottom:8%}.wall-sign span{font-size:6px;letter-spacing:2px}.room-hint{font-size:9px;right:15px;bottom:15px}.tour-bar{padding:12px 5vw;gap:10px}.tour-bar button{font-size:10px;gap:8px}.room-dots{gap:5px}.room-counter{font-size:10px}.room-dots button{width:7px}.tour-index{margin:0 6vw}.index-toggle{font-size:12px;padding:20px 0}.work-index{grid-template-columns:repeat(3,minmax(0,1fr));gap:25px 22px}.gallery-outro{margin:15px 6vw 0;padding:28px 0 45px;display:block}.gallery-outro p{margin-bottom:22px}.art-viewer{padding:10px 5vw}.art-viewer[open]{grid-template-rows:48px minmax(0,1fr) auto 58px;gap:10px}.viewer-header{font-size:11px}.viewer-work-number{font-size:9px;margin-left:8px}.viewer-close{font-size:12px}.viewer-controls{font-size:11px}.viewer-prev,.viewer-next{min-width:80px;gap:8px;padding:8px 0!important}.viewer-counter{font-size:11px}}
@media(prefers-reduced-motion:no-preference){.room-viewport.is-moving .room-space{animation:room-step .55s ease both}@keyframes room-step{0%{opacity:.1;transform:translateZ(145px)}100%{opacity:1;transform:translateZ(90px)}}@media(max-width:767px){@keyframes room-step{0%{opacity:.1;transform:translateZ(100px)}100%{opacity:1;transform:translateZ(60px)}}}}
/* Keep the side-wall works fully inside the entrance view. */
.side-left{left:38%;right:5%}.side-right{left:5%;right:38%}
.art-viewer[open]{grid-template-rows:52px minmax(0,1fr) 64px}.art-viewer[open]:has(.viewer-details:not([hidden])){grid-template-rows:52px minmax(0,1fr) auto 64px}@media(max-width:767px){.art-viewer[open]{grid-template-rows:48px minmax(0,1fr) 58px}.art-viewer[open]:has(.viewer-details:not([hidden])){grid-template-rows:48px minmax(0,1fr) auto 58px}}
/* Architectural planes stay behind the interactive artwork surfaces. */
.room-space,.room-wall,.room-floor{pointer-events:none}.room-art,.room-art *{pointer-events:auto}
/* Continuous finger-following movement, using native scroll momentum. */
.room-viewport{perspective:none;touch-action:auto;background:#f7f6f3}.room-track,.viewer-track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}.room-track::-webkit-scrollbar,.viewer-track::-webkit-scrollbar{display:none}.room-slide{position:relative;flex:0 0 100%;width:100%;height:100%;min-width:0;overflow:hidden;perspective:1100px;perspective-origin:50% 43%;scroll-snap-align:start;isolation:isolate}.room-space{animation:none!important}.room-track.is-dragging,.viewer-track.is-dragging{scroll-snap-type:none;cursor:grabbing;user-select:none}.room-track{cursor:grab}.room-track .room-art{cursor:zoom-in}.viewer-canvas{display:block;touch-action:auto}.viewer-slide{position:relative;flex:0 0 100%;width:100%;height:100%;min-width:0;container-type:size;scroll-snap-align:start}.viewer-window{position:absolute;display:block;left:50%;top:50%;transform:translate(-50%,-50%);width:min(100cqw,calc(100cqh * var(--ratio)));aspect-ratio:var(--ratio);overflow:hidden}.viewer-track{cursor:grab}@media(max-width:767px){.room-slide{perspective:820px;perspective-origin:50% 45%}}

.tour-bar button:disabled,.viewer-controls button:disabled{opacity:.25;cursor:default}
/* A fixed room with one uninterrupted train of consecutively numbered works. */
.room-viewport{perspective:1100px;perspective-origin:50% 43%}.back-collection{left:14%;right:14%;top:16%;bottom:22%;display:block}.art-train{--train-gap:clamp(24px,6vw,80px);display:flex;gap:var(--train-gap);width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom;pointer-events:auto;scroll-snap-type:none;cursor:grab}.art-train::-webkit-scrollbar{display:none}.back-collection .art-train>.room-art{flex:0 0 calc((100% - var(--train-gap))/2);height:100%;min-width:0;container-type:size}.art-train .room-art .art-image-window{top:44%;width:min(100cqw,calc(78cqh * var(--ratio)))}.art-train .room-art .work-plaque{bottom:2%;font-size:11px}.art-train.is-dragging{cursor:grabbing;user-select:none}.art-train.is-dragging .room-art{cursor:grabbing}.train-position{width:110px;height:16px;accent-color:#222;cursor:pointer;margin:0}.room-progress{gap:6px}.wall-left,.wall-right{pointer-events:none}.viewer-track{scroll-snap-type:x proximity}@media(max-width:767px){.room-viewport{perspective:820px;perspective-origin:50% 45%}.back-collection{left:8%;right:8%;top:18%;bottom:23%}.art-train{--train-gap:24px}.art-train .room-art .work-plaque{font-size:9px;bottom:5%}.train-position{width:100px}.room-hint{font-size:8px}}

/* Give every painting a clear stretch of wall between neighbouring works. */
.art-train{--train-gap:clamp(72px,9vw,144px)}
@media(max-width:767px){.art-train{--train-gap:56px}}

/* Floating paintings: the original artwork remains a flat, legible surface.
   Tilt and lift follow the visitor's scroll; there is no autonomous movement. */
.art-train .room-art{isolation:isolate}
.art-train .room-art .art-image-window{width:min(94cqw,calc(76cqh * var(--ratio)));filter:none;box-shadow:2px 1px 0 #d7d3ca,4px 3px 0 #aaa69e,7px 10px 14px #00000017,15px 24px 28px #0000001f;transform:translate(-50%,-50%) perspective(1100px) translateY(var(--float-y,-5px)) rotateY(var(--float-turn,0deg)) rotateX(1.5deg);transform-origin:center;backface-visibility:hidden}
.art-train .room-art::after{content:"";position:absolute;left:20%;right:20%;bottom:15%;height:10px;border-radius:50%;background:#302b2520;filter:blur(10px);pointer-events:none;z-index:-1;transform:scaleX(var(--float-shadow,1))}
@media(prefers-reduced-motion:reduce){.art-train .room-art .art-image-window{transform:translate(-50%,-50%)}.art-train .room-art::after{transform:none}}

/* Match the sculpture gallery's full-size presentation, outside the distant wall plane. */
.gallery-tour .room-viewport{height:650px;min-height:0}
.gallery-tour .room-viewport>.back-collection{inset:0;z-index:1;pointer-events:none}
.gallery-tour .art-train{pointer-events:auto}
.gallery-tour .art-train .room-art .art-image-window{top:47%;width:min(82cqw,calc(410px * var(--ratio)))}
.gallery-tour .art-train .room-art .work-plaque{bottom:12%}
.gallery-tour .art-train .room-art::after{bottom:18%}
.gallery-tour .room-label,.gallery-tour .room-hint{z-index:2}
@media(max-width:767px){
.gallery-tour .room-viewport{height:580px}
.back-collection .art-train>.room-art{flex-basis:82%}
.gallery-tour .art-train .room-art .art-image-window{top:46%;width:min(90cqw,calc(370px * var(--ratio)))}
.gallery-tour .art-train .room-art .work-plaque{bottom:13%}
}

.gallery-tour .room-viewport>.wall-sign{bottom:20px;z-index:2;pointer-events:none;font-size:15px}
.gallery-tour .room-viewport>.wall-sign span{font-size:7px;letter-spacing:2px}
@media(max-width:767px){.gallery-tour .art-train{--train-gap:32px}.gallery-tour .room-viewport>.wall-sign{font-size:13px;bottom:16px}.gallery-tour .room-viewport>.wall-sign span{font-size:6px}}

/* The shadow follows the true outline; no second board or artificial rim. */
.art-train .room-art .art-image-window{box-shadow:none;filter:drop-shadow(5px 12px 12px #00000025)}
.art-image-window img,.viewer-window img{clip-path:var(--art-clip,none)}
