/* NovelVault v3.11 — touch/scroll resilience + mobile containment.
   Loaded after v3.10. Focus: reliable native scrolling on iOS/Android,
   fewer expensive paint effects, and text that never escapes its component. */

@media (max-width: 820px){
  /* ---------- Native scrolling reliability ---------- */
  html{
    width:100%;
    max-width:100%;
    overflow-x:hidden!important;
    scroll-behavior:auto!important;
    -webkit-text-size-adjust:100%;
    text-size-adjust:100%;
  }
  body{
    width:100%;
    max-width:100%;
    overflow-x:hidden!important;
    overflow-y:auto;
    overscroll-behavior-y:auto;
    -webkit-overflow-scrolling:touch;
  }
  /* Position-fixed lock avoids Safari's "overflow:hidden but page still moves" bug.
     JS preserves/restores the exact scroll position. */
  body.nv-lock{
    position:fixed!important;
    top:calc(-1 * var(--nv-lock-y,0px))!important;
    left:0!important;
    right:0!important;
    width:100%!important;
    height:auto!important;
    overflow:hidden!important;
  }

  /* Never let an invisible layer catch taps. */
  [hidden]{display:none!important;pointer-events:none!important}
  .nv-mobile-search:not(.is-open),
  .nv-quick-view:not(.is-open),
  .nv-v37-help-modal:not(.is-open),
  .nv-age-gate:not(.is-open){pointer-events:none!important}

  /* Let the browser arbitrate horizontal slider vs vertical page movement.
     v3.10 used pan-x, which could block a vertical swipe that began on a shelf. */
  .nv-fandom-slider-track,
  .nv-fandom-novel-shelf .nv-slider-track,
  .nv-related-track,
  .nv-store-rail,
  .nv-search-chips,
  .nv-cart-assurance,
  .nv-v39-auth-benefits,
  .woocommerce-account .woocommerce-MyAccount-navigation,
  .nv-v37-trust-line{
    touch-action:auto!important;
    scroll-snap-type:x proximity!important;
    overscroll-behavior-x:contain!important;
    overscroll-behavior-y:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  button,a,[role="button"],input,select,textarea{touch-action:manipulation}

  /* Fixed blur layers are costly during scroll on many iPhones/Android devices. */
  .site-header,.nv-mobile-nav,
  .nv-badge,.nv-wishlist,.nv-cover-stats b,.nv-adult-cover-note,
  .nv-mobile-search__inner,.nv-filter-fields,
  .nv-v37-help-backdrop{
    -webkit-backdrop-filter:none!important;
    backdrop-filter:none!important;
  }
  .site-header{background:var(--nv-bg)!important}
  .nv-mobile-nav{background:var(--nv-card)!important}

  /* ---------- Universal containment ---------- */
  *,*::before,*::after{box-sizing:border-box}
  .nv-wrap,.nv-content,.nv-home,.nv-section,.nv-section-head,
  .nv-book,.nv-book-copy,.nv-card-bottom,.nv-card-actions,
  .nv-page-card,.nv-page-body,.nv-commerce-page,.nv-commerce-body,
  .nv-v37-product-heading,.nv-product-main,.nv-product-main .summary,
  .nv-v37-facts-grid,.nv-v37-secondary-actions,.nv-v37-summary-card,
  .nv-v38-contact-layout,.nv-v38-contact-intro,.nv-v38-contact-form-card,
  .woocommerce,.woocommerce form,.woocommerce table,.woocommerce-account .woocommerce-MyAccount-content,
  .wc-block-checkout,.wc-block-checkout__main,.wc-block-checkout__sidebar{
    min-width:0!important;
    max-width:100%!important;
  }
  .nv-page-body,.nv-page-body p,.nv-page-body li,.nv-page-body a,
  .nv-v38-contact-details a,.nv-v38-contact-details strong,
  .nv-v37-summary-copy,.nv-v37-summary-copy p,
  .woocommerce-account .woocommerce-MyAccount-content,
  .woocommerce-account .woocommerce-MyAccount-content p,
  .woocommerce-account .woocommerce-MyAccount-content a,
  .woocommerce-message,.woocommerce-info,.woocommerce-error,
  .wc-block-components-notice-banner{
    overflow-wrap:anywhere!important;
    word-break:normal!important;
  }
  pre,code{max-width:100%;overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere}

  /* iOS auto-zooms form fields below 16px, which feels like a broken/unresponsive page. */
  input:not([type="checkbox"]):not([type="radio"]),
  select,textarea,
  .nv-mobile-search form input,
  .woocommerce-account.nv-account-auth form input.input-text,
  .woocommerce-checkout .wc-block-components-text-input input,
  .woocommerce-checkout .wc-block-components-combobox .components-combobox-control__input{
    font-size:16px!important;
  }
  input,select,textarea{max-width:100%!important}

  /* ---------- Homepage / headings ---------- */
  .nv-section-head{align-items:start!important}
  .nv-section-head h1,.nv-section-head h2{
    max-width:100%!important;
    overflow-wrap:break-word!important;
    text-wrap:pretty!important;
  }
  .nv-section-head .nv-slider-actions,.nv-section-head>.nv-link{align-self:start!important}
  .nv-link{line-height:1.2!important}

  .nv-fandom-slider-track{padding-bottom:5px!important}
  .nv-fandom-card__copy{min-width:0!important;max-width:100%!important}
  .nv-fandom-card__copy>strong,
  .nv-fandom-card__copy>em{
    max-width:78%!important;
    overflow-wrap:anywhere!important;
    word-break:normal!important;
  }
  .nv-fandom-card__copy>strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}

  /* ---------- Novel cards: no label/title/price can escape ---------- */
  .nv-badges{max-width:calc(100% - 38px)!important;overflow:hidden!important}
  .nv-badge{
    max-width:100%!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  .nv-cover-stats{overflow:hidden!important}
  .nv-cover-stats b{
    min-width:0!important;
    max-width:68px!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  .nv-book-eyebrow>span{
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  .nv-book h3{
    overflow-wrap:anywhere!important;
    word-break:normal!important;
    hyphens:auto;
  }
  .nv-card-price-inline{
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  .nv-card-actions{min-width:0!important}

  /* ---------- Product details ---------- */
  .nv-v37-facts-grid>div{overflow:hidden!important}
  .nv-v37-facts-grid strong,.nv-v37-facts-grid a{
    display:-webkit-box!important;
    -webkit-box-orient:vertical!important;
    -webkit-line-clamp:2!important;
    overflow:hidden!important;
    text-overflow:clip!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  .nv-v37-secondary-actions button{
    min-width:0!important;
    max-width:100%!important;
    overflow-wrap:anywhere!important;
  }
  .nv-v37-purchase-help{min-height:40px!important}
  /* These are informational pills, not a carousel; wrapping avoids another gesture trap. */
  .nv-v37-trust-line{
    display:flex!important;
    flex-wrap:wrap!important;
    overflow:visible!important;
    gap:5px!important;
  }
  .nv-v37-trust-line span{max-width:100%!important;white-space:normal!important}
  .nv-v37-tags>div{display:flex!important;flex-wrap:wrap!important;max-width:100%!important}
  .nv-v37-tags a,.nv-v37-tags>div>span{
    max-width:100%!important;
    height:auto!important;
    min-height:32px!important;
    padding-block:7px!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
    text-align:center!important;
    line-height:1.2!important;
  }
  .nv-v37-summary-copy p{max-width:100%!important}

  /* ---------- Contact / legal ---------- */
  .nv-v38-contact-details>div{min-width:0!important;overflow:hidden!important}
  .nv-v38-contact-form-card .nv-contact-form label{min-width:0!important}
  .nv-v38-contact-form-card textarea{resize:vertical!important;min-height:120px!important}
  .nv-page-body table{touch-action:auto!important}

  /* ---------- Cart ---------- */
  .nv-cart-assurance{
    display:flex!important;
    flex-wrap:wrap!important;
    overflow:visible!important;
  }
  .nv-cart-assurance span{max-width:100%!important;white-space:normal!important}
  .woocommerce-cart table.shop_table_responsive .product-name,
  .woocommerce-cart table.shop_table_responsive .product-name a{
    min-width:0!important;
    max-width:100%!important;
    overflow-wrap:anywhere!important;
    word-break:normal!important;
  }
  .woocommerce-cart table.cart td.actions .coupon .button{white-space:normal!important;padding-inline:10px!important}

  /* ---------- Checkout ---------- */
  .woocommerce-checkout .wc-block-components-order-summary-item{
    min-width:0!important;
    max-width:100%!important;
  }
  .woocommerce-checkout .wc-block-components-order-summary-item__description,
  .woocommerce-checkout .wc-block-components-order-summary-item__description .wc-block-components-product-name{
    min-width:0!important;
    max-width:100%!important;
    overflow-wrap:anywhere!important;
    word-break:normal!important;
  }
  .woocommerce-checkout .wc-block-components-checkout-step,
  .woocommerce-checkout .wc-block-components-checkout-step__container,
  .woocommerce-checkout .wc-block-components-address-form{min-width:0!important;max-width:100%!important}

  /* ---------- Account / sign-in ---------- */
  .nv-v39-auth-benefits{
    display:grid!important;
    grid-template-columns:1fr!important;
    overflow:visible!important;
    gap:5px!important;
  }
  .nv-v39-auth-benefits span{width:100%!important;white-space:normal!important;line-height:1.3!important}
  .woocommerce-account .woocommerce-MyAccount-navigation{touch-action:auto!important}
  .woocommerce-account .woocommerce-MyAccount-navigation li a{touch-action:manipulation!important}

  /* ---------- Tap quality ---------- */
  .nv-icon-btn,.nv-wishlist,.nv-card-cart,.nv-card-buy,.nv-load-more,
  .nv-mobile-nav>a,.nv-mobile-nav>button,.nv-filter-toggle,
  .nv-v37-secondary-actions button,.nv-v37-summary-card>button,
  .woocommerce button,.woocommerce .button{
    -webkit-tap-highlight-color:transparent!important;
    user-select:none;
  }
  @media (hover:none),(pointer:coarse){
    .nv-book:hover .nv-cover img,.nv-fandom-card:hover{transform:none!important}
    .nv-fandom-card:hover{box-shadow:0 7px 20px rgba(18,20,24,.08)!important}
  }
}

/* Common modern phones: give text a little more air without losing 3-card density. */
@media (min-width:381px) and (max-width:540px){
  .nv-book h3{font-size:10.2px!important;line-height:1.22!important}
  .nv-book-eyebrow>span{font-size:6.2px!important}
  .nv-card-price-inline{font-size:10px!important}
  .nv-v37-facts-grid strong,.nv-v37-facts-grid a{font-size:8.4px!important}
}

/* Very small legacy devices need a graceful escape hatch instead of broken cards. */
@media (max-width:340px){
  :root{--nv-grid-mobile:2!important}
  .nv-recent-grid,.nv-products,.nv-related-grid,.woocommerce ul.products{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .nv-fandom-novel-shelf .nv-slider-track,.nv-related-track{grid-auto-columns:calc((100% - 6px)/2)!important}
  .nv-book h3{font-size:10px!important}
}

/* Dark mode uses solid surfaces on mobile as well, avoiding expensive live blur. */
@media (max-width:820px){
  html[data-nv-theme=dark] .site-header{background:var(--nv-bg)!important}
  html[data-nv-theme=dark] .nv-mobile-nav{background:var(--nv-card)!important}
}
