/**
 * AXIONS — Mobile system layer (iOS Safari + Android Chrome)
 * Viewport dinámico, safe areas, touch targets, overflow zero.
 */

/* —— Global shell —— */
html {
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

html.axions-mobile-root,
html.h-full {
  min-height: 100dvh;
  min-height: -webkit-fill-available;
}

body {
  overflow-x: hidden;
  max-width: 100vw;
}

body.core-body,
body.axions-public,
body.go-body,
body.portal-auth-body,
body.portal-dash-body {
  min-height: 100dvh;
  min-height: -webkit-fill-available;
}

/* Prevent iOS input zoom without disabling page zoom globally */
input,
select,
textarea,
button {
  font-size: max(16px, 1em);
}

@media (max-width: 1024px) {
  /* Core dashboard */
  .dashboard-theme.boutique-theme.core-body {
    min-height: 100dvh;
  }

  .dashboard-theme .boutique-layout {
    min-height: 100dvh;
    width: 100%;
    max-width: 100%;
  }

  .dashboard-theme .boutique-main {
    min-height: 100dvh;
    width: 100%;
    max-width: 100%;
    overflow-x: clip;
  }

  .dashboard-theme .boutique-topbar {
    padding-top: max(0.5rem, env(safe-area-inset-top));
    padding-left: max(0.75rem, env(safe-area-inset-left));
    padding-right: max(0.75rem, env(safe-area-inset-right));
  }

  /* Drawer lateral — no reserva espacio en el layout flex */
  .dashboard-theme .boutique-sidebar,
  .dashboard-theme .core-sidebar.boutique-sidebar {
    padding-top: env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);
  }

  .dashboard-theme .boutique-menu-btn {
    min-width: 44px;
    min-height: 44px;
    width: 44px;
    height: 44px;
    -webkit-tap-highlight-color: transparent;
  }

  .dashboard-theme .core-nav {
    min-height: 44px;
    padding-top: 0.65rem;
    padding-bottom: 0.65rem;
  }

  .dashboard-theme .bento-shell {
    padding-left: max(0.75rem, env(safe-area-inset-left));
    padding-right: max(0.75rem, env(safe-area-inset-right));
    padding-bottom: max(1.5rem, env(safe-area-inset-bottom));
  }

  .dashboard-theme .bento-page-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
  }

  .dashboard-theme .bento-section-title {
    font-size: clamp(1.25rem, 5vw, 1.5rem);
    line-height: 1.2;
  }

  .dashboard-theme .bento-page-sub {
    font-size: 0.875rem;
  }

  .dashboard-theme .bento-page-actions {
    width: 100%;
  }

  .dashboard-theme .bento-page-actions .core-btn-secondary,
  .dashboard-theme .bento-page-actions .core-btn-primary,
  .dashboard-theme .bento-page-actions .btn,
  .dashboard-theme .core-btn-primary,
  .dashboard-theme .core-btn-secondary {
    min-height: 44px;
    padding: 0.55rem 0.85rem;
    -webkit-tap-highlight-color: transparent;
  }

  .dashboard-theme .core-table-wrap {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
  }

  .dashboard-theme .core-table {
    min-width: 0;
  }

  .dashboard-theme .core-modal-backdrop,
  .dashboard-theme .tenant-modal {
    padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right))
      max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
  }
}

@media (max-width: 768px) {
  .dashboard-theme .bento-grid {
    gap: 1rem;
  }

  .dashboard-theme .core-card,
  .dashboard-theme .bento-card {
    width: 100%;
    max-width: 100%;
  }
}

/* —— AXIONS Go (QR/NFC móvil) —— */
.hub-familiar {
  padding-top: env(safe-area-inset-top);
}

.go-body {
  padding-top: max(1.25rem, env(safe-area-inset-top));
  padding-left: max(1rem, env(safe-area-inset-left));
  padding-right: max(1rem, env(safe-area-inset-right));
  padding-bottom: max(1.25rem, env(safe-area-inset-bottom));
  overflow-x: clip;
}

.go-wrap,
.go-body > .ax-client-wrap {
  box-sizing: border-box;
  width: 100%;
  max-width: min(420px, 100%);
  margin-inline: auto;
}

.go-btn,
.go-link-btn,
.go-btn-primary,
.go-btn-secondary {
  min-height: 48px;
}

.go-star-btn {
  min-width: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.35rem;
}

.go-pedido-qty button {
  min-width: 44px;
  min-height: 44px;
}

/* Sticky bottom actions — Escudo, pedidos, incidencias */
.ax-mobile-sticky-bottom,
.go-pedido-cart,
.go-sticky-action {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 50;
  padding: 0.85rem max(1rem, env(safe-area-inset-right))
    max(0.85rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
  background: #fff;
  border-top: 1px solid #e5e2da;
  box-shadow: 0 -4px 6px -1px rgba(0, 0, 0, 0.1);
}

.go-body:has(.go-pedido-cart),
.go-body:has(.ax-mobile-sticky-bottom) {
  padding-bottom: calc(5.5rem + env(safe-area-inset-bottom));
}

/* —— Portal auth —— */
.portal-auth-foot a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0.25rem 0.5rem;
}

.portal-dash-logout {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.portal-module-check input[type="checkbox"],
.portal-terms-check input[type="checkbox"] {
  min-width: 1.25rem;
  min-height: 1.25rem;
}

/* —— Landing pública —— */
body.axions-public {
  overflow-x: hidden;
}

.ax-public-nav {
  padding-top: max(0.75rem, env(safe-area-inset-top));
}

.ax-public-wrap {
  width: 100%;
  max-width: 100%;
  padding-left: max(1rem, env(safe-area-inset-left));
  padding-right: max(1rem, env(safe-area-inset-right));
}

.ax-public-nav__cta,
.ax-public-btn-primary {
  min-height: 48px;
}

.landing-wrap {
  padding-left: max(1.25rem, env(safe-area-inset-left));
  padding-right: max(1.25rem, env(safe-area-inset-right));
}

/* —— Smart landing sticky CTA —— */
.landing-cta-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 40;
  padding: 0.75rem max(1rem, env(safe-area-inset-right))
    max(0.75rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-top: 1px solid #e5e2da;
  box-shadow: 0 -4px 6px -1px rgba(0, 0, 0, 0.1);
}

.landing-page:has(.landing-cta-bar) .landing-wrap {
  padding-bottom: calc(5rem + env(safe-area-inset-bottom));
}

/* —— Escudo Go (Buzón): touch + safe areas; no CSS global —— */
body.escudo-theatre-body {
  min-height: 100dvh;
  min-height: -webkit-fill-available;
  padding-top: env(safe-area-inset-top);
  padding-bottom: env(safe-area-inset-bottom);
  padding-left: env(safe-area-inset-left);
  padding-right: env(safe-area-inset-right);
}

.escudo-shell .escudo-star,
.escudo-shell .escudo-theme,
.escudo-shell .escudo-submit,
.escudo-shell .escudo-thanks__btn-google {
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.escudo-shell .escudo-field,
.escudo-shell .escudo-field--desahogo {
  font-size: max(16px, 1em);
}

@media (max-width: 380px) {
  .escudo-shell .escudo-card {
    padding-left: max(0.85rem, env(safe-area-inset-left));
    padding-right: max(0.85rem, env(safe-area-inset-right));
  }
}
