/* LAW final responsive layer: viewport-based, not device-based. */

:root {
  --law-viewport-gutter: clamp(10px, 2.6vw, 28px);
}

html,
body {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}

:is(.cc-search-panel, .cc-search-modal, .cc-quick-view-modal, .account-modal, .filter-drawer) {
  max-width: calc(100vw - (2 * var(--law-viewport-gutter))) !important;
  max-height: calc(100svh - (2 * var(--law-viewport-gutter))) !important;
}

.cc-search-overlay {
  padding: max(14px, env(safe-area-inset-top)) var(--law-viewport-gutter)
    max(14px, env(safe-area-inset-bottom)) !important;
}

.cc-search-panel,
.cc-search-modal {
  width: min(1040px, calc(100vw - (2 * var(--law-viewport-gutter)))) !important;
  overflow: hidden !important;
}

.cc-search-body {
  min-height: 0 !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.cc-search-results {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: clamp(10px, 1.4vw, 16px) !important;
  width: 100% !important;
}

.cc-search-result {
  display: grid !important;
  grid-template-columns: clamp(72px, 7vw, 90px) minmax(0, 1fr) auto !important;
  align-items: center !important;
  gap: clamp(10px, 1.2vw, 14px) !important;
  width: 100% !important;
  min-width: 0 !important;
  padding: clamp(10px, 1.3vw, 14px) !important;
  overflow: hidden !important;
}

.cc-search-thumb {
  width: clamp(72px, 7vw, 90px) !important;
  height: clamp(72px, 7vw, 90px) !important;
  min-width: 0 !important;
}

.cc-search-copy {
  display: block !important;
  min-width: 0 !important;
  overflow: hidden !important;
}

.cc-search-copy strong {
  display: -webkit-box !important;
  margin: 0 0 6px !important;
  overflow: hidden !important;
  font-size: clamp(12px, 1.15vw, 15px) !important;
  line-height: 1.15 !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.cc-search-copy > span:not(.cc-search-price) {
  display: -webkit-box !important;
  overflow: hidden !important;
  font-size: clamp(11px, 1vw, 13px) !important;
  line-height: 1.35 !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.cc-search-price {
  align-self: end !important;
  min-width: max-content !important;
  font-size: clamp(12px, 1.05vw, 15px) !important;
  line-height: 1.15 !important;
  white-space: nowrap !important;
}

@media (max-width: 820px) {
  .cc-search-results {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  .cc-search-panel,
  .cc-search-modal {
    width: min(680px, calc(100vw - (2 * var(--law-viewport-gutter)))) !important;
  }

  .cc-search-result {
    grid-template-columns: 78px minmax(0, 1fr) auto !important;
  }

  .cc-search-thumb {
    width: 78px !important;
    height: 78px !important;
  }
}

@media (max-width: 540px) {
  :root {
    --law-viewport-gutter: 10px;
  }

  .cc-search-overlay {
    align-items: stretch !important;
    padding-top: max(10px, env(safe-area-inset-top)) !important;
  }

  .cc-search-panel,
  .cc-search-modal {
    width: calc(100vw - 20px) !important;
    max-height: calc(100svh - 20px) !important;
    border-radius: 24px !important;
  }

  .cc-search-head,
  .cc-search-header {
    gap: 10px !important;
    padding: 13px 14px !important;
  }

  .cc-search-title {
    font-size: clamp(22px, 8vw, 32px) !important;
  }

  .cc-search-body {
    padding: 12px !important;
    max-height: calc(100svh - 92px) !important;
  }

  .cc-search-results {
    gap: 9px !important;
  }

  .cc-search-result {
    grid-template-columns: 70px minmax(0, 1fr) !important;
    align-items: start !important;
    gap: 11px !important;
    padding: 10px !important;
    border-radius: 18px !important;
  }

  .cc-search-thumb {
    grid-row: 1 / span 2 !important;
    width: 70px !important;
    height: 82px !important;
    border-radius: 15px !important;
  }

  .cc-search-copy strong {
    font-size: 13px !important;
    line-height: 1.12 !important;
  }

  .cc-search-copy > span:not(.cc-search-price) {
    font-size: 11px !important;
  }

  .cc-search-price {
    grid-column: 2 !important;
    align-self: start !important;
    justify-self: start !important;
    min-width: 0 !important;
    margin-top: 2px !important;
    font-size: 13px !important;
    white-space: normal !important;
  }
}

@media (max-width: 360px) {
  .cc-search-result {
    grid-template-columns: 60px minmax(0, 1fr) !important;
    gap: 9px !important;
    padding: 9px !important;
  }

  .cc-search-thumb {
    width: 60px !important;
    height: 72px !important;
  }

  .cc-search-copy strong {
    font-size: 12px !important;
  }
}

/* Tablet portrait and compact landscape use centered, bounded shells. */
@media (min-width: 600px) and (max-width: 1180px) {
  :is(.container, .law-shell, .store-header__inner) {
    max-width: min(100%, 1080px) !important;
  }

  :is(.law-footer__grid, .cc-final-footer__grid, .site-footer-grid) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  :is(.account-modal, .cc-quick-view-modal) {
    width: min(760px, calc(100vw - 40px)) !important;
  }
}

@media (min-width: 600px) and (max-width: 900px) {
  :is(.mobile-store-nav, .law-unified-mobile-nav) {
    right: auto !important;
    left: 50% !important;
    width: min(720px, calc(100vw - 28px)) !important;
    transform: translateX(-50%) !important;
  }
}

@media (max-height: 560px) and (orientation: landscape) {
  .cc-search-overlay {
    padding-block: 8px !important;
  }

  .cc-search-panel,
  .cc-search-modal {
    max-height: calc(100svh - 16px) !important;
  }

  .cc-search-body {
    max-height: calc(100svh - 82px) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cc-search-result {
    transition: none !important;
  }
}

/* Wishlist cards: keep the real saved-product layout readable at every width. */
@media (max-width: 900px) {
  body.law-wishlist-page #wishlistGrid.products-grid {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: clamp(8px, 2.2vw, 14px) !important;
    width: 100% !important;
  }

  body.law-wishlist-page #wishlistGrid > .product-card {
    display: flex !important;
    flex-direction: column !important;
    min-width: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    padding: clamp(8px, 2vw, 12px) !important;
    overflow: hidden !important;
    border-radius: 22px !important;
    transform: none !important;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > .product-thumb {
    flex: none !important;
    align-self: auto !important;
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    aspect-ratio: 4 / 3 !important;
    margin: 0 0 11px !important;
    padding: 7px !important;
    overflow: hidden !important;
    border-radius: 18px !important;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > .product-thumb img {
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    max-height: none !important;
    object-fit: contain !important;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > h3 {
    display: -webkit-box !important;
    min-width: 0 !important;
    min-height: 4.2em !important;
    margin: 0 0 7px !important;
    overflow: hidden !important;
    font-size: clamp(13px, 2.7vw, 17px) !important;
    line-height: 1.05 !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > p {
    display: -webkit-box !important;
    flex: none !important;
    min-width: 0 !important;
    min-height: 2.8em !important;
    margin: 0 0 10px !important;
    overflow: hidden !important;
    font-size: 12px !important;
    line-height: 1.4 !important;
    overflow-wrap: anywhere !important;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > .product-bottom {
    display: flex !important;
    flex: none !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-end !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: auto 0 0 !important;
    gap: 8px !important;
  }

  body.law-wishlist-page #wishlistGrid .product-bottom > .price {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    font-size: clamp(14px, 2.8vw, 17px) !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
  }

  body.law-wishlist-page #wishlistGrid .product-actions {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    width: 100% !important;
    min-width: 0 !important;
    gap: 6px !important;
  }

  body.law-wishlist-page #wishlistGrid :is(.wl-remove, .product-actions .ghost-btn) {
    flex: 0 0 34px !important;
    width: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    height: 34px !important;
    min-height: 34px !important;
    max-height: 34px !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    border-radius: 50% !important;
  }
}

@media (max-width: 430px) {
  body.law-wishlist-page #wishlistGrid.products-grid {
    gap: 8px !important;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > h3 {
    min-height: 4.1em !important;
    font-size: clamp(12px, 3.7vw, 15px) !important;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > p {
    min-height: 2.65em !important;
    font-size: 11px !important;
  }
}

@media (max-width: 350px) {
  html.law-public-light body.law-wishlist-page:not(#law-legacy-theme) #wishlistGrid.products-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  body.law-wishlist-page #wishlistGrid > .product-card > .product-thumb {
    aspect-ratio: 16 / 10 !important;
  }
}

/* Wishlist phone fix: one readable horizontal card per row.
   This intentionally applies only below 520px and leaves tablet/desktop intact. */
@media (max-width: 520px) {
  html.law-public-light body.law-wishlist-page:not(#law-legacy-theme) #wishlistGrid.products-grid {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 12px !important;
  }

  html body.law-wishlist-page #wishlistGrid > article.product-card {
    display: grid !important;
    grid-template-columns: clamp(104px, 29vw, 124px) minmax(0, 1fr) !important;
    grid-template-rows: auto minmax(0, 1fr) auto !important;
    column-gap: 12px !important;
    row-gap: 8px !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 178px !important;
    padding: 10px !important;
    overflow: hidden !important;
  }

  html body.law-wishlist-page #wishlistGrid > article.product-card > .product-thumb {
    grid-column: 1 !important;
    grid-row: 1 / 4 !important;
    align-self: stretch !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 158px !important;
    aspect-ratio: auto !important;
    margin: 0 !important;
    padding: 7px !important;
  }

  html body.law-wishlist-page #wishlistGrid > article.product-card > h3 {
    grid-column: 2 !important;
    grid-row: 1 !important;
    display: -webkit-box !important;
    min-width: 0 !important;
    min-height: 0 !important;
    margin: 1px 0 0 !important;
    overflow: hidden !important;
    font-size: clamp(14px, 4vw, 17px) !important;
    line-height: 1.08 !important;
    overflow-wrap: anywhere !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 3 !important;
  }

  html body.law-wishlist-page #wishlistGrid > article.product-card > p {
    grid-column: 2 !important;
    grid-row: 2 !important;
    display: -webkit-box !important;
    min-width: 0 !important;
    min-height: 0 !important;
    margin: 0 !important;
    overflow: hidden !important;
    font-size: 12px !important;
    line-height: 1.4 !important;
    overflow-wrap: anywhere !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
  }

  html body.law-wishlist-page #wishlistGrid > article.product-card > .product-bottom {
    grid-column: 2 !important;
    grid-row: 3 !important;
    align-self: end !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    align-items: center !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    gap: 6px !important;
  }

  html body.law-wishlist-page #wishlistGrid .product-bottom > .price {
    width: auto !important;
    min-width: 0 !important;
    font-size: clamp(14px, 3.8vw, 17px) !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
  }

  html body.law-wishlist-page #wishlistGrid .product-actions {
    justify-content: flex-end !important;
    width: auto !important;
    min-width: 0 !important;
    gap: 5px !important;
  }

  html body.law-wishlist-page #wishlistGrid :is(.wl-remove, .product-actions .ghost-btn) {
    flex: 0 0 34px !important;
    width: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    height: 34px !important;
    min-height: 34px !important;
    max-height: 34px !important;
    padding: 0 !important;
  }
}

@media (max-width: 370px) {
  html body.law-wishlist-page #wishlistGrid > article.product-card {
    grid-template-columns: 100px minmax(0, 1fr) !important;
    column-gap: 10px !important;
  }

  html body.law-wishlist-page #wishlistGrid > article.product-card > .product-thumb {
    min-height: 150px !important;
  }
}

/* Wishlist product image cleanup: match the shop presentation by removing
   the colored panel/frame behind transparent product cutouts. */
html body.law-wishlist-page #wishlistGrid > article.product-card > .product-thumb {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

html body.law-wishlist-page #wishlistGrid > article.product-card > .product-thumb > img {
  padding: 0 !important;
  background: transparent !important;
}
