/* ==========================================================================
   Pothapatha — project overrides on top of the Bookworm theme.
   Loaded last, after theme.css. Keep theme.css untouched so the template
   stays upgradeable.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Page loader — a brief logo pulse shown while the page loads, on every
   page (layouts/main.php). pothapatha.js adds .pp-loaded to <body> once the
   page is ready, which fades this out; a hard timeout in the same script
   guarantees it never gets stuck showing if something upstream fails.
   -------------------------------------------------------------------------- */
.pp-preloader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  opacity: 1;
  visibility: visible;
  transition: opacity 0.35s ease, visibility 0.35s ease;
}

.pp-preloader__logo {
  width: 130px;
  max-width: 45vw;
  animation: pp-preloader-pulse 1.1s ease-in-out infinite;
}

@keyframes pp-preloader-pulse {
  0%, 100% { opacity: 0.5; transform: scale(0.92); }
  50%      { opacity: 1;   transform: scale(1); }
}

body.pp-loaded .pp-preloader {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .pp-preloader__logo {
    animation: none;
  }
}

/* --------------------------------------------------------------------------
   Sinhala typography
   The Bookworm theme ships Inter + Cerebri Sans, neither of which has Sinhala
   glyphs. Until a proper Sinhala webfont is dropped into assets/fonts/, fall
   back to the fonts Windows/Android/iOS already ship so සිංහල text renders.
   -------------------------------------------------------------------------- */
:root {
  --pp-font-sans: 'Cerebri Sans', 'Inter', 'Noto Sans Sinhala', 'Iskoola Pota',
                  'Nirmala UI', 'Yaldevi', -apple-system, BlinkMacSystemFont,
                  'Segoe UI', Roboto, sans-serif;
}

body,
.font-family-base,
input, select, textarea, button {
  font-family: var(--pp-font-sans);
}

/* Sinhala needs a little more line height than Latin at the same size */
:lang(si), .si-text {
  line-height: 1.75;
}

/* ==========================================================================
   Brand palette — sampled from the pothapatha.com logo sheet.

   The Bookworm theme ships a lime-green accent (#88cf00) and Amazon-ish
   navy-greys (#232f3e header, #1c2633 nav/footer). Everything below re-points
   those to the logo's blues. Change the four variables and the whole site
   follows; the rules under them only exist to reach the theme's utility
   classes, which hard-code the colour values.
   ========================================================================== */
:root {
  --pp-navy-900: #04284a;   /* logo sheet dark panel — header bar, footer   */
  --pp-navy-700: #123a5c;   /* logo outline navy      — nav bar, headings   */
  --pp-blue-500: #2e7bb0;   /* book lines / cart      — buttons, links      */
  --pp-blue-300: #7fb3d5;   /* light accent                                  */

  --pp-blue-600: #256691;   /* hover state for --pp-blue-500                 */
  --pp-blue-100: #e4eff8;   /* soft tints                                    */

  /* kept for older rules in this file */
  --pp-primary: var(--pp-blue-500);
  --pp-primary-dark: var(--pp-blue-600);
  --pp-dark: var(--pp-navy-900);
}

/* --- surfaces the template paints dark ---------------------------------- */
.bg-secondary-gray-800 { background-color: var(--pp-navy-900) !important; }
.bg-secondary-black-200 { background-color: var(--pp-navy-700) !important; }
.bg-gray-850 { background-color: var(--pp-navy-900) !important; }
.site-footer_v2 .border-gray-750 { border-color: rgba(255, 255, 255, 0.12) !important; }

/* --- accent: green -> brand blue ---------------------------------------- */
.btn-primary-green,
.btn-primary-green.disabled,
.btn-primary-green:disabled {
  color: #fff;
  background-color: var(--pp-blue-500);
  border-color: var(--pp-blue-500);
}

.btn-primary-green:hover,
.btn-primary-green:focus,
.btn-primary-green.focus,
.btn-primary-green:not(:disabled):not(.disabled):active,
.btn-primary-green.dropdown-toggle {
  color: #fff;
  background-color: var(--pp-blue-600);
  border-color: var(--pp-blue-600);
}

.btn-primary-green:focus,
.btn-primary-green.focus {
  box-shadow: 0 0 0 0.2rem rgba(46, 123, 176, 0.35);
}

.btn-outline-primary-green {
  color: var(--pp-blue-500);
  border-color: var(--pp-blue-500);
}

.btn-outline-primary-green:hover,
.btn-outline-primary-green:focus,
.btn-outline-primary-green:not(:disabled):not(.disabled):active {
  color: #fff;
  background-color: var(--pp-blue-500);
  border-color: var(--pp-blue-500);
}

.text-primary-green { color: var(--pp-blue-500) !important; }
.bg-primary-green   { background-color: var(--pp-blue-500) !important; }
.border-primary-green { border-color: var(--pp-blue-500) !important; }
.bg-soft-primary-green { background-color: var(--pp-blue-100) !important; }
.fill-primary-green { fill: var(--pp-blue-500) !important; }

.badge-primary-green { color: #fff; background-color: var(--pp-blue-500); }

a.text-primary-green:hover,
a.text-primary-green:focus { color: var(--pp-blue-600) !important; }

/* the theme's generic "primary" accent shows up in product meta and links */
.text-primary { color: var(--pp-blue-500) !important; }
.h-primary:hover { color: var(--pp-blue-500) !important; }
.h-p-bg:hover { background-color: var(--pp-blue-500) !important; color: #fff !important; }

/* --- links -------------------------------------------------------------- */
a { color: var(--pp-navy-700); }
a:hover { color: var(--pp-blue-500); }

/* the dark bars carry light text, so links there must not inherit the above */
.bg-secondary-gray-800 a,
.bg-secondary-black-200 a,
.site-footer_v2 a { color: inherit; }

/* --- header ------------------------------------------------------------- */
.site-branding img {
  height: 62px;
  max-height: 62px;
  width: auto;
  max-width: 120px;
  object-fit: contain;
}

/* the nav bar sits directly under the masthead; a hairline keeps them apart */
.bg-secondary-black-200 { border-top: 1px solid rgba(255, 255, 255, 0.08); }

.site-navigation .nav-link.active,
.site-navigation .nav-link:hover { color: var(--pp-blue-300) !important; }

/* --------------------------------------------------------------------------
   Header search: category picker

   A bare <select> opens the operating system's own list, which looks nothing
   like the rest of the page. The theme already bundles bootstrap-select, so
   the picker is rendered by that and only needs to be dressed to sit inside
   the search bar.
   -------------------------------------------------------------------------- */
/* Rounding the picker and the input separately left a sliver of the navy
   masthead showing between them. Give the group a white backdrop so any
   sub-pixel seam reads as white, drop every inner margin, and round only the
   outermost edges. No overflow:hidden here — that would clip the picker's
   own dropdown. */
.site-search .input-group {
  background-color: #fff;
  border-radius: 0.3125rem;
}

.site-search .input-group > *,
.site-search .input-group-prepend,
.site-search .input-group-append {
  margin: 0 !important;
}

/* the prepend carries d-xl-block, which takes it out of flex flow and stops it
   matching the input's height — put it back */
@media (min-width: 1200px) {
  .site-search .input-group-prepend.d-xl-block {
    display: flex !important;
    align-items: stretch;
  }
}

.site-search .input-group .form-control {
  border: 0;
  border-left: 1px solid #e7eaf3;
  border-radius: 0 !important;
}

.site-search .bootstrap-select > .dropdown-toggle {
  border-radius: 0.3125rem 0 0 0.3125rem !important;
}

.site-search .input-group-append .btn {
  border-radius: 0 0.3125rem 0.3125rem 0 !important;
}

.site-search .bootstrap-select {
  display: flex !important;
  float: none !important;
  margin: 0 !important;
}

.site-search .bootstrap-select > .dropdown-toggle {
  background-color: #fff;
  border: 0;
  color: var(--pp-navy-700);
  height: 100%;
  padding: 0.75rem 1.25rem;
  font-size: 0.875rem;
}

.site-search .bootstrap-select > .dropdown-toggle:focus,
.site-search .bootstrap-select > .dropdown-toggle:active {
  outline: none !important;
  box-shadow: none !important;
}

.site-search .bootstrap-select > .dropdown-toggle::after {
  border-top-color: var(--pp-blue-500);
  margin-left: 0.5rem;
}

.site-search .bootstrap-select .dropdown-menu {
  border: 1px solid #e7eaf3;
  border-radius: 0.3125rem;
  box-shadow: 0 0.5rem 1.5rem rgba(4, 40, 74, 0.12);
  padding: 0.5rem 0;
  margin-top: 0.35rem;
  min-width: 240px;
}

.site-search .bootstrap-select .dropdown-menu .dropdown-item {
  padding: 0.5rem 1.25rem;
  font-size: 0.875rem;
  color: var(--pp-navy-700);
}

.site-search .bootstrap-select .dropdown-menu .dropdown-item:hover,
.site-search .bootstrap-select .dropdown-menu .dropdown-item:focus {
  background-color: var(--pp-blue-100);
  color: var(--pp-blue-500);
}

.site-search .bootstrap-select .dropdown-menu .dropdown-item.active,
.site-search .bootstrap-select .dropdown-menu .dropdown-item.selected {
  background-color: var(--pp-blue-500);
  color: #fff;
}

/* --------------------------------------------------------------------------
   Mega menu panels
   -------------------------------------------------------------------------- */
.site-navigation .megamenu {
  border: 0;
  box-shadow: 0 1rem 3rem rgba(4, 40, 74, 0.175);
  max-width: calc(100vw - 2rem);
}

.site-navigation .megamenu .menu > li > a {
  transition: color 0.15s ease, padding-left 0.15s ease;
}

.site-navigation .megamenu .menu > li > a:hover {
  color: var(--pp-blue-500) !important;
  padding-left: 0.35rem;
}

/* the category heading rows inside the panel */
.site-navigation .megamenu .menu > li > a.font-size-3 {
  color: var(--pp-navy-900) !important;
}

.site-navigation .megamenu .menu > li > a.font-size-3:hover {
  color: var(--pp-blue-500) !important;
}

.site-navigation .megamenu .banner__image img {
  max-height: 190px;
  object-fit: contain;
}

/* --------------------------------------------------------------------------
   Single product page
   -------------------------------------------------------------------------- */
.product-gallery__image {
  max-width: 260px;
  width: 100%;
  aspect-ratio: 2 / 3;
  object-fit: contain;
  background-color: #fff;
}

/* the attribute cards under the price sit on a shared baseline */
.product-attributes .border-bottom {
  border-bottom-width: 2px !important;
  border-color: #e7eaf3 !important;
}

.product-attributes .col-4:first-child .border-bottom {
  border-color: var(--pp-navy-700) !important;
}

/* quantity stepper */
.product .quantity .js-result {
  -moz-appearance: textfield;
  padding: 0.5rem 0;
  height: auto;
}

.product .quantity .js-result::-webkit-outer-spin-button,
.product .quantity .js-result::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* tabs */
.woocommerce-tabs .nav-link {
  color: #77838f;
  border-bottom: 2px solid transparent;
}

.woocommerce-tabs .nav-link:hover {
  color: var(--pp-navy-700);
}

.woocommerce-tabs .nav-link.active {
  color: var(--pp-navy-900);
  border-bottom-color: var(--pp-navy-900);
  background-color: transparent;
}

/* --------------------------------------------------------------------------
   Pagination (shop grid) — theme ships a red/orange accent by default
   -------------------------------------------------------------------------- */
.page-item.active .page-link {
  background-color: var(--pp-blue-500);
  border-color: var(--pp-blue-500);
}

.page-link {
  color: var(--pp-navy-700);
}

.page-link:hover {
  color: var(--pp-blue-500);
  background-color: var(--pp-blue-100);
  border-color: #e7eaf3;
}

.page-link:focus {
  box-shadow: 0 0 0 0.2rem rgba(46, 123, 176, 0.25);
}

/* --- slick arrows / dots ------------------------------------------------ */
.u-slick__arrow-inner { color: var(--pp-navy-700); }
.u-slick__pagination li.slick-active span,
.u-slick__pagination li span:hover { background-color: var(--pp-blue-500); border-color: var(--pp-blue-500); }

/* --------------------------------------------------------------------------
   Book cards
   -------------------------------------------------------------------------- */
.book-card__cover {
  aspect-ratio: 2 / 3;
  object-fit: cover;
  width: 100%;
  background-color: #f4f4f4;
}

.book-card__title {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: 2.8em;
}

.book-card__author {
  font-size: 0.8125rem;
  color: #77838f;
}

/* --------------------------------------------------------------------------
   Uniform cover boxes in the carousels

   Covers arrive at whatever size the shop uploads, so every thumbnail gets a
   fixed 2:3 box and the image is centre-cropped into it. Without this the
   product rows sit at different heights and the grid reads as ragged.
   -------------------------------------------------------------------------- */
.woocommerce-loop-product__thumbnail {
  display: block;
}

.woocommerce-loop-product__thumbnail > a {
  display: block;
}

/* carousel slides (product__no-border) */
.product .woocommerce-loop-product__thumbnail img {
  display: block;
  width: 100%;
  max-width: 200px;
  margin-left: auto;
  margin-right: auto;
  aspect-ratio: 2 / 3;
  object-fit: cover;
  background-color: #f4f4f4;
}

/* compact media rows (product__card-v2) */
.product__card-v2 .media > a > img {
  display: block;
  width: 90px;
  flex-shrink: 0;
  aspect-ratio: 2 / 3;
  object-fit: cover;
  background-color: #f4f4f4;
}

/* deal-of-the-week card carries a larger cover */
.product__card-v2 .woocommerce-loop-product__thumbnail img {
  width: 100%;
  max-width: 180px;
}

/* keep every slide the same height so the row bottoms line up */
.js-slick-carousel .slick-track {
  display: flex;
  align-items: stretch;
}

.js-slick-carousel .slick-slide {
  height: auto;
}

.js-slick-carousel .slick-slide > div,
.js-slick-carousel .product {
  height: 100%;
}

.product__no-border .product__inner {
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* two-line clamp on carousel titles so cards do not jump in height */
.product__title,
.woocommerce-loop-product__title {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* --------------------------------------------------------------------------
   Card price row — a discounted price ("Rs. 1,125.00  Rs. 1,250.00") is two
   separate number groups that must never split mid-number. Force each group
   to stay on one line; if both don't fit side by side, wrap the struck-
   through original price onto its own line as a whole unit instead.
   -------------------------------------------------------------------------- */
.product .price {
  row-gap: 0.125rem;
}

.product .price ins,
.product .price del,
.product .price .woocommerce-Price-amount {
  white-space: nowrap;
}

/* --------------------------------------------------------------------------
   Stock badges
   -------------------------------------------------------------------------- */
.stock-badge {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 500;
  padding: 0.15rem 0.5rem;
  border-radius: 0.25rem;
}
.stock-badge--in  { background: #e8f5e9; color: #2e7d32; }
.stock-badge--low { background: #fff8e1; color: #f57f17; }
.stock-badge--out { background: #ffebee; color: #c62828; }

/* --------------------------------------------------------------------------
   Autocomplete search dropdown (header)
   -------------------------------------------------------------------------- */
.pp-autocomplete {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 1050;
  background: #fff;
  border: 1px solid #e7eaf3;
  border-radius: 0.3125rem;
  box-shadow: 0 0.375rem 1.5rem 0 rgba(140, 152, 164, 0.125);
  max-height: 22rem;
  overflow-y: auto;
  margin-top: 0.25rem;
}

.pp-autocomplete__item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 1rem;
  color: #2b2b2b;
  text-decoration: none;
}
.pp-autocomplete__item:hover {
  background: #f8f9fa;
  color: var(--pp-primary);
}
.pp-autocomplete__item img {
  width: 34px;
  height: 48px;
  object-fit: cover;
  flex-shrink: 0;
}
.pp-autocomplete__title {
  font-size: 0.875rem;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pp-autocomplete__meta {
  font-size: 0.75rem;
  color: #8c98a4;
}
.pp-autocomplete__price {
  margin-left: auto;
  font-size: 0.875rem;
  font-weight: 600;
  white-space: nowrap;
}

/* --------------------------------------------------------------------------
   Flash / empty states
   -------------------------------------------------------------------------- */
.pp-empty {
  text-align: center;
  padding: 4rem 1rem;
  color: #8c98a4;
}
.pp-empty i {
  font-size: 3rem;
  display: block;
  margin-bottom: 1rem;
  opacity: 0.4;
}

/* Unified storefront notifications */
.pp-toast-stack { position: fixed; top: 18px; right: 18px; z-index: 2100; width: min(310px, calc(100vw - 24px)); }
/* Success uses the brand blue, not the theme's stock lime — the toast is the
   most-seen bit of feedback on the site and should read as Pothapatha. */
.pp-toast { position: relative; display: flex; align-items: center; overflow: hidden; margin-bottom: 8px; min-height: 54px; padding: 10px 34px 11px 12px; color: #242424; background: #fff; border: 1px solid #e7e7e7; border-left: 3px solid var(--pp-blue-500); box-shadow: 0 7px 22px rgba(0,0,0,.13); animation: ppToastIn .22s ease both; }
.pp-toast--error { border-left-color: #dc3545; }
.pp-toast--warning { border-left-color: #f0ad00; }
.pp-toast--info { border-left-color: #2980b9; }
.pp-toast__icon { flex: 0 0 27px; width: 27px; height: 27px; display: grid; place-items: center; margin-right: 9px; border-radius: 50%; color: #fff; background: var(--pp-blue-500); font-size: 11px; }
.pp-toast--error .pp-toast__icon { background: #dc3545; }
.pp-toast--warning .pp-toast__icon { background: #f0ad00; }
.pp-toast--info .pp-toast__icon { background: #2980b9; }
.pp-toast__message { font-size: 13px; line-height: 1.35; font-weight: 500; }
.pp-toast__close { position: absolute; top: 50%; right: 8px; padding: 3px; border: 0; color: #777; background: transparent; cursor: pointer; transform: translateY(-50%); font-size: 11px; }
.pp-toast__progress { position: absolute; left: 0; bottom: 0; height: 2px; width: 100%; background: var(--pp-blue-500); transform-origin: left; animation: ppToastProgress 2s linear both; }
.pp-toast--error .pp-toast__progress { background: #dc3545; }
.pp-toast--warning .pp-toast__progress { background: #f0ad00; }
.pp-toast--info .pp-toast__progress { background: #2980b9; }
.pp-toast.is-leaving { animation: ppToastOut .25s ease both; }
.pp-is-busy { cursor: wait !important; opacity: .72; pointer-events: none; }
@keyframes ppToastIn { from { opacity: 0; transform: translateX(35px); } to { opacity: 1; transform: translateX(0); } }
@keyframes ppToastOut { to { opacity: 0; transform: translateX(35px); } }
@keyframes ppToastProgress { from { transform: scaleX(1); } to { transform: scaleX(0); } }
@media (max-width: 575.98px) { .pp-toast-stack { top: 12px; right: 15px; } }
@media (prefers-reduced-motion: reduce) { .pp-toast, .pp-toast__progress, .pp-toast.is-leaving { animation: none; } }

/* --------------------------------------------------------------------------
   Mobile storefront + homepage
   -------------------------------------------------------------------------- */
html, body { max-width: 100%; overflow-x: hidden; }

/* Listing pages use Bootstrap columns, so cards must fill their column. */
.products.row > [class*="col-"] > .product {
  width: 100% !important;
  max-width: 100%;
}
.products.row > [class*="col-"] > .product .product__inner,
.products.row > [class*="col-"] > .product .product__body {
  width: 100%;
  min-width: 0;
}

@media (max-width: 767.98px) {
  /* Header: keep menu, logo, account and cart on one row; search sits below. */
  #site-header .masthead > .bg-secondary-gray-800 > .container { padding-top: .75rem !important; padding-bottom: .75rem !important; }
  #site-header .offcanvas-toggler { margin-right: .8rem !important; }
  #site-header .site-branding { padding-right: .75rem !important; }
  #site-header .site-branding img { width: auto; height: 44px; max-width: 104px; max-height: 44px; }
  #site-header .site-search { flex-basis: 100%; width: 100%; margin: .65rem 0 0 !important; }
  #site-header .site-search .form-control { min-width: 0; height: 44px; font-size: 13px; }
  #site-header .site-search .input-group-append .btn { height: 44px; padding-left: .8rem !important; padding-right: .8rem !important; }
  #site-header .header-actions { margin-left: auto !important; justify-content: flex-end; }
  #site-header #sidebarNavToggler1 { margin-left: 1rem !important; }

  /* General home rhythm. */
  .pp-home .hero-slider-with-banners { margin-top: .75rem !important; padding-bottom: 2rem !important; }
  .pp-home .space-bottom-2 { padding-bottom: 2.25rem !important; }
  .pp-home .space-bottom-3 { padding-bottom: 2.75rem !important; }
  .pp-home .space-1 { padding-top: 0 !important; padding-bottom: 0 !important; }
  .pp-home header.mb-8d75,
  .pp-home header.mb-8,
  .pp-home header.mb-10d75 { margin-bottom: 1.6rem !important; }
  .pp-home header .font-size-7 { font-size: 1.45rem !important; line-height: 1.25; }

  /* Hero: stack copy and artwork without the desktop fixed height. */
  .pp-home .hero-slider-with-banners .min-height-530 { min-height: 0 !important; padding: 1.5rem 1.25rem 1rem !important; }
  .pp-home .hero-slider { min-height: 0 !important; }
  .pp-home .hero__body { text-align: center; margin-bottom: 1rem !important; }
  .pp-home .hero__pretitle { margin-bottom: .55rem !important; font-size: 11px; }
  .pp-home .hero__title { font-size: 1.8rem !important; line-height: 1.15; margin-bottom: .7rem !important; }
  .pp-home .hero__subtitle { margin-bottom: 1rem !important; }
  .pp-home .hero__btn { min-width: 0; padding: .7rem 1.35rem; }
  .pp-home .hero-slider img { display: block; max-height: 235px; width: auto; max-width: 100%; margin: 0 auto; object-fit: contain; }
  .pp-home .hero-slider-with-banners .u-slick__pagination { margin-top: 1rem !important; }

  /* Promo banners and horizontal tabs. */
  .pp-home .home-side-promos,
  .pp-home .home-category-banner { display: none !important; }
  .pp-home .slider-banner { height: 190px !important; padding: 1.25rem !important; margin-left: 0 !important; margin-right: 0 !important; }
  .pp-home .slider-banner img { max-height: 155px; max-width: 58%; object-fit: contain; }
  .pp-home #featuredBooks { justify-content: flex-start !important; margin-left: -.75rem; margin-right: -.75rem; padding: 0 .25rem; scrollbar-width: none; }
  .pp-home #featuredBooks::-webkit-scrollbar { display: none; }
  .pp-home #featuredBooks .nav-item { margin-left: .75rem !important; margin-right: .75rem !important; }

  /* Product cards: readable two-column carousel with contained covers. */
  .pp-home .product__inner { padding-left: .55rem !important; padding-right: .55rem !important; }
  .pp-home .product__no-border .woocommerce-loop-product__thumbnail img { width: auto !important; height: 190px; max-width: 100%; aspect-ratio: auto; object-fit: contain; }
  .pp-home .product__title { font-size: .85rem !important; }
  .pp-home .product .price { font-size: .9rem !important; }

  /* Deal card and category shelves. */
  .pp-home .countdown-timer { margin-bottom: 1.25rem !important; }
  .pp-home .countdown-timer .pr-3 { padding-right: .55rem !important; }
  .pp-home .mx-lg-8 { margin-left: 0 !important; margin-right: 0 !important; }

  /* Keep the deal slider and its pagination inside its own section. */
  .pp-home .home-deals-section { position: relative; padding-bottom: 3.25rem !important; }
  .pp-home .home-deals-carousel { margin-bottom: 0 !important; overflow: hidden; }
  .pp-home .home-deals-carousel > .u-slick__pagination,
  .pp-home .home-deals-carousel + .u-slick__pagination,
  .pp-home .home-deals-carousel .u-slick__pagination {
    position: static !important;
    margin-top: 1.25rem !important;
    transform: none !important;
  }
  .pp-home .home-deals-section + section { clear: both; padding-top: .75rem; }

  /* Dark promotional strip. */
  .pp-home .banner .bg-secondary-gray-800 { padding: 1.5rem !important; text-align: center; }
  .pp-home .banner__title { font-size: 1.65rem !important; line-height: 1.2; margin-bottom: 1rem !important; }
  .pp-home .banner .media > img { max-height: 210px; display: block; margin: 1rem auto 0; object-fit: contain; }

  /* Service features form a compact two-column grid on phones. */
  .pp-home .list-features {
    display: flex;
    flex-wrap: wrap;
    overflow: visible !important;
    margin-left: -15px !important;
    margin-right: -15px !important;
    padding: 0 7px;
  }
  .pp-home .list-feature { flex: 0 0 50%; width: 50%; min-width: 0; padding: 12px 8px; }
  .pp-home .list-feature .media { align-items: flex-start; }
  .pp-home .list-feature .feature__icon { font-size: 2rem !important; margin-right: .65rem !important; }
  .pp-home .list-feature .media-body { margin-left: 0 !important; min-width: 0; }
  .pp-home .list-feature h4 { font-size: .9rem !important; line-height: 1.25; }
  .pp-home .list-feature p { font-size: .75rem; line-height: 1.35; white-space: normal; }
  .pp-home .list-features .separator { display: none; }
}

@media (max-width: 359.98px) {
  #site-header .site-branding img { height: 40px; max-width: 88px; max-height: 40px; }
  #site-header .offcanvas-toggler { margin-right: .55rem !important; }
  #site-header #sidebarNavToggler1 { margin-left: .7rem !important; }
  .pp-home .hero__title { font-size: 1.55rem !important; }
  .pp-home .product__no-border .woocommerce-loop-product__thumbnail img { height: 165px; }
}

@media (max-width: 575.98px) {
  .products.row { margin-right: -8px; margin-left: -8px; }
  .products.row > [class*="col-"] { padding-right: 8px; padding-left: 8px; }
  .products.row > [class*="col-"] > .product .product__inner { padding: .5rem !important; }
  .products.row > [class*="col-"] .woocommerce-loop-product__thumbnail {
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
  }
  .products.row > [class*="col-"] .woocommerce-loop-product__thumbnail img {
    width: auto !important;
    height: 170px !important;
    max-width: 100%;
    object-fit: contain;
    aspect-ratio: auto !important;
  }
  .products.row > [class*="col-"] .product__body { padding-top: .75rem !important; }
  .products.row > [class*="col-"] .product__body a,
  .products.row > [class*="col-"] .product__body h2,
  .products.row > [class*="col-"] .product__body h3 {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .products.row > [class*="col-"] .price { max-width: 100%; font-size: .95rem !important; white-space: normal; }
  .products.row > [class*="col-"] .product__rating { flex-wrap: wrap; }

  .pp-home .pp-mobile-book-strip {
    display: flex;
    align-items: stretch;
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .pp-home .pp-mobile-book-strip::-webkit-scrollbar { display: none; }
  .pp-home .pp-mobile-book-strip > .product {
    flex: 0 0 50%;
    width: 50%;
    min-width: 0;
    height: auto !important;
    scroll-snap-align: start;
  }
  .pp-home .pp-mobile-book-strip .product__inner { height: auto; }
  .pp-home .pp-mobile-book-strip .woocommerce-loop-product__thumbnail {
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .pp-home .pp-mobile-book-strip .woocommerce-loop-product__thumbnail > a {
    width: 100%;
  }
  .pp-home .pp-mobile-book-strip .woocommerce-loop-product__thumbnail img {
    width: auto !important;
    height: 170px !important;
    max-width: 100%;
    margin: 0 auto;
    aspect-ratio: auto;
    object-fit: contain;
  }
  .pp-home .pp-mobile-book-strip .product__body { padding-top: .75rem !important; }
}
