/* Render-only effects. No saved styles, scripts or animation attributes are used.
   Without the runtime activation attributes every element stays fully readable. */
[data-rich-effects]{overflow-x:clip;overflow-y:visible}
[data-rich-effects] [data-fep-effect-state]{--fep-effect-distance:min(3rem,8vw);--fep-effect-scale:.9;--fep-effect-x:0px;--fep-effect-y:0px;--fep-effect-clip:inset(0);--fep-effect-from-scale:1}
[data-rich-effects] .effect-strength-soft[data-fep-effect-state]{--fep-effect-distance:min(1.5rem,4vw);--fep-effect-scale:.97}
[data-rich-effects] .effect-strength-strong[data-fep-effect-state]{--fep-effect-distance:min(5rem,12vw);--fep-effect-scale:.82}
[data-rich-effects] [data-fep-effect-state]{--fep-effect-start:0vh;--fep-effect-end:40vh;--fep-effect-sequence:0vh}
[data-rich-effects] .effect-start-10[data-fep-effect-state]{--fep-effect-start:10vh}
[data-rich-effects] .effect-start-20[data-fep-effect-state]{--fep-effect-start:20vh}
[data-rich-effects] .effect-start-30[data-fep-effect-state]{--fep-effect-start:30vh}
[data-rich-effects] .effect-end-60[data-fep-effect-state]{--fep-effect-end:60vh}
[data-rich-effects] .effect-end-80[data-fep-effect-state]{--fep-effect-end:80vh}
[data-rich-effects] .effect-end-100[data-fep-effect-state]{--fep-effect-end:100vh}
[data-rich-effects] .effect-sequence-1[data-fep-effect-state]{--fep-effect-sequence:5vh}
[data-rich-effects] .effect-sequence-2[data-fep-effect-state]{--fep-effect-sequence:10vh}
[data-rich-effects] .effect-sequence-3[data-fep-effect-state]{--fep-effect-sequence:15vh}
[data-rich-effects] .effect-slide-up[data-fep-effect-state]{--fep-effect-y:var(--fep-effect-distance)}
[data-rich-effects] .effect-slide-down[data-fep-effect-state]{--fep-effect-y:calc(-1 * var(--fep-effect-distance))}
[data-rich-effects] .effect-slide-left[data-fep-effect-state]{--fep-effect-x:calc(-1 * var(--fep-effect-distance))}
[data-rich-effects] .effect-slide-right[data-fep-effect-state]{--fep-effect-x:var(--fep-effect-distance)}
[data-rich-effects] .effect-zoom-in[data-fep-effect-state]{--fep-effect-from-scale:var(--fep-effect-scale)}
[data-rich-effects] .effect-reveal-left[data-fep-effect-state]{--fep-effect-clip:inset(0 100% 0 0)}
[data-rich-effects] .effect-reveal-up[data-fep-effect-state]{--fep-effect-clip:inset(100% 0 0 0)}
[data-rich-effects] [data-fep-effect-state="pending"]{opacity:0;transform:translate(var(--fep-effect-x),var(--fep-effect-y)) scale(var(--fep-effect-from-scale));clip-path:var(--fep-effect-clip)}
[data-rich-effects] [data-fep-effect-state="shown"]{animation:fep-scroll-entry .65s ease-out both}
@keyframes fep-scroll-entry{from{opacity:0;transform:translate(var(--fep-effect-x),var(--fep-effect-y)) scale(var(--fep-effect-from-scale));clip-path:var(--fep-effect-clip)}to{opacity:1;transform:none;clip-path:inset(0)}}
[data-rich-effects] [data-fep-effect-state="scrub"]{animation:fep-scroll-entry 1s linear both paused;animation-delay:calc(-1s * var(--fep-effect-progress,1))}
@supports (animation-timeline:view()) and (animation-range:entry 0% entry 40vh){
  [data-rich-effects] [data-fep-effect-state="native"]{animation:fep-scroll-entry 1s linear both;animation-timeline:view(block);animation-range:entry 0% entry 40vh}
  [data-rich-effects] [data-fep-effect-state="native"]{animation-range:entry calc(var(--fep-effect-start) + var(--fep-effect-sequence)) entry var(--fep-effect-end)}
}
/* Older browsers without overflow:clip keep fade/reveal without sideways motion. */
@supports not (overflow:clip){
  [data-rich-effects] .effect-slide-left[data-fep-effect-state],
  [data-rich-effects] .effect-slide-right[data-fep-effect-state]{--fep-effect-x:0px}
}
[data-rich-effects] [data-fep-effect-state="static"],
[data-rich-effects] [data-fep-effect-state="measure"],
[data-rich-effects] [data-fep-effect-state]:focus-within,
[data-rich-effects] [data-fep-effect-state]:target{animation:none!important;transition:none!important;opacity:1!important;transform:none!important;clip-path:none!important}
[data-rich-effects]>.editor-reading-progress[data-fep-reading-active]{position:sticky;top:0;z-index:2;display:block;clear:both;height:.4rem;margin:0 0 1rem;border-radius:1rem;background:color-mix(in srgb,var(--blue,#80a7ff) 20%,#151d2b);overflow:hidden;pointer-events:none}
[data-rich-effects] .fep-reading-bar{display:block;width:100%;height:100%;background:var(--blue,#80a7ff);transform:scaleX(0);transform-origin:left center}
@media(prefers-reduced-motion:reduce){
  [data-rich-effects] [data-fep-effect-state]{animation:none!important;transition:none!important;opacity:1!important;transform:none!important;clip-path:none!important}
}
@media print{
  [data-rich-effects]{overflow:visible}
  [data-rich-effects] [data-fep-effect-state]{animation:none!important;transition:none!important;opacity:1!important;transform:none!important;clip-path:none!important}
  [data-rich-effects]>.editor-reading-progress{display:none!important}
}
