/* A spatial passage between public destinations; never covers or captures input. */
.journey-fx { position: fixed; z-index: 90; inset: -25vmax; pointer-events: none; visibility: hidden; opacity: 0; overflow: clip; contain: paint; }
.journey-fx.is-active { visibility: visible; }
.journey-aperture { position: absolute; width: 65vmax; height: 65vmax; left: calc(50% - 32.5vmax); top: calc(50% - 32.5vmax); border: 1px solid #ffd9a8b0; border-radius: 50%; background: radial-gradient(ellipse,transparent 54%,#ff8a1428 62%,transparent 71%); box-shadow: 0 0 0 3vmax #ffbd530a,0 0 0 9vmax #ffbd5306; }
.journey-aperture i { position: absolute; inset: 8%; border: 1px solid #ffb54790; border-radius: 50%; }
.journey-aperture i:nth-child(2) { inset: 19%; border-color: #ffdfacb0; }
.journey-aperture i:nth-child(3) { inset: -20%; border-color: #ffcfa95e; }
.journey-traces { position: absolute; inset: 0; background: repeating-conic-gradient(from 25deg at 50% 50%,transparent 0deg 18deg,#ffcf8850 18.1deg 18.25deg,transparent 18.5deg 30deg); mask-image: radial-gradient(ellipse,transparent 20%,#000 48%,transparent 75%); }
.button,.text-link,.nav-toggle { transition: transform 160ms var(--ease-out),border-color 180ms ease,background-color 180ms ease; }
.button:active,.nav-toggle:active { transform: scale(.97); }
@media (hover:hover) and (pointer:fine) { .text-link:hover { transform: translateX(4px); } }
@media (prefers-reduced-motion:reduce) { .journey-fx { display: none; } .button,.text-link,.nav-toggle { transition: border-color 180ms ease,background-color 180ms ease; } .button:active,.nav-toggle:active,.text-link:hover { transform: none; } }
