/* ==========================================================================
   GV Capital · Brand Guidelines
   motion-polish.css — შემოსვლის და დაჭერის მიკრო-ინტერაქციები

   მკაცრი წესი: მხოლოდ opacity და transform. არც სიმაღლე, არც margin, არც
   padding — თორემ სექციები, რომლებიც ზუსტად ერთ ეკრანზეა გაზომილი, აიშლება
   და scroll-snap გადახტება.

   საწყისი (უხილავი) მდგომარეობა მხოლოდ html.gv-enter-ზეა მიბმული, რომელსაც
   JS ამატებს. ანუ JS-ის გარეშე ან prefers-reduced-motion-ზე არაფერი იმალება.
   ========================================================================== */

html.gv-enter [data-enter-item] {
  opacity: 0;
  transform: translate3d(0, 14px, 0);
  will-change: opacity, transform;
}
html.gv-enter [data-enter-item].is-entered {
  opacity: 1;
  transform: none;
  transition:
    opacity .52s cubic-bezier(.22, .7, .24, 1) var(--enter-delay, 0ms),
    transform .52s cubic-bezier(.22, .7, .24, 1) var(--enter-delay, 0ms);
}
html.gv-enter [data-enter-item].is-settled { will-change: auto; }

/* რელსის ტირე ხტომის ნაცვლად ჩამოცურდეს */
nav.gv-rail .gv-rail-tick {
  transition: width .38s cubic-bezier(.22, .7, .24, 1),
              background-color .38s ease, opacity .38s ease;
}
nav.gv-rail .gv-rail-name { transition: color .3s ease, opacity .3s ease; }

/* დაჭერის ფიზიკური პასუხი — მხოლოდ :active-ზე, ძალიან მცირე */
.gv-download-button,
.st-full-download,
.so-campaign-controls button,
nav.gv-rail .gv-rail-item,
.qr-trigger { transition-property: transform, background-color, border-color, color, box-shadow, opacity; transition-duration: .18s; transition-timing-function: cubic-bezier(.22, .7, .24, 1); }

.gv-download-button:active,
.st-full-download:active,
.so-campaign-controls button:active:not(:disabled),
nav.gv-rail .gv-rail-item:active { transform: scale(.985); }
.story-edition #downloads .ad-files-grid > a { transition: border-color .2s ease, background .2s ease, transform .18s cubic-bezier(.22,.7,.24,1) !important; }
.story-edition #downloads .ad-files-grid > a:active { transform: scale(.995) !important; }
.qr-trigger:active { transform: translateY(-50%) translateX(-2px) scale(.985); }
.qr-top:active { transform: translateY(-1px) scale(.96); }

@media (prefers-reduced-motion: reduce) {
  html.gv-enter [data-enter-item],
  html.gv-enter [data-enter-item].is-entered { opacity: 1; transform: none; transition: none; }
  nav.gv-rail .gv-rail-tick, nav.gv-rail .gv-rail-name { transition: none; }
  .gv-download-button:active, .st-full-download:active,
  .so-campaign-controls button:active, nav.gv-rail .gv-rail-item:active,
  .story-edition #downloads .ad-files-grid > a:active,
  .qr-top:active { transform: none !important; }
}
@media print {
  html.gv-enter [data-enter-item] { opacity: 1 !important; transform: none !important; }
}

/* ==========================================================================
   სქროლის კომფორტი — დესკტოპი და მობილური, 17 სექტემბერი

   `scroll-snap-type: y mandatory` მკითხველს ეკამათება: ნახევრად გადაწეულ
   გვერდს უკან აბრუნებს და შუაში გაჩერების საშუალებას არ აძლევს. `proximity`
   მაინც სწორად აჩერებს სექციაზე, როცა ახლოს მიხვალ, დანარჩენ დროს კი ხელს
   არ უშლის.

   შეხებაზე სნეპი და მომენტუმ-სქროლი პირდაპირ ეჯახება ერთმანეთს — iOS-სა და
   Android-ზე ეს არის ის „მიწებებული" შეგრძნება. მობილურზე სნეპი საერთოდ ითიშება.
   ========================================================================== */
@media (pointer: fine) {
  html { scroll-snap-type: y proximity !important; }
  .st-section,
  .story-edition .gi-system,
  .wf-system { scroll-snap-stop: normal !important; }
}
@media (pointer: coarse), (max-width: 900px) {
  html { scroll-snap-type: none !important; }
  .st-section,
  .st-cover,
  .story-edition .gi-system,
  .wf-system {
    scroll-snap-align: none !important;
    scroll-snap-stop: normal !important;
  }
}
/* ინერციული სქროლი iOS-ზე */
html, body { -webkit-overflow-scrolling: touch; }
