/* Движение мира «Собор» — приёмы из ~/cehmedia/app/zhizn.css, адаптированные.
   Ни одной зависимости; всё гаснет при prefers-reduced-motion целиком, а не наполовину. */

/* Скрытый старт ставится ТОЛЬКО при живом JS (класс на <html> вешает инлайн-скрипт
   в <head>). Иначе без JS и на снимке всей страницы человек видел бы пустоту. */
html.zhiv .pojav{
  opacity:0; transform:translateY(16px);
  transition:opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1);
}
.vidno{opacity:1 !important; transform:none !important}

/* Вход в неф: фон портала слегка отъезжает по мере прокрутки — эффект шага вглубь.
   Только там, где браузер умеет scroll-driven анимации; остальным просто статично. */
@supports (animation-timeline: view()){
  .portal-fon img{
    animation:vhod linear both;
    animation-timeline:view();
    animation-range:entry 0% cover 60%;
  }
  @keyframes vhod{from{transform:scale(1.12)} to{transform:scale(1)}}
}

/* Свинцовая линия между осколками прорастает, а не появляется готовой. */
@keyframes shov{from{transform:scaleX(0)}}
html.zhiv .oskolok + .oskolok{transform-origin:left}
.shag-linija{animation:shov .8s cubic-bezier(.16,1,.3,1) both;transform-origin:left}

/* Заголовок-анаглиф сводится при появлении: две копии съезжаются к своей строке,
   как будто надел очки. Смысл приёма — совмещение двух взглядов. */
@keyframes svesti-krasnyy{from{transform:translateX(-14px);opacity:.9} to{transform:translateX(-3px);opacity:.62}}
@keyframes svesti-goluboy{from{transform:translateX(14px);opacity:.9} to{transform:translateX(3px);opacity:.62}}
html.zhiv .anaglif.vidno::before{animation:svesti-krasnyy .9s cubic-bezier(.16,1,.3,1) both}
html.zhiv .anaglif.vidno::after{animation:svesti-goluboy .9s cubic-bezier(.16,1,.3,1) both}

@media (prefers-reduced-motion: reduce){
  html.zhiv .pojav{opacity:1;transform:none;transition:none}
  .portal-fon img{animation:none}
  .shag-linija{animation:none}
  html.zhiv .anaglif.vidno::before,
  html.zhiv .anaglif.vidno::after{animation:none}
  body::before{transform:none !important}
}
