/* The carriage gallery is one proportional canvas with independently lit paintings. */
body>.scene.gallery-scene{width:min(100vw,160dvh);height:min(100dvh,62.5vw);aspect-ratio:8/5;overflow:visible;background:#14202e;box-shadow:0 0 70px #000}
body>.gallery-scene>img.gallery-wall{width:100%;height:100%;object-fit:fill;transform:none;filter:none}
.gallery-scene .object-glow{display:none}
.gallery-scene .gallery-window{position:absolute;left:3.7%;top:22%;width:9.8%;height:43.4%;z-index:2;overflow:hidden;border-radius:48% 48% 7% 7% / 13% 13% 2% 2%;pointer-events:none;background:#755269}
.gallery-window .caravan-dusk-track{height:100%;animation-duration:240s}
.gallery-window .caravan-dusk-track img{object-fit:cover;filter:brightness(.8) saturate(.85);width:25%;height:100%}
.gallery-window-mullion{position:absolute;left:49%;top:0;height:100%;width:3%;background:linear-gradient(90deg,#241c19,#ae8350,#3b281b);box-shadow:1px 0 2px #0008}
.gallery-scene .hotspot{padding:0;transform:none;display:flex;align-items:flex-start;justify-content:center;height:auto;background:none;outline:none}
.gallery-scene .contracts{left:20.3%;top:25%;width:18%;height:auto}
.gallery-scene .staff{left:42.8%;top:22.5%;width:16%;height:auto}
.gallery-scene .map{left:63%;top:25%;width:18%;height:auto}
.gallery-scene .party{left:21.3%;top:49%;width:16%;height:auto}
.gallery-scene .inventory{left:41.8%;top:53%;width:18%;height:auto}
.gallery-scene .vehicle{left:64%;top:49%;width:16%;height:auto}
.gallery-scene .gallery-art{width:100%;display:flex;flex-direction:column;align-items:center;pointer-events:none}
.gallery-scene .gallery-painting{width:100%;height:auto;display:block;object-fit:contain;filter:drop-shadow(0 3px 4px #0009);transition:filter .22s}
.gallery-scene .gallery-label{width:32%;height:auto;margin-top:3%;object-fit:contain;filter:sepia(.75) saturate(.85) brightness(1.12) drop-shadow(0 1px 2px #000b);transition:filter .22s}
.gallery-scene .hotspot:hover .gallery-painting,.gallery-scene .hotspot:focus-visible .gallery-painting{filter:drop-shadow(0 0 3px #ffeab6cc) drop-shadow(0 0 9px #ffe3a773) drop-shadow(0 3px 4px #0009)}
.gallery-scene .hotspot:hover .gallery-label,.gallery-scene .hotspot:focus-visible .gallery-label{filter:sepia(.9) saturate(.7) brightness(1.3) drop-shadow(0 0 5px #fff2b3aa)}
.gallery-scene .music-box.gallery-music{left:46%;top:66%;width:10%;height:auto;aspect-ratio:1.7;z-index:4;background:none;border:0;padding:0;display:block;transform:none;box-shadow:none}
.gallery-scene .gallery-music img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 3px #0008);transition:filter .2s}
.gallery-scene .gallery-music:hover img,.gallery-scene .gallery-music:focus-visible img{filter:drop-shadow(0 0 5px #ffe7aaa0)}
.gallery-scene .gallery-music span{position:absolute;left:50%;top:96%;transform:translateX(-50%);font-size:clamp(12px,1.1vw,19px);color:#ead6ad;text-shadow:0 1px 3px #000;white-space:nowrap}
@media(max-aspect-ratio:1/1){body>.scene.gallery-scene{width:100vw;height:62.5vw}.gallery-scene .gallery-music span{font-size:11px}}
@media(prefers-reduced-motion:reduce){.gallery-window .caravan-dusk-track{animation:none}.gallery-scene .gallery-painting,.gallery-scene .gallery-label{transition:none}}
/* Keep all frames and labels above the console, with breathing room between rows. */
.gallery-scene .staff{left:44.3%;width:13%;top:23%}
.gallery-scene .party{left:22.8%;width:13%;top:49%}
.gallery-scene .vehicle{left:65.5%;width:13%;top:49%}
.gallery-scene .inventory{top:50.5%}
.gallery-scene .gallery-label{width:27%}
.gallery-scene .music-box.gallery-music{left:60%;top:69.5%;width:6%;aspect-ratio:1.8}
.gallery-window-mullion:after{content:'';position:absolute;left:50%;top:43%;width:250%;aspect-ratio:1;background:#a77d43;transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 1px 3px #0008}
.gallery-scene .hotspot:active .gallery-painting{filter:drop-shadow(0 0 3px #ffeab6cc) drop-shadow(0 0 9px #ffe3a773) drop-shadow(0 3px 4px #0009)}

/* Approved low-angle gallery base with real alpha windows and picture inserts. */
body>.scene.gallery-scene{width:max(100vw,177.6833dvh);height:max(100dvh,56.2799vw);aspect-ratio:1672/941;overflow:hidden;background:#111b2b}
body>.gallery-scene>img.gallery-wall{position:absolute;inset:0;z-index:2}
.gallery-scene .gallery-window{left:4%;top:11%;width:16%;height:65%;z-index:0;border-radius:0;clip-path:polygon(64% 0,100% 8%,92% 98%,0 91%);background:#da9b96}
.gallery-window .caravan-dusk-track{animation-duration:180s}
.gallery-window .caravan-dusk-track img{filter:none;object-fit:cover}
.gallery-scene .hotspot{z-index:3;display:block;overflow:visible;isolation:isolate}
.gallery-scene .gallery-art{position:absolute;inset:0;display:block;overflow:hidden;background:#101a29}
.gallery-scene .gallery-painting{position:absolute;inset:-15%;width:130%;height:130%;object-fit:cover;filter:brightness(.83) saturate(.75);transition:filter .25s}
.gallery-scene .gallery-label{position:absolute;left:50%;top:100%;width:30%;margin-top:5px;transform:translateX(-50%);z-index:4}
.gallery-scene .hotspot:hover .gallery-painting,.gallery-scene .hotspot:focus-visible .gallery-painting,.gallery-scene .hotspot:active .gallery-painting{filter:brightness(1.05) saturate(.85)}
.gallery-scene .hotspot:before{content:'';position:absolute;inset:-5px;pointer-events:none;opacity:0;box-shadow:0 0 12px 4px #ffe4a37a;transition:opacity .25s;transform:skewY(-13deg)}
.gallery-scene .hotspot:hover:before,.gallery-scene .hotspot:focus-visible:before{opacity:1}
.gallery-scene .music-box.gallery-music{left:32%;top:81%;width:8%;z-index:4;transform:rotate(5deg)}
@media(max-aspect-ratio:1/1){body>.scene.gallery-scene{width:177.6833dvh;height:100dvh;left:50%}.gallery-scene .gallery-label{min-width:40px}}
.gallery-scene .staff{left:39.1148%;top:13.1775%;width:11.7823%;height:32.4123%}
.gallery-scene .staff .gallery-art{clip-path:polygon(12.183% 17.377%,100.000% 0.000%,100.000% 82.623%,0.000% 100.000%)}
.gallery-scene .map{left:61.3038%;top:7.3326%;width:17.0455%;height:27.5239%}
.gallery-scene .map .gallery-art{clip-path:polygon(0.000% 27.027%,85.965% 0.000%,100.000% 71.429%,3.509% 100.000%)}
.gallery-scene .contracts{left:45.3947%;top:46.5462%;width:12.9785%;height:22.5292%}
.gallery-scene .contracts .gallery-art{clip-path:polygon(2.765% 22.642%,96.774% 0.000%,100.000% 77.830%,0.000% 100.000%)}
.gallery-scene .party{left:61.9019%;top:37.4070%;width:12.2608%;height:22.3167%}
.gallery-scene .party .gallery-art{clip-path:polygon(0.000% 20.476%,86.341% 0.000%,100.000% 80.000%,4.878% 100.000%)}
.gallery-scene .inventory{left:58.4928%;top:64.1870%;width:14.5335%;height:22.6355%}
.gallery-scene .inventory .gallery-art{clip-path:polygon(0.000% 24.413%,92.181% 0.000%,100.000% 83.568%,2.881% 100.000%)}
.gallery-scene .vehicle{left:28.2895%;top:46.5462%;width:7.1172%;height:15.5154%}
.gallery-scene .vehicle .gallery-art{clip-path:polygon(16.807% 0.000%,100.000% 15.068%,83.193% 100.000%,0.000% 85.616%)}

/* One continuous cloud field: no mirrored tile seam or uncovered bottom pane. */
.gallery-scene .gallery-window{left:3%;top:10%;width:18%;height:69%;clip-path:none;border-radius:0;background:#db9a91}
.gallery-scene .gallery-window .caravan-dusk-track{width:240%;animation:gallery-cloud-drift 180s ease-in-out infinite alternate}
.gallery-scene .gallery-window .caravan-dusk-track img{display:none;width:100%;height:100%;object-fit:fill;transform:none;filter:none}
.gallery-scene .gallery-window .caravan-dusk-track img:first-child{display:block}
@keyframes gallery-cloud-drift{from{transform:translateX(0)}to{transform:translateX(-58.333333%)}}
.gallery-scene .music-box.gallery-music{left:31.7%;top:80.7%;width:8.5%;aspect-ratio:1.65;transform:none}
.gallery-scene .gallery-music img{filter:drop-shadow(2px 5px 3px #0b061bcc)}
.gallery-scene .gallery-music:hover img,.gallery-scene .gallery-music:focus-visible img{filter:drop-shadow(0 0 5px #ffe3b0a0) drop-shadow(2px 5px 3px #0b061bcc)}
.gallery-scene .gallery-music span{top:99%;transform:translateX(-50%) rotate(10deg)}
@media(prefers-reduced-motion:reduce){.gallery-scene .gallery-window .caravan-dusk-track{animation:none}}

/* Three-quarter box follows the desk's slope and peach-lit contact shadow. */
.gallery-scene .music-box.gallery-music{top:82%;transform:rotate(7deg);transform-origin:50% 90%}
.gallery-scene .gallery-music img{filter:brightness(.83) saturate(.9) drop-shadow(2px 3px 2px #170a1ed9)}
.gallery-scene .gallery-music:hover img,.gallery-scene .gallery-music:focus-visible img{filter:brightness(.95) saturate(.95) drop-shadow(0 0 5px #ffe3b0a0) drop-shadow(2px 3px 2px #170a1ed9)}
.gallery-scene .gallery-music span{transform:translateX(-50%) rotate(3deg)}

/* Art-label height follows the gallery canvas, independent of painting size. */
body>.scene.gallery-scene{container-type:inline-size}
.gallery-scene .hotspot .gallery-label{width:auto;min-width:0;max-width:none;height:2.55cqw;object-fit:contain}

/* Faster continuous dusk and the user-sketched left-facing box. */
.gallery-scene .gallery-window .caravan-dusk-track{animation-duration:80s}
.gallery-scene .music-box.gallery-music{transform:none;aspect-ratio:1.75;top:82%}
.gallery-scene .gallery-music span{transform:translateX(-50%) rotate(10deg)}

/* Labels follow the projected lower edges at a shared type size. */
.gallery-scene .hotspot .gallery-label{top:calc(var(--label-edge,100%) + 1.15cqw);margin-top:0;transform:translateX(-50%) rotate(var(--label-angle,0deg));transform-origin:50% 0}
.gallery-scene .staff{--label-edge:91.3%;--label-angle:-13.5deg}
.gallery-scene .map{--label-edge:85.7%;--label-angle:-13.5deg}
.gallery-scene .contracts{--label-edge:88.9%;--label-angle:-12.5deg}
.gallery-scene .party{--label-edge:90%;--label-angle:-12deg}
.gallery-scene .inventory{--label-edge:91.8%;--label-angle:-9deg}
.gallery-scene .vehicle{--label-edge:92.8%;--label-angle:12deg}
/* Pivot at the contact edge to follow the desktop. */
.gallery-scene .music-box.gallery-music{top:82.6%;transform:rotate(7deg);transform-origin:50% 95%}
.gallery-scene .gallery-music span{transform:translateX(-50%) rotate(3deg)}

/* Warm gas flames breathe independently; composited light never intercepts input. */
.gallery-scene .gas-light-layer{position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:screen;contain:layout paint}
.gallery-scene .gas-light{position:absolute;display:block;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,rgba(255,239,180,.28) 0%,rgba(255,196,105,.17) 15%,rgba(241,143,63,.10) 31%,rgba(209,110,61,.045) 51%,transparent 72%);opacity:.65;animation:gas-lamp-breathe var(--light-time) ease-in-out var(--light-delay) infinite;will-change:opacity}
.gallery-scene .gas-light:after{content:'';position:absolute;left:42%;top:39%;width:16%;height:22%;border-radius:50%;background:radial-gradient(ellipse,#fff3c94d,#ffb95e18 46%,transparent 72%)}
@keyframes gas-lamp-breathe{0%,100%{opacity:.62}14%{opacity:.86}27%{opacity:.57}42%{opacity:.73}56%{opacity:.94}71%{opacity:.64}86%{opacity:.8}}
@media(prefers-reduced-motion:reduce){.gallery-scene .gas-light{animation:none;opacity:.65;will-change:auto}}

/* Center labels on the projected bottom edge, not the rectangular hit area. */
.gallery-scene .map .gallery-label{left:51.75%}
.gallery-scene .party .gallery-label{left:52.44%}
.gallery-scene .inventory .gallery-label{left:51.44%}
.gallery-scene .vehicle .gallery-label{left:41.6%;top:calc(92.8% + .72cqw)}
/* Lift the contact edge onto the desktop's rear line. */
.gallery-scene .music-box.gallery-music{top:80.9%}

/* Upright vertical art names emerge near the entrance, then drift upward away. */
.gallery-scene .hotspot .gallery-label{display:flex;flex-direction:column;align-items:center;width:2.4cqw;height:auto;top:calc(var(--label-edge,100%) + .9cqw);left:50%;transform:translate(-50%,-1.5cqw);opacity:0;filter:sepia(.75) saturate(.85) brightness(1.12) blur(4px);pointer-events:none;transition:opacity .4s,transform .5s,filter .4s}
.gallery-label-glyph{display:block;position:relative;width:2.4cqw;height:2.55cqw;overflow:hidden}
.gallery-scene .gallery-label-glyph img{position:absolute;left:0;top:0;width:4.8cqw;height:2.55cqw;max-width:none;object-fit:fill}
.gallery-scene .gallery-label-glyph+ .gallery-label-glyph img{left:-2.4cqw}
.gallery-scene .hotspot:hover .gallery-label,.gallery-scene .hotspot:focus-visible .gallery-label{opacity:1;transform:translate(-50%,0);filter:sepia(.9) saturate(.7) brightness(1.3) drop-shadow(0 0 5px #fff2b3aa)}
.gallery-scene .music-box.gallery-music{top:82.1%}
.gallery-scene .gallery-music img.gallery-sound-label{position:absolute;left:50%;top:100%;width:2.4cqw;height:5.1cqw;object-fit:contain;transform:translate(-50%,-1.5cqw) rotate(-7deg);opacity:0;pointer-events:none;filter:sepia(.75) saturate(.85) brightness(1.12) blur(4px);transition:opacity .4s,transform .5s,filter .4s}
.gallery-scene .gallery-music:hover img.gallery-sound-label,.gallery-scene .gallery-music:focus-visible img.gallery-sound-label{opacity:1;transform:translate(-50%,0) rotate(-7deg);filter:sepia(.9) saturate(.7) brightness(1.3) drop-shadow(0 0 5px #fff2b3aa)}
@media(prefers-reduced-motion:reduce){.gallery-scene .hotspot .gallery-label,.gallery-scene .gallery-music img.gallery-sound-label{transition:none}}

.gallery-scene .hotspot:after,.gallery-scene .gallery-music:after{content:'';position:absolute;inset:-.8cqw;z-index:-1;background:transparent}

.gallery-decoration-layer{position:absolute;inset:0;z-index:1;pointer-events:none}.gallery-decoration{position:absolute;display:block;background-image:url("ui/gallery-decoration-atlas-v1.webp");background-size:500% 200%;background-repeat:no-repeat;filter:brightness(.64) saturate(.55) contrast(.85)}

/* Six original oils, projected onto the exact shared inner-edge geometry. */
.gallery-scene .gallery-art .gallery-painting{inset:0;width:100%;height:100%;object-fit:cover;transform-origin:0 0;filter:brightness(.92) saturate(.9);transition:none}
.gallery-scene .staff .gallery-painting{object-position:50% 35%}
.gallery-scene .hotspot:hover .gallery-painting,.gallery-scene .hotspot:focus-visible .gallery-painting,.gallery-scene .hotspot:active .gallery-painting{filter:brightness(.92) saturate(.9)}
.gallery-scene .hotspot:before{display:none}
.gallery-inner-light{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:0;transition:opacity .22s;filter:drop-shadow(0 0 2px #fff0bd) drop-shadow(0 0 5px #d7eaffaa)}
.gallery-inner-light polygon{fill:none;stroke:#fff0c6;stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.gallery-scene .hotspot:hover .gallery-inner-light,.gallery-scene .hotspot:focus-visible .gallery-inner-light,.gallery-scene .hotspot:active .gallery-inner-light{opacity:1}
@media(prefers-reduced-motion:reduce){.gallery-inner-light{transition:none}}

/* Keep the complete name above adjacent paintings through its exit animation. */
.gallery-scene .hotspot{z-index:3;overflow:visible;transition:z-index .5s step-end}
.gallery-scene .hotspot:hover,.gallery-scene .hotspot:focus-visible{z-index:8;transition:none}
.gallery-scene .music-box.gallery-music{overflow:visible;transition:z-index .5s step-end}
.gallery-scene .gallery-music:hover,.gallery-scene .gallery-music:focus-visible{z-index:8;transition:none}
.gallery-scene .hotspot .gallery-label{overflow:visible;flex:none}
.gallery-scene .gallery-label-glyph{flex:0 0 2.55cqw}

/* Names live outside painting stacking contexts, including their fade-out. */
.gallery-name-layer{position:fixed;inset:0;z-index:20;pointer-events:none}
.gallery-floating-name{position:absolute;display:flex;flex-direction:column;width:calc(var(--name-unit)*2.4);opacity:0;transform:translate(-50%,calc(var(--name-unit)*-1.5));filter:sepia(.75) saturate(.85) brightness(1.12) blur(4px);transition:opacity .4s,transform .5s,filter .4s;pointer-events:none}
.gallery-floating-name.visible{opacity:1;transform:translate(-50%,0);filter:sepia(.9) saturate(.7) brightness(1.3) drop-shadow(0 0 5px #fff2b3aa)}
.gallery-floating-name .gallery-label-glyph{position:relative;display:block;flex:none;width:calc(var(--name-unit)*2.4);height:calc(var(--name-unit)*2.55);overflow:hidden}
.gallery-floating-name .gallery-label-glyph img{position:absolute;top:0;left:0;width:calc(var(--name-unit)*4.8);height:calc(var(--name-unit)*2.55);max-width:none;object-fit:fill}
.gallery-floating-name .gallery-label-glyph+ .gallery-label-glyph img{left:calc(var(--name-unit)*-2.4)}
.gallery-floating-name.letters-name .gallery-label-glyph:first-child img{clip-path:inset(0 52% 0 0)}
.gallery-floating-name.sound-name{height:calc(var(--name-unit)*5.1);object-fit:fill}
.music-library .music-library-close.troupe-return-icon{width:58px;height:58px;min-width:58px;flex-basis:58px;background:none;border:0;box-shadow:none;padding:0!important}
.music-library-close.troupe-return-icon img{width:100%;height:100%;object-fit:contain}
@media(prefers-reduced-motion:reduce){.gallery-floating-name{transition:none}}

/* Brighter gas halos, floating dust within their pools of light, and the final screen grade. */
.gallery-scene .gallery-window .caravan-dusk-track{animation-duration:38s}
.gallery-scene .gas-light{background:radial-gradient(ellipse at center,rgba(255,244,197,.48) 0%,rgba(255,204,119,.29) 15%,rgba(246,153,73,.18) 31%,rgba(219,116,63,.08) 51%,transparent 72%);transform:translate(-50%,-50%) scale(1.25);animation-name:gas-lamp-warm-breathe}
@keyframes gas-lamp-warm-breathe{0%,100%{opacity:.73}14%{opacity:.96}27%{opacity:.68}42%{opacity:.84}56%{opacity:1}71%{opacity:.76}86%{opacity:.91}}
.gallery-scene .gallery-dust-layer{position:absolute;inset:0;z-index:6;overflow:hidden;pointer-events:none;contain:layout paint}
.gallery-scene .gallery-dust{position:absolute;display:block;width:var(--dust-size);height:var(--dust-size);border-radius:50%;background:#ffe9ba;box-shadow:0 0 3px #ffda9473;opacity:0;animation:gallery-dust-float var(--dust-time) ease-in-out var(--dust-delay) infinite;pointer-events:none}
@keyframes gallery-dust-float{0%{opacity:0;transform:translate(0,0)}18%{opacity:.34}48%{opacity:.6}76%{opacity:.25}100%{opacity:0;transform:translate(var(--dust-x),var(--dust-y))}}
body>.screen-temperature-grade{position:fixed;inset:0;z-index:2147483647;pointer-events:none;background:linear-gradient(270deg,rgba(76,120,187,.16) 0%,rgba(95,124,168,.085) 30%,rgba(160,134,127,.025) 50%,rgba(203,152,96,.085) 72%,rgba(231,159,89,.15) 100%)}
@media(prefers-reduced-motion:reduce){.gallery-scene .gas-light{animation:none;opacity:.85}.gallery-scene .gallery-dust{animation:none;opacity:.24}}

/* One vector lettering treatment shared by all seven names. */
.gallery-floating-name,.gallery-floating-name.sound-name{width:auto;height:auto;display:block;writing-mode:vertical-rl;text-orientation:upright;font-family:"KaiTi","STKaiti","FangSong","Noto Serif CJK SC",serif;font-size:calc(var(--name-unit)*2.55);font-weight:500;line-height:1.12;letter-spacing:.08em;color:#f3fbff;-webkit-text-stroke:.35px #b7dfff;text-shadow:0 0 3px #bde5ff,0 0 9px #9bcff6aa;filter:blur(4px);white-space:nowrap}
.gallery-floating-name.visible{filter:drop-shadow(0 0 5px #a8daffaa)}
.gallery-inner-light{filter:drop-shadow(0 0 2px #c5e9ff) drop-shadow(0 0 6px #9bcfffaa)}
.gallery-inner-light polygon{stroke:#c5e9ff}
.gallery-scene .gallery-music:hover>img:not(.gallery-sound-label),.gallery-scene .gallery-music:focus-visible>img:not(.gallery-sound-label){filter:brightness(.95) saturate(.95) drop-shadow(0 0 5px #b7e1ffaa) drop-shadow(2px 3px 2px #170a1ed9)}

/* Paired horizontal names with a restrained pale-blue halo. */
.gallery-floating-name,.gallery-floating-name.sound-name{writing-mode:horizontal-tb;text-orientation:mixed;letter-spacing:.12em;-webkit-text-stroke:.2px #d6ecfa;text-shadow:0 0 2px #d5edff88,0 0 5px #b7dbf744}
.gallery-floating-name.visible{filter:drop-shadow(0 0 2px #c5e5ff44)}
.gallery-inner-light{filter:drop-shadow(0 0 1px #d7eeff88) drop-shadow(0 0 4px #b9deff55)}
.gallery-inner-light polygon{stroke:#d5eafa;stroke-opacity:.78}
.gallery-scene .gallery-music:hover>img:not(.gallery-sound-label),.gallery-scene .gallery-music:focus-visible>img:not(.gallery-sound-label){filter:brightness(.95) saturate(.95) drop-shadow(0 0 3px #cbe8ff66) drop-shadow(2px 3px 2px #170a1ed9)}

/* Canvases extend beneath the original wall, which masks every frame edge. */
.gallery-scene .hotspot,.gallery-scene .hotspot:hover,.gallery-scene .hotspot:focus-visible,.gallery-scene .hotspot:active{z-index:1;transition:none}
body>.gallery-scene>img.gallery-wall{pointer-events:none}
.gallery-scene .hotspot .gallery-art{clip-path:none;overflow:visible;background:none}

/* The second character sits lower and to the right of the first. */
.gallery-floating-name,.gallery-floating-name.sound-name{display:flex;flex-direction:column;align-items:flex-start;writing-mode:horizontal-tb;letter-spacing:0;width:1.55em;line-height:1.06}
.gallery-name-letter{display:block;flex:none}
.gallery-name-letter+.gallery-name-letter{margin-left:.55em;margin-top:.08em}
/* Light sits over the wall mask while canvases stay tucked beneath it. */
.gallery-scene>.gallery-inner-light{inset:auto;z-index:3;filter:drop-shadow(0 0 3px #d1ebffcc) drop-shadow(0 0 9px #b2dbff99) drop-shadow(0 0 17px #a8d7ff55)}
.gallery-scene>.gallery-inner-light.visible{opacity:1}
.gallery-scene>.gallery-inner-light polygon{stroke:#d5eafa;stroke-width:1.7;stroke-opacity:.85}

/* Diffuse light follows the actual rendered canvas bounds; no hard outline. */
.gallery-scene>.gallery-inner-light{filter:blur(3px) drop-shadow(0 0 6px #baddffbb) drop-shadow(0 0 14px #baddff88);mix-blend-mode:screen}
.gallery-scene>.gallery-inner-light polygon{stroke:#c8e5ff;stroke-width:7;stroke-opacity:.68}

/* Music-box selection shares the paintings' diffuse pale-blue light. */
.gallery-scene .gallery-music>img:not(.gallery-sound-label){transition:filter .22s}
.gallery-scene .gallery-music:hover>img:not(.gallery-sound-label),.gallery-scene .gallery-music:focus-visible>img:not(.gallery-sound-label),.gallery-scene .gallery-music:active>img:not(.gallery-sound-label){filter:brightness(.83) saturate(.9) drop-shadow(0 0 3px #c8e5ffad) drop-shadow(0 0 6px #baddffbb) drop-shadow(0 0 14px #baddff88) drop-shadow(2px 3px 2px #170a1ed9)}
@media(prefers-reduced-motion:reduce){.gallery-scene .gallery-music>img:not(.gallery-sound-label){transition:none}}
