/* Focus behaviour adapted for the existing canvas; no artwork modification. */
.focus-lens { display: none; pointer-events: none; position: absolute; inset: 0; z-index: 2; }
/* Blur a dedicated scene copy instead of sampling a masked backdrop.
   This keeps initial rendering identical to hover rendering. */
.focus-lens { overflow: hidden; }
.focus-lens canvas { filter: blur(18px); transform: scale(1.12); }
@media (min-width: 1000px) and (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .journey-art[data-rendered=true] .focus-lens { display: block;
    mask-image: radial-gradient(ellipse var(--lens-rx, 170px) var(--lens-ry, 170px) at var(--lens-x, 53%) var(--lens-y, 40%), transparent 30%, #000 100%);
    -webkit-mask-image: radial-gradient(ellipse var(--lens-rx, 170px) var(--lens-ry, 170px) at var(--lens-x, 53%) var(--lens-y, 40%), transparent 30%, #000 100%);
  }
}
.journey .journey-controls { display: grid; grid-template-columns: auto minmax(0, 1fr) 44px; align-items: center; column-gap: 16px; padding-top: 12px; }
.journey .journey-transport { gap: 2px; }
.journey .journey-timeline { margin: 0; }
.journey .media-icon, .journey #play-toggle { display: inline-grid; place-items: center; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 10px; border: 0; border-radius: 8px; background: transparent; color: #fff; }
.journey .media-icon:hover:enabled { background: #ffffff0d; color: #fec0ff; }
.media-icon svg { display: block; width: 22px; height: 22px; fill: currentColor; }
#play-toggle .icon-pause, #play-toggle .icon-replay { display: none; }
#play-toggle[data-playback=pause] .icon-play, #play-toggle[data-playback=replay] .icon-play { display: none; }
#play-toggle[data-playback=pause] .icon-pause, #play-toggle[data-playback=replay] .icon-replay { display: block; }
.journey #player-status, .journey #reduced-motion-note { margin: 0; min-height: 0; }
.journey #asset-error, .journey noscript { grid-column: 1 / -1; }

/* Alpha feather: the whole frame including the blur fades into the page. */
@media (min-width: 0px) {
  .journey-stage { background: transparent; }
  .journey-art { --edge: clamp(24px, 3vw, 48px); border: 0; box-shadow: none;
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--edge), #000 calc(100% - var(--edge)), transparent 100%), linear-gradient(to bottom, transparent 0, #000 var(--edge), #000 calc(100% - var(--edge)), transparent 100%);
    mask-image: linear-gradient(to right, transparent 0, #000 var(--edge), #000 calc(100% - var(--edge)), transparent 100%), linear-gradient(to bottom, transparent 0, #000 var(--edge), #000 calc(100% - var(--edge)), transparent 100%);
    -webkit-mask-composite: source-in; mask-composite: intersect; mask-mode: alpha;
  }
  .journey-art::after { content: none; }
}
.journey #music-toggle[aria-disabled=true] { opacity: .65; cursor: default; }
.journey #music-toggle .sound-on { display: none; }
.journey #music-toggle[data-sound=enabled] .sound-on { display: block; }
.journey #music-toggle[data-sound=enabled] .sound-off { display: none; }
@media (max-width: 600px) { .journey .journey-controls { column-gap: 8px; } }
