/**
 * EcomHutsy touch navigation layer.
 * Targets real touch / coarse pointers — not width alone.
 */

/* Kill 300ms / double-tap zoom delay on primary controls */
.site-nav-toggle,
.site-nav > a,
.site-dashboard,
.button-primary,
.button-secondary,
.v3-btn-primary,
.v3-btn-ghost,
.dark-button,
.deep-dive-arrow,
.deep-feature-rail > button,
.deep-feature-rail > a,
.eh-offer-select,
.eh-modal-close,
.eh-modal .eh-submit,
.faq-list summary,
.site-footer a,
.site-footer-links a,
.universe-node,
.universe-system,
.service-node {
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(255, 165, 0, 0.12);
}

/* Prevent native long-press link/image callouts that trap the page */
.universe-node,
.universe-system,
.service-node,
.product-universe-map a,
.product-universe-map span,
.services-constellation a,
.services-constellation .service-node {
  -webkit-touch-callout: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* Touches hit the card/link, not the img (avoids Save-image sheet) */
.product-universe-map img,
.services-constellation img,
.universe-node img,
.universe-system img,
.service-node img,
.product-universe-core img {
  pointer-events: none !important;
  -webkit-touch-callout: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* Hard-kill cinematic route overlay — never intercept taps */
.electric-route,
.electric-route.is-active,
.electric-intro,
.electric-intro.is-active {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  z-index: -1 !important;
  animation: none !important;
}

body.cinematic-lock {
  overflow: visible !important;
  pointer-events: auto !important;
  touch-action: auto !important;
}

html.eh-touch,
html.eh-touch body {
  pointer-events: auto !important;
}

/* Keep page chrome tappable even if a trap leftover exists */
html.eh-touch .site-header,
html.eh-touch .site-header a,
html.eh-touch .site-header button,
html.eh-touch .site-footer a,
html.eh-touch .button-primary,
html.eh-touch .button-secondary {
  pointer-events: auto !important;
  position: relative;
  z-index: 1;
}

/* ---- Coarse pointer / no-hover: larger tap targets ---- */
@media (hover: none), (pointer: coarse) {
  .site-nav-toggle {
    min-width: 44px !important;
    min-height: 44px !important;
    width: 48px !important;
    height: 48px !important;
    position: relative;
    z-index: 90 !important;
    pointer-events: auto !important;
  }

  .site-nav > a,
  .site-nav > a.site-dashboard {
    min-height: 48px !important;
    display: flex !important;
    align-items: center !important;
    box-sizing: border-box !important;
  }

  .button-primary,
  .button-secondary,
  .v3-btn-primary,
  .v3-btn-ghost,
  .dark-button,
  .site-dashboard {
    min-height: 48px !important;
  }

  .faq-list summary {
    min-height: 48px !important;
    padding-top: 14px !important;
    padding-bottom: 14px !important;
  }

  .eh-offer-select,
  .eh-modal .eh-submit {
    min-height: 48px !important;
  }

  .eh-modal-close {
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    min-height: 44px !important;
  }

  .site-footer a,
  .site-footer-links a,
  .site-footer-band a {
    min-height: 44px !important;
    display: inline-flex !important;
    align-items: center !important;
    padding-top: 8px !important;
    padding-bottom: 8px !important;
    box-sizing: border-box !important;
  }

  .site-nav > a:not(.site-dashboard):hover {
    background: #ffffff !important;
  }

  .home-node-card:hover,
  .solution-card:hover,
  .proof-card:hover,
  .workspace-card:hover,
  .gateway-card:hover,
  .service-route-card:hover,
  .why-card:hover,
  .universe-node:hover,
  .universe-system:hover,
  .service-node:hover {
    transform: none !important;
  }

  .universe-node:hover,
  .universe-system:hover,
  .service-node:hover,
  .universe-node:focus,
  .universe-system:focus,
  .service-node:focus {
    z-index: 5 !important;
  }
}

@media (hover: hover) and (pointer: fine) {
  .site-nav > a:not(.site-dashboard):hover,
  .crystal-site .site-nav > a:not(.site-dashboard):hover {
    background: #f3f7ff !important;
  }
}

@media (max-width: 900px) {
  .site-header,
  .crystal-site .site-header {
    position: sticky !important;
    z-index: 100 !important;
  }

  .site-nav-toggle {
    display: block !important;
    pointer-events: auto !important;
    z-index: 110 !important;
  }

  .site-nav {
    display: none;
  }

  .site-nav.is-open {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    padding: 12px !important;
    max-height: min(78vh, 640px) !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
    -webkit-overflow-scrolling: touch;
    background: #ffffff !important;
    box-shadow: 0 18px 48px rgba(32, 31, 26, 0.16) !important;
    position: absolute !important;
    top: calc(100% + 8px) !important;
    left: 18px !important;
    right: 18px !important;
    z-index: 120 !important;
    pointer-events: auto !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  .site-nav.is-open > a {
    min-height: 48px !important;
    padding: 14px 16px !important;
    border-radius: 12px !important;
    width: 100% !important;
    box-sizing: border-box !important;
    pointer-events: auto !important;
  }

  .site-nav.is-open > a.site-dashboard {
    justify-content: center !important;
    margin-top: 4px !important;
  }

  .product-universe-map,
  .services-constellation {
    overflow: hidden !important;
  }
}

html.eh-nav-locked,
html.eh-nav-locked body {
  overflow: hidden !important;
  overscroll-behavior: none !important;
}

html.eh-nav-locked .site-nav.is-open {
  touch-action: pan-y;
}

/* Touch: never show orbit hover callouts (sticky :hover popup after long-press) */
@media (hover: none), (pointer: coarse) {
  .services-hero .service-node span > div,
  .services-hero .service-node > div,
  .services-hero .service-node:hover span > div,
  .services-hero .service-node.is-lit span > div,
  .services-hero .service-node:focus span > div,
  .services-hero .service-node:focus-visible span > div {
    /* service-node tip kill */
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }

  .services-hero .services-constellation.is-hovering .service-node:not(.is-lit) {
    opacity: 1 !important;
  }
}