/* Shared components. Each one is styled here and only here; pages only place them. */

/* ---- tag: small green label (header pills, card badges, blog dates, calculator chip) ---- */
.tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  border-radius: var(--radius-xs);
  background: var(--c-green);
  color: #fff;
  font-size: var(--fs-sm);
  font-weight: 600;
  line-height: 16px;
  white-space: nowrap;
}
a.tag { text-transform: uppercase; transition: filter var(--ease); }
a.tag:hover { filter: brightness(0.93); }

/* ---- buttons ---- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 14px 20px;
  border-radius: var(--radius-sm);
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 20px;
  text-align: center;
  transition: filter var(--ease), box-shadow var(--ease);
}
.btn--primary { background: var(--c-green); color: #fff; box-shadow: var(--shadow-raised); }
.btn--primary:hover { filter: brightness(0.93); }
.btn--light { background: var(--c-surface); color: var(--c-green); box-shadow: var(--shadow-raised); }
.btn--outline { color: var(--c-green); box-shadow: inset 0 0 0 2px var(--c-green); }
.btn--light:hover, .btn--outline:hover { background: var(--c-green-tint); }
.btn--block { width: 100%; }
.btn--sm { min-height: 0; padding: 4px 12px; border-radius: var(--radius-xs); box-shadow: none; }

/* ---- star rating (display) ---- */
.stars { display: flex; color: var(--c-star-small); }
.stars--lg { gap: 4px; color: var(--c-star); }
.stars--md { color: var(--c-star); }
.stars--md .icon { padding: 2px; } /* a 12px star in each 16px slot */
.stars__off { color: var(--c-border); }

/* ---- price: current (green) above the old, struck-through price ---- */
.price {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  white-space: nowrap;
}
.price__current { color: var(--c-green); font-size: var(--fs-xl); font-weight: 600; line-height: 30px; }
.price__old { color: var(--c-text-muted); line-height: 24px; }

/* ---- carousel: horizontal scroll-snap track, arrows, page dots (dots are made by site.js).
   The navigation dashes sit close to the slides and to what follows: 24px above (12px on phones) and half the
   section gap below (user decision 2026-10-04, all sliders). ---- */
.carousel {
  --per-view: 1;
  --track-gap: 24px;
  --controls-gap: clamp(12px, 1.67vw, 24px);
  --room: min(24px, var(--gutter)); /* space for the cards' shadows inside the scroll box */
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--controls-gap);
  min-width: 0;
  margin-bottom: calc(var(--section-gap, 0px) / -2);
}
.carousel__track {
  position: relative; /* contains absolutely positioned descendants, so they scroll and clip with the track */
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - (var(--per-view) - 1) * var(--track-gap)) / var(--per-view));
  gap: var(--track-gap);
  margin: -24px calc(-1 * var(--room));
  padding: 24px var(--room);
  scroll-padding-inline: var(--room);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
}
.carousel__track::-webkit-scrollbar { display: none; }
.carousel__item { display: flex; min-width: 0; scroll-snap-align: start; }
.carousel__item > * { flex: 1; min-width: 0; }
/* narrow screens: arrows flank the dots under the track; from 1024 they sit in the gutter beside it */
.carousel__controls { display: flex; align-items: center; justify-content: center; gap: 16px; }
.carousel__arrow {
  flex: none;
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  color: var(--c-text-muted);
}
.carousel__arrow--next .icon { scale: -1 1; }
.carousel__arrow:hover { color: var(--c-green); }
.carousel__arrow:disabled { opacity: 0.35; cursor: default; }
.carousel__dots { display: flex; justify-content: center; gap: 12px; min-width: 0; min-height: 6px; }
.carousel__dot { /* dashes shrink (not the arrows) when many slides meet a narrow screen */
  position: relative;
  flex: 0 1 auto;
  width: 32px;
  min-width: 12px;
  height: 6px;
  border-radius: var(--radius-pill);
  background: var(--c-border);
}
.carousel__dot::before { content: ""; position: absolute; inset: -10px -6px; } /* larger tap target */
.carousel__dot[aria-current="true"] { background: var(--c-green); }

.carousel--products { --per-view: 1; }
.carousel--cards { --per-view: 1; }
.carousel--mini { --per-view: 2; }

/* ---- product card ---- */
.product-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: var(--radius-lg);
  background: var(--c-surface);
  box-shadow: var(--shadow-raised);
}
.product-card__media {
  position: relative;
  display: block;
  aspect-ratio: 318 / 286;
  background: var(--c-surface-muted);
}
.product-card__media > a { position: absolute; inset: 0; }
.product-card__media img { width: 100%; height: 100%; padding: 16px; object-fit: contain; }
.product-card__media--flush { background: var(--c-artwork-bg); }
.product-card__media--flush img { padding: 0; }
.product-card__badge { position: absolute; top: 16px; left: 16px; }
.product-card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 11px; /* 16 from 768; phones ~30% tighter (user 10-05) */
  padding: 24px;
}
.product-card__summary { display: flex; flex-direction: column; gap: 8px; }
.product-card__info { display: flex; flex-wrap: wrap; gap: 4px; }
.product-card__text { flex: 1 1 140px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.product-card__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  font-size: var(--fs-lg);
  font-weight: 400;
  line-height: 24px;
}
.product-card__title a:hover { color: var(--c-green); }
.product-card__brand, .product-card__vat { font-size: var(--fs-sm); line-height: 16px; }
.product-card__brand a { color: var(--c-green); }
.product-card__buy { display: flex; flex-direction: column; gap: 8px; margin-top: auto; }

/* listing extras: attribute list + "Palyginti" between the summary and the buy block; on phones the checkbox is
   centred, easier to tap (user 10-05; the product page's buy box too) */
.product-card .attr-list { align-self: start; row-gap: 4px; }
:is(.product-card__body, .buybox) > .checkbox:has(input[name="compare"]) { align-self: center; }

/* compact variant: "recently viewed" row - photo, name and price only */
.product-card--compact .product-card__media { aspect-ratio: 204 / 155; }
.product-card--compact .product-card__body { gap: 4px; }
.product-card--compact .product-card__title { -webkit-line-clamp: 3; }
.product-card--compact .product-card__media img { padding: 8px; }
.product-card--compact .price { align-items: flex-start; }

/* ---- product grid: as many 260px+ columns as fit (3 in the 1002px listing column, 1 on phones).
   --list: one product per row, photo left (the list view of search results / categories) ---- */
.product-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 24px; }
.product-grid > li { display: flex; min-width: 0; }
.product-grid > li > * { flex: 1; min-width: 0; }

/* ---- attribute list (Stock / Model / Brand): cards, cart lines ---- */
.attr-list { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px 24px; font-size: var(--fs-md); line-height: 24px; }
.attr-list dd { min-width: 0; margin: 0; color: var(--c-text-muted); overflow-wrap: anywhere; } /* codes like KIPDS2CD7A46G0IZHSYC */

/* ---- select: white raised box with a chevron (sort, rows per page) ---- */
.select {
  min-height: 36px;
  padding: 8px 36px 8px 12px;
  border: 0;
  border-radius: var(--radius-xs);
  background: var(--c-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 6l4.5 4.5L12.5 6' fill='none' stroke='%231b1b1b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 12px center / 16px no-repeat;
  box-shadow: var(--shadow-raised);
  appearance: none;
  font-size: var(--fs-md);
  line-height: 20px;
  cursor: pointer;
}

/* ---- notice: green info box (coupons, delivery, privacy, installation) ---- */
.notice {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 24px;
  border-radius: var(--radius-lg);
  background: var(--c-green-tint);
  color: var(--c-green);
}
.notice__title { display: flex; align-items: center; gap: 8px; font-size: var(--fs-lg); font-weight: 600; line-height: 22px; }
.notice ul { padding-left: 24px; list-style: disc; }

/* ---- pager: rows-per-page select + page links; words Prev/Next from 1024, arrows only below ---- */
.pager-bar { display: flex; flex-direction: column; gap: 16px; }
.pager-bar__size { display: flex; align-items: center; gap: 10px; font-size: var(--fs-md); font-weight: 600; line-height: 20px; }
.pager-bar__size .select { min-height: 32px; padding-block: 6px; font-weight: 400; }
.pager { display: flex; justify-content: center; gap: 5px; }
.pager a, .pager > li > span {
  display: grid;
  place-items: center;
  min-width: 32px;
  height: 32px;
  padding-inline: 8px;
  border-radius: var(--radius-xs);
  background: var(--c-surface);
  box-shadow: var(--shadow-raised);
  font-size: var(--fs-md);
  line-height: 20px;
}
.pager > li > span { box-shadow: none; }
.pager a:hover { color: var(--c-green); }
.pager [aria-current="page"] { background: var(--c-green); color: #fff; }
.pager .pager__step { display: flex; align-items: center; gap: 6px; padding-inline: 12px; }
.pager .pager__step[aria-disabled="true"] { color: var(--c-text-muted); pointer-events: none; }
.pager__step .pager__label { display: none; }

/* ---- blog post card ---- */
.post-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: var(--radius-xl);
  background: var(--c-surface);
  box-shadow: var(--shadow-raised);
}
.post-card__media { position: relative; aspect-ratio: 432 / 192; }
.post-card__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.post-card__date { position: absolute; top: 24px; left: 24px; }
.post-card__body { flex: 1; display: flex; flex-direction: column; gap: 16px; padding: 24px; }
.post-card__meta { display: flex; flex-wrap: wrap; gap: 8px; color: var(--c-text-muted); font-size: var(--fs-sm); line-height: 16px; }
.post-card__meta li { display: flex; align-items: center; gap: 4px; }
.post-card__title, .post-card__excerpt {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.post-card__title { font-size: var(--fs-lg); font-weight: 600; line-height: 22px; }
.post-card__title a:hover { color: var(--c-green); }
.post-card__excerpt { -webkit-line-clamp: 4; color: var(--c-text-muted); font-size: var(--fs-md); line-height: 20px; }
.post-card__more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: auto;
  color: var(--c-green);
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 20px;
}

/* ---- breadcrumb bar with the back button bottom-right ---- */
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 2px 48px;
  padding: 4px 8px 4px 16px; /* phones ~50% tighter vertically (user 10-05); 8px / 4px from 768 */
  border-radius: var(--radius-sm);
  background: var(--c-surface);
  box-shadow: var(--shadow-raised);
}
.breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2px 8px;
  min-width: 0;
  padding-block: 3px;
  color: var(--c-text-muted);
  font-size: var(--fs-md);
  line-height: 20px;
}
.breadcrumb__list li { display: flex; align-items: center; gap: 4px; min-width: 0; }
.breadcrumb__list li:not(:last-child)::after {
  content: "";
  width: 6px;
  height: 6px;
  margin-inline: 4px 6px;
  border: solid currentColor;
  border-width: 0 1.5px 1.5px 0;
  rotate: -45deg;
}
.breadcrumb__list a:hover { color: var(--c-text); }
.breadcrumb__list [aria-current="page"] { color: var(--c-green); }
.back-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  align-self: flex-end;
  padding: 8px 16px;
  border-radius: var(--radius-sm);
  color: var(--c-green);
  font-size: var(--fs-md);
  font-weight: 600;
  line-height: 20px;
}
.back-link:hover { background: var(--c-green-tint); }
.breadcrumb .back-link { margin-block: -6px -4px; } /* phones: its own padding made the gap under the trail; the 36px tap area stays */

/* ---- quantity stepper ---- */
.qty { display: flex; align-items: center; gap: 16px; }
.qty__btn {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: var(--radius-sm);
  background: var(--c-surface);
  color: var(--c-text);
  box-shadow: var(--shadow-raised);
}
.qty__btn:hover { color: var(--c-green); }
.qty__input { /* grows with the number (1 ... 999); fixed 3-digit width where field-sizing is unsupported */
  width: 3ch;
  min-width: 2ch;
  padding: 0;
  border: 0;
  background: none;
  font-size: var(--fs-xl);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 30px;
  text-align: center;
}
@supports (field-sizing: content) { .qty__input { width: auto; field-sizing: content; } }
.qty--sm .qty__btn { width: 32px; height: 32px; border-radius: var(--radius-xs); }

/* ---- form controls ---- */
.field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.field__label { font-size: var(--fs-md); font-weight: 600; line-height: 20px; }
.field__label abbr { margin-left: 4px; color: var(--c-required); text-decoration: none; }
.field__control {
  width: 100%;
  padding: 8px 12px;
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--c-surface-muted);
  box-shadow: 0 1px 2px rgb(0 0 0 / 5%);
  font-size: var(--fs-md);
  line-height: 20px;
}
.field__control::placeholder { color: var(--c-text-muted); opacity: 1; }
textarea.field__control { min-height: 96px; resize: vertical; }
select.field__control {
  padding-right: 36px;
  background: var(--c-surface-muted) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 6l4.5 4.5L12.5 6' fill='none' stroke='%23737373' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 12px center / 16px no-repeat;
  appearance: none;
  cursor: pointer;
}
select.field__control:invalid { color: var(--c-text-muted); }
/* control with something inside the grey box: phone prefix, show-password button */
.field__box { display: flex; align-items: center; gap: 8px; padding-inline: 12px; border-radius: var(--radius-sm); background: var(--c-surface-muted); box-shadow: 0 1px 2px rgb(0 0 0 / 5%); }
.field__box .field__control { flex: 1; min-width: 0; padding-inline: 0; box-shadow: none; }
.field__prefix { display: flex; align-items: center; gap: 4px; color: var(--c-text-muted); font-size: var(--fs-md); line-height: 20px; white-space: nowrap; }
.field__reveal { display: grid; place-items: center; color: var(--c-text-muted); }
.field__reveal[aria-pressed="true"] { color: var(--c-green); }
.field-row { display: grid; gap: 16px; }
.form-stack { display: flex; flex-direction: column; gap: 16px; }
.checkbox--dark { color: var(--c-text); font-size: var(--fs-md); line-height: 20px; }
.checkbox--dark a { color: var(--c-green); }
/* consent block: larger checkboxes with explanations, between two dividers (registration forms) */
.consent { display: flex; flex-direction: column; gap: 16px; padding-block: 24px; border-block: 1px solid var(--c-border); }
.consent .checkbox { font-size: var(--fs-lg); line-height: 24px; }
.consent .choice-note { display: block; margin: 4px 0 0 24px; color: var(--c-text-muted); font-size: var(--fs-md); line-height: 20px; }
/* pill choices (Taip / Ne, payment method): radio inputs styled as small chips */
.choices { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; border: 0; }
.choices label { cursor: pointer; }
.choices input { position: absolute; opacity: 0; pointer-events: none; }
.choices span {
  display: block;
  padding: 7px 11px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  background: var(--c-surface-muted);
  box-shadow: 0 1px 2px rgb(0 0 0 / 5%);
  font-size: var(--fs-md);
  line-height: 20px;
}
.choices input:checked + span { border-color: var(--c-green); background: var(--c-green-tint); color: var(--c-green); }
.choices input:focus-visible + span { outline: 2px solid var(--c-green); outline-offset: 2px; }
.checkbox { display: inline-flex; align-items: center; gap: 8px; color: var(--c-text-muted); cursor: pointer; }
.checkbox input {
  appearance: none;
  width: 16px;
  height: 16px;
  margin: 0;
  border: 2px solid var(--c-divider);
  border-radius: 4px;
  cursor: pointer;
}
.checkbox input:checked {
  border-color: var(--c-green);
  background: var(--c-green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-4.9' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;
}

/* ---- flow columns: ONE list that flows into balanced columns. Used wherever Figma splits a single list into
   columns by hand (specs, long texts, FAQ...); never author hand-split column lists. Count per breakpoint via
   --cols-md (from 768) / --cols-lg (from 1024). Items don't break; a heading never ends a column. ---- */
.flow-columns { --cols-md: 2; --cols-lg: 3; column-gap: 24px; }
.flow-columns :is(li, dl > div, p, figure, .flow-columns__item) { break-inside: avoid; }
.flow-columns :is(h2, h3, h4, h5) { break-after: avoid; }

/* inline input + small submit button inside one white box (newsletter, coupon, points) */
.inline-form { display: flex; align-items: center; gap: 16px; }

/* ---- form panel: white panel with a head (title + subtitle) and stacked content ---- */
.form-panel { display: flex; flex-direction: column; gap: 24px; padding: 24px clamp(16px, 10vw - 16px, 24px); border-radius: var(--radius-md); } /* 16px inline below 400 */
.form-panel__head { display: flex; flex-direction: column; gap: 8px; }
.form-panel__sub { font-size: var(--fs-md); line-height: 20px; }

/* ---- icon tile: 48px green-soft square holding an icon (features, settings tiles, contacts, delivery) ---- */
.icon-tile { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--radius-sm); background: var(--c-green-soft); color: var(--c-green); }

/* ---- link list with chevrons (FAQ categories, blog categories) ---- */
.link-list { display: flex; flex-direction: column; gap: 8px; font-size: var(--fs-md); line-height: 20px; }
.link-list a { display: flex; justify-content: space-between; gap: 8px; }
.link-list a:hover { color: var(--c-green); }
.link-list .icon { margin-top: 2px; }

/* ---- white info panel with a titled head + accordions (product information, comparison) ---- */
.info-panel { display: flex; flex-direction: column; gap: 24px; padding: clamp(24px, 3.33vw, 48px); }
.info-panel__head { padding-bottom: 16px; border-bottom: 1px solid var(--c-border); }
.info-panel__divider { border: 0; border-top: 1px solid var(--c-border); }
.info-panel--reviews { gap: clamp(24px, 3.33vw, 48px); }

.accordion__head {
  display: flex;
  align-items: center;
  gap: 16px;
  list-style: none;
  cursor: pointer;
}
.accordion__head::-webkit-details-marker { display: none; }
.accordion__icon {
  flex: none;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: var(--radius-sm);
  background: var(--c-surface-muted);
}
.accordion__title { flex: 1; font-size: var(--fs-xl); font-weight: 600; line-height: 30px; }
.accordion__chevron { transition: rotate var(--ease); }
.accordion:not([open]) .accordion__chevron { rotate: -90deg; }
.accordion__body { display: flex; flex-direction: column; gap: 16px; padding-top: 24px; }
.accordion__body--text { gap: 8px; }
/* text from the shop's editor (product descriptions): client tables and media carry fixed widths in their own
   style attributes, so only !important can fit them to a phone */
.accordion__body--text table { width: 100% !important; }
.accordion__body--text :is(td, th) { width: auto !important; overflow-wrap: anywhere; }
.accordion__body--text :is(img, video, iframe) { max-width: 100%; }

/* ---- login / register panel, centred (checkout, business client registration) ---- */
/* login / register / guest panel, centred */
.auth-panel { display: flex; flex-direction: column; gap: 24px; width: min(100%, 660px); margin-inline: auto; padding: 24px; border-radius: var(--radius-md); }
.auth-panel__sub a, .auth-panel__forgot { color: var(--c-green); }
.auth-panel__form { display: flex; flex-direction: column; gap: 24px; }
.auth-panel__forgot { align-self: flex-end; margin-top: 8px; color: var(--c-text-muted); font-size: var(--fs-md); line-height: 20px; }
.auth-panel hr { border: 0; border-top: 1px solid var(--c-border); }
.divider { display: flex; align-items: center; gap: 12px; color: var(--c-text-muted); font-size: var(--fs-sm); font-weight: 600; line-height: 16px; }
.divider::before, .divider::after { content: ""; flex: 1; border-top: 1px solid var(--c-border); }
.social-login { display: flex; flex-direction: column; gap: 16px; }
.btn--facebook, .btn--google { min-height: 40px; padding-block: 10px; color: #fff; box-shadow: var(--shadow-raised); }
.btn--facebook { background: #435992; }
.btn--google { background: #5483eb; }
.btn--facebook:hover, .btn--google:hover { filter: brightness(1.08); }

/* ---- newsletter strip (landing, content pages) ---- */
.newsletter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px;
  padding: clamp(24px, 3.33vw, 48px);
}
.newsletter__intro { flex: 999 1 400px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
.newsletter__icon {
  flex: none;
  display: grid;
  place-items: center;
  width: 96px;
  height: 96px;
  border-radius: var(--radius-xl);
  background: var(--c-surface);
  color: var(--c-green);
  box-shadow: var(--shadow-md);
}
.newsletter__text { flex: 1 1 240px; display: flex; flex-direction: column; gap: 8px; color: var(--c-text-muted); }
.newsletter__title { color: var(--c-text); font-size: var(--fs-h4); line-height: 32px; }
/* the button drops to its own full-width row when the field would get less than 240px (c16, user 10-06) */
.newsletter__form { flex: 1 1 498px; display: flex; flex-wrap: wrap; gap: 12px 16px; min-width: 0; }
.newsletter__input {
  flex: 1 1 240px;
  min-width: 0;
  height: 48px;
  padding-inline: 12px;
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--c-input);
  box-shadow: var(--shadow-inset);
  line-height: 24px;
}
.newsletter__input::placeholder { color: var(--c-text-muted); opacity: 1; }
.newsletter__submit { flex: 1 0 auto; padding-inline: 12px; }

/* ---- wider screens ---- */
@media (min-width: 480px) {
  .breadcrumb { padding-left: 24px; }
  .field-row { grid-template-columns: 1fr 1fr; }
  .carousel--products { --per-view: 2; }
  .carousel--mini { --per-view: 3; }
}
@media (min-width: 768px) {
  .product-card__body { gap: 16px; }
  .product-card .attr-list { row-gap: 8px; }
  :is(.product-card__body, .buybox) > .checkbox:has(input[name="compare"]) { align-self: auto; }
  .breadcrumb { padding-block: 8px; row-gap: 4px; }
  .breadcrumb__list { padding-block: 6px; row-gap: 4px; }
  .breadcrumb .back-link { margin-block: 0; }
  .flow-columns { columns: var(--cols-md); }
  .pager-bar { flex-direction: row; align-items: center; justify-content: space-between; }
  .product-grid--list { grid-template-columns: 1fr; }
  .product-grid--list .product-card { flex-direction: row; }
  .product-grid--list .product-card__media { flex: 0 0 min(35%, 350px); aspect-ratio: auto; min-height: 286px; }
  .product-grid--list .product-card__info { flex-wrap: nowrap; }
  .product-grid--list .product-card__title { -webkit-line-clamp: 1; }
  .product-grid--list .attr-list { row-gap: 4px; }
  .carousel--cards { --per-view: 2; }
  .carousel--mini { --per-view: 4; }
}
@media (min-width: 1024px) {
  .flow-columns { columns: var(--cols-lg); }
  .pager__step .pager__label { display: inline; }
  .carousel__arrow {
    position: absolute;
    top: calc((100% - var(--controls-gap) - 6px) / 2); /* middle of the track, above the dots row */
    left: -32px;
    z-index: 1;
    translate: 0 -50%;
  }
  .carousel__arrow--next { left: auto; right: -32px; }
  .carousel--products, .carousel--cards { --per-view: 3; }
  .carousel--mini { --per-view: 5; }
}
@media (min-width: 1280px) {
  .carousel--products { --per-view: 4; }
  .carousel--mini { --per-view: 6; }
}
