.passenger-memory-restore {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: #fff;
    opacity: 0;
    transition: opacity 700ms ease;
}
.passenger-memory-restore[hidden] { display: none; }
.passenger-memory-restore.visible { opacity: 1; }
.passenger-memory-noise {
    position: absolute;
    inset: -20%;
    opacity: .06;
    background-image: repeating-linear-gradient(0deg, transparent 0 3px, #000 4px);
    animation: passengerMemoryNoise 180ms steps(2) infinite;
}
.passenger-memory-head {
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(48vw, 660px);
    transform: translate(-50%, -50%) scale(.96);
    opacity: 0;
    filter: grayscale(1) contrast(1.08);
    transition: opacity 1800ms ease, transform 2600ms cubic-bezier(.2,.8,.2,1), filter 2200ms ease;
}
.passenger-memory-head img { display: block; width: 100%; height: auto; }
.passenger-memory-restore.reconstructing .passenger-memory-head {
    opacity: .24;
    transform: translate(-50%, -50%) scale(1);
}
.passenger-memory-restore.complete .passenger-memory-head {
    opacity: .5;
    filter: grayscale(1) contrast(1);
}
.passenger-memory-line {
    position: relative;
    z-index: 2;
    margin: 0;
    padding-top: min(58vh, 560px);
    font: 400 12px/1.4 Arial, sans-serif;
    letter-spacing: .32em;
    text-transform: uppercase;
    color: #111;
    opacity: 0;
    transform: translateY(7px);
    transition: opacity 420ms ease, transform 420ms ease;
}
.passenger-memory-line.shown { opacity: 1; transform: translateY(0); }
body.passenger-memory-restoring { overflow: hidden !important; }
@keyframes passengerMemoryNoise {
    0% { transform: translateY(-2px); }
    100% { transform: translateY(2px); }
}
