/* No progress line or visible scrollbar; native touch/wheel scrolling remains. */
html{scrollbar-width:none}html::-webkit-scrollbar{display:none}
.reading-progress{display:none!important}
.water-stream{opacity:.8;background:repeating-linear-gradient(180deg,transparent 0 3px,#fff2d9a6 8px,#fff2d91a 23px,transparent 44px 64px),repeating-linear-gradient(91deg,transparent 0 5px,#fff4da66 6px,transparent 9px 13px);background-size:100% 64px,100% 100%;animation-duration:.75s}
.water-stream-lower{animation-duration:.55s}
.falling-filaments{position:absolute;inset:0;overflow:hidden;mask-image:linear-gradient(transparent,#000 13% 83%,transparent)}
.falling-filaments i{position:absolute;left:var(--x);width:1.5%;height:36%;top:-40%;background:linear-gradient(transparent,#fff7e5cc,transparent);animation:fall-streak var(--speed) var(--delay) linear infinite;animation-play-state:paused}
.is-playing .falling-filaments i,.scene-active .falling-filaments i{animation-play-state:running}
@keyframes fall-streak{to{translate:0 430%}}

/* Three birds circle, then split left, right and toward the viewer. */
.dove-farewell{position:absolute;inset:0;z-index:12;overflow:hidden;pointer-events:none;perspective:800px}
.dove-approach{position:absolute;inset:0;display:grid;place-items:center;opacity:0;transform:translate(-45%,-10%) scale(.08)}
.farewell-dove{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 16px 22px #0003)}
.feather-whiteout{position:absolute;inset:0;background:#fffefa;opacity:0}
.has-outro .dove-approach{animation-duration:4.8s;animation-timing-function:linear;animation-fill-mode:both}
.has-outro .dove-left{animation-name:dove-exit-left}
.has-outro .dove-right{animation-name:dove-exit-right}
.has-outro .dove-front{animation-name:dove-toward-screen}
.has-outro .farewell-dove{animation:dove-wingbeat .55s ease-in-out 9}
.has-outro .feather-whiteout{animation:dove-soft-cover 4.8s ease-in both}
@keyframes dove-toward-screen{0%{opacity:0;transform:translate(-22%,-12%) scale(.17) rotate(-12deg)}8%{opacity:1}18%{transform:translate(2%,-23%) scale(.15) rotate(12deg)}32%{transform:translate(22%,-8%) scale(.2) rotate(18deg)}46%{transform:translate(0,8%) scale(.28) rotate(0)}62%{transform:translate(0,0) scale(.55)}80%{transform:translate(0,0) scale(1.25)}100%{transform:translate(0,12%) scale(8);opacity:1}}
@keyframes dove-exit-left{0%{opacity:0;transform:translate(22%,-8%) scale(.2) rotate(15deg)}8%{opacity:1}18%{transform:translate(0,8%) scale(.25) rotate(-12deg)}32%{transform:translate(-22%,-12%) scale(.17) rotate(-15deg)}46%{transform:translate(0,-23%) scale(.15) rotate(0)}58%{transform:translate(-24%,-10%) scale(.3) rotate(-20deg);opacity:1}80%,100%{transform:translate(-110%,-18%) scale(.4) rotate(-25deg);opacity:0}}
@keyframes dove-exit-right{0%{opacity:0;transform:translate(0,8%) scale(.25) rotate(0)}8%{opacity:1}18%{transform:translate(-22%,-12%) scale(.17) rotate(-15deg)}32%{transform:translate(0,-23%) scale(.15) rotate(12deg)}46%{transform:translate(22%,-8%) scale(.2) rotate(15deg)}58%{transform:translate(35%,0) scale(.3) rotate(20deg);opacity:1}80%,100%{transform:translate(110%,-12%) scale(.4) rotate(25deg);opacity:0}}
@keyframes dove-wingbeat{0%,100%{transform:scaleY(1) rotate(-2deg)}50%{transform:scaleY(.78) rotate(2deg)}}
@keyframes dove-soft-cover{0%,87%{opacity:0}100%{opacity:1}}
.motion-paused .dove-farewell *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.has-outro .dove-approach{animation:none;opacity:1;transform:scale(.65)}.has-outro .farewell-dove,.has-outro .feather-whiteout,.falling-filaments i{animation:none}}
.finale.has-outro.outro-visible .dove-farewell{position:fixed;inset:0;z-index:10000}
.finale:not(.outro-visible) .dove-farewell{visibility:hidden}

@media(prefers-reduced-motion:reduce){.has-outro .dove-left{transform:translate(-27%,0) scale(.25)}.has-outro .dove-right{transform:translate(27%,0) scale(.25)}.has-outro .dove-front{transform:scale(.3)}}
