/* Approved concave gallery room. Every rule is scoped to this section. */
.curved-gallery{padding-bottom:36px}
.curved-gallery .gallery-top{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;padding:24px 0 25px}
.curved-gallery .room-title{font-size:clamp(70px,10.5vw,150px);font-weight:800;letter-spacing:-.075em;line-height:.83;max-width:none;margin:0;text-transform:uppercase}
.curved-gallery .room-title>span{display:block;font-size:20px;line-height:1;letter-spacing:-.04em;margin-bottom:6px;text-transform:none}
.curved-gallery .gallery-top>p{font-size:13px;line-height:1.6;margin:0;padding-bottom:1px}
.curved-gallery .gallery-top>p>span{font:10px/1.5 'Courier New',monospace;color:#666}
.curved-gallery .room{position:relative;aspect-ratio:2.1;max-height:560px;min-height:320px;background:#e5e0d6;overflow:hidden;isolation:isolate;touch-action:pan-y;cursor:grab}
.curved-gallery .room:active{cursor:grabbing}
.curved-gallery #room-scene{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:hidden}
.curved-gallery .svg-work{cursor:pointer;transition:transform .65s cubic-bezier(.22,1,.36,1),opacity .35s}
.curved-gallery .svg-work:focus-visible{outline:2px solid #111;outline-offset:5px}
.curved-gallery .room-note,.curved-gallery .room-hint{position:absolute;bottom:19px;font:9px 'Courier New',monospace;letter-spacing:.06em;color:#3d3a35;pointer-events:none}
.curved-gallery .room-note{left:22px}.curved-gallery .room-hint{right:22px;text-align:right}
.curved-gallery .exhibition-bar{display:grid;grid-template-columns:85px minmax(0,1fr) auto;gap:24px;padding:24px 0 22px;border-bottom:1px solid #c8c8c8;align-items:center}
.curved-gallery .position{font:28px/1 'Courier New',monospace;letter-spacing:-.07em;display:flex;align-items:baseline;gap:9px}
.curved-gallery .of{font-size:11px;color:#666;letter-spacing:0}
.curved-gallery .exhibition-caption h3{font:600 clamp(24px,3vw,42px)/1 Arial,Helvetica,sans-serif;letter-spacing:-.045em;margin:0;text-transform:none}
.curved-gallery .exhibition-caption p{font-size:12px;color:#666;margin:9px 0 0;line-height:1.4}
.curved-gallery .actions{display:flex;align-items:center;gap:30px}
.curved-gallery .actions>button{background:none;border:0;border-bottom:1px solid #999;min-height:44px;font-size:12px;padding:0;white-space:nowrap}
.curved-gallery .actions>button span{margin-left:15px}
.curved-gallery .arrows{display:flex;gap:6px}
.curved-gallery .arrows button{border:1px solid #111;background:#fff;width:48px;height:44px;font-size:22px;padding:0}
.curved-gallery .arrows button:hover{background:#111;color:#fff}
.curved-gallery .index-row{display:flex;align-items:center;gap:25px;padding-top:15px;font-size:11px}
.curved-gallery .index-row label{color:#666}
.curved-gallery .index-row select{max-width:280px;min-height:44px;border:0;border-bottom:1px solid #aaa;background:#fff;color:#111;font:12px Arial,Helvetica,sans-serif;padding:4px 24px 4px 0}
.curved-gallery .room-archive-links{display:flex;gap:24px;margin-left:auto;align-items:center}
.curved-gallery .room-archive-links>a{min-height:44px;display:flex;align-items:center;gap:8px}
.curved-gallery .room-archive-links a:hover{text-decoration:underline;text-underline-offset:4px}
.curved-gallery dialog{width:min(1000px,calc(100% - 32px));max-height:calc(100svh - 32px);padding:24px;border:0;background:#fff;color:#111}
.curved-gallery dialog::backdrop{background:#000c}
.curved-gallery #close-dialog{display:block;margin-left:auto;min-height:44px;background:none;border:0;padding:0 5px;font-size:12px}
.curved-gallery .dialog-image{height:min(65svh,640px);display:flex;justify-content:center;align-items:center;padding:10px 0 24px}
.curved-gallery .dialog-image img{max-width:100%;max-height:100%;object-fit:contain}
.curved-gallery .dialog-caption{display:flex;justify-content:space-between;align-items:center;gap:24px;border-top:1px solid #bbb;padding-top:20px}
.curved-gallery .dialog-caption h3{font:600 24px/1.1 Arial,Helvetica,sans-serif;letter-spacing:-.04em;margin:0;text-transform:none}
.curved-gallery .dialog-caption p{font-size:12px;color:#666;margin:5px 0 0}
.curved-gallery .dialog-caption a{font-size:12px;min-height:44px;display:flex;align-items:center;white-space:nowrap}
@media(max-width:850px){.curved-gallery .index-row{flex-wrap:wrap;gap:12px 24px}.curved-gallery .room-archive-links{margin-left:0}}
@media(max-width:650px){
 .curved-gallery .gallery-top{display:block;padding-top:20px;padding-bottom:20px}
 .curved-gallery .room-title{font-size:17vw}.curved-gallery .room-title>span{font-size:20px}
 .curved-gallery .gallery-top>p{display:flex;justify-content:space-between;gap:15px;align-items:end;font-size:11px;margin-top:18px}
 .curved-gallery .gallery-top>p>br{display:none}.curved-gallery .gallery-top>p>span{font-size:9px;max-width:145px;text-align:right}
 .curved-gallery .room{aspect-ratio:1.07;min-height:0;margin:0 calc(-1 * var(--gutter));max-height:none}
 .curved-gallery .room-note,.curved-gallery .room-hint{font-size:8px;bottom:15px}.curved-gallery .room-note{left:20px}.curved-gallery .room-hint{right:20px;max-width:100px}
 .curved-gallery .exhibition-bar{grid-template-columns:47px minmax(0,1fr);gap:12px;padding-top:20px;padding-bottom:18px}
 .curved-gallery .position{font-size:22px;gap:4px}.curved-gallery .of{font-size:9px}
 .curved-gallery .exhibition-caption h3{font-size:28px;line-height:1.02}.curved-gallery .exhibition-caption p{font-size:11px;margin-top:7px}
 .curved-gallery .actions{grid-column:1/-1;justify-content:space-between;gap:20px;margin-top:4px}
 .curved-gallery .actions>button{font-size:12px}.curved-gallery .arrows button{width:48px;height:44px}
 .curved-gallery .index-row{gap:12px;flex-wrap:wrap;padding-top:13px}.curved-gallery .index-row label{font-size:10px}
 .curved-gallery .index-row select{flex:1;min-width:0;max-width:calc(100% - 110px);font-size:11px}
 .curved-gallery .room-archive-links{gap:20px;flex-wrap:wrap;font-size:10px}
 .curved-gallery .dialog-caption{display:block}.curved-gallery .dialog-caption a{margin-top:5px}.curved-gallery .dialog-caption h3{font-size:22px}
 .curved-gallery dialog{padding:16px}.curved-gallery .dialog-image{height:55svh}
}
@media(prefers-reduced-motion:reduce){.curved-gallery .svg-work{transition:none}}

/* Live QA: reliable arrow icons and an unbroken phone counter. */
.curved-gallery .room-arrow{width:14px;height:14px;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.3;flex-shrink:0}
.curved-gallery .dialog-caption a{gap:8px}
.curved-gallery .position{white-space:nowrap}
.curved-gallery .of{flex-shrink:0}
@media(max-width:650px){.curved-gallery .exhibition-bar{grid-template-columns:60px minmax(0,1fr)}}

/* A single animation loop interpolates the accepted curtain-arc geometry. */
.curved-gallery .svg-work{transition:none}
.curved-gallery .room{touch-action:pan-y pinch-zoom}
.curved-gallery .room.is-dragging{cursor:grabbing;user-select:none}

/* Whole-image projective layers: 5–6 transforms per frame, not 80–96 SVG slices. */
.curved-gallery .whole-image-room #room-scene .svg-work{display:none}
.curved-gallery .room-planes{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.curved-gallery .room-work{position:absolute;left:0;top:0;display:block;max-width:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;line-height:0;transform-origin:0 0;pointer-events:auto;cursor:pointer;backface-visibility:hidden;will-change:auto;box-shadow:2px 5px 7px #0003}
.curved-gallery .room-work>img{display:block;width:100%;height:100%;max-width:none;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none}
.curved-gallery .room-work:focus-visible{outline:3px solid #111;outline-offset:7px}
.curved-gallery .room-note,.curved-gallery .room-hint{z-index:2}
.curved-gallery .room-work[aria-hidden="false"]{will-change:transform}
@media(prefers-reduced-motion:reduce){.curved-gallery .room-work[aria-hidden="false"]{will-change:auto}}

/* Clear phone focus, while the desktop keeps its complete curved gallery wall. */
.curved-gallery .room-work,.curved-gallery .room-planes{touch-action:pan-y pinch-zoom}
@media(max-width:650px){
 .curved-gallery .room-note{display:none}
 .curved-gallery .room-hint{left:20px;right:20px;max-width:none;text-align:center;font-size:10px;bottom:12px}
 .curved-gallery .gallery-top>p>span{display:block;font-size:11px;max-width:none;text-align:left;margin-top:6px}
 .curved-gallery .exhibition-bar{grid-template-columns:48px minmax(0,1fr)}
 .curved-gallery .position{font-size:20px}
 .curved-gallery .exhibition-caption h3{font-size:25px}
 .curved-gallery .actions{border-top:1px solid #ddd;padding-top:8px;margin-top:2px}
 .curved-gallery .actions>button{border:0;font-size:13px}
 .curved-gallery .index-row{gap:4px 10px}
 .curved-gallery .index-row>label{display:none}
 .curved-gallery .index-row select{max-width:100%;width:100%;flex-basis:100%;font-size:12px}
 .curved-gallery .room-archive-links{width:100%;justify-content:space-between;gap:12px}
}

/* Keep the archive context readable alongside the compact mobile gallery. */
@media(max-width:600px){.curved-gallery .gallery-top>p{display:block;font-size:13px;line-height:1.5}.curved-gallery .gallery-top>p>span{display:block;text-align:left;margin-top:6px;max-width:none;font-size:11px}}
