.objects-stage.objects-collage{width:min(1100px,100%);margin:22px auto 75px;overflow:visible;padding:0;background:none}
.objects-composition{display:block;position:relative;width:100%;aspect-ratio:1000/530;isolation:isolate}
.objects-composition img{position:absolute;display:block;height:auto;object-fit:contain;mix-blend-mode:normal}
.objects-composition .object-hydrant{left:7.5%;top:27.2%;width:21.1%;z-index:1}
.objects-composition .object-traffic{left:20.5%;top:13.4%;width:31.4%;z-index:3}
.objects-composition .object-cardboard{left:49%;top:37%;width:26.3%;z-index:2}
.objects-composition .object-charm{left:67.2%;top:18.9%;width:24%;z-index:4}
.objects-composition .object-bubble{left:72.2%;top:20.8%;width:21%;z-index:5}
.objects-collage .objects-composition{transform:none}
.objects-collage img,.objects-collage:hover img{transform:none}
.dialog-visual.objects{aspect-ratio:1000/530;display:block}
.dialog-visual.objects .objects-composition img{height:auto;object-fit:contain}
.case-object-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.case-object-gallery figure{margin:0;background:#080808;padding:20px;border-radius:8px}
.case-object-gallery img{width:100%;height:320px;object-fit:contain}
.case-object-gallery figcaption{font-size:12px;color:#b1b1ad;margin-top:16px;text-align:center}
@media(max-width:600px){.objects-stage.objects-collage{width:100%;margin:22px auto 48px}.case-object-gallery{gap:10px}.case-object-gallery figure{padding:10px}.case-object-gallery img{height:190px}}
@media(prefers-reduced-motion:reduce){.objects-collage .objects-composition{transform:none;transition:none}}

/* Each character owns its hit area; the composition stays still. */
.objects-composition .object-trigger{position:absolute;display:block;padding:0;border:0;background:transparent;line-height:0;border-radius:12px;touch-action:manipulation}
.objects-composition .object-trigger img{position:static;display:block;width:100%;height:auto;pointer-events:none;user-select:none;transform:none;transition:filter .25s ease}
.objects-composition .object-bubble{pointer-events:none}
.objects-composition .bubble-trigger{position:absolute;display:block;padding:0;border:0;background:none;line-height:0;border-radius:20px;touch-action:manipulation}
.objects-composition .bubble-trigger img{position:static;width:100%;height:auto;pointer-events:none;user-select:none;transform-origin:72% 96%}
.objects-stage .bubble-trigger{pointer-events:auto;cursor:pointer}
.objects-stage .bubble-trigger:focus-visible{outline:2px dashed #f5cf61;outline-offset:6px}
.objects-stage .bubble-trigger:is(:hover,:focus-visible) img{filter:drop-shadow(0 0 10px #fff3)}
.objects-stage .bubble-trigger:active img{filter:brightness(1.18)}
.object-trigger.object-hydrant{--character-motion:hydrant-wiggle 1.4s ease-in-out infinite}
.object-trigger.object-traffic{--character-motion:traffic-greet 1.7s ease-in-out infinite}
.object-trigger.object-cardboard{--character-motion:cardboard-hop 1.25s ease-in-out infinite}
.object-trigger.object-charm{--character-motion:charm-swing 1.8s ease-in-out infinite}
.object-hydrant img,.object-cardboard img{transform-origin:50% 92%}
.object-traffic img{transform-origin:50% 86%}
.object-charm img{transform-origin:35% 8%}
.objects-stage .object-trigger:focus-visible{outline:2px dashed #f5cf61;outline-offset:6px}
.objects-stage .object-trigger:focus-visible img{animation:var(--character-motion);filter:drop-shadow(0 0 14px #f5cf6138)}
@media(hover:hover) and (pointer:fine){
 .objects-stage .object-trigger:hover img{animation:var(--character-motion);filter:drop-shadow(0 8px 15px #ffffff24)}
}
.objects-stage .object-trigger:active img{animation:none;transform:scale(.96);filter:brightness(1.13)}
@keyframes hydrant-wiggle{
 0%,100%{transform:rotate(0) translateY(0)}
 25%{transform:rotate(-6deg) translateY(-2%)}
 60%{transform:rotate(5deg) translateY(-1%)}
 80%{transform:rotate(-2deg)}
}
@keyframes traffic-greet{
 0%,100%{transform:rotate(0);filter:drop-shadow(0 0 0 #80ec5e00)}
 45%{transform:rotate(-4deg) translateY(-2%);filter:drop-shadow(0 0 16px #80ec5e65) brightness(1.12)}
 75%{transform:rotate(2deg);filter:drop-shadow(0 0 9px #ffe26b40)}
}
@keyframes cardboard-hop{
 0%,100%{transform:translateY(0) scale(1)}
 18%{transform:scale(1.035,.96)}
 44%{transform:translateY(-7%) rotate(-3deg) scale(.98,1.02)}
 68%{transform:translateY(0) scale(1.025,.975)}
 82%{transform:translateY(-1.5%) rotate(1deg)}
}
@keyframes charm-swing{
 0%,100%{transform:rotate(0)}
 25%{transform:rotate(8deg)}
 65%{transform:rotate(-7deg)}
}
@media(prefers-reduced-motion:reduce){
 .objects-stage .object-trigger img{animation:none!important;transform:none!important;transition:none}
 .objects-stage .object-trigger:is(:hover,:focus-visible) img{filter:brightness(1.12) drop-shadow(0 0 10px #ffffff30)}
}
