/* Reserve the document scrollbar even while overlays lock body scrolling. */
html {
  scrollbar-gutter: stable;
}

/* Older engines keep the same width by reserving their scrollbar track. */
@supports not (scrollbar-gutter: stable) {
  html { overflow-y: scroll; }
}

/* Match the integrations entrance. Each newly mounted page plays once; the
   archived landing and integrations keep their authored Framer animations. */
html[data-fartuk-entry-native] main:not(.home-main):not(.fartuk-os-shell):not(.fartuk-pricing-page),
html[data-fartuk-entry-native] .fartuk-os-shell > .chat-page,
html[data-fartuk-entry-native] .fartuk-pricing-page .fartuk-pricing,
html[data-fartuk-entry-native] .fartuk-pricing-page .fartuk-competitors,
html[data-fartuk-entry-native] .fartuk-pricing-page [data-pricing-arriving] {
  animation: fartuk-page-arrive 400ms cubic-bezier(0.01, 0.39, 0.34, 0.99) backwards;
}

@keyframes fartuk-page-arrive {
  from { opacity: 0.001; transform: translateY(60px); }
  to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  html[data-fartuk-entry-native] main:not(.home-main):not(.fartuk-os-shell):not(.fartuk-pricing-page),
  html[data-fartuk-entry-native] .fartuk-os-shell > .chat-page,
  html[data-fartuk-entry-native] .fartuk-pricing-page .fartuk-pricing,
  html[data-fartuk-entry-native] .fartuk-pricing-page .fartuk-competitors,
  html[data-fartuk-entry-native] .fartuk-pricing-page [data-pricing-arriving] {
    animation-name: fartuk-page-arrive-reduced;
    animation-duration: 120ms;
  }
  @keyframes fartuk-page-arrive-reduced {
    from { opacity: 0.6; }
    to { opacity: 1; }
  }
}
