/* Native cross-document transitions keep links, history and navigation intact. */
@view-transition{navigation:auto}
@keyframes orbit-page-out{to{opacity:0;filter:brightness(.65);transform:scale(1.015)}}
@keyframes orbit-page-in{from{opacity:0;filter:brightness(.65);transform:scale(1.025)}to{opacity:1;filter:brightness(1);transform:scale(1)}}
::view-transition-group(root){animation-duration:.7s;animation-timing-function:cubic-bezier(.2,.7,.2,1)}
::view-transition-old(root){animation:orbit-page-out .45s ease both;mix-blend-mode:normal}
::view-transition-new(root){animation:orbit-page-in .7s cubic-bezier(.2,.7,.2,1) both;mix-blend-mode:normal}
/* Only the Observatory-to-game journey shares the room. Other pages keep
   their usual page dissolve, with no click interception or URL rewriting. */
.room-window,.room-match{view-transition-name:none}
.room-transition .room-window,.room-transition .room-match{view-transition-name:mystery-room}
::view-transition-group(mystery-room){animation-duration:1.2s;animation-timing-function:cubic-bezier(.18,.7,.24,1)}
::view-transition-old(mystery-room){animation:room-passage-out 1.1s cubic-bezier(.2,.65,.25,1) both;mix-blend-mode:normal;transform-origin:50% 56%}
::view-transition-new(mystery-room){animation:room-passage-in 1.2s cubic-bezier(.2,.65,.25,1) both;mix-blend-mode:normal;transform-origin:50% 56%}
@keyframes room-passage-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.07)}}
@keyframes room-passage-in{from{opacity:0;transform:scale(.985)}45%{opacity:.75}to{opacity:1;transform:scale(1)}}
@media(max-width:760px){::view-transition-group(mystery-room),::view-transition-new(mystery-room){animation-duration:.95s}::view-transition-old(mystery-room){animation-duration:.85s}@keyframes room-passage-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.035)}}}
.motion-paused::view-transition-group(*),.no-motion::view-transition-group(*){animation-duration:.001s!important}
.motion-paused::view-transition-old(*),.motion-paused::view-transition-new(*),.no-motion::view-transition-old(*),.no-motion::view-transition-new(*){animation:none!important}
@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
