/* Gift/pouch variant of the managed Easy Bundle adapter.
 * Depends on neobulle-easybundle-packs.css for shared theme-derived tokens.
 * Keep only gift-specific categories, search, box choices and modal treatment here.
 * Removing the gift registry entry stops this stylesheet from loading on that route.
 * See docs/releases/trousse-cleanup-2026-11-13.md.
 */
body[data-neobulle-bundle-managed="gift"] #main .gbbBundleWrapper.gbbFullPageBundle {
  /* Keep the merchant's complete responsive banner. Its wide desktop asset
     needs the full row; the mobile image retains its own natural proportions. */
  & .gbbBundleHeader { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--spacing-5); margin-bottom: var(--spacing-3); }
  & .neobulle-pack-intro { gap: var(--spacing-2); margin: 0; }
  & .neobulle-pack-intro h1 { letter-spacing: -.02em; }
  & .neobulle-pack-intro > p:last-child { color: rgb(var(--text-primary) / .85); }
  & .gbbBundleHeader > .gbbBundleBanner { display: block; width: 100%; height: auto !important; max-height: none !important; margin: 0 !important; object-fit: contain; border-radius: var(--rounded-sm); }
  & .gbbStepNavigationContainer { display: grid; gap: var(--spacing-5); margin: 0; padding: 0; }
  & .gbbStepNavContainer { width: 100%; max-width: 42rem; }
  & .gbbNavigationItemsContainer { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-4); }
  & .gbbNavigationItem { width: 100%; min-width: 0; min-height: var(--spacing-12); justify-content: start; padding: var(--spacing-2) 0; border-bottom: 1px solid rgb(var(--text-primary) / .18); }
  & .gbbNavigationItem[aria-current="step"] { border-bottom: 2px solid rgb(var(--text-primary)); }
  & .gbbNavigationTitleContainer { min-width: 0; }
  & .gbbNavigationTitle { line-height: 1.35; color: rgb(var(--text-primary) / .75); }
  & [aria-current="step"] .gbbNavigationTitle { color: rgb(var(--text-primary)); }
  & .gbbNavigationStepIndicator { width: var(--spacing-5); height: var(--spacing-5); flex-basis: var(--spacing-5); }
  & .gbbNavigationStepIndicator::before { font-size: var(--neobulle-bundle-meta-size); }
  & .gbbNavigationStepIndicator[data-step-status="completed"] { background: rgb(var(--text-primary) / .08); color: rgb(var(--text-primary)); border-color: transparent; }
  & .gbbStepHeaderContainer { padding: 0; justify-content: start; }
  & .gbbStepTitle { margin: 0 !important; font-size: 1.25rem !important; font-weight: 600 !important; line-height: 1.35; letter-spacing: -.015em; text-align: start !important; }
  /* Category headings lead the care/gift steps; their introductory sentence
     stays secondary instead of becoming a competing second heading. */
  &:has(.gbbNavigationItem[aria-current="step"]:not([data-step-index="0"])) .gbbStepTitle { font-size: var(--neobulle-bundle-body-size) !important; font-weight: var(--text-font-weight) !important; letter-spacing: normal; }
  & .neobulle-preselect-notice { margin-block: 0 var(--spacing-4); }
  & .gbbCategoriesTabsContainer { display: flex; flex-wrap: wrap; justify-content: start; gap: var(--spacing-1-5); }
  & .gbbCategoryTabContainer { width: auto; min-height: var(--spacing-9); padding: var(--spacing-2) var(--spacing-3); border: 1px solid rgb(var(--text-primary) / .18) !important; border-radius: var(--rounded-full) !important; background: transparent !important; color: rgb(var(--text-primary)); box-shadow: none !important; }
  & .gbbCategoryTabContainer[aria-pressed="true"] { background: rgb(var(--text-primary)) !important; color: rgb(var(--dialog-background)); border-color: transparent !important; }
  & .gbbCategoryTabTitle { color: inherit !important; font-size: var(--neobulle-bundle-label-size) !important; font-weight: 500 !important; line-height: 1.35; }
  & .gbbCategoryTabImage { display: none; }
  & .gbbCategoryContainer { margin-bottom: var(--spacing-5); border: 0 !important; }
  & .gbbCategoryHeaderContainer { min-height: var(--spacing-12); padding: var(--spacing-3) 0 !important; border: 0 !important; border-bottom: 1px solid rgb(var(--text-primary) / .14) !important; background: transparent !important; }
  & .gbbCategoryTitle { font-size: 1.125rem !important; font-weight: 600 !important; line-height: 1.4; letter-spacing: -.01em; }
  & .gbbProductsContainer { margin-top: var(--spacing-3); }
  & .gbbProductItem { height: auto; min-height: var(--neobulle-bundle-card-height); grid-template-columns: var(--neobulle-bundle-image-width) minmax(0, 1fr); grid-template-rows: auto auto !important; border-color: rgb(var(--text-primary) / .09) !important; }
  & .gbbProductItem:has(.gbbQuantityStepper) { border-color: rgb(var(--text-primary) / .45) !important; }
  /* Let the text/actions determine the card height. A portrait source must not
     stretch its grid row; contain still preserves the full image and beige base. */
  & .gbbProductImageContainer { position: relative; width: var(--neobulle-bundle-image-width); height: 100%; min-height: var(--neobulle-bundle-card-height); background: rgb(var(--background-primary)); }
  & .gbbProductImage { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain !important; mix-blend-mode: multiply; }
  & .gbbProductTextContainer { align-self: end; padding: var(--spacing-2) var(--spacing-3) var(--spacing-1) var(--spacing-1-5) !important; }
  & .gbbProductTitleOnly { font-size: var(--neobulle-bundle-body-size) !important; font-weight: 600 !important; line-height: 1.4 !important; }
  & .gbbProductPrice { font-weight: 500 !important; }
  & .gbbProductButtonContainer { min-width: var(--spacing-20); height: var(--spacing-11) !important; }
  & .gbbProductAddButton { min-height: var(--spacing-11); height: var(--spacing-11) !important; padding-inline: var(--spacing-4) !important; border-color: transparent !important; background: rgb(var(--button-background-primary)) !important; color: rgb(var(--button-text-primary)) !important; font-weight: 600 !important; }
  & .gbbProductAddButton[aria-disabled="true"] { opacity: .45; }
  & .gbbQuantityStepper { overflow: hidden; }
  & :is(.gbbQuantityStepperRemoveButton, .gbbQuantityStepperAddButton) { background: transparent !important; }
  & .gbbProductActionContainer { flex-wrap: wrap; row-gap: var(--spacing-2); padding-inline-start: var(--spacing-1-5) !important; }
  & .gbbProductPricesContainer { flex-wrap: wrap; }
  & .gbbProductCompareAtPrice:empty { display: none; }
  /* The app supplies the gift value. Keep the original price and its native
     "Offert" badge in one wrapping group beside the selection control. */
  & .gbbProductItem:has(.gbbProductFreeAddonPrice) {
    grid-template-columns: var(--neobulle-bundle-image-width) minmax(0, 1fr) auto;
    & .gbbProductTextContainer { grid-column: 2 / -1; }
    & .gbbProductActionContainer { display: contents; }
    & .gbbProductFreeAddonPrice { display: none; }
    & .gbbProductButtonContainer { grid-column: 3; grid-row: 2; margin: 0 var(--spacing-2-5) var(--spacing-2-5) var(--spacing-1-5); }
    & > :is(.neobulle-gift-value, .gbbAddonDiscountRibbon) { position: static; grid-column: 2; grid-row: 2; justify-self: start; align-self: center; margin: 0 0 var(--spacing-2-5) var(--spacing-1-5); }
  }
  & .neobulle-gift-value { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-1) var(--spacing-1-5); min-width: 0; }
  & .neobulle-gift-original-price { color: rgb(var(--text-primary) / .8); font-size: var(--neobulle-bundle-meta-size); font-weight: var(--text-font-weight); line-height: 1.3; white-space: nowrap; font-variant-numeric: tabular-nums; text-decoration: line-through; }
  & .gbbAddonDiscountRibbon { position: static !important; width: auto !important; max-width: 100%; margin: 0; padding: var(--spacing-1) var(--spacing-2) !important; border-radius: var(--rounded-full) !important; background: rgb(var(--text-primary) / .07) !important; color: rgb(var(--text-primary)) !important; box-shadow: none !important; }
  & .gbbAddonDiscountRibbon::before, & .gbbAddonDiscountRibbon::after { display: none; }
  & .gbbAddonDiscountRibbon .gbbDiscountRibbonContent { background: transparent !important; color: inherit !important; font-size: var(--neobulle-bundle-meta-size); font-weight: 600; line-height: 1.25; }
  & .gbbBoxSelectionContainer { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--spacing-2); margin: 0 0 var(--spacing-3); }
  & .gbbBoxSelectionItem { min-width: 0; min-height: var(--spacing-14); padding: var(--spacing-2) var(--spacing-2-5); border: 1px solid rgb(var(--text-primary) / .14) !important; border-radius: var(--rounded-sm); background: transparent !important; color: rgb(var(--text-primary)); box-shadow: none !important; outline: none !important; }
  & .gbbBoxSelectionItem[aria-pressed="true"] { border-color: rgb(var(--text-primary) / .5) !important; background: rgb(var(--text-primary) / .045) !important; }
  & .gbbBoxSelectionHeading { font-size: var(--neobulle-bundle-small-size) !important; line-height: 1.4 !important; font-weight: 500 !important; color: rgb(var(--text-primary)) !important; }
  & .gbbBoxSelectionSubtext { font-size: var(--neobulle-bundle-meta-size) !important; line-height: 1.4 !important; font-weight: 600 !important; color: rgb(var(--text-primary)) !important; background: transparent !important; }
  /* Tier names and benefits already appear in the choice controls. Keep the
     SDK's live rail without duplicating its labels below those controls. */
  & .gbbBundleFooter:has(.gbbBoxSelectionContainer) {
    & :is(.gbbDiscountStepsProgressBarStepTitleWrapper, .gbbDiscountStepsProgressBarStepSubtitleWrapper) { display: none; }
    & .gbbDiscountStepsProgressBarWrapper { margin-block: 0 var(--spacing-2) !important; }
    & .gbbDiscountStepsProgressBarSteps { grid-template-rows: var(--spacing-4); align-items: center; row-gap: 0; }
    & .gbbDiscountStepsProgressBarStepDotWrapper { grid-row: 1; }
    & .gbbDiscountStepsProgressBarStepItem:first-child .gbbDiscountStepsProgressBarStepDotWrapper { grid-column: 1; }
    & .gbbDiscountStepsProgressBarStepItem:nth-child(2) .gbbDiscountStepsProgressBarStepDotWrapper { grid-column: 2; }
  }
  & .gbbFooterBundleInfoContainer { border-bottom: 0; }
  & .gbbFooterBundleTitle { font-size: 1rem !important; font-weight: 600 !important; }
  & .gbbFooterProductTitle { font-size: var(--neobulle-bundle-small-size) !important; font-weight: 500 !important; line-height: 1.45 !important; }
  & .gbbFooterNextButton { min-height: var(--spacing-12); padding-inline: var(--spacing-5) !important; border-radius: var(--rounded-full) !important; font-weight: 600 !important; box-shadow: none !important; }
  & .gbbFooterNextButton[aria-disabled="true"] { background: rgb(var(--text-primary) / .12) !important; color: rgb(var(--text-primary) / .7) !important; opacity: 1; }
  & .gbbFooterNextButton[aria-disabled="true"] * { color: inherit !important; }
  @media (hover: hover) {
    & .gbbProductAddButton:not([aria-disabled="true"]):hover { background: rgb(var(--button-background-primary) / .9) !important; }
    & .gbbFooterNextButton:not([aria-disabled="true"]):hover { background: rgb(var(--button-background-primary) / .94) !important; }
  }
  & :is(.gbbCategoryTabContainer, .gbbBoxSelectionItem):focus-visible { outline: 2px solid rgb(var(--text-primary)) !important; outline-offset: 3px; }
  & .gbbDiscountMessage { color: rgb(var(--text-primary)); background: transparent; padding: 0; }
  & .gbbFooterProductsContainer { max-height: 28svh; }
  & .gbbFooterProductImage { object-fit: contain; }
  @media (min-width: 601px) {
    /* Once the choice controls disappear, constrain each native milestone
       caption to its own column without moving the SDK's rail or dots. */
    & .gbbBundleFooter:not(:has(.gbbBoxSelectionContainer)) {
      & :is(.gbbDiscountStepsProgressBarStepTitleWrapper, .gbbDiscountStepsProgressBarStepSubtitleWrapper) { padding-inline-start: var(--spacing-3); }
      & :is(.gbbDiscountStepsProgressBarStepTitle, .gbbDiscountStepsProgressBarStepSubtitle) { max-width: min(100%, 16ch); white-space: normal; text-wrap: balance; }
    }
    /* Keep two selected rows readable before the summary reaches its sticky
       anchor. A short viewport scrolls the full panel rather than crushing them. */
    & .gbbBundleFooter > .gbbFooterBundleItemsContainer { min-height: calc(var(--spacing-12) * 2 + var(--spacing-2)); }
    & .gbbBundleFooter:has(.neobulle-pack-empty) > .gbbFooterBundleItemsContainer { min-height: 0; flex: 0 0 auto; }
    & .gbbFooterActionContainer { margin-top: 0 !important; padding-top: var(--spacing-2) !important; gap: var(--spacing-2); }
  }
  @media (min-width: 769px) {
    & .neobulle-pack-intro { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--spacing-2) var(--spacing-6); padding: 0; }
    & .neobulle-pack-intro h1 { font-size: clamp(1.75rem, 2.4vw, 2rem); }
    & .neobulle-pack-intro > p:last-child { max-width: 60ch; }
    & .gbbBundleHeader > .gbbBundleBanner { max-width: none; }
  }
  @media (max-width: 600px) {
    --neobulle-bundle-image-width: calc(var(--spacing-20) + var(--spacing-2));
    --neobulle-bundle-card-height: var(--spacing-24);
    min-width: 0;
    width: 100%;
    max-width: 100%;
    padding-bottom: calc(var(--neobulle-pack-footer-height, var(--spacing-56)) + var(--spacing-6));
    /* Constrain every flex/grid ancestor so the scrolling tabs cannot expand
       the product column to their combined intrinsic width. */
    & :is(.gbbBundleContent, .gbbBundleBody, .gbbCategoriesContainer, .gbbCategoriesHeaderRow, .gbbCategoriesHeaderContainer, .gbbCategoriesTabsContainer, .gbbCategoriesBodyContainer, .gbbCategoryContainer, .gbbProductsContainer) { min-width: 0; width: 100%; max-width: 100%; }
    & .gbbBundleHeader { gap: var(--spacing-3); margin-bottom: var(--spacing-3); }
    & .neobulle-pack-intro h1 { font-size: 1.5rem; line-height: 1.2; }
    & .neobulle-pack-intro > p:last-child { font-size: var(--neobulle-bundle-small-size); line-height: 1.45; }
    & .gbbStepNavigationContainer { padding-top: 0; gap: var(--spacing-4); }
    &:has(.gbbNavigationItem:nth-child(3)) .gbbNavigationItemsContainer { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-2); align-items: stretch; }
    &:has(.gbbNavigationItem:nth-child(3)) .gbbNavigationItem { flex-direction: row; align-items: center; gap: var(--spacing-1-5); min-height: var(--spacing-12); text-align: start; }
    & .gbbNavigationTitleContainer { min-width: 0; text-align: start; }
    & .gbbNavigationTitle { line-height: 1.35; text-align: start !important; }
    & .gbbStepHeaderContainer { padding-top: 0; }
    & .gbbStepTitle { font-size: 1.125rem !important; max-width: 32ch; }
    & .gbbCategoriesHeaderContainer { overflow: visible; }
    & .gbbCategoriesTabsContainer { flex-wrap: nowrap; gap: var(--spacing-1-5); overflow-x: auto; padding: var(--spacing-1) 0; scroll-padding-inline: var(--spacing-1); scrollbar-width: thin; scrollbar-color: rgb(var(--text-primary) / .25) transparent; }
    & .gbbCategoryTabContainer { flex: 0 0 auto; width: auto; min-width: 0; min-height: var(--spacing-11); padding: var(--spacing-2) var(--spacing-3); }
    & .gbbCategoryTabTitle { font-size: var(--neobulle-bundle-small-size) !important; white-space: nowrap; line-height: 1.35; }
    & .gbbCategoryTitle { font-size: 1.0625rem !important; }
    & .gbbProductItem { min-height: var(--neobulle-bundle-card-height); grid-template-columns: var(--neobulle-bundle-image-width) minmax(0, 1fr); }
    & .gbbProductImageContainer { width: var(--neobulle-bundle-image-width); min-height: var(--neobulle-bundle-card-height); }
    & .gbbProductTextContainer { padding: var(--spacing-2) var(--spacing-2) var(--spacing-1) var(--spacing-1-5) !important; }
    & .gbbProductActionContainer { padding: 0 var(--spacing-2) var(--spacing-2) var(--spacing-1-5) !important; }
    & .gbbBoxSelectionContainer { margin-bottom: var(--spacing-2); }
    & .gbbBoxSelectionItem { min-height: calc(var(--spacing-12) + var(--spacing-1)); padding: var(--spacing-1-5) var(--spacing-2-5); }
    & .gbbFooterProductsContainer { max-height: 25svh; }
    & .gbbCartDrawer { max-height: 65svh; overflow-y: auto; }
    & .gbbFooterNextButton { gap: var(--spacing-3); padding-block: var(--spacing-2-5) !important; padding-inline: var(--spacing-5) !important; }
    & .gbbCartIconWithQuantityContainer { min-height: var(--spacing-9); font-size: var(--neobulle-bundle-small-size); }
    & .gbbDiscountMessage { font-size: var(--neobulle-bundle-meta-size) !important; line-height: 1.35 !important; }
    & .gbbProductItem:has(.gbbProductFreeAddonPrice) > :is(.neobulle-gift-value, .gbbAddonDiscountRibbon) { margin-inline-start: var(--spacing-1-5); margin-bottom: var(--spacing-2); }
    & .gbbProductItem:has(.gbbProductFreeAddonPrice) .gbbProductButtonContainer { margin-inline-end: var(--spacing-2); margin-bottom: var(--spacing-2); }
    & .gbbFooterNextButton .gbbNextButtonContent { flex: 1; }
    & .gbbFooterNextButton .gbbFooterTotalContainer { flex-direction: column-reverse; flex-shrink: 0; gap: 2px; }
    /* The SDK emits this original total only while a discount applies, but
       hides it in its mobile button. Show that native amount without deriving it. */
    & .gbbFooterNextButton .gbbFooterTotalValueContainer { gap: 2px; }
    & .gbbFooterNextButton .gbbFooterOriginalTotalValue { display: block !important; font-size: var(--neobulle-bundle-meta-size) !important; font-weight: var(--text-font-weight) !important; line-height: 1.2; color: inherit !important; opacity: .75; text-decoration: line-through; white-space: nowrap; font-variant-numeric: tabular-nums; }
  }
}

/* This merchant banner already includes the trousse title. Retain the HTML
   heading/description for assistive technology, and show them if no banner is
   configured. Other managed gift offers keep their own visible introduction. */
body[data-neobulle-pack="SDK-184774"] #main .gbbBundleHeader:has(> .gbbBundleBanner) > .neobulle-pack-intro {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}

@media (max-width: 768px) {
  .gbbModal[data-neobulle-bundle-managed="gift"] {
    & .gbbVariantModalImageWrapper { height: calc(var(--spacing-44) + var(--spacing-1)); }
    & .gbbProductDescriptionText { max-height: 22svh; overflow-y: auto; overscroll-behavior: contain; }
    & .gbbProductDescriptionText:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
  }
}
