/* Mini-cart drawer (SLICE-MAP D-1). NOT generated: hand-written, tokens only, loaded after the header bundle by devir_ported_header.
   Source: design/mock/components/minicart.css and qty-stepper.css (owner-approved mock). The stepper rules are repeated here, scoped to the drawer,
   because the stepper bundle (listing, pdp, shared) is not loaded on every page and the drawer is. Corners are the 2 px token; light and dark come from the tokens.
   Follow-up: move this into the mock's minicart.css build and drop this file. */
.dv-chrome .dv-minicart[hidden], .dv-chrome .dv-minicart-scrim[hidden] { display: none; }
.dv-chrome .dv-minicart-scrim { position: fixed; inset: 0; z-index: 79; background: light-dark(var(--p-navy-a45), var(--p-black-a60)); }
.dv-chrome .dv-minicart { position: fixed; inset-block: 0; inset-inline-end: 0; z-index: 80; display: flex; flex-direction: column; width: min(100%, var(--p-400)); overflow: auto; overscroll-behavior: contain; border-block-start-width: 0; border-inline-start: var(--c-overlay-top-w, var(--s-rule-w-2)) solid var(--c-overlay-top); border-radius: 0; }
.dv-chrome .dv-minicart:focus { outline: none; }
.dv-chrome .dv-minicart__head { display: flex; align-items: center; justify-content: space-between; padding: var(--s-sp-2) var(--s-sp-2) var(--s-sp-2) var(--s-sp-4); border-block-end: var(--s-rule-w) solid var(--s-rule); }
.dv-chrome .dv-minicart__title { margin: 0; font: var(--t-heading); }
.dv-chrome .dv-minicart__body { display: flex; flex: 1; flex-direction: column; min-height: 0; }
.dv-chrome .dv-minicart__ship { display: grid; gap: var(--s-sp-2); padding: var(--s-sp-4); }
.dv-chrome .dv-minicart__small { margin: 0; font: var(--t-small); }
.dv-chrome .dv-minicart__ship .dv-minicart__small { display: flex; align-items: flex-start; gap: var(--s-sp-2); }
.dv-chrome .dv-minicart__ship .dv-icon { flex: none; }
.dv-chrome .dv-minicart__rows { flex: 1; margin: 0; padding: 0 var(--s-sp-4); list-style: none; }
.dv-chrome .dv-minicart__row { display: grid; grid-template-columns: var(--c-cover-mini) minmax(0, 1fr) auto; gap: var(--s-sp-3); align-items: start; padding-block: var(--s-sp-3); border-block-end: var(--s-rule-w) solid var(--s-rule); }
.dv-chrome .dv-minicart__cover { width: var(--c-cover-mini); height: var(--c-cover-mini); object-fit: contain; background: var(--c-cover-well); border-radius: var(--s-radius); }
.dv-chrome .dv-minicart__info { display: grid; gap: var(--s-sp-1); justify-items: start; min-width: 0; }
.dv-chrome .dv-minicart__name { font: var(--t-heading-sm); color: var(--s-text); text-decoration: none; overflow-wrap: anywhere; }
.dv-chrome a.dv-minicart__name:hover { text-decoration: underline; text-decoration-color: var(--s-accent); text-underline-offset: var(--p-2); }
.dv-chrome .dv-minicart__meta { margin: 0; font: var(--t-small); color: var(--s-text-muted); }
.dv-chrome .dv-minicart__sku { color: var(--s-text); white-space: nowrap; overflow-wrap: normal; word-break: keep-all; }
.dv-chrome .dv-minicart__total { margin: 0; font: var(--t-price); white-space: nowrap; }
.dv-chrome .dv-minicart__remove { display: inline-flex; align-items: center; gap: var(--s-sp-1); min-height: var(--s-target); padding: 0 var(--s-sp-2); margin-inline-start: calc(-1 * var(--s-sp-2)); border: 0; background: transparent; color: var(--s-text-muted); font: var(--t-small); text-decoration: underline; text-underline-offset: var(--p-2); border-radius: var(--s-radius); }
.dv-chrome .dv-minicart__remove:hover { color: var(--s-text); background: var(--c-hover-tint); }
.dv-chrome .dv-minicart__foot { display: grid; gap: var(--s-sp-2); padding: var(--s-sp-4); background: var(--s-surface-tint); border-block-start: var(--s-rule-w) solid var(--s-rule); }
.dv-chrome .dv-minicart__sub { display: flex; align-items: baseline; justify-content: space-between; margin: 0; font: var(--t-body); }
.dv-chrome .dv-minicart__subtotal { font: var(--t-price-lead); }
.dv-chrome .dv-minicart__empty { display: grid; justify-items: start; gap: var(--s-sp-3); padding: var(--s-sp-6) var(--s-sp-4); }
.dv-chrome .dv-minicart__lead { margin: 0; font: var(--t-heading-sm); }
.dv-chrome .dv-minicart__error { margin: 0; padding: var(--s-sp-3) var(--s-sp-4); border-block-end: var(--s-rule-w) solid var(--s-text-error); color: var(--s-text-error); font: var(--t-small); }
.dv-chrome .dv-minicart[aria-busy="true"] .dv-minicart__rows { opacity: 0.6; transition: opacity var(--s-dur) var(--s-ease); }

/* Qty stepper, scoped copy of components/qty-stepper.css */
.dv-chrome .dv-minicart [data-comp="qty-stepper"] { display: inline-flex; align-items: stretch; border: var(--s-rule-w) solid var(--s-edge); border-radius: var(--s-radius); background: var(--s-surface); color: var(--s-text); }
.dv-chrome .dv-minicart .dv-qty__btn { flex: none; display: inline-flex; align-items: center; justify-content: center; width: var(--s-target); height: var(--s-target); padding: 0; border: 0; background: transparent; color: inherit; transition: background-color var(--s-dur) var(--s-ease), transform var(--s-dur) var(--s-ease); }
.dv-chrome .dv-minicart .dv-qty__btn:hover:not(:disabled) { background: var(--c-hover-tint); }
.dv-chrome .dv-minicart .dv-qty__btn:active:not(:disabled) { transform: translateY(var(--p-1)); }
.dv-chrome .dv-minicart .dv-qty__btn:disabled { color: var(--s-text-muted); cursor: not-allowed; }
.dv-chrome .dv-minicart .dv-qty__input { flex: none; width: var(--p-56); height: var(--s-target); padding: 0; border: 0; border-inline: var(--s-rule-w) solid var(--s-rule); border-radius: 0; background: transparent; color: inherit; text-align: center; font: var(--t-button); -moz-appearance: textfield; appearance: textfield; }
.dv-chrome .dv-minicart .dv-qty__input::-webkit-outer-spin-button, .dv-chrome .dv-minicart .dv-qty__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.dv-chrome .dv-minicart .dv-qty__input:focus-visible { outline-offset: calc(-1 * var(--s-ring-w)); }

.dv-chrome .dv-minicart.is-open { animation: dv-drawer-in var(--p-dur-in) var(--s-ease) both; }
.dv-chrome .dv-minicart-scrim { animation: dv-scrim-in var(--p-dur-in) var(--s-ease) both; }
@keyframes dv-drawer-in { from { opacity: 0; transform: translateX(var(--p-24)); } to { opacity: 1; transform: none; } }
@keyframes dv-scrim-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .dv-chrome .dv-minicart.is-open, .dv-chrome .dv-minicart-scrim { animation: none; }
  .dv-chrome .dv-minicart[aria-busy="true"] .dv-minicart__rows, .dv-chrome .dv-minicart .dv-qty__btn { transition: none; }
}
