/* Nirvana product page gallery (v3), details spec grid and card mini slider.
   Loaded after nirvana.css. Styles only the hooks rendered by templates/product.sg and snippets/product-card.sg;
   the gallery uses its own element classes (__rail, __thumbs, __thumb, __stage, __slides, __slide, __arrow, __counter, __pager)
   so none of the old mosaic rules (__track, __item, __dots) apply. */

/* ---------- Product gallery: phones and tablets (swipe track with dots) ---------- */
.nv-gallery { position: relative; min-width: 0; }
.nv-gallery__rail { display: none; }
.nv-gallery__stage { position: relative; min-width: 0; }
.nv-gallery__slides { position: relative; display: flex; gap: .5rem; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; margin-inline: -1rem; padding-inline: 1rem; }
.nv-gallery__slides::-webkit-scrollbar { display: none; }
.nv-gallery__slides:focus-visible { outline-offset: -2px; }
.nv-gallery__slide { position: relative; flex: 0 0 88%; margin: 0; overflow: hidden; border-radius: 8px; background: var(--nv-well); aspect-ratio: 1; scroll-snap-align: center; scroll-snap-stop: always; display: grid; place-items: center; }
.nv-gallery__slide img, .nv-gallery__slide video { width: 100%; height: 100%; object-fit: contain; }
.nv-gallery__slide video { background: var(--nv-well); }
.nv-gallery__slide--empty { color: var(--nv-line); }
.nv-gallery__arrow, .nv-gallery__counter { display: none; }
.nv-gallery__pager { display: flex; justify-content: center; gap: .4rem; margin-top: .75rem; }
.nv-gallery__pager button { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 999px; background: var(--nv-line); cursor: pointer; transition: background-color var(--nv-fast) var(--nv-ease); }
.nv-gallery__pager button[aria-selected="true"] { background: var(--nv-ink); }
.nv-gallery:not(.has-many) .nv-gallery__pager { display: none; }
.nv-gallery:not(.is-ready) .nv-gallery__arrow, .nv-gallery:not(.is-ready) .nv-gallery__counter, .nv-gallery:not(.is-ready) .nv-gallery__pager { visibility: hidden; }
.nv-gallery__badges { left: 1.6rem; top: .6rem; }
@media (min-width: 640px) {
    .nv-gallery__slides { margin-inline: 0; padding-inline: 0; }
    .nv-gallery__slide { flex-basis: 100%; }
    .nv-gallery__badges { left: .6rem; }
}

/* ---------- Product gallery: desktop (thumbnail rail + square stage) ---------- */
@media (min-width: 1024px) {
    .nv-gallery { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 1rem; align-items: stretch; }
    .nv-gallery:not(.has-many) { grid-template-columns: minmax(0, 1fr); }
    .nv-gallery:not(.has-many) .nv-gallery__rail { display: none; }
    /* The rail is an empty grid item so the row height comes from the square stage; the scroller fills it absolutely. */
    .nv-gallery__rail { display: block; position: relative; min-height: 0; }
    .nv-gallery__thumbs { position: absolute; inset: -3px; display: flex; flex-direction: column; gap: .5rem; padding: 3px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; }
    .nv-gallery__thumbs::-webkit-scrollbar { display: none; }
    .nv-gallery__thumb { position: relative; flex: none; width: 72px; height: 72px; padding: 0; border: 0; border-radius: 4px; background: #fff; box-shadow: inset 0 0 0 1px var(--nv-line); cursor: pointer; overflow: hidden; transition: box-shadow var(--nv-fast) var(--nv-ease); }
    .nv-gallery__thumb img { width: 100%; height: 100%; object-fit: contain; padding: 4px; }
    .nv-gallery__thumb:hover { box-shadow: inset 0 0 0 1px var(--nv-ink); }
    .nv-gallery__thumb[aria-selected="true"] { box-shadow: inset 0 0 0 2px var(--nv-ink); }
    .nv-gallery__thumb:focus-visible { outline: 2px solid var(--nv-action); outline-offset: 1px; }
    .nv-gallery__play { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; }
    .nv-gallery__play svg { width: 24px; height: 24px; padding: 6px; border-radius: 999px; background: rgba(27, 25, 23, .78); }
    .nv-gallery__slides { gap: 0; overflow: hidden; border-radius: 4px; }
    .nv-gallery__slide { flex-basis: 100%; border-radius: 4px; background: #fff; box-shadow: inset 0 0 0 1px var(--nv-line); scroll-snap-align: start; }
    .nv-gallery__slide img { transition: transform 600ms var(--nv-ease); }
    .nv-gallery__arrow { position: absolute; top: 50%; z-index: 3; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin-top: -22px; padding: 0; border: 0; border-radius: 999px; background: rgba(255, 255, 255, .92); color: var(--nv-ink); box-shadow: 0 2px 10px rgba(27, 25, 23, .14), inset 0 0 0 1px var(--nv-line); cursor: pointer; transition: background-color var(--nv-fast) var(--nv-ease), box-shadow var(--nv-fast) var(--nv-ease), transform var(--nv-fast) var(--nv-ease); }
    .nv-gallery__arrow--prev { left: .75rem; }
    .nv-gallery__arrow--next { right: .75rem; }
    .nv-gallery__arrow:hover { background: #fff; box-shadow: 0 4px 14px rgba(27, 25, 23, .18), inset 0 0 0 1px var(--nv-ink); }
    .nv-gallery__arrow:active { transform: scale(.96); }
    .nv-gallery:not(.has-many) .nv-gallery__arrow, .nv-gallery:not(.has-many) .nv-gallery__counter { display: none; }
    .nv-gallery__counter { position: absolute; right: .75rem; bottom: .75rem; z-index: 3; display: inline-flex; align-items: center; min-height: 26px; padding: 0 .6rem; border-radius: 999px; background: rgba(255, 255, 255, .92); box-shadow: inset 0 0 0 1px var(--nv-line); font-size: .6875rem; font-weight: 800; letter-spacing: .08em; color: var(--nv-ink); font-variant-numeric: tabular-nums; pointer-events: none; }
    .nv-gallery__pager { display: none; }
    .nv-gallery__badges { left: .75rem; top: .75rem; }
}
@media (min-width: 1024px) and (hover: hover) {
    .nv-gallery__stage:hover .nv-gallery__slide img { transform: scale(1.04); }
}

/* ---------- Details: intro paragraph and the Leather / Pockets / Measurements / Features spec grid ---------- */
.nv-accordion__body--specs { max-width: 80ch; }
.nv-specs > p:first-child { max-width: 62ch; font-size: 1.0625rem; line-height: 1.6; color: var(--nv-ink); }
.nv-specs dl { display: grid; grid-template-columns: minmax(0, 1fr); margin: 1.5rem 0 0; border-top: 1px solid var(--nv-line); }
.nv-specs dt { margin: 0; padding: 1rem 0 .3rem; font-size: .6875rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--nv-muted); }
.nv-specs dd { margin: 0; padding: 0 0 1rem; border-bottom: 1px solid var(--nv-line); font-size: .9375rem; line-height: 1.55; }
.nv-specs dd p { margin: 0; }
.nv-specs dd p + p { margin-top: .35em; }
.nv-specs dd ul, .nv-specs dd ol { margin: 0; padding-left: 1.1rem; }
@media (min-width: 768px) {
    .nv-specs dl { grid-template-columns: 180px minmax(0, 1fr); column-gap: 2rem; }
    .nv-specs dt { padding: 1rem 0; border-bottom: 1px solid var(--nv-line); }
    .nv-specs dd { padding: 1rem 0; }
}
/* Fallback for plain copy: headings and label-only paragraphs become spec labels, lists become hairline rows. */
.nv-specs h2, .nv-specs h3, .nv-specs h4, .nv-specs p:has(> strong:only-child) { margin: 1.5rem 0 .35rem; font-size: .6875rem; font-weight: 800; letter-spacing: .14em; line-height: 1.4; text-transform: uppercase; color: var(--nv-muted); }
.nv-specs p:has(> strong:only-child) strong { font-weight: 800; }
.nv-specs h2 + p, .nv-specs h3 + p, .nv-specs h4 + p, .nv-specs h2 + ul, .nv-specs h3 + ul, .nv-specs h4 + ul, .nv-specs p:has(> strong:only-child) + p, .nv-specs p:has(> strong:only-child) + ul { margin-top: 0; }
.nv-specs > ul, .nv-specs > ol { list-style: none; margin: .25rem 0 0; padding: 0; display: grid; gap: 0; }
.nv-specs > ul > li, .nv-specs > ol > li { position: relative; margin: 0; padding: .45rem 0 .45rem 1rem; border-bottom: 1px solid var(--nv-line); font-size: .9375rem; line-height: 1.5; }
.nv-specs > ul > li::before, .nv-specs > ol > li::before { content: ""; position: absolute; left: 0; top: 1.05em; width: 5px; height: 5px; border-radius: 999px; background: var(--nv-action); }
.nv-specs > p { font-size: .9375rem; }
.nv-specs > p:first-child { font-size: 1.0625rem; }

/* ---------- Product card: colour buttons, hover arrows and pager ---------- */
.nv-dots { position: relative; z-index: 2; }
.nv-dots li { display: flex; }
button.nv-dot { display: block; padding: 0; border: 0; cursor: pointer; transition: transform var(--nv-fast) var(--nv-ease), box-shadow var(--nv-fast) var(--nv-ease); }
button.nv-dot:hover { transform: scale(1.18); }
button.nv-dot[aria-pressed="true"] { box-shadow: inset 0 0 0 1px rgba(27, 25, 23, .14), 0 0 0 2px #fff, 0 0 0 3.5px var(--nv-ink); }
button.nv-dot:focus-visible { outline-offset: 2px; }
.nv-card__arrow { position: absolute; top: 50%; z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin-top: -16px; padding: 0; border: 0; border-radius: 999px; background: rgba(255, 255, 255, .94); color: var(--nv-ink); box-shadow: 0 1px 6px rgba(27, 25, 23, .16), inset 0 0 0 1px var(--nv-line); cursor: pointer; opacity: 0; pointer-events: none; transition: opacity var(--nv-fast) var(--nv-ease), background-color var(--nv-fast) var(--nv-ease), box-shadow var(--nv-fast) var(--nv-ease); }
.nv-card__arrow--prev { left: .6rem; }
.nv-card__arrow--next { right: .6rem; }
.nv-card__arrow:hover { background: #fff; box-shadow: 0 2px 10px rgba(27, 25, 23, .2), inset 0 0 0 1px var(--nv-ink); }
.nv-card__pager { position: absolute; left: 50%; bottom: 3.75rem; z-index: 2; display: inline-flex; gap: 4px; padding: 4px 6px; border-radius: 999px; background: rgba(255, 255, 255, .92); box-shadow: inset 0 0 0 1px var(--nv-line); transform: translateX(-50%); opacity: 0; pointer-events: none; transition: opacity var(--nv-fast) var(--nv-ease); }
.nv-card__pager[hidden] { display: none; }
.nv-card__pager i { display: block; width: 5px; height: 5px; border-radius: 999px; background: rgba(27, 25, 23, .28); transition: background-color var(--nv-fast) var(--nv-ease); }
.nv-card__pager i.is-active { background: var(--nv-ink); }
@media (hover: hover) and (pointer: fine) {
    .nv-card__media:hover .nv-card__arrow, .nv-card__media:focus-within .nv-card__arrow, .nv-card__arrow:focus-visible { opacity: 1; pointer-events: auto; }
    .nv-card__media:hover .nv-card__pager, .nv-card__media:focus-within .nv-card__pager { opacity: 1; }
    .nv-card.is-browsing .nv-card__img--inside { opacity: 1; }
    .nv-card.is-browsing .nv-card__img:not(.nv-card__img--inside) { opacity: 0; }
}
@media (hover: none) {
    .nv-card__arrow, .nv-card__pager { display: none; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
    .nv-gallery__stage:hover .nv-gallery__slide img { transform: none; }
    .nv-gallery__slide img, button.nv-dot { transition: none !important; }
    button.nv-dot:hover { transform: none; }
}

/* Spec table: the catalog builder emits <table class="nv-spec-table"> (the platform's rich-text
   sanitizer keeps table markup but strips dl/dt/dd). Stacked on phones, two columns from md. */
.nv-specs .nv-spec-table { width: 100%; margin: 1.5rem 0 0; border-collapse: collapse; border-top: 1px solid var(--nv-line); }
.nv-specs .nv-spec-table tr { display: block; border-bottom: 1px solid var(--nv-line); }
.nv-specs .nv-spec-table th { display: block; padding: 1rem 0 .3rem; text-align: left; font-size: .6875rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--nv-muted); }
.nv-specs .nv-spec-table td { display: block; padding: 0 0 1rem; font-size: .9375rem; line-height: 1.55; color: var(--nv-ink); }
@media (min-width: 768px) {
    .nv-specs .nv-spec-table tr { display: table-row; }
    .nv-specs .nv-spec-table th { display: table-cell; width: 180px; padding: 1rem 2rem 1rem 0; vertical-align: top; border-bottom: 1px solid var(--nv-line); }
    .nv-specs .nv-spec-table td { display: table-cell; padding: 1rem 0; vertical-align: top; border-bottom: 1px solid var(--nv-line); }
}

/* Owner rule (2026-10-08): product photos are used as shot, so cards show them edge to edge
   (cover) instead of letterboxing landscape frames inside the well. */
.nv-card__img { object-fit: cover; padding: 0; }
.nv-carousel__item .nv-card__img { object-fit: cover; padding: 0; }

/* ---------- Stars (buy box and reviews): grey track with a filled overlay sized by JS ---------- */
.nv-stars { position: relative; display: inline-block; font-size: 1rem; line-height: 1; letter-spacing: .12em; color: var(--nv-line); white-space: nowrap; }
.nv-stars::before { content: "★★★★★"; }
.nv-stars__fill { position: absolute; inset: 0 auto 0 0; width: 0; overflow: hidden; color: var(--nv-action); }
.nv-stars__fill::before { content: "★★★★★"; }
.nv-buy__rating { display: inline-flex; align-items: center; gap: .5rem; margin: .75rem 0 0; font-size: .875rem; color: var(--nv-muted); text-decoration: none; }
.nv-buy__rating strong { color: var(--nv-ink); font-variant-numeric: tabular-nums; }
.nv-buy__rating-count { text-decoration: underline; text-underline-offset: .2rem; }
.nv-buy__rating:hover .nv-buy__rating-count { color: var(--nv-ink); }

/* ---------- What it holds: facts from the spec table ---------- */
.nv-holds__facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 1px; margin: 1.5rem 0 0; border: 1px solid var(--nv-line); border-radius: 8px; overflow: hidden; background: var(--nv-line); }
.nv-holds__facts > div { padding: .9rem 1rem; background: var(--nv-paper, #fff); }
.nv-holds__facts dt { font-size: .6875rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--nv-muted); }
.nv-holds__facts dd { margin: .3rem 0 0; font-size: 1rem; font-weight: 700; line-height: 1.35; color: var(--nv-ink); }
.nv-holds__label { margin: 1.5rem 0 0; font-size: .6875rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--nv-muted); }
.nv-holds__list--pockets { margin-top: .5rem; }
.nv-holds__list--pockets li::first-letter { text-transform: uppercase; }

/* ---------- Card swatches without their own photos ---------- */
.nv-dot--nophoto { background-image: repeating-linear-gradient(135deg, transparent 0 3px, rgba(255, 255, 255, .55) 3px 5px); outline: 1px dashed var(--nv-muted); outline-offset: 1px; }
.nv-card__note { position: absolute; left: .75rem; right: .75rem; bottom: .75rem; z-index: 3; padding: .45rem .7rem; border-radius: 6px; background: rgba(20, 20, 20, .82); color: #fff; font-size: .75rem; font-weight: 600; text-align: center; pointer-events: none; }

/* ---------- Reviews ---------- */
.sg-theme-reviews.sg-review-nirvana { background: var(--nv-surface); border-top: 0; }
.sg-theme-reviews.sg-review-nirvana #product-reviews.nv-reviews { display: grid; gap: 2.5rem; max-width: 1400px !important; padding: clamp(3rem, 6vw, 5rem) clamp(1rem, 3vw, 2.5rem) !important; }
@media (min-width: 1024px) {
  .sg-theme-reviews.sg-review-nirvana #product-reviews.nv-reviews { grid-template-columns: minmax(18rem, 22rem) minmax(0, 1fr); gap: clamp(3rem, 6vw, 6rem); align-items: start; }
  .nv-reviews__summary { position: sticky; top: 7rem; }
}
.nv-reviews__summary .nv-lead { margin: 0 0 .5rem; }
.sg-theme-reviews #product-reviews.nv-reviews #product-reviews-title { margin: 0 0 1.75rem !important; font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.5rem) !important; }
.nv-reviews__score { display: flex; align-items: center; gap: 1rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--nv-line); }
.nv-reviews__average { font-size: clamp(3rem, 2.5rem + 2vw, 4rem); font-weight: 800; line-height: .9; letter-spacing: -.04em; color: var(--nv-ink); font-variant-numeric: tabular-nums; }
.nv-reviews__score-side { display: grid; gap: .4rem; }
.nv-reviews__score .nv-stars { font-size: 1.25rem; }
.nv-reviews__count { font-size: .8125rem; color: var(--nv-muted); }
.nv-reviews__bars { display: grid; gap: .2rem; margin: 1.25rem 0 0; }
.nv-reviews__bar { display: grid; grid-template-columns: 2.25rem 1fr 2rem; align-items: center; gap: .75rem; min-height: 36px; padding: 0 .5rem; margin: 0 -.5rem; border-radius: 6px; color: var(--nv-ink); font-size: .8125rem; font-weight: 600; text-decoration: none; font-variant-numeric: tabular-nums; transition: background-color .15s ease; }
.nv-reviews__bar:hover, .nv-reviews__bar:focus-visible { background: rgba(0, 0, 0, .04); }
.nv-reviews__bar.is-active { background: rgba(0, 0, 0, .06); box-shadow: inset 3px 0 0 var(--nv-action); }
.nv-reviews__bar.is-empty { color: var(--nv-muted); pointer-events: none; }
.nv-reviews__track { position: relative; height: 8px; border-radius: 999px; background: var(--nv-line); overflow: hidden; }
.nv-reviews__track-fill { position: absolute; inset: 0 auto 0 0; border-radius: inherit; background: var(--nv-action); }
.nv-reviews__bar-count { text-align: right; color: var(--nv-muted); }
.sg-theme-reviews #product-reviews.nv-reviews .nv-reviews__signin { margin: 1.5rem 0 0 !important; padding: 1rem 1.1rem; border: 1px solid var(--nv-line); border-radius: 8px; background: var(--nv-paper, #fff); font-size: .8125rem; color: var(--nv-muted); }
.nv-reviews__list { min-width: 0; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-reviews__filters { display: flex !important; flex-wrap: wrap; align-items: end; justify-content: flex-end; gap: .75rem !important; margin: 0 0 1.25rem !important; padding: 0 0 1.25rem; border: 0; border-bottom: 1px solid var(--nv-line); border-radius: 0; background: none; }
.nv-reviews__showing { margin: 0 auto 0 0 !important; align-self: center; font-size: .9375rem; font-weight: 700; color: var(--nv-ink); }
.sg-theme-reviews #product-reviews.nv-reviews .nv-reviews__filters select { min-width: 10rem; min-height: 40px; padding: .5rem .8rem; border-radius: 999px; background: var(--nv-paper, #fff); }
.nv-reviews__apply { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.nv-reviews__apply:focus-visible { position: static !important; width: auto; height: auto; clip-path: none; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review { display: grid; gap: .6rem; margin: 0 0 1rem; padding: clamp(1.25rem, 2vw, 1.75rem) !important; border: 1px solid var(--nv-line) !important; border-radius: 12px; background: var(--nv-paper, #fff); }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review > * { margin: 0 !important; }
.nv-review__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .25rem !important; }
.nv-review__who { display: flex; align-items: center; gap: .75rem; min-width: 0; }
.nv-review__avatar { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; flex: none; border-radius: 999px; background: var(--nv-ink); color: #fff; font-size: .9375rem; font-weight: 700; }
.nv-review__meta { display: grid; gap: .1rem; min-width: 0; }
.nv-review__name { font-size: .9375rem; color: var(--nv-ink); }
.nv-review__verified { display: inline-flex; align-items: center; gap: .3rem; font-size: .75rem; color: #2f6b3a; }
.nv-review__verified::before { content: ""; width: .8rem; height: .8rem; border-radius: 999px; background: #2f6b3a url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 100% no-repeat; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review__stars { flex: none; font-size: 1rem !important; letter-spacing: .08em !important; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review > h3 { margin-top: .25rem !important; font-size: 1.0625rem; font-weight: 700; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review > p { font-size: .9375rem; line-height: 1.65; color: var(--nv-ink); }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review__variant { justify-self: start; padding: .25rem .65rem; border-radius: 999px; background: var(--nv-surface); font-size: .75rem !important; font-weight: 600; color: var(--nv-muted) !important; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review__reply { margin-top: .5rem !important; padding: 1rem 1.1rem !important; border: 0 !important; border-left: 3px solid var(--nv-action) !important; border-radius: 0 8px 8px 0; background: var(--nv-surface) !important; font-size: .875rem; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review__reply strong { margin-bottom: .3rem; font-size: .8125rem; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-review__reply p { margin: 0; color: var(--nv-muted); }
.sg-theme-reviews #product-reviews.nv-reviews .nv-reviews__empty { display: grid; justify-items: center; gap: .4rem; margin: 0 !important; padding: clamp(2rem, 4vw, 3.5rem) 1.5rem !important; border: 1px dashed var(--nv-line) !important; border-radius: 12px; background: var(--nv-paper, #fff) !important; text-align: center; color: var(--nv-muted); }
.nv-reviews__empty-stars { font-size: 1.5rem; letter-spacing: .15em; color: var(--nv-line); }
.nv-reviews__empty strong { font-size: 1.125rem; color: var(--nv-ink); }
@media (max-width: 639px) {
  .sg-theme-reviews #product-reviews.nv-reviews .nv-reviews__filters { display: grid !important; grid-template-columns: 1fr 1fr; }
  .nv-reviews__showing { grid-column: 1 / -1; }
  .sg-theme-reviews #product-reviews.nv-reviews .nv-reviews__filters select { min-width: 0; width: 100%; }
  .nv-review__head { align-items: flex-start; }
}
.sg-theme-reviews #product-reviews.nv-reviews .nv-review__stars > span { color: var(--nv-action) !important; }
.sg-theme-reviews #product-reviews.nv-reviews .nv-reviews__filters label { display: grid; gap: .35rem; font-size: .6875rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--nv-muted); }

/* The name link's stretched hit area covers the text block only (the photo has its own link), so the photo gets real
   hover for the inside view, arrows and quick view; the colour dots sit above the hit area. */
.nv-card__body { position: relative; }
.nv-card__body .nv-dots { position: relative; z-index: 2; }

/* Bag button (replaces the Quick view label): always visible, bottom-right of the photo; opens the product modal. */
.nv-card__bag { position: absolute; right: .65rem; bottom: .65rem; z-index: 3; display: inline-grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 0; border-radius: 999px; background: rgba(255, 255, 255, .96); color: var(--nv-ink); box-shadow: 0 2px 10px rgba(27, 25, 23, .14), inset 0 0 0 1px var(--nv-line); cursor: pointer; transition: background-color var(--nv-fast) var(--nv-ease), color var(--nv-fast) var(--nv-ease), transform var(--nv-fast) var(--nv-ease); }
.nv-card__bag:hover, .nv-card__bag:focus-visible { background: var(--nv-ink); color: #fff; transform: scale(1.06); }
.nv-card__bag:focus-visible { outline: 2px solid var(--nv-action); outline-offset: 2px; }
.nv-card__bag svg { width: 20px; height: 20px; }
/* The touch "Inside" chip moves left so it never sits under the bag button. */
.nv-card__inside { right: auto; left: .6rem; }
.nv-card .nv-card__note { right: 4rem; }
.nv-card__pager { bottom: 1.15rem; }

/* ---------- Compact cards (2026-10-08 pass) ----------
   The customer's photos are 2000px squares: a square well shows the whole product with no crop and keeps rows short. */
.nv-card__media { aspect-ratio: 1 / 1; border-radius: 8px; background: #fff; }
.nv-card__img, .nv-carousel__item .nv-card__img { object-fit: cover; padding: 0; }
.nv-dot--nophoto { background-image: none; outline: 0; opacity: .55; }
.nv-card__bag { width: 36px; height: 36px; right: .5rem; bottom: .5rem; }
.nv-card__bag svg { width: 17px; height: 17px; }
.nv-card__body { gap: .15rem; padding-top: .6rem; }
.nv-card__capacity { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
@media (max-width: 639px) {
  .nv-card__bag { width: 32px; height: 32px; right: .4rem; bottom: .4rem; }
  .nv-card__bag svg { width: 15px; height: 15px; }
  .nv-card__body { padding-top: .5rem; }
  .nv-card__name { font-size: .875rem; line-height: 1.25; }
  .nv-card__capacity { font-size: .75rem; }
  .nv-card__price { font-size: .875rem; }
  .nv-dots { gap: .3rem; margin-bottom: .15rem; }
  .nv-dot { width: 14px; height: 14px; }
  .nv-card__note { left: .4rem; right: 2.6rem; bottom: .4rem; padding: .3rem .45rem; font-size: .6875rem; }
  .nv-card__badges { left: .4rem; top: .4rem; }
}

/* Card photos are shown whole, never cropped (the customer's set mixes 1:1, 2:3 and 3:2 shots): contain inside the square
   well, on a light grey close to the photos' own backdrop so the bands read as part of the shot. Files are used as is. */
.nv-card__media { background: #ECECEC; }
.nv-card__img, .nv-carousel__item .nv-card__img { object-fit: contain; padding: 0; }
/* Touch: no "Inside" chip; swipe the photo left or right instead (nirvana-product.js), with the pager dots showing position. */
.nv-card__inside { display: none !important; }
.nv-card__media { touch-action: pan-y; }
.nv-card.is-browsing .nv-card__img--inside { opacity: 1; }
.nv-card.is-browsing .nv-card__img:not(.nv-card__img--inside) { opacity: 0; }
@media (hover: none) {
  .nv-card__pager { display: inline-flex; opacity: 1; bottom: .55rem; padding: 3px 5px; }
  .nv-card__pager[hidden] { display: none; }
}

/* Colour dots: each is a 20px button with the 12px swatch centred inside, so the selected ring (a thin ink circle at the
   button edge with a white gap) never extends past the card and is never clipped. */
.nv-dots { gap: .1rem; margin-left: 0; }
button.nv-dot, .nv-dot { position: relative; width: 20px; height: 20px; padding: 0; border-radius: 999px; background: transparent !important; box-shadow: none !important; transform: none !important; }
button.nv-dot::before { content: ""; position: absolute; inset: 4px; border-radius: 999px; background: var(--swatch, #CFC7BA); box-shadow: inset 0 0 0 1px rgba(27, 25, 23, .16); transition: transform var(--nv-fast) var(--nv-ease); }
button.nv-dot:hover::before { transform: scale(1.12); }
button.nv-dot[aria-pressed="true"] { box-shadow: inset 0 0 0 1.5px var(--nv-ink) !important; }
button.nv-dot[aria-pressed="true"]::before { transform: none; }
.nv-dot--nophoto { opacity: 1; }
.nv-dot--nophoto::before { opacity: .5; }
@media (max-width: 639px) { .nv-dot, button.nv-dot { width: 20px; height: 20px; } .nv-dots { gap: .05rem; } }
@media (prefers-reduced-motion: reduce) { button.nv-dot::before { transition: none; } button.nv-dot:hover::before { transform: none; } }
/* Selected colour, quieter (Bellroy-like): a hairline soft ring, swatch unchanged. */
button.nv-dot[aria-pressed="true"] { box-shadow: inset 0 0 0 1px rgba(27, 25, 23, .38) !important; }
/* The second (hover/swipe) photo has no src until the visitor hovers or swipes (nirvana-product.js sets it), halving card downloads. */
.nv-card__img--inside:not([src]) { visibility: hidden; }
