/* Footer sticky-bottom fix — keeps the Designed By / Privacy / Terms / Copyright bar
   pinned to the viewport bottom on short pages, in normal flow below content on long
   pages. Applies to every dashboard page (home, customers, generate-keys, discounts,
   orders, settings, legal, 404). Horizontal padding / responsive variants untouched.
   Also reserves a stable scrollbar gutter so the space-between footer row never shifts
   between pages with/without a vertical scrollbar. */
html {
  overflow-y: scroll !important;
  scrollbar-gutter: stable !important;
}
.framer-Ufzah.framer-72rtr7,
.framer-HzCD8.framer-j6cubx,
.framer-IodxU.framer-jftip9,
.framer-4zgi3.framer-1d8goi8,
.framer-15WbA.framer-i8p2i1,
.framer-hErWP.framer-1lmfztk,
.framer-dDiLV.framer-1u5lteu,
.framer-k8JL1.framer-1n6tisg {
  min-height: 100vh !important;
}

footer.framer-iq7NQ {
  margin-top: auto !important;
}

/* The footer lives inside a per-page container div that is the actual flex item
   of the page root (e.g. .framer-16kt0ob-container, .framer-1eobpzk-container,
   .framer-uaskps-container). Push THAT down so the footer lands on the bottom. */
.framer-Ufzah.framer-72rtr7 > div:has(footer.framer-iq7NQ),
.framer-HzCD8.framer-j6cubx > div:has(footer.framer-iq7NQ),
.framer-IodxU.framer-jftip9 > div:has(footer.framer-iq7NQ),
.framer-4zgi3.framer-1d8goi8 > div:has(footer.framer-iq7NQ),
.framer-15WbA.framer-i8p2i1 > div:has(footer.framer-iq7NQ),
.framer-hErWP.framer-1lmfztk > div:has(footer.framer-iq7NQ),
.framer-dDiLV.framer-1u5lteu > div:has(footer.framer-iq7NQ),
.framer-k8JL1.framer-1n6tisg > div:has(footer.framer-iq7NQ) {
  margin-top: auto !important;
}
