/* Pi Browser narrow-phone typography hardening.
   Keep Korean words intact while still allowing long unbroken Latin text to wrap safely. */
.happy-merged-home .happy-hero-board h2,
.happy-merged-home .happy-hero-board p,
.happy-merged-home .happy-safe-banner span {
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* Prefer the vendored Lucide subset for bottom navigation when CSS masks are supported.
   The original emoji text remains the no-JS/no-mask fallback. */
@supports ((-webkit-mask-image: none) or (mask-image: none)) {
  .bottom-nav .nav-btn > span[aria-hidden="true"] {
    display: block;
    width: 24px;
    height: 24px;
    margin: 0 auto 2px;
    font-size: 0;
    background-color: currentColor;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: 24px 24px;
    mask-size: 24px 24px;
  }

  .bottom-nav .nav-btn[data-nav="home"] > span[aria-hidden="true"] {
    -webkit-mask-image: url("vendor/lucide/house.svg");
    mask-image: url("vendor/lucide/house.svg");
  }

  .bottom-nav .nav-btn[data-nav="discover"] > span[aria-hidden="true"] {
    -webkit-mask-image: url("vendor/lucide/compass.svg");
    mask-image: url("vendor/lucide/compass.svg");
  }

  .bottom-nav .nav-btn[data-nav="rewards"] > span[aria-hidden="true"] {
    -webkit-mask-image: url("vendor/lucide/gift.svg");
    mask-image: url("vendor/lucide/gift.svg");
  }

  .bottom-nav .nav-btn[data-nav="passport"] > span[aria-hidden="true"] {
    -webkit-mask-image: url("vendor/lucide/id-card.svg");
    mask-image: url("vendor/lucide/id-card.svg");
  }
}

/* Coarse-pointer/mobile touch-target hardening.
   Preserve the compact visual layout while keeping primary tap targets at least 44px tall. */
@media (pointer: coarse) {
  .icon-btn,
  .login-btn,
  .primary,
  .secondary,
  .filter-btn,
  .business-links a,
  .setting[href] {
    min-height: 44px;
  }

  .nav-btn {
    min-height: 52px;
  }
}
