/* Neutral leaders stay readable on both pale flooring and the dark backdrop. */
#room-cards>svg>path.room-leader-under{stroke:#252b2e;stroke-width:2.4;stroke-opacity:.16;opacity:1;fill:none;stroke-linecap:round;pointer-events:none}
#room-cards>svg>path.room-leader{stroke:#fff;stroke-width:.8;stroke-opacity:.56;opacity:1;fill:none;stroke-linecap:round;pointer-events:none}
#room-cards>svg>path.room-leader:is(.is-active,.is-near,.is-highlighted){stroke-width:1;stroke-opacity:.76;opacity:1}
#room-cards>svg>circle.room-anchor{fill:#e6e9eb;stroke:#252b2e;stroke-width:.75;opacity:.65;pointer-events:none}
#room-cards>svg>circle.room-anchor:is(.is-active,.is-near,.is-highlighted){fill:#fff;opacity:.85}
/* Avoid six live backdrop-blur surfaces sampling a moving WebGL canvas. */
#room-cards.is-orbiting .room-float-card{backdrop-filter:none;-webkit-backdrop-filter:none;background:#25292cce}
/* Camera-linked glow motion uses compositor translations instead of left/top layout. */
#scene-aura::before,body[data-time] #scene-aura::before{left:50%;top:40%;translate:calc(var(--glow-x,50%) - 50%) calc(var(--glow-y,40%) - 40%);transition:translate .7s ease-out,background .8s}
#scene-aura::after,body[data-time] #scene-aura::after{left:50%;top:45%;translate:calc(50% - var(--glow-x,50%)) calc(40% - var(--glow-y,40%));transition:translate .9s ease-out,background .8s}
@media(prefers-reduced-motion:reduce){#scene-aura::before,body[data-time] #scene-aura::before,#scene-aura::after,body[data-time] #scene-aura::after{transition:none}}
