/* 07 · Анимации, утилиты, печать, доступность */
/* Появление блоков.
   Контент виден по умолчанию; скрытие включается только классом .js-reveal,
   который ставит модуль reveal.js. Без JS (или при file://) всё видно. */
.js-reveal [data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}
.js-reveal [data-reveal].is-in{opacity:1;transform:none;transition-delay:var(--reveal-delay,0ms)}
.js-reveal [data-reveal="fade"]{transform:none}
.js-reveal [data-reveal="left"]{transform:translateX(-22px)}
.js-reveal [data-reveal="right"]{transform:translateX(22px)}
.js-reveal [data-reveal="scale"]{transform:scale(.97)}

@keyframes pulse-dot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.85)}}
@keyframes float-y{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes sheen{0%{transform:translateX(-120%)}100%{transform:translateX(220%)}}

.is-float{animation:float-y 6s ease-in-out infinite}

/* --- Утилиты --- */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{
  position:absolute;left:var(--gutter);top:-100px;z-index:100;background:var(--blue-700);color:#fff;
  padding:.75rem 1.2rem;border-radius:var(--r-xs);font-weight:700;transition:top var(--dur-fast);
}
.skip-link:focus{top:.6rem}
.nowrap{white-space:nowrap}
.mt-0{margin-top:0}
.mt-1{margin-top:.6rem}.mt-2{margin-top:1.2rem}.mt-3{margin-top:2rem}.mt-4{margin-top:3rem}
.mb-1{margin-bottom:.6rem}.mb-2{margin-bottom:1.2rem}.mb-3{margin-bottom:2rem}
.flow-wide{max-width:none}
.scroll-x{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;max-width:100%;overscroll-behavior-x:contain}
.scroll-x:focus-visible{outline:var(--ring) solid var(--focus);outline-offset:2px}

/* Доступность: видимый фокус */
:focus-visible{outline:var(--ring) solid var(--focus);outline-offset:2px;border-radius:4px}
.btn:focus-visible,.burger:focus-visible,.to-top:focus-visible{outline:var(--ring) solid var(--focus);outline-offset:3px}

/* Сниженная анимация */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .js-reveal [data-reveal]{opacity:1!important;transform:none!important}
  html{scroll-behavior:auto}
}

/* Печать */
@media print{
  .header,.to-top,.section-indicator,.progress,.hero__canvas,.mobile-nav,.bg-grad__img{display:none!important}
  body{font-size:11pt;color:#000;background:#fff}
  .section{padding-block:1rem;page-break-inside:avoid}
  .block,.step,.stat{box-shadow:none;border:1px solid #999;background:#fff!important}
  a[href^="http"]::after{content:' (' attr(href) ')';font-size:9pt;color:#444}
  h1{font-size:20pt}h2{font-size:15pt}h3{font-size:13pt}
}
