@import url("https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap");

html, body, #app {
  height: 100%;
}

/* Clip horizontally-animating pages without creating a nested scroll
   container — setting this on body (not an inner wrapper) lets the UA
   propagate it to the viewport, so position:sticky descendants keep
   resolving against the real viewport. */
body {
  overflow-x: hidden;
}

* {
  font-family: "Poppins", sans-serif !important;
}

/* Safe area padding for native Capacitor wrappers */
body.is-ios .v-application:not([no-safe-area]) {
  padding-top: env(safe-area-inset-top) !important;
  padding-bottom: env(safe-area-inset-bottom) !important;
}

body.is-ios .v-bottom-navigation {
  padding-bottom: env(safe-area-inset-bottom) !important;
  height: calc(56px + env(safe-area-inset-bottom)) !important;
}


/* App bar height accounts for status bar — iOS */
body.is-ios .v-app-bar.ios-safe-bar {
  height: calc(64px + env(safe-area-inset-top)) !important;
}

body.is-ios .v-app-bar.ios-safe-bar .v-toolbar__content {
  padding-top: env(safe-area-inset-top) !important;
  height: 100% !important;
  align-items: center;
}

body.is-ios .safe-area-bottom {
  padding-bottom: env(safe-area-inset-bottom) !important;
}

/* Vuetify draws outlined field borders at 38% opacity and 1px by default,
   which washes out the exact baseColor set on VTextField/VSelect/etc —
   force full opacity/explicit width so the border renders as specified. */
.v-field--variant-outlined .v-field__outline,
.v-field:hover .v-field__outline {
  --v-field-border-opacity: 1 !important;
  --v-field-border-width: 1.5px !important;
}

/* Page transitions */
.page-viewport {
  position: relative;
}

.nav-none-enter-active,
.nav-none-leave-active {
  transition: none;
}
