html, body {
  overflow-x: hidden;
}

.fade-in {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 700ms ease-out, transform 700ms ease-out;
}
.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

.mobile-only       { display: none !important; }
.mobile-only-flex  { display: none !important; }
/* Don't force display:block — component CSS sets flex/grid/block as needed */
.desktop-only      { }

html.is-mobile .mobile-only      { display: block !important; }
html.is-mobile .mobile-only-flex { display: flex  !important; }
/* Flex mobile roots (e.g. .m-hero) must win over display:block */
html.is-mobile .mobile-only.m-hero,
html.is-mobile .mobile-only-flex { display: flex !important; }
html.is-mobile .desktop-only     { display: none !important; }
