/* PLP CTA hierarchy: keep product lists quieter than the PDP. */
.page-category .product-miniature__add.btn-primary,
.page-index .product-miniature__add.btn-primary {
  background-color: #fff !important;
  border-color: #e5007d !important;
  border-radius: 8px !important;
  border-style: solid !important;
  border-width: 1px !important;
  color: #e5007d !important;
  font-size: 0.9375rem !important;
  font-weight: 500 !important;
  line-height: 1.25 !important;
  box-shadow: none !important;
  transition: background-color 160ms ease, color 160ms ease,
    border-color 160ms ease, box-shadow 160ms ease;
}

.page-category .product-miniature__add.btn-primary:focus-visible,
.page-index .product-miniature__add.btn-primary:focus-visible {
  background-color: #fff !important;
  border-color: #e5007d !important;
  color: #e5007d !important;
  box-shadow: 0 0 0 3px rgba(229, 0, 125, 0.2) !important;
  outline: 0;
}

.page-category .product-miniature__add.btn-primary:active,
.page-index .product-miniature__add.btn-primary:active {
  background-color: #e5007d !important;
  border-color: #e5007d !important;
  color: #fff !important;
}

.page-category .product-miniature__add.btn-primary .product-miniature__add-text,
.page-index .product-miniature__add.btn-primary .product-miniature__add-text {
  color: inherit !important;
}

.page-index .product-miniature__actions,
.page-index .product-miniature__details,
.page-category .product-miniature__details {
  width: 100%;
}

.page-index .product-miniature__actions {
  margin-top: auto !important;
}

.page-index .product-miniature__form,
.page-category .product-miniature__form,
.page-index .product-miniature__add.btn-primary,
.page-category .product-miniature__add.btn-primary {
  width: 100%;
}

.page-index .product-miniature__add-text,
.page-category .product-miniature__add-text {
  display: block !important;
}

.page-index .product-miniature__details,
.page-category .product-miniature__details {
  align-items: center;
  border-radius: 8px !important;
  border-style: solid !important;
  border-width: 1px !important;
  display: flex;
  font-size: 0.9375rem !important;
  font-weight: 500 !important;
  justify-content: center;
  line-height: 1.25 !important;
  min-height: 40px;
  padding-inline: 0.75rem;
  white-space: nowrap;
}

@media (hover: hover) and (pointer: fine) {
  .page-category .product-miniature__add.btn-primary:hover,
  .page-index .product-miniature__add.btn-primary:hover {
    background-color: #e5007d !important;
    border-color: #e5007d !important;
    color: #fff !important;
  }
}

@media (min-width: 768px) {
  .page-category .left-block__title,
  .page-category .left-block__title-link {
    font-size: 1.1875rem;
    font-weight: 600;
    line-height: 1.3;
  }

  .page-category .accordion--small > .accordion-item > .accordion-button {
    color: #353238;
    font-size: 0.9375rem;
    font-weight: 500;
    line-height: 1.4;
  }

  .page-category
    .category-tree__list[data-depth="0"]
    > .category-tree__item
    > .category-tree__item-header
    > .category-tree__item-link {
    color: #353238;
    font-size: 0.9375rem;
    font-weight: 500;
    line-height: 1.4;
  }

  .page-category
    .category-tree__list[data-depth="0"]
    > .category-tree__item
    > .category-tree__item-header
    > .category-tree__item-link.active {
    color: #e5007d;
    font-weight: 600;
  }

  .page-category
    .category-tree__list[data-depth]:not([data-depth="0"])
    .category-tree__item-link {
    color: #4b4850;
    font-size: 0.90625rem;
    font-weight: 400;
    line-height: 1.45;
  }

  .page-index .product-miniature__form,
  .page-category .product-miniature__form {
    display: block;
  }

  .page-index .product-miniature__add.btn-primary,
  .page-category .product-miniature__add.btn-primary {
    align-items: center;
    display: flex;
    justify-content: center;
    height: 40px !important;
    min-height: 40px !important;
    min-width: 0;
    padding-block: 0 !important;
    padding-inline: 0.75rem !important;
    width: 100%;
  }
}

/* On precise desktop pointers, reveal only the action for the card being explored.
 * The action row keeps its height at all times, so the grid never reflows. */
@media (min-width: 768px) and (hover: hover) and (pointer: fine) {
  .page-index .product-miniature__actions,
  .page-category .product-miniature__actions {
    min-height: 40px;
  }

  .page-index .product-miniature__form,
  .page-category .product-miniature__form,
  .page-index .product-miniature__details,
  .page-category .product-miniature__details {
    opacity: 0;
    pointer-events: none;
    transform: translateY(4px);
    transition: opacity 160ms ease, transform 160ms ease;
  }

  .page-index .product-miniature:is(:hover, :focus-within) .product-miniature__form,
  .page-category .product-miniature:is(:hover, :focus-within) .product-miniature__form,
  .page-index .product-miniature:is(:hover, :focus-within) .product-miniature__details,
  .page-category .product-miniature:is(:hover, :focus-within) .product-miniature__details {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
  }

  .page-index .product-miniature__add.btn-primary,
  .page-category .product-miniature__add.btn-primary {
    background-color: #e5007d !important;
    border-color: #e5007d !important;
    color: #fff !important;
  }

  .page-index .product-miniature__add.btn-primary:focus-visible,
  .page-category .product-miniature__add.btn-primary:focus-visible {
    background-color: #e5007d !important;
    border-color: #e5007d !important;
    color: #fff !important;
    box-shadow: 0 0 0 3px rgba(229, 0, 125, 0.2) !important;
  }
}

@media (min-width: 1200px) {
  .page-category .product-miniature__image-container {
    margin-inline: auto;
    width: 82%;
  }
}

@media (max-width: 767.98px) {
  .page-index .plassimo-products-track {
    box-sizing: border-box;
    min-width: 100% !important;
    width: auto !important;
  }

  .page-index .plassimo-products-track > .plassimo-slide {
    flex: 0 0 calc((100% - var(--plassimo-products-gap)) / 2) !important;
    max-width: calc((100% - var(--plassimo-products-gap)) / 2) !important;
    width: calc((100% - var(--plassimo-products-gap)) / 2) !important;
  }

  .page-index .product-miniature__add.btn-primary,
  .page-category .product-miniature__add.btn-primary,
  .page-index .product-miniature__details,
  .page-category .product-miniature__details {
    min-height: 40px;
    width: 100%;
  }

  .page-index .product-miniature__add.btn-primary,
  .page-category .product-miniature__add.btn-primary {
    height: 40px !important;
    min-height: 40px !important;
    padding-block: 0 !important;
  }
}

/* Bootstrap declares .d-flex inside its utilities cascade layer. Important
 * declarations in that layer outrank unlayered important declarations, so the
 * mobile price row must override display from the same layer. */
@layer utilities {
  @media (min-width: 768px) and (hover: hover) and (pointer: fine) {
    body#category.page-category
      .product-miniature
      .product-miniature__infos {
      display: flex !important;
    }

    body#category.page-category
      .product-miniature
      .product-miniature__title {
      display: -webkit-box !important;
      -webkit-box-orient: vertical !important;
      -webkit-line-clamp: 2 !important;
    }

    body#category.page-category
      .product-miniature
      .product-miniature__description {
      display: -webkit-box !important;
      -webkit-box-orient: vertical !important;
      -webkit-line-clamp: 2 !important;
    }

    body#category.page-category
      .product-miniature
      .product-miniature__prices.d-flex {
      margin-top: auto !important;
    }
  }

  @media (max-width: 767.98px) {
    body#category.page-category
      .product-miniature
      .product-miniature__infos {
      display: flex !important;
    }

    body#category.page-category
      .product-miniature
      .product-miniature__title {
      display: -webkit-box !important;
      -webkit-box-orient: vertical !important;
      -webkit-line-clamp: 2 !important;
    }

    body#category.page-category
      .product-miniature
      .product-miniature__description {
      display: -webkit-box !important;
      -webkit-box-orient: vertical !important;
      -webkit-line-clamp: 2 !important;
    }

    body#category.page-category
      .product-miniature
      .product-miniature__prices.d-flex {
      display: grid !important;
      margin-top: auto !important;
      padding-top: 0.5rem !important;
    }
  }

  /* Keep the flexible space before the commercial footer. Empty module
   * placeholders must not reserve a phantom row of combinations. */
  body#category.page-category .product-miniature .ecomvi-adv-host:empty {
    display: none !important;
    min-height: 0 !important;
  }

  body#category.page-category .product-miniature .product-miniature__description {
    -webkit-line-clamp: 2 !important;
    flex-shrink: 0 !important;
  }

  body#category.page-category .product-miniature .product-miniature__variants.ecomvi-adv-host:has(.ecomvi-adv-option) {
    margin-top: auto !important;
    margin-bottom: 0 !important;
    padding-top: 16px !important;
    min-height: 0 !important;
    flex-shrink: 0 !important;
  }

  body#category.page-category .product-miniature .product-miniature__prices.d-flex {
    padding-top: 16px !important;
    flex-shrink: 0 !important;
  }

  body#category.page-category
    .product-miniature:has(.product-miniature__variants.ecomvi-adv-host .ecomvi-adv-option)
    .product-miniature__prices.d-flex {
    margin-top: 0 !important;
    padding-top: 12px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-category .product-miniature__add.btn-primary,
  .page-index .product-miniature__add.btn-primary {
    transition: none;
  }

  .page-index .product-miniature__form,
  .page-category .product-miniature__form,
  .page-index .product-miniature__details,
  .page-category .product-miniature__details {
    transition: none;
  }
}

/* Compact desktop PLP action: it shares the price row visually without taking
 * part in layout, so revealing it never changes the card or grid dimensions. */
.product-miniature__add-icon,
.product-miniature__details-icon {
  display: none;
}

@media (min-width: 768px) and (hover: hover) and (pointer: fine) {
  .page-category .product-miniature__infos {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
  }

  .page-category .product-miniature__manufacturer {
    min-height: 1.25rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .page-category .product-miniature__title {
    display: -webkit-box !important;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  .page-category .product-miniature__description {
    display: -webkit-box !important;
    margin-top: 0.25rem !important;
    overflow: hidden;
    text-overflow: ellipsis;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  .page-category .product-miniature__bottom {
    position: static;
  }

  body#category.page-category
    .product-miniature
    .product-miniature__prices.d-flex {
    margin-top: auto !important;
    padding-right: 56px;
    position: relative;
  }

  .page-category .product-miniature__actions--inline {
    display: block;
    height: 48px;
    min-height: 0;
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 48px;
    z-index: 2;
  }

  .page-category .product-miniature:has(.product-miniature__actions--inline)
    .product-miniature__actions--footer {
    display: none;
  }

  .page-category .product-miniature__form {
    height: 48px;
    width: 48px;
  }

  .page-category .product-miniature__add.btn-primary,
  .page-category .product-miniature__details {
    background-color: #fff !important;
    border-color: #e5007d !important;
    border-radius: 50% !important;
    color: #e5007d !important;
    height: 48px !important;
    min-height: 48px !important;
    padding: 0 !important;
    transition: background-color 150ms ease, border-color 150ms ease,
      box-shadow 150ms ease, color 150ms ease, transform 150ms ease;
    width: 48px !important;
  }

  .page-category .product-miniature__add-text,
  .page-category .product-miniature__details-text {
    border: 0;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }

  .page-category .product-miniature__add-icon,
  .page-category .product-miniature__details-icon {
    align-items: center;
    display: flex;
    height: 24px;
    justify-content: center;
    width: 24px;
  }

  .page-category .product-miniature__add-icon svg,
  .page-category .product-miniature__details-icon svg {
    fill: none;
    height: 24px;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.8;
    width: 24px;
  }

  .page-category .product-miniature__add.btn-primary:hover,
  .page-category .product-miniature__details:hover {
    background-color: #e5007d !important;
    border-color: #e5007d !important;
    box-shadow: 0 5px 14px rgba(229, 0, 125, 0.2);
    color: #fff !important;
    transform: translateY(-1px);
  }

  .page-category .product-miniature__add.btn-primary:active {
    background-color: #e5007d !important;
    border-color: #e5007d !important;
    color: #fff !important;
    transform: translateY(0) scale(0.94);
  }

  .page-category
    .product-miniature__add.btn-primary:disabled:not([aria-disabled="true"]),
  .page-category
    .product-miniature__add.btn-primary.disabled:not([aria-disabled="true"]) {
    background-color: #e5007d !important;
    border-color: #e5007d !important;
    color: #fff !important;
    opacity: 1 !important;
    transform: none;
  }

  .page-category
    .product-miniature__add.btn-primary:disabled:not([aria-disabled="true"])
    .product-miniature__add-icon,
  .page-category
    .product-miniature__add.btn-primary.disabled:not([aria-disabled="true"])
    .product-miniature__add-icon {
    position: relative;
  }

  .page-category
    .product-miniature__add.btn-primary:disabled:not([aria-disabled="true"])
    .product-miniature__add-icon
    svg,
  .page-category
    .product-miniature__add.btn-primary.disabled:not([aria-disabled="true"])
    .product-miniature__add-icon
    svg {
    opacity: 0;
  }

  .page-category
    .product-miniature__add.btn-primary:disabled:not([aria-disabled="true"])
    .product-miniature__add-icon::after,
  .page-category
    .product-miniature__add.btn-primary.disabled:not([aria-disabled="true"])
    .product-miniature__add-icon::after {
    animation: plp-action-loading 650ms linear infinite;
    border: 2px solid rgba(255, 255, 255, 0.42);
    border-radius: 50%;
    border-top-color: #fff;
    content: "";
    height: 15px;
    position: absolute;
    width: 15px;
  }

  .page-category .product-miniature__add.btn-primary:focus-visible,
  .page-category .product-miniature__details:focus-visible {
    background-color: #e5007d !important;
    border-color: #e5007d !important;
    box-shadow: 0 0 0 3px rgba(229, 0, 125, 0.2) !important;
    color: #fff !important;
  }
}

.product-miniature__actions--inline {
  display: none;
}

/* Mobile PLP experiment: a permanent compact add action shares a two-line
 * price block, reducing card height while keeping the full action accessible. */
@media (max-width: 767.98px) {
  .page-category .product-miniature__bottom {
    align-items: stretch;
  }

  .page-category .product-miniature__infos {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    width: 100%;
  }

  .page-category .product-miniature__manufacturer {
    min-height: 1.25rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .page-category .product-miniature__title {
    display: -webkit-box !important;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  .page-category .product-miniature__description {
    display: -webkit-box !important;
    margin-top: 0.25rem !important;
    overflow: hidden;
    text-overflow: ellipsis;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  body#category.page-category
    .product-miniature
    .product-miniature__prices.d-flex {
    align-items: center;
    column-gap: 4px !important;
    display: grid !important;
    /* Keep the discount beside its reference price; flexible space belongs
     * after that pair, not between them. The purchase circle stays at the right. */
    grid-template-areas:
      "regular badge . action"
      "current current . action";
    grid-template-columns: max-content max-content minmax(0, 1fr) 48px;
    /* Keep the sale-price baseline and basket stable without a discount. */
    grid-template-rows: 1.5rem 1.35rem;
    margin-bottom: 0.75rem !important;
    row-gap: 2px !important;
  }

  .page-category .product-miniature__discount-price {
    grid-area: regular;
    min-width: 0;
  }

  .page-category .product-miniature__price-current {
    grid-area: current;
    justify-self: start;
  }

  .page-category .product-miniature__discount-badge {
    grid-area: badge;
    justify-self: start;
  }

  .page-category .product-miniature__actions--inline {
    align-self: center;
    display: block;
    grid-area: action;
    height: 48px;
    min-height: 0;
    width: 48px;
  }

  .page-category .product-miniature:has(.product-miniature__actions--inline)
    .product-miniature__actions--footer {
    display: none;
  }

  .page-category .product-miniature__actions--inline .product-miniature__form {
    height: 48px;
    width: 48px;
  }

  .page-category .product-miniature__actions--inline
    .product-miniature__add.btn-primary,
  .page-category .product-miniature__actions--inline
    .product-miniature__details {
    background-color: #fff !important;
    border-color: #e5007d !important;
    border-radius: 50% !important;
    color: #e5007d !important;
    height: 48px !important;
    min-height: 48px !important;
    padding: 0 !important;
    width: 48px !important;
  }

  .page-category .product-miniature__actions--inline
    .product-miniature__add-text,
  .page-category .product-miniature__actions--inline
    .product-miniature__details-text {
    border: 0;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }

  .page-category .product-miniature__actions--inline
    .product-miniature__add-icon,
  .page-category .product-miniature__actions--inline
    .product-miniature__details-icon {
    align-items: center;
    display: flex;
    height: 24px;
    justify-content: center;
    width: 24px;
  }

  .page-category .product-miniature__actions--inline svg {
    fill: none;
    height: 24px;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.8;
    width: 24px;
  }

  .page-category .product-miniature__actions--inline
    :is(.product-miniature__add.btn-primary, .product-miniature__details):focus-visible {
    background-color: #e5007d !important;
    box-shadow: 0 0 0 3px rgba(229, 0, 125, 0.2) !important;
    color: #fff !important;
  }
}

@keyframes plp-action-loading {
  to {
    transform: rotate(1turn);
  }
}

/* Centre desktop actions on the price content, excluding its top spacing. */
@media (min-width: 768px) and (hover: hover) and (pointer: fine) {
  .page-category .product-miniature__actions--inline {
    top: calc(50% + 8px);
  }

  .page-category .product-miniature:has(.product-miniature__variants.ecomvi-adv-host .ecomvi-adv-option)
    .product-miniature__actions--inline {
    top: calc(50% + 6px);
  }
}

/* Unavailable icons, including module-created actions, are owned by
 * plp-oos-basket.css. Do not duplicate the former magnifier here. */

@layer utilities {
  /* Details remain an active navigation link, with neutral unavailable styling. */
  body#category.page-category .product-miniature__actions--inline .product-miniature__details {
    background-color: #fff !important;
    border-color: #767676 !important;
    color: #666 !important;
  }

  body#category.page-category .product-miniature__actions--inline .product-miniature__details:is(:hover, :focus-visible, :active) {
    background-color: #f0f0f0 !important;
    border-color: #666 !important;
    color: #444 !important;
    box-shadow: 0 0 0 3px rgba(102, 102, 102, 0.16) !important;
  }

  /* Module-created cart forms share the same compact slot as native forms.
   * The module's standalone form spacing does not apply inside this slot. */
  body#category.page-category .product-miniature__actions--inline .product-miniature__form {
    margin: 0 !important;
  }

  body#category.page-category .product-miniature .product-miniature__actions--inline {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }

  .page-category .product-miniature__actions--inline [hidden] {
    display: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-category .product-miniature__add-icon::after {
    animation: none !important;
  }
}

/* Native fallback uses the production primary too; identity owns palette changes. */
@layer utilities {
  body .product-miniature .product-miniature__actions--inline .product-miniature__add.btn-primary {
    background-color: var(--pv-main, #E5007D) !important;
    border-color: var(--pv-main, #E5007D) !important;
    color: #fff !important;
  }
}
/* At narrow phone widths, keep real price text intact beside the 48px control. */
@media (max-width: 359.98px) {
  @layer utilities {
    body#category.page-category .product-miniature .product-miniature__prices.d-flex,
    .product-miniature--unified .product-miniature__prices.d-flex {
      grid-template-areas: "regular action" "current action" "badge action";
      grid-template-columns: minmax(0, 1fr) 48px;
      grid-template-rows: 18px 22px 18px;
    }
  }
}
