/* Firefox Analogue Mode — strictly untransformed HTML. All elements share ONE sheet width. */
.analogue-entry[hidden]{display:none!important}
.analogue-entry{position:fixed;z-index:9000;top:clamp(-44px,-3vw,-22px);left:clamp(0px,1.1vw,16px);width:clamp(260px,28vw,370px);padding:0;border:0;background:transparent;cursor:pointer;filter:drop-shadow(0 3px 11px rgba(0,0,0,.35));}
.analogue-entry img{display:block;width:100%;height:auto}
.analogue-entry:hover{filter:brightness(1.13) drop-shadow(0 3px 11px rgba(0,0,0,.4));}
.analogue-entry:focus-visible{outline:3px solid #a5eaff;outline-offset:-3px;}
.analogue-overlay{--analogue-motion:2300ms;position:fixed;inset:0;z-index:9500;overflow:hidden;visibility:hidden;pointer-events:none;background:rgba(3,8,12,.18);opacity:0;transition:opacity .16s ease,visibility .16s ease;isolation:isolate;}
.analogue-overlay.is-active{visibility:visible;pointer-events:auto;opacity:1;}
.analogue-sheet{position:absolute;top:0;left:50%;transform:translateX(-50%);width:min(92vw,1160px);height:100%;--roller-bottom:clamp(27px,5vw,64px);--paper-open-height:calc(100% - var(--roller-bottom) - 22px);}
.analogue-paper{position:absolute;top:var(--roller-bottom);left:6.6%;right:7.3%;height:0;overflow:hidden;background:linear-gradient(90deg,#bdbbb6 0%,#e9e7e2 3%,#eeeae1 49%,#e5e2da 96%,#c3c1bb 100%);border-left:clamp(4px,.8vw,11px) solid #383838;border-right:clamp(4px,.8vw,11px) solid #383838;box-shadow:inset 0 0 2px #fff,4px 0 14px #0002,-4px 0 14px #0002;transition:height var(--analogue-motion) ease-in-out;}
.analogue-bar{position:absolute;top:var(--roller-bottom);left:0;width:100%;height:auto;max-width:none;pointer-events:none;transition:none;}
.analogue-roller{position:absolute;top:clamp(-104px,-8.5vw,-26px);left:0;width:100%;height:auto;max-width:none;pointer-events:none;z-index:4;}
.analogue-overlay.is-unrolled .analogue-paper{height:var(--paper-open-height);}
/* Replayable teacher motion on EVERY cycle; not dependent on a previously transitioned top value. */
.analogue-overlay.is-unrolled .analogue-bar{top:calc(100% - 22px);}
.analogue-overlay.is-opening .analogue-bar{animation:analogue-teacher-down var(--analogue-motion) ease-in-out both;}
.analogue-overlay.is-closing .analogue-bar{animation:analogue-teacher-up var(--analogue-motion) ease-in-out both;}
@keyframes analogue-teacher-down{
  from{top:var(--roller-bottom)}
  to{top:calc(100% - 22px)}
}
@keyframes analogue-teacher-up{
  from{top:calc(100% - 22px)}
  to{top:var(--roller-bottom)}
}
.analogue-interface{position:absolute;inset:0;display:flex;flex-direction:column;min-width:0;color:#282723;font-family:Georgia,'Times New Roman',serif;opacity:0;transition:opacity .25s ease;pointer-events:none;}
.analogue-overlay.is-ready .analogue-interface{opacity:1;pointer-events:auto;}
.analogue-header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:clamp(52px,6vh,66px);padding:9px clamp(12px,3vw,38px);border-bottom:2px solid #393934;font-family:Arial,Helvetica,sans-serif;}
.analogue-brand{display:flex;flex-direction:column;gap:3px;font-size:clamp(13px,2vw,20px);letter-spacing:.06em;}
.analogue-brand small{font-family:'Courier New',monospace;font-size:clamp(8px,1vw,11px);font-weight:normal;letter-spacing:.12em;}
.analogue-header-actions{display:flex;gap:7px;align-items:center;}
.analogue-header button,.analogue-nav button{font:700 12px Arial,sans-serif;letter-spacing:.07em;border:1px solid #383833;background:#e8e5dc;color:#222;cursor:pointer;padding:9px 10px;border-radius:0;white-space:nowrap;}
.analogue-header button:hover,.analogue-nav button:hover,.analogue-nav button.active{background:#292929;color:#f7f4e9;}
.analogue-header button:focus-visible,.analogue-nav button:focus-visible{outline:2px solid black;outline-offset:2px;}
.analogue-nav[hidden]{display:none!important;}
.analogue-nav{position:absolute;right:clamp(10px,3vw,36px);top:clamp(51px,6vh,65px);z-index:8;width:min(270px,88%);max-height:calc(100% - 80px);overflow-y:auto;padding:8px;border:2px solid #383833;background:#e8e5dc;box-shadow:6px 8px 0 #0004;display:grid;grid-template-columns:1fr 1fr;gap:4px;}
.analogue-nav button{text-align:left;padding:10px 8px;}
.analogue-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:clamp(13px,2.5vw,34px) clamp(13px,3.5vw,44px);scrollbar-color:#555 #d2cdc2;scrollbar-width:thin;}
.analogue-scroll:focus-visible{outline:2px dashed #777;outline-offset:-3px}
.analogue-content,.analogue-content *{box-sizing:border-box;}
.analogue-content .route-page,.analogue-content .panel-scroll,.analogue-content .press-panel,.analogue-content .contact-panel,.analogue-content .intro,.analogue-content .audio-panel{position:static!important;display:block!important;width:auto!important;max-width:100%!important;min-height:0!important;height:auto!important;max-height:none!important;overflow:visible!important;transform:none!important;filter:none;animation:none!important;background:transparent!important;color:#252525!important;text-align:left;}
.analogue-content h1,.analogue-content h2,.analogue-content h3{font-family:Georgia,'Times New Roman',serif;color:#262626!important;text-shadow:none!important;letter-spacing:0;text-transform:none;}
.analogue-content h1{font-size:clamp(24px,3vw,36px);line-height:1.16;margin:0 0 20px;}
.analogue-content h2{font-size:clamp(20px,2.5vw,29px);margin:0 0 18px;}
.analogue-content h3{font-size:clamp(17px,2.2vw,23px);}
.analogue-content p,.analogue-content li{font:normal clamp(15px,1.5vw,19px)/1.55 Georgia,serif!important;color:#262626!important;text-shadow:none!important;max-width:75ch!important;margin:0 0 16px;}
.analogue-content a{color:#111!important;text-decoration:underline!important;text-shadow:none!important;}
.analogue-content img{max-width:100%;height:auto;object-fit:contain;}
.analogue-content .route-home,.analogue-content .intro,.analogue-content .intro-logo-wrap{display:block!important;max-width:100%!important;height:auto!important;}
.analogue-content .intro-logo{max-width:min(100%,610px)!important;height:auto!important;max-height:none!important;filter:grayscale(1) brightness(0)!important;object-fit:contain;}
.analogue-content .route-photo .band-photo-stage,.analogue-content .route-photo .band-photo-effect{display:block!important;position:static!important;width:auto!important;height:auto!important;transform:none!important;animation:none!important;max-width:100%!important;}
.analogue-content .route-photo .band-photo{display:block;position:static!important;max-width:min(100%,800px)!important;width:auto!important;max-height:none!important;height:auto!important;filter:grayscale(1)!important;transform:none!important;}
.analogue-content .route-photo .band-photo-note{position:static!important;display:block!important;width:auto!important;height:auto!important;transform:none!important;max-width:100%!important;color:#444!important;padding:12px 0;font:12px/1.4 Arial,sans-serif!important;writing-mode:horizontal-tb!important;}
.analogue-content .route-photo .band-photo-note span{position:static!important;display:inline!important;writing-mode:horizontal-tb!important;transform:none!important;font:inherit!important;}
.analogue-content .member,.analogue-content .live-event,.analogue-content .press-kit-primary,.analogue-content .press-group{position:static!important;height:auto!important;max-width:100%!important;width:auto!important;display:block!important;margin:0 0 24px;padding:0;background:none!important;border:0;color:#222!important;}
.analogue-content .press-download,.analogue-content .press-kit-download{display:flex!important;justify-content:space-between;flex-wrap:wrap;gap:8px;height:auto!important;padding:12px 0!important;border-bottom:1px solid #aaa!important;background:none!important;box-shadow:none!important;}
.analogue-content .press-list,.analogue-content .press-group,.analogue-content .member-rich{max-width:100%!important;}
.analogue-content .social-entry,.analogue-content .social-entry-link{display:block!important;position:static!important;max-width:100%!important;width:auto!important;margin:10px 0!important;padding:16px!important;background:#d8d5cd!important;border:1px solid #444!important;transform:none!important;}
.analogue-content .audio-player{display:none!important;}
.analogue-content audio{display:block!important;width:min(100%,600px);max-width:100%;margin:20px 0;filter:grayscale(1);}
.analogue-footer{margin-top:32px;padding:16px 0 30px;border-top:1px solid #777;color:#555;font:12px/1.6 'Courier New',monospace;}
.analogue-footer a{color:#555;}
.analogue-intro-note{font:14px/1.5 'Courier New',monospace!important;border-bottom:1px solid #999;padding-bottom:15px;margin-bottom:26px!important;}
@media(max-width:620px){.analogue-sheet{width:97vw;--roller-bottom:clamp(24px,5.5vw,35px)}.analogue-roller{top:clamp(-44px,-8.5vw,-20px)}.analogue-paper{left:6%;right:6.5%;border-left-width:4px;border-right-width:4px}.analogue-header{padding:8px 10px;min-height:50px}.analogue-brand{letter-spacing:0;font-size:13px}.analogue-brand small{letter-spacing:0;font-size:8px}.analogue-header button{padding:7px;font-size:10px}.analogue-scroll{padding:12px}.analogue-entry{width:min(74vw,295px)}}
@media(max-height:460px){.analogue-header{min-height:41px;padding:4px 10px}.analogue-nav{top:41px}.analogue-scroll{padding-top:8px}.analogue-brand small{display:none;}}
@media(prefers-reduced-motion:reduce){.analogue-overlay,.analogue-paper,.analogue-bar,.analogue-interface{transition-duration:.01ms!important}}


/* =========================================================
   ANALOGUE 1955, V2 — deliberately isolated from Space CSS
   ========================================================= */
/* Dark ink on projected paper; inherited glowing Holo styling MUST not win. */
.analogue-interface,
.analogue-interface :is(h1,h2,h3,h4,h5,h6,p,span,small,strong,em,i,b,li,dt,dd,label,time,figcaption),
.analogue-content,
.analogue-content *,
.analogue-content *::before,
.analogue-content *::after {
    color:#242421!important;
    text-shadow:none!important;
    -webkit-text-fill-color:#242421!important;
}
.analogue-content a,
.analogue-content a :is(span,strong,small),
.analogue-content button {
    color:#20201d!important;
    -webkit-text-fill-color:#20201d!important;
    text-shadow:none!important;
}
.analogue-content :is(.press-kicker,.press-photo-ai,.press-filetype,.social-entry-description,.band-photo-note,.live-date,.audio-kicker,.audio-time),
.analogue-content :is(.press-kicker,.press-photo-ai,.press-filetype,.social-entry-description,.band-photo-note,.live-date,.audio-kicker,.audio-time) * {
    color:#55534c!important;
    -webkit-text-fill-color:#55534c!important;
}
.analogue-content :is(.press-kit-download,.press-download,.social-entry,.social-entry-link,.audio-track-wrap,.member) {
    color:#242421!important;
    text-shadow:none!important;
    background-color:transparent!important;
    box-shadow:none!important;
}
.analogue-content .social-entry,
.analogue-content .social-entry-link {background-color:#dfddd6!important;}
.analogue-content :is(.route-page,.panel-scroll,.press-panel,.audio-panel),
.analogue-content :is(.route-page,.panel-scroll,.press-panel,.audio-panel)::before,
.analogue-content :is(.route-page,.panel-scroll,.press-panel,.audio-panel)::after {text-shadow:none!important;}
.analogue-content :is(.press-panel,.press-intro,.press-kit-primary,.press-list,.press-files-heading),
.analogue-content .route-press {max-width:100%!important;}
/* Retain dark button labels when inactive; intentional inversion on hover/active. */
.analogue-header button,.analogue-nav button {color:#272722!important;-webkit-text-fill-color:#272722!important;}
.analogue-header button:is(:hover,:focus-visible),.analogue-nav button:is(:hover,:focus-visible,.active) {
    color:#f5f2e9!important;-webkit-text-fill-color:#f5f2e9!important;
}

/* Authentic educational-film typography: caption cards and restrained typewriter ink. */
.analogue-header {
    border-bottom:2px solid #343430;
    font-family:'Courier New',Courier,monospace;
    background:rgba(42,42,37,.04);
}
.analogue-brand strong{
    font-family:Georgia,'Times New Roman',serif;
    font-size:1.05em;
    letter-spacing:.085em;
    font-weight:700;
}
.analogue-brand small{font-family:'Courier New',Courier,monospace;letter-spacing:.12em;color:#535047!important;}
.analogue-header button,.analogue-nav button{
    font-family:'Courier New',Courier,monospace;
    letter-spacing:.045em;
    border:1px solid #343430;
}
.analogue-content :is(h1,h2,h3) {
    font-family:Georgia,'Times New Roman',serif;
    font-weight:700;
    letter-spacing:.012em;
    line-height:1.22;
    text-transform:none;
}
.analogue-content h1{
    padding-bottom:.3em;
    border-bottom:1px solid #5d5b55;
    margin-bottom:1.0em;
}
.analogue-content h2{margin-bottom:.7em;}
.analogue-content p,.analogue-content li{
    font-family:Georgia,'Times New Roman',serif!important;
    letter-spacing:.008em;
}
.analogue-content :is(.press-kicker,.press-files-heading,.live-date,.audio-kicker,.press-filetype,.press-photo-ai,.social-age,.social-entry-description),
.analogue-footer,.analogue-intro-note{
    font-family:'Courier New',Courier,monospace!important;
    letter-spacing:.025em;
}
.analogue-intro-note{
    padding:12px 15px 14px;
    border-top:2px solid #36342f;
    border-bottom:1px solid #77736b;
    font-size:clamp(12px,1.1vw,14px)!important;
    line-height:1.4!important;
    color:#35342f!important;
    background:rgba(86,80,66,.06);
    max-width:70ch;
}
.analogue-intro-note strong{font-family:'Courier New',Courier,monospace;font-size:.85em;letter-spacing:.15em;}
.analogue-footer{border-top:1px solid #807a70;color:#565148!important;}
.analogue-footer a{color:#37332f!important;}

/* Home is an opening title-card, not a long page. Fits without scrolling. */
.analogue-overlay[data-route="home"] .analogue-scroll {
    display:flex;
    flex-direction:column;
    overflow:hidden;
}
.analogue-overlay[data-route="home"] .analogue-content {
    flex:1;
    min-height:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:clamp(10px,2.5vh,24px);
    text-align:center;
}
.analogue-overlay[data-route="home"] .analogue-intro-note {
    flex:0 0 auto;
    margin:0!important;
    max-width:70ch!important;
    width:min(100%,70ch);
    text-align:center;
}
.analogue-overlay[data-route="home"] .route-home,
.analogue-overlay[data-route="home"] .intro,
.analogue-overlay[data-route="home"] .intro-logo-wrap {
    flex:0 1 auto;
    min-height:0;
    width:100%!important;
    text-align:center!important;
    display:flex!important;
    align-items:center;
    justify-content:center;
    overflow:visible!important;
}
.analogue-overlay[data-route="home"] .intro-logo-wrap::after{display:none!important;}
.analogue-overlay[data-route="home"] .intro-logo {
    display:block;
    width:auto!important;
    max-width:min(75%,360px)!important;
    max-height:clamp(65px,19vh,160px)!important;
    height:auto!important;
    object-fit:contain;
    animation:none!important;
    filter:grayscale(1) brightness(0)!important;
    opacity:1!important;
}
.analogue-overlay[data-route="home"] .analogue-footer{display:none;}
@media(max-width:620px){
 .analogue-overlay[data-route="home"] .analogue-scroll{padding:10px;}
 .analogue-overlay[data-route="home"] .analogue-intro-note{font-size:11px!important;padding:8px 9px;line-height:1.3!important;}
 .analogue-overlay[data-route="home"] .intro-logo{max-width:min(75%,260px)!important;max-height:17vh!important;}
 .analogue-brand strong{font-size:1em;}
}
@media(max-height:480px){
 .analogue-overlay[data-route="home"] .analogue-scroll{padding-top:5px;padding-bottom:5px;}
 .analogue-overlay[data-route="home"] .analogue-intro-note{font-size:11px!important;padding:5px 8px;line-height:1.25!important;}
 .analogue-overlay[data-route="home"] .intro-logo{max-height:15vh!important;}
}
@media(prefers-reduced-motion:reduce){
 .analogue-overlay{--analogue-motion:1ms;}
 .analogue-overlay.is-opening .analogue-bar,
 .analogue-overlay.is-closing .analogue-bar {animation-duration:1ms!important;}
}

/* ================================================================
   ANALOGUE FILM v3 — restrained 1950s black-and-white projection
   No changes to Space scene, menu, route loading or sheet animation.
   Effects apply ONLY inside the standalone analogue-paper container.
   ================================================================ */

/* Neutral silver-grey projected paper rather than sepia/yellow. */
.analogue-paper {
    background:linear-gradient(90deg,
        #b8b8b6 0%, #e4e4e2 3%, #ececeb 15%,
        #eeeeed 49%, #e8e8e6 84%, #c4c4c2 97%, #b8b8b6 100%);
}

/* Fine static film grain (transparent PNG) and soft gate vignette.
   Both are decorative, do not receive pointer events and are separate
   from text painting: content never moves, scales, blurs or flickers. */
.analogue-paper::before {
    content:"";
    position:absolute;
    inset:0;
    pointer-events:none;
    z-index:12;
    background-image:url("../assets/analogue/film-grain.png");
    background-size:192px 192px;
    box-shadow:inset 0 0 28px 3px rgba(0,0,0,.075);
    opacity:.65;
    animation:analogue-film-grain 7s steps(1,end) infinite;
}
/* Projector illumination varies very slightly on the physical paper,
   NOT via opacity or animation on the HTML text layer. */
.analogue-paper::after {
    content:"";
    position:absolute;
    inset:0;
    background:#fff;
    pointer-events:none;
    z-index:13;
    opacity:0;
}
.analogue-overlay.is-ready .analogue-paper::after {
    animation:analogue-film-lamp 11s steps(1,end) infinite;
}
@keyframes analogue-film-grain {
    0%, 100% { background-position:0 0; }
    34% { background-position:41px -23px; }
    67% { background-position:-29px 16px; }
}
@keyframes analogue-film-lamp {
    0%, 18%, 22%, 52%, 57%, 84%, 100% {opacity:0;}
    19% {opacity:.022;}
    20% {opacity:.008;}
    53% {opacity:.016;}
    85% {opacity:.024;}
}

/* Type hierarchy inspired by monochrome instructional-film title cards.
   Main headings are composed, not artificially distressed or blurred. */
.analogue-brand strong {
    font-family:Georgia,'Times New Roman',serif;
    font-variant:small-caps;
    font-weight:700;
    letter-spacing:.13em;
}
.analogue-content h1 {
    font-family:Georgia,'Times New Roman',serif;
    font-size:clamp(23px,2.8vw,35px);
    font-weight:700;
    letter-spacing:.085em;
    text-transform:uppercase;
    line-height:1.23;
    padding-bottom:.4em;
    border-bottom:1px solid #545452;
    overflow-wrap:break-word;
}
.analogue-content h2 {
    font-family:Georgia,'Times New Roman',serif;
    font-weight:700;
    letter-spacing:.043em;
    line-height:1.27;
}
.analogue-content h3 {letter-spacing:.02em;}
/* Reel headings where a page actually HAS an introductory heading. */
.analogue-content .route-bio .panel-scroll > h2,
.analogue-content .route-press .press-intro > h1,
.analogue-content .route-contact .contact-panel > h1,
.analogue-content .route-social h1,
.analogue-content .route-audio .audio-panel > h1 {
    text-align:center;
}
.analogue-content :is(.press-kicker,.press-files-heading,.live-date,.audio-kicker,.social-age),
.analogue-brand small {
    letter-spacing:.09em;
    text-transform:uppercase;
}
/* Film title card for HOME: framing lines, not a decorated widget. */
.analogue-overlay[data-route="home"] .analogue-intro-note {
    background:transparent;
    border-top:3px double #474745;
    border-bottom:3px double #474745;
    color:#2b2b29!important;
    letter-spacing:.02em;
}
.analogue-overlay[data-route="home"] .analogue-intro-note strong {
    display:block;
    margin-bottom:.5em;
    letter-spacing:.12em;
}
/* Keep all controls, downloads, and label panels truly monochrome. */
.analogue-header button,
.analogue-nav,
.analogue-nav button {
    background-color:#e5e5e4;
    border-color:#535351;
}
.analogue-header button:is(:hover,:focus-visible),
.analogue-nav button:is(:hover,:focus-visible,.active) {
    background-color:#2b2b2b;
}
.analogue-content :is(.press-kit-download,.press-download,.press-group h2) {
    border-color:#aaa9a6!important;
}
.analogue-content :is(.social-entry,.social-entry-link){
    background-color:#dededd!important;
    border-color:#666!important;
}

/* Same plain black/grey ink throughout the analogue interface. */
.analogue-content a:not(.social-entry-link) {text-decoration-thickness:1px;text-underline-offset:2px;}
@media(max-width:620px){
    .analogue-content h1 {font-size:clamp(20px,5.2vw,27px);letter-spacing:.055em;}
    .analogue-content h2 {letter-spacing:.02em;}
    .analogue-brand strong {letter-spacing:.055em;font-variant:normal;}
}
@media(prefers-reduced-motion:reduce){
    .analogue-paper::before,
    .analogue-overlay.is-ready .analogue-paper::after {animation:none!important;}
}

/* ================================================================
   ANALOGUE FILM V4 — visible but restrained 1950s projection treatment
   Static soft gate-darkening + more decisive title cards; NO blur,
   transforms or flicker on text. Extra compositing avoided on Space UI.
   ================================================================ */
.analogue-paper {
    background:linear-gradient(90deg,
        #b2b2b2 0%,#d4d4d4 2.5%,#eeeeec 9%,#f0f0ef 50%,
        #ebebea 91%,#cececc 97.5%,#adadad 100%);
}
.analogue-paper::before {
    background-size:145px 145px;
    opacity:.84;
    box-shadow:inset 0 0 70px 6px rgba(0,0,0,.19);
}
.analogue-overlay.is-ready .analogue-paper::after {
    animation:analogue-film-lamp-v4 12s steps(1,end) infinite;
}
@keyframes analogue-film-lamp-v4 {
    0%, 16%, 19%, 49%, 53%, 87%, 100% {opacity:0;}
    17% {opacity:.042;}
    50% {opacity:.031;}
    88% {opacity:.036;}
}
.analogue-content h1 {
    font-family:Georgia,'Times New Roman',serif;
    font-weight:700;
    letter-spacing:.105em;
    text-align:center;
    border-top:3px double #474747;
    border-bottom:3px double #474747;
    padding:.42em .25em .44em;
    margin-bottom:1.15em;
    font-variant:small-caps;
}
.analogue-content h2 {
    font-family:Georgia,'Times New Roman',serif;
    font-variant:small-caps;
    letter-spacing:.065em;
}
.analogue-header {
    border-bottom:3px double #3c3c3c;
}
.analogue-overlay[data-route="home"] .analogue-intro-note {
    border-top:4px double #383838;
    border-bottom:4px double #383838;
    background:rgba(255,255,255,.08);
}
@media(max-width:620px) {
    .analogue-content h1 {letter-spacing:.05em;padding:.32em .12em;}
}
@media(prefers-reduced-motion:reduce) {
    .analogue-paper::before,
    .analogue-overlay.is-ready .analogue-paper::after {animation:none!important;}
}


/* ================================================================
   ANALOGUE FILM V5 — projector optics and page-change cue.
   This affects ONLY the self-contained analogue overlay.
   Text is never blurred while reading. No 3D transforms.
   ================================================================ */
.analogue-paper::before{
    background-size:115px 115px;
    opacity:.90;
    animation:analogue-film-grain-v5 1.35s steps(1,end) infinite;
    box-shadow:inset 0 0 90px 12px rgba(0,0,0,.26);
}
@keyframes analogue-film-grain-v5{
    0%,100%{background-position:0 0}
    25%{background-position:37px -19px}
    50%{background-position:-41px 23px}
    75%{background-position:17px 39px}
}
.analogue-overlay.is-ready .analogue-paper::after{
    animation:analogue-film-lamp-v5 8.4s steps(1,end) infinite;
}
@keyframes analogue-film-lamp-v5{
    0%,13%,17%,45%,48%,76%,80%,100%{opacity:0}
    14%{opacity:.16}
    15%{opacity:.05}
    46%{opacity:.095}
    47%{opacity:.015}
    77%{opacity:.12}
    78%{opacity:.035}
}
/* Changeover only: brief shutter, followed by a restrained frame-settle.
   The changeover begins after the next page has been fetched, so navigation
   never waits on a slow decorative effect or blocks network fetching. */
.analogue-overlay.is-film-cut .analogue-content{
    opacity:0!important;
    transition:opacity .105s linear!important;
}
.analogue-overlay.is-film-enter .analogue-content{
    animation:analogue-new-reel .28s steps(2,end) both;
}
@keyframes analogue-new-reel{
    0%{opacity:.2}
    28%{opacity:.94}
    40%{opacity:.6}
    70%,100%{opacity:1}
}
/* A brief dark projector shutter within the paper, without displacing text. */
.analogue-paper .analogue-scroll::after{
    content:"";
    display:block;
    position:absolute;
    inset:0;
    background:rgba(0,0,0,.72);
    opacity:0;
    pointer-events:none;
    z-index:10;
    transition:opacity .09s linear;
}
.analogue-overlay.is-film-cut .analogue-scroll::after{opacity:1}
/* Keep the scroll port position context for the changeover curtain. */
.analogue-scroll{position:relative;}
/* On small layouts, vignette is present but does not swallow text contrast. */
@media(max-width:620px){
    .analogue-paper::before{box-shadow:inset 0 0 38px 3px rgba(0,0,0,.16)}
}
@media(prefers-reduced-motion:reduce){
    .analogue-paper::before,
    .analogue-overlay.is-ready .analogue-paper::after,
    .analogue-overlay.is-film-enter .analogue-content{animation:none!important}
    .analogue-overlay.is-film-cut .analogue-content{opacity:1!important}
    .analogue-overlay.is-film-cut .analogue-scroll::after{opacity:0!important}
}
