/* ==== SITE-BEST BATCH 1 (items 7, 8, 10, 9) · Theme draft 2026-10-23 ====
   Paste as ONE block at the end of Additional CSS, ONE save (= one LiteSpeed purge via #281).
   Each item is also delimited so it can be removed on its own for rollback. Source sidecars live in specs/<nn>-…/. */

/* ==== SITE-BEST 7 · Dead ends: search no-results + empty cart · Theme 2026-10-23 ====
   Scope: body.search-no-results / body.rtb-search-zero (search, 0 results) and
          body.woocommerce-cart (only the empty-cart blocks .rtb-sb7-*).
   Markup: snippet #80 patch (SPEC §Markup). Tokens: live :root --rx-*. */

/* Filters is pointless at 0 results. rtb-search-zero is only set when no filter is applied. */
body.search-no-results.rtb-search-zero .rtb-shop-toolbar-filters,
body.search-no-results.rtb-search-zero .rtb-shop-filters-trigger{display:none!important;}

/* Help + Fits My Gun lines (search and empty cart share them) */
body.search-no-results .rtb-sb7-help,
body.search-no-results .rtb-sb7-fit,
body.woocommerce-cart .rtb-sb7-fit{
  margin:var(--rx-s4) 0 0; color:var(--rx-text-2);
  font-family:var(--rx-font); font-size:var(--rx-fs-sub); line-height:20px; font-weight:var(--rx-w-reg);
}
body.search-no-results .rtb-sb7-help{margin-top:var(--rx-s5);}
body.search-no-results .rtb-sb7-help,body.search-no-results .rtb-sb7-fit{text-align:center; max-width:36em; margin-left:auto; margin-right:auto;}
body.search-no-results .rtb-sb7-help a,
body.search-no-results .rtb-sb7-fit a,
body.woocommerce-cart .rtb-sb7-fit a{
  color:var(--rx-text)!important; -webkit-text-fill-color:var(--rx-text)!important; font-weight:var(--rx-w-semi);
  text-decoration:underline; text-decoration-color:var(--rx-text-3); text-underline-offset:3px;
  display:inline-block; padding:var(--rx-s1) 0; /* 28px+ tap height inside the sentence */
}
body.search-no-results .rtb-sb7-help a:hover,
body.search-no-results .rtb-sb7-fit a:hover,
body.woocommerce-cart .rtb-sb7-fit a:hover{text-decoration-color:var(--rx-red-hi);}

/* "In demand" rail */
body.search-no-results .rtb-sb7,
body.woocommerce-cart .rtb-sb7{margin:var(--rx-s7) 0 var(--rx-s4); text-align:left;}
body.search-no-results .rtb-sb7 .rtb-section-head,
body.woocommerce-cart .rtb-sb7 .rtb-section-head{display:flex; align-items:baseline; justify-content:space-between; gap:var(--rx-s3); margin:0 0 var(--rx-s3);}
body.search-no-results .rtb-sb7 .rtb-section-head h2,
body.woocommerce-cart .rtb-sb7 .rtb-section-head h2{
  margin:0; font-family:var(--rx-font-display); font-size:var(--rx-fs-title2); line-height:28px;
  font-weight:var(--rx-w-bold); letter-spacing:var(--rx-track-tight); text-transform:none; color:var(--rx-text);
}
body.search-no-results .rtb-sb7 .rtb-section-head p,
body.woocommerce-cart .rtb-sb7 .rtb-section-head p{margin:0;}
body.search-no-results .rtb-sb7 .rtb-section-head a,
body.woocommerce-cart .rtb-sb7 .rtb-section-head a{
  display:inline-flex; align-items:center; min-height:var(--rx-tap);
  color:var(--rx-red-hi)!important; -webkit-text-fill-color:var(--rx-red-hi)!important;
  font-size:var(--rx-fs-sub); font-weight:var(--rx-w-semi); text-decoration:none;
}
body.search-no-results .rtb-sb7 ul.products,
body.woocommerce-cart .rtb-sb7 ul.products{
  display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:var(--rx-s3);
  margin:0!important; padding:0!important; list-style:none; width:100%!important; max-width:none!important;
}
@media (min-width:769px){
  body.search-no-results .rtb-sb7 ul.products,
  body.woocommerce-cart .rtb-sb7 ul.products{grid-template-columns:repeat(4,minmax(0,1fr))!important; gap:var(--rx-s4);}
}
body.search-no-results .rtb-sb7 ul.products::before,body.search-no-results .rtb-sb7 ul.products::after,
body.woocommerce-cart .rtb-sb7 ul.products::before,body.woocommerce-cart .rtb-sb7 ul.products::after{display:none!important;}
body.search-no-results .rtb-sb7 ul.products li.product,
body.woocommerce-cart .rtb-sb7 ul.products li.product{
  width:auto!important; max-width:none!important; margin:0!important; float:none!important; clear:none!important;
  background:var(--rx-card)!important; border:var(--rx-hair) solid var(--rx-sep)!important; border-radius:var(--rx-r-card)!important; overflow:hidden; padding:0 0 var(--rx-s3)!important;
  display:flex; flex-direction:column;
}
body.search-no-results .rtb-sb7 li.product img,
body.woocommerce-cart .rtb-sb7 li.product img{
  width:100%!important; aspect-ratio:1/1; height:auto!important; object-fit:contain; background:var(--rx-img-bg); margin:0 0 var(--rx-s2)!important;
}
body.search-no-results .rtb-sb7 li.product .woocommerce-loop-product__title,
body.woocommerce-cart .rtb-sb7 li.product .woocommerce-loop-product__title{
  padding:0 var(--rx-s3)!important; margin:0 0 var(--rx-s1)!important;
  font-size:var(--rx-fs-sub)!important; line-height:20px!important; font-weight:var(--rx-w-semi)!important; color:var(--rx-text)!important;
  display:-webkit-box!important; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden!important; max-height:40px!important; min-height:40px; height:auto!important; text-transform:none!important; letter-spacing:0!important;
}
body.search-no-results .rtb-sb7 li.product .price,
body.search-no-results .rtb-sb7 li.product .rtb-per-round,
body.search-no-results .rtb-sb7 li.product .rtb-card-stock,
body.woocommerce-cart .rtb-sb7 li.product .price,
body.woocommerce-cart .rtb-sb7 li.product .rtb-per-round,
body.woocommerce-cart .rtb-sb7 li.product .rtb-card-stock{padding:0 var(--rx-s3)!important;}
body.search-no-results .rtb-sb7 li.product .price,body.woocommerce-cart .rtb-sb7 li.product .price,
body.search-no-results .rtb-sb7 li.product .price .amount,body.woocommerce-cart .rtb-sb7 li.product .price .amount{color:var(--rx-text)!important; -webkit-text-fill-color:var(--rx-text)!important; opacity:1!important;}
body.search-no-results .rtb-sb7 li.product .button,
body.woocommerce-cart .rtb-sb7 li.product .button{
  margin:auto var(--rx-s3) 0!important; min-height:var(--rx-tap); width:auto!important; border-radius:var(--rx-r-btn)!important;
  display:flex!important; align-items:center; justify-content:center;
}

/* Empty cart: category tiles */
body.woocommerce-cart .rtb-sb7-tiles{margin:var(--rx-s6) 0 0; text-align:left;}
body.woocommerce-cart .rtb-sb7-tiles__head{
  margin:0 0 var(--rx-s3); font-family:var(--rx-font-display); font-size:var(--rx-fs-title2); line-height:28px;
  font-weight:var(--rx-w-bold); letter-spacing:var(--rx-track-tight); text-transform:none; color:var(--rx-text);
}
body.woocommerce-cart .rtb-sb7-tiles__list{
  list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--rx-s2);
}
@media (min-width:769px){ body.woocommerce-cart .rtb-sb7-tiles__list{grid-template-columns:repeat(6,minmax(0,1fr));} }
body.woocommerce-cart .rtb-sb7-tiles__list li{margin:0; padding:0;}
body.woocommerce-cart .rtb-sb7-tiles__list a{
  display:flex; align-items:center; justify-content:space-between; min-height:var(--rx-row);
  padding:0 var(--rx-s3) 0 var(--rx-s4); box-sizing:border-box;
  background:var(--rx-card); border-radius:var(--rx-r-btn);
  color:var(--rx-text)!important; -webkit-text-fill-color:var(--rx-text)!important;
  font-family:var(--rx-font); font-size:var(--rx-fs-body); font-weight:var(--rx-w-semi); text-decoration:none!important;
  transition:background var(--rx-dur) var(--rx-ease);
}
body.woocommerce-cart .rtb-sb7-tiles__list a::after{content:"\203A"; color:var(--rx-text-3); font-size:var(--rx-fs-chev); font-weight:var(--rx-w-reg);}
body.woocommerce-cart .rtb-sb7-tiles__list a:hover{background:var(--rx-card-2);}
body.woocommerce-cart .rtb-sb7-tiles__list a:focus-visible,
body.woocommerce-cart .rtb-sb7 a:focus-visible,
body.search-no-results .rtb-sb7 a:focus-visible,
body.search-no-results .rtb-sb7-help a:focus-visible{outline:var(--rx-ring) solid var(--rx-red-hi); outline-offset:2px;}
/* Keep the existing "Shop guns, ammo, and gear" button as the closing CTA, with breathing room */
body.woocommerce-cart .rtb-sb7 + .return-to-shop,
body.woocommerce-cart .rtb-sb7-tiles + .return-to-shop{margin-top:var(--rx-s6)!important;}
/* ==== /SITE-BEST 7 ==== */

/* ==== SITE-BEST 8 · Mobile drawer cleanup · Theme 2026-10-23 ====
   Scope: the open GeneratePress drawer only (#site-navigation.toggled at ≤768px),
   plus the optional .rtb-nav-shopall class set in wp-admin Menus (SPEC §wp-admin).
   This is site-wide chrome, so it's scoped by the drawer state, not a page class (see SPEC §Scope note).
   Desktop header Account icon rules stay as they are. */
@media (max-width:768px){
  /* Cart: the header cart is already 1 tap away next to the toggle. Hide the duplicate.
     CSS hide on purpose: snippet #74 re-injects the item if it's deleted in Menus. */
  body #site-navigation.toggled .main-nav > ul#menu-menu > li.rtb-drawer-util--cart{display:none!important;}

  /* Account: there's no Account icon in the 390 header, so it stays in the drawer, moved to the bottom as a utility row. */
  body #site-navigation.toggled .main-nav > ul#menu-menu{display:flex!important; flex-direction:column;}
  body #site-navigation.toggled .main-nav > ul#menu-menu > li{order:1;}
  body #site-navigation.toggled .main-nav > ul#menu-menu > li.rtb-drawer-util--account{
    order:99; border-bottom:0!important; margin:var(--rx-s2) 0 0!important;
    border-top:var(--rx-hair) solid var(--rx-sep)!important;
  }
  body #site-navigation.toggled .main-nav > ul#menu-menu > li.rtb-drawer-util--account > a{
    color:var(--rx-text-2)!important; letter-spacing:0!important; font-weight:var(--rx-w-reg)!important;
    font-size:var(--rx-fs-sub)!important;
  }

  /* "Shop all …" first child in each submenu reads as the jump-off, not as another subcategory */
  body #site-navigation.toggled .main-nav ul.sub-menu > li.rtb-nav-shopall > a{
    color:var(--rx-text)!important; -webkit-text-fill-color:var(--rx-text)!important; font-weight:var(--rx-w-semi)!important;
  }
}
/* Desktop dropdowns: the same "Shop all" items appear there (WP menus are shared). Give them a quiet separator. */
@media (min-width:769px){
  body #site-navigation:not(.toggled) .main-nav ul.sub-menu > li.rtb-nav-shopall{border-bottom:var(--rx-hair) solid var(--rx-sep);}
  body #site-navigation:not(.toggled) .main-nav ul.sub-menu > li.rtb-nav-shopall > a{font-weight:var(--rx-w-semi)!important;}
}
/* ==== /SITE-BEST 8 ==== */

/* ==== SITE-BEST 10 · Brands page: stable and scannable · Theme 2026-10-23 ====
   Scope: body.page-id-51760 (Brands) only. Tokens: live :root --rx-*.
   1) CLS: kill the scroll-driven padding animation (rtb-brands-sticky-pad / -desk).
      It grew padding-top 0→48px (0→32px desktop) on all 28 sections while scrolling 140–220px
      = the 0.3141 CLS at 390. Sections get static spacing plus scroll-margin so A–Z jumps clear the sticky bar.
   2) A–Z bar at ≤640px: one swipeable 44px row (was 267px of sticky wrap, 32% of the screen).
   3) Tap targets: list links ≥44px at ≤640px (2 columns), ≥32px at 641px+ (WCAG 2.5.8 floor is 24px).
   4) Top brands row (.rtb-brands-top, markup from snippet #20 patch). */

body.page-id-51760 .rtb-brands-index .rtb-brands-section{
  animation:none!important; animation-timeline:auto!important;
  padding-top:0!important; margin:0 0 var(--rx-s6);
  scroll-margin-top:72px;
}
body.page-id-51760 .rtb-brands-index .rtb-brands-letter{scroll-margin-top:72px;}
@media (min-width:641px){
  body.page-id-51760 .rtb-brands-index .rtb-brands-section,
  body.page-id-51760 .rtb-brands-index .rtb-brands-letter{scroll-margin-top:104px;}
}

/* A–Z: single row, swipe sideways on phones. Height is fixed so nothing below it moves. */
@media (max-width:640px){
  body.page-id-51760 .rtb-brands-index .rtb-brands-az{
    flex-wrap:nowrap!important; overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch; scrollbar-width:none;
    gap:var(--rx-s2)!important; padding:var(--rx-s2) 0!important; margin:0 0 var(--rx-s4)!important;
    height:60px; max-height:none!important; box-sizing:border-box;
    scroll-snap-type:x proximity;
  }
  body.page-id-51760 .rtb-brands-index .rtb-brands-az::-webkit-scrollbar{display:none;}
  body.page-id-51760 .rtb-brands-index .rtb-brands-az a{
    flex:0 0 auto; scroll-snap-align:start;
    min-width:44px!important; height:44px!important; min-height:44px!important;
    flex-direction:column; border-radius:var(--rx-r-inner)!important;
  }
}

/* List rows */
body.page-id-51760 .rtb-brands-index .rtb-brands-list li{margin:0!important;}
body.page-id-51760 .rtb-brands-index .rtb-brands-list a{
  display:flex; align-items:center; min-height:32px; padding:var(--rx-s1) 0; box-sizing:border-box;
  line-height:1.25;
}
@media (max-width:640px){
  body.page-id-51760 .rtb-brands-index .rtb-brands-list{columns:2!important; column-gap:var(--rx-s4)!important;}
  body.page-id-51760 .rtb-brands-index .rtb-brands-list a{
    min-height:var(--rx-tap); padding:var(--rx-s1) 0;
    border-bottom:var(--rx-hair) solid var(--rx-sep);
    font-size:var(--rx-fs-sub)!important; line-height:20px!important;
  }
}

/* Top brands row (markup: SPEC §Markup, rendered by snippet #20) */
body.page-id-51760 .rtb-brands-top{margin:0 0 var(--rx-s6);}
body.page-id-51760 .rtb-brands-top__head{
  margin:0 0 var(--rx-s3); padding:0; border:0;
  font-family:var(--rx-font-display); font-size:var(--rx-fs-title3); line-height:25px;
  font-weight:var(--rx-w-bold); letter-spacing:var(--rx-track-tight); text-transform:none; color:var(--rx-text);
}
body.page-id-51760 .rtb-brands-top__list{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--rx-s2);
}
@media (min-width:641px){ body.page-id-51760 .rtb-brands-top__list{grid-template-columns:repeat(4,minmax(0,1fr));} }
body.page-id-51760 .rtb-brands-top__list li{margin:0; padding:0;}
body.page-id-51760 .rtb-brands-top__list a{
  display:flex; align-items:center; justify-content:space-between; gap:var(--rx-s2);
  min-height:var(--rx-row); padding:0 var(--rx-s3) 0 var(--rx-s4); box-sizing:border-box;
  background:var(--rx-card); border-radius:var(--rx-r-btn);
  color:var(--rx-text)!important; -webkit-text-fill-color:var(--rx-text)!important;
  font-family:var(--rx-font); font-size:var(--rx-fs-sub); line-height:20px; font-weight:var(--rx-w-semi);
  text-decoration:none!important;
  transition:background var(--rx-dur) var(--rx-ease);
}
body.page-id-51760 .rtb-brands-top__list a::after{content:"\203A"; color:var(--rx-text-3); font-size:var(--rx-fs-chev); line-height:1; font-weight:var(--rx-w-reg);}
body.page-id-51760 .rtb-brands-top__list a:hover{background:var(--rx-card-2);}
body.page-id-51760 .rtb-brands-top__list a:focus-visible{outline:var(--rx-ring) solid var(--rx-red-hi); outline-offset:2px;}
/* ==== /SITE-BEST 10 ==== */

/* ==== SITE-BEST 9 · Cart tidy · Theme 2026-10-23 ====
   Scope: body.woocommerce-cart only. CSS only, so no snippet, price, fee or coupon logic changes.
   Never touches #30 / #729 / FFL. Fee row markup is Woo core (tr.fee); this only adds a caption. */

/* 9a · Hide the duplicate "…added to your cart. View cart" notice when you're already ON the cart.
   Only notices that link back to /cart/ are hidden. "Cart updated.", coupon and error notices stay. */
body.woocommerce-cart .woocommerce-notices-wrapper .woocommerce-message:has(> a.wc-forward[href*="/cart/"]){display:none!important;}

/* 9b · Coupon behind "Have a code?". The field stays in the DOM, focusable and labelled.
   Clicking the label focuses the input (for=coupon_code), which opens the row. Tab reaches it too.
   It stays open while focused, while it has text, or while there's a coupon error.
   Browsers without :has() keep today's open field (everything is inside @supports). */
@supports selector(:has(*)){
  body.woocommerce-cart table.cart td.actions .coupon{
    background:transparent!important; border:0!important; padding:0!important; gap:var(--rx-s2);
  }
  body.woocommerce-cart table.cart td.actions .coupon > label[for="coupon_code"]{
    position:static!important; width:auto!important; height:auto!important; clip:auto!important; clip-path:none!important;
    overflow:visible!important; margin:0!important; padding:0!important; white-space:nowrap;
    display:inline-flex!important; align-items:center; min-height:var(--rx-tap); cursor:pointer;
    font-size:0!important; color:transparent; flex:1 1 100%;
  }
  body.woocommerce-cart table.cart td.actions .coupon > label[for="coupon_code"]::after{
    content:"Have a code?"; font-family:var(--rx-font); font-size:var(--rx-fs-sub); line-height:20px; font-weight:var(--rx-w-semi);
    color:var(--rx-text); text-decoration:underline; text-decoration-color:var(--rx-text-3); text-underline-offset:3px;
  }
  body.woocommerce-cart table.cart td.actions .coupon > label[for="coupon_code"]:hover::after{text-decoration-color:var(--rx-red-hi);}
  /* collapsed: visually hidden, NOT display:none, so it stays focusable */
  body.woocommerce-cart table.cart td.actions .coupon:not(:focus-within):not(:has(#coupon_code:not(:placeholder-shown))):not(:has(.coupon-error-notice)) #coupon_code,
  body.woocommerce-cart table.cart td.actions .coupon:not(:focus-within):not(:has(#coupon_code:not(:placeholder-shown))):not(:has(.coupon-error-notice)) button[name="apply_coupon"]{
    position:absolute!important; width:1px!important; height:1px!important; flex:0 0 1px!important; max-width:1px!important; min-width:0!important; min-height:0!important; padding:0!important; margin:-1px!important;
    border:0!important; overflow:hidden!important; clip:rect(0 0 0 0)!important; clip-path:inset(50%)!important; white-space:nowrap!important;
  }
  /* open: the label turns into a quiet caption above the field */
  body.woocommerce-cart table.cart td.actions .coupon:is(:focus-within,:has(#coupon_code:not(:placeholder-shown)),:has(.coupon-error-notice)) > label[for="coupon_code"]{min-height:28px;}
  body.woocommerce-cart table.cart td.actions .coupon:is(:focus-within,:has(#coupon_code:not(:placeholder-shown)),:has(.coupon-error-notice)) > label[for="coupon_code"]::after{
    content:"Coupon code"; text-decoration:none; color:var(--rx-text-2); font-weight:var(--rx-w-reg); font-size:var(--rx-fs-foot);
  }
  body.woocommerce-cart table.cart td.actions .coupon #coupon_code{min-height:var(--rx-tap); border-radius:var(--rx-r-inner)!important;}
  body.woocommerce-cart table.cart td.actions .coupon button[name="apply_coupon"]{min-height:var(--rx-tap); border-radius:var(--rx-r-btn)!important;}
}

/* 9b-2 · Update cart reads as a ghost text button. It enables itself when a quantity changes (Woo core JS). */
body.woocommerce-cart .woocommerce-cart-form table.cart button.button[name=update_cart],
body.woocommerce-cart .woocommerce-cart-form table.cart button.button[name=update_cart]:disabled,
body.woocommerce-cart .woocommerce-cart-form table.cart button.button[name=update_cart]:disabled:hover{
  background:transparent!important; border:0!important; box-shadow:none!important;
  font-family:var(--rx-font); font-size:var(--rx-fs-sub)!important; font-weight:var(--rx-w-semi); letter-spacing:0!important; text-transform:none!important;
  padding:0 var(--rx-s2)!important; min-height:var(--rx-tap)!important;
}
body.woocommerce-cart .woocommerce-cart-form table.cart button.button[name=update_cart]:disabled{color:var(--rx-text-3)!important; cursor:default;}
body.woocommerce-cart .woocommerce-cart-form table.cart button.button[name=update_cart]:not(:disabled){color:var(--rx-red-hi)!important;}
body.woocommerce-cart .woocommerce-cart-form table.cart button.button[name=update_cart]:focus-visible{outline:var(--rx-ring) solid var(--rx-red-hi); outline-offset:2px;}

/* 9c · Handling explainer under the "Additional handling" fee row. Exact wording from Chief, 5:09 PM. */
@media (min-width:769px){
  body.woocommerce-cart .cart_totals tr.fee th::after{
    content:"Small orders from some suppliers carry a handling fee."; display:block; white-space:normal; max-width:22em;
    margin-top:var(--rx-s1); font-family:var(--rx-font); font-size:var(--rx-fs-foot); line-height:18px; font-weight:var(--rx-w-reg);
    color:var(--rx-text-2); letter-spacing:0; text-transform:none;
  }
}
@media (max-width:768px){
  body.woocommerce-cart .cart_totals tr.fee td{flex-wrap:wrap;}
  body.woocommerce-cart .cart_totals tr.fee td::after{
    content:"Small orders from some suppliers carry a handling fee."; display:block; clear:both; text-align:left;
    flex:1 1 100%; width:100%; order:9;
    padding-top:var(--rx-s1); font-family:var(--rx-font); font-size:var(--rx-fs-foot); line-height:18px; font-weight:var(--rx-w-reg);
    color:var(--rx-text-2); letter-spacing:0; text-transform:none;
  }
}
/* ==== /SITE-BEST 9 ==== */
