/* artist_profile_merch_themes.css v2 — theme-native premium merch. ONE commerce engine (shared partial JS).
   Grammar mapped to each theme's OWN design tokens (concrete --panel/--gold/--radius-*/--shadow-*, manifesto --mm-*, brutalist bone/ink/rouge)
   which the mood CSS overrides in :root => merch inherits each mood's real colours+radius+shadow. Per-mood blocks carry only the
   computed CTA on-accent (a contrast decision, not a theme token). No heuristics. All selectors .btr-*/#btrMerch/body-token scoped. */

.btr-merch, .btr-ms, .btr-cart, .btr-zoom {
  --mz-lime: var(--merch-accent, #d4ff1f);
  --mz-lime-hi: var(--merch-accent-hi, var(--merch-accent, #e6ff5c));
  --mz-lime-lo: var(--merch-accent-lo, rgba(212,255,31,.08));
  --mz-paper: var(--merch-ink, #f2efe6);
  --mz-text: var(--merch-text, #cfcabd);
  --mz-muted: var(--merch-muted, #8d887a);
  --mz-muted-lo: var(--merch-muted-lo, #5c584e);
  --mz-red: var(--merch-red, #ff3b30);
  --mz-hair: var(--merch-border, rgba(242,239,230,.14));
  --mz-hair-lo: var(--merch-border-lo, rgba(242,239,230,.08));
  --mz-display: var(--merch-font-display, 'Anton','Bebas Neue','Arial Black',sans-serif);
  --mz-mono: var(--merch-font-mono, 'IBM Plex Mono','Courier New',monospace);
  --mz-body: var(--merch-font-body, 'IBM Plex Sans','Poppins',Arial,sans-serif);
  color: var(--mz-text); font-family: var(--mz-body); -webkit-font-smoothing: antialiased;
}
/* Shopify-Merch compat-alias RESOLVER (Merch CSS only; themes untouched). The grouped base
   declaration above can compute to the invalid/empty value under the premium theme adapters,
   dropping every surface routed through --mz-* (notably the price-badge background -> transparent
   -> price unreadable on dark artwork). Re-declaring the SAME theme->merch mapping on the Merch
   component ROOTS (inline section + portaled detail sheet, cart, zoom, cart FAB) resolves
   reliably in every theme. Fallbacks reproduce the DEFAULT storefront when no adapter is present. */
#btrMerch, #btrMerchSheet, #btrCart, #btrZoom, #btrCartFab {
  --mz-lime: var(--merch-accent, #d4ff1f);
  --mz-lime-hi: var(--merch-accent-hi, var(--merch-accent, #e6ff5c));
  --mz-lime-lo: var(--merch-accent-lo, rgba(212,255,31,.08));
  --mz-paper: var(--merch-ink, #f2efe6);
  --mz-text: var(--merch-text, #cfcabd);
  --mz-muted: var(--merch-muted, #8d887a);
  --mz-muted-lo: var(--merch-muted-lo, #5c584e);
  --mz-red: var(--merch-red, #ff3b30);
  --mz-hair: var(--merch-border, rgba(242,239,230,.14));
  --mz-hair-lo: var(--merch-border-lo, rgba(242,239,230,.08));
  --mz-display: var(--merch-font-display, 'Anton','Bebas Neue','Arial Black',sans-serif);
  --mz-mono: var(--merch-font-mono, 'IBM Plex Mono','Courier New',monospace);
  --mz-body: var(--merch-font-body, 'IBM Plex Sans','Poppins',Arial,sans-serif);
}
.btr-merch *, .btr-ms *, .btr-cart *, .btr-zoom * { box-sizing: border-box; }
.btr-merch button, .btr-ms button, .btr-cart button, .btr-zoom button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
.btr-merch :focus-visible, .btr-ms :focus-visible, .btr-cart :focus-visible, .btr-zoom :focus-visible { outline: 2px solid var(--mz-lime); outline-offset: 3px; }

.btr-merch {
  display: none;
  position: relative;
  isolation: isolate;
  width: min(1280px, calc(100vw - 48px));
  max-width: 1280px;
  margin: 0 auto 40px;
  padding: 24px 22px 28px;
  background: #000;
  border: 1px solid var(--mz-hair);
  border-top: 4px solid var(--mz-lime);
  box-shadow: 10px 10px 0 rgba(212,255,31,.14);
  overflow: hidden;
}
.btr-merch.is-ready, .btr-merch.is-loading { display: block; }
.btr-merch::after {
  content: "MERCH";
  position: absolute; right: -14px; bottom: -34px; z-index: 0; pointer-events: none;
  font-family: var(--mz-display); font-size: clamp(6rem, 14vw, 13rem); line-height: .75;
  color: rgba(242,239,230,.025);
}
.btr-merch > * { position: relative; z-index: 1; }
.btr-merch__head { text-align: center; padding: 0 0 16px; margin: 0 0 22px; border-bottom: 2px solid var(--mz-paper); }
.btr-merch__kicker { display: block; margin: 0 0 10px; color: var(--mz-lime); font-family: var(--mz-mono); font-size: .62rem; font-weight: 700; letter-spacing: .4em; text-transform: uppercase; }
.btr-merch__title {
  margin: 0; color: var(--mz-paper);
  font-family: var(--mz-display); font-size: clamp(2.4rem, 5vw, 3.6rem); font-weight: 400; line-height: .86; letter-spacing: .01em; text-transform: uppercase;
  text-shadow: 3px 3px 0 rgba(212,255,31,.22);
}
.btr-merch__sub { margin: 10px 0 0; color: var(--mz-muted); font-family: var(--mz-mono); font-size: .62rem; font-weight: 600; letter-spacing: .3em; text-transform: uppercase; }
.btr-merch__sub b { color: var(--mz-paper); font-weight: 700; }

/* READABILITY OVERRIDE — the profile's GLOBAL <header> style (external stylesheet) paints a light band
   behind every <header>; these merch/zoom/cart headers are <header> tags, so their light text vanished.
   Force them dark + light text, scoped by component ID (NOT a global header rule). */
#btrMerch .btr-merch__head { background: #000 !important; }
#btrMerch .btr-merch__kicker { color: var(--merch-accent, #d4ff1f) !important; }
#btrMerch .btr-merch__title { color: var(--merch-ink, #f2efe6) !important; }
#btrMerch .btr-merch__sub, #btrMerch .btr-merch__sub b { color: var(--merch-muted, #8d887a) !important; }
#btrMerch .btr-merch__sub b { color: var(--merch-ink, #f2efe6) !important; }
#btrZoom .btr-zoom__bar { background: #050505 !important; }
#btrZoom .btr-zoom__title { color: var(--mz-paper) !important; }
#btrZoom .btr-zoom__tools button { color: var(--mz-paper) !important; }
#btrCart .btr-cart__head { background: #000 !important; }
#btrCart .btr-cart__head h3 { color: var(--mz-paper) !important; }

.btr-merch__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px 18px; }
.btr-merch__grid.is-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; }
.btr-merch__grid.is-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.btr-merch__grid.is-solo { grid-template-columns: 1fr; }

.btr-mp { position: relative; display: flex; flex-direction: column; gap: 12px; min-width: 0; color: var(--mz-paper); }
.btr-mp__hit { display: flex; flex-direction: column; gap: 12px; width: 100%; padding: 0; text-align: left; color: inherit; }
.btr-mp__art {
  position: relative; aspect-ratio: 1 / 1; overflow: hidden;
  background: #0a0a0a; border: 2px solid var(--mz-paper);
  box-shadow: 4px 4px 0 rgba(212,255,31,.45);
  transition: transform .14s ease, box-shadow .14s ease;
}
.btr-mp__hit:hover .btr-mp__art, .btr-mp__hit:focus-visible .btr-mp__art { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 var(--mz-lime); }
.btr-mp__hit:active .btr-mp__art { transform: translate(1px, 1px); box-shadow: 2px 2px 0 var(--mz-lime); }
.btr-mp__img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center; filter: grayscale(.08) contrast(1.05); transition: filter .14s ease; }
.btr-mp__hit:hover .btr-mp__img { filter: none; }
.btr-mp__noimg { position: absolute; inset: 0; display: grid; place-items: center; color: var(--mz-muted-lo); font-family: var(--mz-mono); font-size: .62rem; letter-spacing: .3em; text-transform: uppercase; background: repeating-linear-gradient(45deg, #070707 0 8px, #0d0d0d 8px 16px); }
.btr-mp__no { position: absolute; top: 8px; left: 8px; padding: 3px 6px; background: #000; color: var(--mz-paper); font-family: var(--mz-mono); font-size: .56rem; font-weight: 700; letter-spacing: .22em; }
.btr-mp__tag {
  position: absolute; right: -4px; bottom: 12px; padding: 6px 10px;
  background: var(--mz-lime); color: #000; border: 1px solid #000; box-shadow: 3px 3px 0 rgba(0,0,0,.85);
  font-family: var(--mz-mono); font-size: .8rem; font-weight: 700; letter-spacing: .04em; white-space: nowrap; line-height: 1;
  transform: rotate(-3deg); transition: transform .14s ease;
}
.btr-mp__hit:hover .btr-mp__tag { transform: rotate(-3deg) translate(-2px, -2px); }
.btr-mp__tag.is-range { font-size: .72rem; }
.btr-mp__tag.is-range::before { content: "from "; font-weight: 400; letter-spacing: 0; text-transform: uppercase; font-size: .58rem; }
.btr-mp__tag s { display: block; margin-top: 3px; font-size: .58rem; font-weight: 500; opacity: .7; letter-spacing: 0; }
.btr-mp__pill { position: absolute; top: 8px; right: 8px; padding: 3px 7px; background: #000; color: var(--mz-lime); border: 1px solid var(--mz-lime); font-family: var(--mz-mono); font-size: .52rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.btr-mp__pill.is-sale { background: var(--mz-red); border-color: var(--mz-red); color: #fff; }
.btr-mp__pill + .btr-mp__pill { top: 32px; }
.btr-mp__body { min-width: 0; }
.btr-mp__title { margin: 0 0 6px; color: var(--mz-paper); font-family: var(--mz-body); font-size: 1rem; font-weight: 700; line-height: 1.15; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.btr-mp__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; color: var(--mz-muted); font-family: var(--mz-mono); font-size: .58rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.btr-mp__meta .dot { display: inline-block; width: 6px; height: 6px; background: var(--mz-lime); margin-right: 6px; vertical-align: 1px; }
.btr-mp__meta .dot.is-out { background: var(--mz-red); }
.btr-mp__meta .dot.is-low { background: var(--mz-paper); }
.btr-mp__quick {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  width: 100%; min-height: 44px; padding: 0 12px;
  background: var(--mz-lime); color: #000; border: 2px solid #000; outline: 1px solid var(--mz-lime);
  box-shadow: 4px 4px 0 rgba(242,239,230,.9);
  font-family: var(--mz-display); font-size: 1rem; letter-spacing: .06em; text-transform: uppercase; line-height: 1;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.btr-mp__quick .amt { font-family: var(--mz-mono); font-size: .74rem; font-weight: 700; }
.btr-mp__quick:hover { background: var(--mz-lime-hi); transform: translate(2px, 2px); box-shadow: 2px 2px 0 rgba(242,239,230,.9); }
.btr-mp__quick.is-loading, .btr-mp__quick.is-loading:hover { background: var(--mz-paper); cursor: progress; transform: translate(2px, 2px); box-shadow: 2px 2px 0 rgba(242,239,230,.9); }
.btr-mp__quick:disabled { opacity: .8; }
.btr-mp.is-soldout .btr-mp__img { filter: grayscale(1) contrast(.9) brightness(.55); }
.btr-mp.is-soldout .btr-mp__tag { background: #000; color: var(--mz-muted); border-color: var(--mz-hair); box-shadow: none; text-decoration: line-through; }
.btr-mp__stamp { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; }
.btr-mp__stamp span { padding: 4px 14px; border: 3px solid var(--mz-red); color: var(--mz-red); background: rgba(0,0,0,.72); font-family: var(--mz-display); font-size: clamp(1.4rem, 2.4vw, 2rem); letter-spacing: .06em; line-height: 1; text-transform: uppercase; transform: rotate(-12deg); }
.btr-mp.is-solo .btr-mp__hit { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; align-items: center; }
.btr-mp.is-solo .btr-mp__art { max-width: 560px; }
.btr-mp.is-solo .btr-mp__title { font-family: var(--mz-display); font-weight: 400; font-size: clamp(2rem, 4vw, 3.4rem); line-height: .9; letter-spacing: .01em; text-transform: uppercase; -webkit-line-clamp: 3; margin-bottom: 12px; }
.btr-mp__excerpt { margin: 14px 0 0; color: var(--mz-text); font-size: .92rem; line-height: 1.65; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.btr-mp__cta { display: inline-flex; align-items: center; gap: 12px; margin-top: 20px; padding: 0 18px; min-height: 48px; background: var(--mz-lime); color: #000; border: 2px solid #000; outline: 1px solid var(--mz-lime); box-shadow: 5px 5px 0 rgba(242,239,230,.9); font-family: var(--mz-display); font-size: 1.05rem; letter-spacing: .06em; text-transform: uppercase; }
.btr-mp__cta::after { content: "\2192"; font-family: var(--mz-mono); }
.btr-mp.is-solo .btr-mp__tag { display: none; }
.btr-mp.is-solo .btr-mp__quick { display: none; }
.btr-mp__price { display: none; }
.btr-mp.is-solo .btr-mp__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin: 0 0 10px; color: var(--mz-paper); font-family: var(--mz-display); font-size: 2rem; line-height: 1; }
.btr-mp__price small, .btr-ms__price small { color: var(--mz-muted); font-family: var(--mz-mono); font-size: .58rem; font-weight: 700; letter-spacing: .24em; text-transform: uppercase; margin-right: 6px; }
.btr-mp__price s, .btr-ms__price s { color: var(--mz-muted); font-family: var(--mz-mono); font-size: .85rem; font-weight: 500; }
.btr-mp__price .save, .btr-ms__price .save { padding: 3px 7px; background: var(--mz-red); color: #fff; font-family: var(--mz-mono); font-size: .56rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; align-self: center; }

.btr-mp.is-skel { pointer-events: none; }
.btr-mp.is-skel .btr-mp__art { border-color: var(--mz-hair); box-shadow: none; background: repeating-linear-gradient(45deg, #060606 0 8px, #0c0c0c 8px 16px); }
.btr-mp.is-skel .btr-mp__title, .btr-mp.is-skel .btr-mp__meta { display: block; height: 12px; background: var(--mz-hair-lo); }
.btr-mp.is-skel .btr-mp__title { width: 80%; height: 16px; }
.btr-mp.is-skel .btr-mp__meta { width: 45%; margin-top: 8px; }
.btr-merch.is-loading .btr-mp.is-skel { animation: btrMerchPulse 1.4s ease-in-out infinite; }
@keyframes btrMerchPulse { 0%,100% { opacity: 1; } 50% { opacity: .45; } }

.btr-ms { position: fixed; inset: 0; z-index: 20500; display: none; }
.btr-ms.is-open { display: block; }
.btr-ms__bg { position: absolute; inset: 0; background: rgba(0,0,0,.9); }
.btr-ms__panel {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: min(1060px, calc(100vw - 32px)); max-height: calc(100vh - 48px);
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(380px, .95fr);
  background: #000; border: 2px solid var(--mz-paper); box-shadow: 12px 12px 0 rgba(212,255,31,.35);
  overflow: hidden;
}
.btr-ms__close { position: absolute; top: 12px; right: 12px; z-index: 5; width: 40px; height: 40px; display: grid; place-items: center; background: #000; color: var(--mz-paper); border: 1px solid var(--mz-paper); font-family: var(--mz-mono); font-size: 1rem; font-weight: 700; }
.btr-ms__close:hover { background: var(--mz-lime); border-color: var(--mz-lime); color: #000; }
.btr-ms__handle { display: none; }

.btr-ms__gallery { position: relative; background: #050505; border-right: 1px solid var(--mz-hair); display: flex; flex-direction: column; min-height: 0; }
.btr-ms__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; aspect-ratio: 1 / 1; background: #000; }
.btr-ms__track::-webkit-scrollbar { display: none; }
.btr-ms__slide { flex: 0 0 100%; scroll-snap-align: start; position: relative; display: grid; place-items: center; }
.btr-ms__slide img { display: block; width: 100%; height: 100%; object-fit: contain; }
.btr-ms__nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 40px; height: 40px; display: grid; place-items: center; background: #000; color: var(--mz-paper); border: 1px solid var(--mz-paper); font-family: var(--mz-mono); font-size: 1rem; opacity: 0; transition: opacity .14s ease; }
.btr-ms__gallery:hover .btr-ms__nav, .btr-ms__nav:focus-visible { opacity: 1; }
.btr-ms__nav:hover { background: var(--mz-lime); border-color: var(--mz-lime); color: #000; }
.btr-ms__nav.prev { left: 12px; } .btr-ms__nav.next { right: 12px; }
.btr-ms__thumbs { display: flex; gap: 8px; padding: 12px; overflow-x: auto; scrollbar-width: none; border-top: 1px solid var(--mz-hair); }
.btr-ms__thumbs::-webkit-scrollbar { display: none; }
.btr-ms__thumb { flex: 0 0 auto; width: 58px; height: 58px; padding: 0; overflow: hidden; background: #000; border: 2px solid transparent; opacity: .55; transition: opacity .14s ease, border-color .14s ease; }
.btr-ms__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.btr-ms__thumb:hover { opacity: 1; }
.btr-ms__thumb.is-on { opacity: 1; border-color: var(--mz-lime); }
.btr-ms__count { position: absolute; left: 12px; bottom: 12px; z-index: 3; padding: 3px 7px; background: #000; color: var(--mz-paper); font-family: var(--mz-mono); font-size: .56rem; font-weight: 700; letter-spacing: .2em; }
.btr-ms__gallery.is-single .btr-ms__nav, .btr-ms__gallery.is-single .btr-ms__thumbs, .btr-ms__gallery.is-single .btr-ms__count { display: none; }
.btr-ms__gallery .btr-mp__stamp span { font-size: clamp(2rem, 5vw, 3.4rem); }

.btr-ms__info { display: flex; flex-direction: column; min-height: 0; overflow-y: auto; scrollbar-width: thin; }
.btr-ms__body { padding: 28px 28px 8px; flex: 1 0 auto; }
.btr-ms__kicker { display: block; margin: 0 0 12px; padding-right: 48px; color: var(--mz-lime); font-family: var(--mz-mono); font-size: .58rem; font-weight: 700; letter-spacing: .34em; text-transform: uppercase; }
.btr-ms__title { margin: 0 0 14px; color: var(--mz-paper); font-family: var(--mz-display); font-weight: 400; font-size: clamp(1.8rem, 3vw, 2.6rem); line-height: .9; letter-spacing: .01em; text-transform: uppercase; overflow-wrap: anywhere; text-shadow: 3px 3px 0 rgba(212,255,31,.18); }
.btr-ms__priceRow { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; margin: 0 0 16px; padding: 0 0 16px; border-bottom: 1px solid var(--mz-hair); }
.btr-ms__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; color: var(--mz-paper); font-family: var(--mz-display); font-size: 2.1rem; line-height: 1; }
.btr-ms__avail { color: var(--mz-muted); font-family: var(--mz-mono); font-size: .6rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.btr-ms__avail::before { content: ""; display: inline-block; width: 6px; height: 6px; background: var(--mz-lime); margin-right: 7px; vertical-align: 1px; }
.btr-ms__avail.is-low { color: var(--mz-paper); } .btr-ms__avail.is-low::before { background: var(--mz-paper); }
.btr-ms__avail.is-out { color: var(--mz-red); } .btr-ms__avail.is-out::before { background: var(--mz-red); }
.btr-ms__avail.is-pending::before { background: var(--mz-muted-lo); }
.btr-ms__desc { position: relative; margin: 0 0 20px; color: var(--mz-text); font-size: .92rem; line-height: 1.68; }
.btr-ms__desc p { margin: 0 0 .8em; } .btr-ms__desc p:last-child { margin-bottom: 0; }
.btr-ms__desc.is-clamped .btr-ms__descBody { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.btr-ms__more { margin-top: 6px; padding: 0; color: var(--mz-lime) !important; font-family: var(--mz-mono); font-size: .6rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.btr-ms__more:hover { color: var(--mz-lime-hi) !important; }
.btr-ms__opts { display: flex; flex-direction: column; gap: 16px; margin: 0 0 18px; }
.btr-ms__opt.is-missing { animation: btrMerchNudge .3s ease; }
@keyframes btrMerchNudge { 0%,100% { transform: translateX(0); } 30% { transform: translateX(-4px); } 60% { transform: translateX(4px); } }
.btr-ms__optLabel { display: flex; justify-content: space-between; gap: 12px; margin: 0 0 8px; color: var(--mz-muted); font-family: var(--mz-mono); font-size: .58rem; font-weight: 700; letter-spacing: .24em; text-transform: uppercase; }
.btr-ms__optLabel b { color: var(--mz-paper); font-weight: 700; }
.btr-ms__opt.is-missing .btr-ms__optLabel b { color: var(--mz-red); }
.btr-ms__vals { display: flex; flex-wrap: wrap; gap: 6px; }
.btr-ov {
  position: relative; min-height: 44px; min-width: 48px; padding: 0 14px;
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  background: #000; color: var(--mz-paper); border: 1px solid var(--mz-hair);
  font-family: var(--mz-mono); font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  transition: background .12s ease, color .12s ease, border-color .12s ease, box-shadow .12s ease, transform .12s ease;
}
.btr-ov:hover { border-color: var(--mz-paper); }
.btr-ov:active { transform: translate(1px, 1px); }
.btr-ov[aria-pressed="true"] { background: var(--mz-lime); color: #000; border-color: var(--mz-lime); box-shadow: 3px 3px 0 rgba(242,239,230,.9); }
.btr-ov[aria-disabled="true"] { color: var(--mz-muted-lo); border-style: dashed; border-color: var(--mz-hair-lo); text-decoration: line-through; text-decoration-thickness: 2px; cursor: not-allowed; }
.btr-ov[aria-disabled="true"]:hover { border-color: var(--mz-hair-lo); }
.btr-ov[aria-disabled="true"][aria-pressed="true"] { background: #000; color: var(--mz-muted-lo); border-color: var(--mz-hair); box-shadow: none; }
.btr-ov .sw { width: 14px; height: 14px; border: 1px solid rgba(255,255,255,.3); background-size: cover; background-position: center; flex: 0 0 auto; }
.btr-ov[aria-pressed="true"] .sw { border-color: rgba(0,0,0,.45); }
.btr-ov[aria-disabled="true"] .sw { opacity: .35; }
.btr-ms__pick { margin: 0 0 6px; color: var(--mz-muted); font-family: var(--mz-mono); font-size: .6rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.btr-ms__pick b { color: var(--mz-paper); }

.btr-ms__dock { position: sticky; bottom: 0; z-index: 4; padding: 12px 28px calc(16px + env(safe-area-inset-bottom)); background: #000; border-top: 1px solid var(--mz-hair); box-shadow: 0 -14px 24px rgba(0,0,0,.7); }
.btr-buy {
  width: 100%; min-height: 60px; padding: 0 18px;
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  background: var(--mz-lime); color: #000; border: 2px solid #000; outline: 1px solid var(--mz-lime);
  box-shadow: 5px 5px 0 rgba(242,239,230,.9);
  font-family: var(--mz-display); font-size: 1.3rem; letter-spacing: .06em; text-transform: uppercase; line-height: 1;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.btr-buy .lbl { display: inline-flex; align-items: center; gap: 12px; }
.btr-buy .lbl::after { content: "\2192"; font-family: var(--mz-mono); font-size: 1rem; }
.btr-buy .amt { display: inline-flex; flex-direction: column; align-items: flex-end; font-family: var(--mz-mono); font-size: .95rem; font-weight: 700; letter-spacing: .04em; line-height: 1.1; }
.btr-buy .amt s { font-size: .62rem; font-weight: 500; opacity: .65; }
.btr-buy:hover { background: var(--mz-lime-hi); transform: translate(3px, 3px); box-shadow: 2px 2px 0 rgba(242,239,230,.9); }
.btr-buy.is-armed { animation: btrMerchArm .36s ease; }
@keyframes btrMerchArm { 0% { transform: translate(3px, 3px); box-shadow: 2px 2px 0 rgba(242,239,230,.9); } 100% { transform: none; box-shadow: 5px 5px 0 rgba(242,239,230,.9); } }
.btr-buy.is-idle { background: #000; color: var(--mz-paper); border: 2px dashed var(--mz-hair); outline: 0; box-shadow: none; }
.btr-buy.is-idle .lbl::after { content: "\2193"; }
.btr-buy.is-idle:hover { transform: none; border-color: var(--mz-paper); background: #000; }
.btr-buy.is-idle .amt { color: var(--mz-muted); }
.btr-buy.is-loading, .btr-buy.is-loading:hover { background: var(--mz-paper); color: #000; transform: translate(3px, 3px); box-shadow: 2px 2px 0 rgba(242,239,230,.9); cursor: progress; }
.btr-buy.is-loading .lbl::after { content: none; }
.btr-buy .spin { display: none; width: 14px; height: 14px; border: 3px solid rgba(0,0,0,.25); border-top-color: #000; animation: btrMerchSpin .8s linear infinite; }
.btr-buy.is-loading .spin { display: inline-block; }
@keyframes btrMerchSpin { to { transform: rotate(360deg); } }
.btr-buy.is-soldout, .btr-buy.is-soldout:hover { background: #000; color: var(--mz-red); border: 2px solid var(--mz-red); outline: 0; box-shadow: none; transform: none; cursor: not-allowed; }
.btr-buy.is-gone, .btr-buy.is-gone:hover { background: #000; color: var(--mz-muted); border: 2px solid var(--mz-hair); outline: 0; box-shadow: none; transform: none; cursor: not-allowed; }
.btr-buy.is-soldout .lbl::after, .btr-buy.is-gone .lbl::after { content: none; }
.btr-ms__trust { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 6px 14px; margin: 10px 0 0; color: var(--mz-muted-lo); font-family: var(--mz-mono); font-size: .56rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.btr-ms__trust i { font-style: normal; color: var(--mz-lime); }
.btr-ms__err { display: none; margin: 10px 0 0; padding: 10px 12px; border: 1px solid var(--mz-red); color: var(--mz-red); font-family: var(--mz-mono); font-size: .68rem; font-weight: 700; letter-spacing: .06em; }
.btr-ms__err.is-on { display: block; }
.btr-ms__err button { color: var(--mz-paper); text-decoration: underline; text-underline-offset: 3px; margin-left: 8px; }

.btr-merch__cats { display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; margin:-6px 0 22px; padding:2px 1px 8px; }
.btr-merch__cats::-webkit-scrollbar { display:none; }
.btr-merch__cat { flex:0 0 auto; min-height:38px; padding:0 12px; border:1px solid var(--mz-hair) !important; color:var(--mz-muted) !important; font-family:var(--mz-mono) !important; font-size:.58rem !important; font-weight:700 !important; letter-spacing:.16em; text-transform:uppercase; white-space:nowrap; }
.btr-merch__cat:hover { border-color:var(--mz-paper) !important; color:var(--mz-paper) !important; }
.btr-merch__cat[aria-pressed="true"] { background:var(--mz-lime) !important; border-color:var(--mz-lime) !important; color:#000 !important; box-shadow:3px 3px 0 rgba(242,239,230,.9); }
.btr-merch__cat .count { opacity:.65; margin-left:6px; }
.btr-merch__more { display:flex; justify-content:center; align-items:center; gap:14px; margin:28px 0 0; padding-top:20px; border-top:1px solid var(--mz-hair); }
.btr-merch__moreBtn { min-height:46px; padding:0 22px !important; background:#000 !important; color:var(--mz-paper) !important; border:1px solid var(--mz-paper) !important; font-family:var(--mz-mono) !important; font-size:.62rem !important; font-weight:700 !important; letter-spacing:.22em; text-transform:uppercase; }
.btr-merch__moreBtn:hover { background:var(--mz-lime) !important; color:#000 !important; border-color:var(--mz-lime) !important; }
.btr-merch__moreBtn:disabled { opacity:.45; cursor:progress; }
.btr-merch__pageMeta { color:var(--mz-muted-lo); font-family:var(--mz-mono); font-size:.56rem; letter-spacing:.16em; text-transform:uppercase; }
.btr-merch__bar { display:flex; gap:12px; align-items:center; margin:0 0 16px; flex-wrap:wrap; }
.btr-merch__search { position:relative; flex:1 1 240px; display:flex; align-items:center; min-width:0; }
.btr-merch__searchIco { position:absolute; left:12px; width:13px; height:13px; border:2px solid var(--mz-muted); border-radius:50%; pointer-events:none; }
.btr-merch__searchIco::after { content:""; position:absolute; right:-5px; bottom:-4px; width:7px; height:2px; background:var(--mz-muted); transform:rotate(45deg); }
.btr-merch__search input { width:100%; min-height:44px; padding:0 14px 0 34px; background:#000; color:var(--mz-paper); border:1px solid var(--mz-hair); font-family:var(--mz-mono); font-size:.72rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; outline:none; }
.btr-merch__search input:focus { border-color:var(--mz-lime); }
.btr-merch__search input::placeholder { color:var(--mz-muted-lo); }
.btr-merch__sortWrap { flex:0 0 auto; }
.btr-merch__sortWrap select { min-height:44px; padding:0 14px; background:#000; color:var(--mz-paper); border:1px solid var(--mz-hair); font-family:var(--mz-mono); font-size:.66rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; outline:none; cursor:pointer; }
.btr-merch__sortWrap select:focus { border-color:var(--mz-lime); }
.btr-merch__empty { display:none; padding:48px 12px; text-align:center; color:var(--mz-muted); font-family:var(--mz-mono); font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; }
.btr-merch__empty.is-on { display:block; }
.btr-merch__empty b { display:block; margin-bottom:8px; color:var(--mz-paper); font-family:var(--mz-display); font-size:1.6rem; font-weight:400; letter-spacing:.02em; }
@media (max-width:768px){ .btr-merch__sortWrap, .btr-merch__sortWrap select { width:100%; } .btr-merch__search { flex-basis:100%; } }

.btr-ms__zoomBtn { position:absolute; right:12px; bottom:12px; z-index:4; min-width:42px; height:42px; padding:0 10px !important; display:flex; align-items:center; justify-content:center; gap:7px; background:rgba(0,0,0,.88) !important; color:var(--mz-paper) !important; border:1px solid var(--mz-paper) !important; font-family:var(--mz-mono) !important; font-size:.56rem !important; font-weight:700 !important; letter-spacing:.12em; text-transform:uppercase; }
.btr-ms__zoomBtn:hover { background:var(--mz-lime) !important; border-color:var(--mz-lime) !important; color:#000 !important; }
.btr-zoom { position:fixed; inset:0; z-index:23000; display:none; }
.btr-zoom.is-open { display:block; }
.btr-zoom__bg { position:absolute; inset:0; background:rgba(0,0,0,.96); }
.btr-zoom__panel { position:absolute; inset:18px; display:flex; flex-direction:column; background:#030303; border:1px solid var(--mz-hair); }
.btr-zoom__bar { min-height:54px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 10px 8px 16px; border-bottom:1px solid var(--mz-hair); }
.btr-zoom__title { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--mz-paper); font-family:var(--mz-mono); font-size:.64rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; }
.btr-zoom__tools { display:flex; gap:6px; }
.btr-zoom__tools button { width:40px; height:38px; display:grid; place-items:center; border:1px solid var(--mz-hair) !important; color:var(--mz-paper) !important; font-family:var(--mz-mono) !important; font-weight:700 !important; }
.btr-zoom__tools button:hover { border-color:var(--mz-lime) !important; color:var(--mz-lime) !important; }
.btr-zoom__viewport { flex:1; min-height:0; overflow:hidden; display:flex; align-items:center; justify-content:center; background:#000; overscroll-behavior:contain; touch-action:none; }
.btr-zoom__img { display:block; max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; transform-origin:center center; will-change:transform; user-select:none; -webkit-user-drag:none; cursor:zoom-in; }

.btr-cart-fab { position:fixed; right:18px; bottom:calc(18px + env(safe-area-inset-bottom)); z-index:19000; min-height:52px; padding:0 16px !important; display:none; align-items:center; gap:10px; background:var(--mz-lime,#d4ff1f) !important; color:#000 !important; border:2px solid #000 !important; outline:1px solid var(--mz-lime,#d4ff1f); box-shadow:5px 5px 0 rgba(242,239,230,.9); font-family:var(--mz-display,'Anton',sans-serif) !important; font-size:1rem !important; letter-spacing:.06em; text-transform:uppercase; }
.btr-cart-fab.is-on { display:flex; }
.btr-cart-fab__count { min-width:24px; height:24px; padding:0 6px; display:grid; place-items:center; background:#000; color:var(--mz-lime,#d4ff1f); font-family:var(--mz-mono,'Courier New',monospace); font-size:.68rem; border-radius:999px; }
.btr-cart { position:fixed; inset:0; z-index:22000; display:none; }
.btr-cart.is-open { display:block; }
.btr-cart__bg { position:absolute; inset:0; background:rgba(0,0,0,.82); }
.btr-cart__panel { position:absolute; top:0; right:0; bottom:0; width:min(460px,100vw); display:flex; flex-direction:column; background:#000; color:var(--mz-text); border-left:2px solid var(--mz-paper); box-shadow:-16px 0 0 rgba(212,255,31,.18); }
.btr-cart__head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:18px; border-bottom:2px solid var(--mz-paper); }
.btr-cart__head h3 { margin:0; color:var(--mz-paper); font-family:var(--mz-display); font-size:2rem; font-weight:400; line-height:1; text-transform:uppercase; }
.btr-cart__close { width:42px; height:42px; border:1px solid var(--mz-hair) !important; color:var(--mz-paper) !important; }
.btr-cart__lines { flex:1; overflow:auto; padding:8px 18px; }
.btr-cart__empty { padding:38px 6px; color:var(--mz-muted); font-family:var(--mz-mono); font-size:.7rem; line-height:1.8; letter-spacing:.12em; text-transform:uppercase; text-align:center; }
.btr-cart-line { display:grid; grid-template-columns:82px minmax(0,1fr); gap:12px; padding:14px 0; border-bottom:1px solid var(--mz-hair-lo); }
.btr-cart-line__img { width:82px; height:82px; object-fit:cover; background:#080808; border:1px solid var(--mz-hair); }
.btr-cart-line__title { margin:0 0 5px; color:var(--mz-paper); font-size:.88rem; font-weight:700; line-height:1.2; }
.btr-cart-line__variant { color:var(--mz-muted); font-family:var(--mz-mono); font-size:.55rem; letter-spacing:.12em; text-transform:uppercase; }
.btr-cart-line__bottom { display:flex; justify-content:space-between; align-items:end; gap:10px; margin-top:12px; }
.btr-cart-line__price { color:var(--mz-paper); font-family:var(--mz-mono); font-size:.74rem; font-weight:700; }
.btr-cart-line__qty { display:flex; align-items:center; border:1px solid var(--mz-hair); }
.btr-cart-line__qty button { width:34px; height:34px; color:var(--mz-paper) !important; }
.btr-cart-line__qty span { min-width:30px; text-align:center; color:var(--mz-paper); font-family:var(--mz-mono); font-size:.66rem; }
.btr-cart-line__remove { margin-top:7px; padding:0 !important; color:var(--mz-muted) !important; font-family:var(--mz-mono) !important; font-size:.52rem !important; letter-spacing:.12em; text-transform:uppercase; text-decoration:underline; text-underline-offset:3px; }
.btr-cart__foot { padding:16px 18px calc(18px + env(safe-area-inset-bottom)); border-top:1px solid var(--mz-hair); background:#000; }
.btr-cart__summary { display:flex; justify-content:space-between; gap:14px; margin-bottom:12px; color:var(--mz-paper); font-family:var(--mz-mono); font-size:.72rem; font-weight:700; text-transform:uppercase; }
.btr-cart__summary small { color:var(--mz-muted); font-size:.54rem; font-weight:500; display:block; margin-top:4px; text-transform:none; }
.btr-cart__checkout { width:100%; min-height:58px; padding:0 16px !important; display:flex; justify-content:space-between; align-items:center; background:var(--mz-lime) !important; color:#000 !important; border:2px solid #000 !important; outline:1px solid var(--mz-lime); box-shadow:5px 5px 0 rgba(242,239,230,.9); font-family:var(--mz-display) !important; font-size:1.2rem !important; letter-spacing:.06em; text-transform:uppercase; }
.btr-cart__checkout:disabled { opacity:.55; cursor:progress; }
.btr-cart__continue { width:100%; margin-top:12px; color:var(--mz-muted) !important; font-family:var(--mz-mono) !important; font-size:.58rem !important; letter-spacing:.16em; text-transform:uppercase; }
.btr-cart__err { display:none; margin:10px 0 0; padding:10px; color:var(--mz-red); border:1px solid var(--mz-red); font-family:var(--mz-mono); font-size:.62rem; }
.btr-cart__err.is-on { display:block; }
.btr-cart__trust { margin:10px 0 0; color:var(--mz-muted-lo); font-family:var(--mz-mono); font-size:.52rem; letter-spacing:.14em; text-transform:uppercase; text-align:center; }

@media (max-width:768px) {
  .btr-cart-fab { right:10px; bottom:calc(10px + env(safe-area-inset-bottom)); min-height:50px; }
  .btr-cart__panel { top:auto; left:0; width:100%; height:min(82vh,720px); border-left:0; border-top:2px solid var(--mz-paper); box-shadow:0 -8px 0 rgba(212,255,31,.18); }
  .btr-zoom__panel { inset:0; border:0; }
  .btr-zoom__bar { min-height:56px; background:#050505; padding-top:calc(8px + env(safe-area-inset-top)); }
  .btr-zoom__title { font-size:.6rem; }
  .btr-zoom__tools button { width:44px; height:44px; }
  .btr-zoom__viewport { padding-bottom:env(safe-area-inset-bottom); }
  .btr-ms__zoomBtn { right:8px; bottom:8px; min-width:44px; height:44px; }
}

@media (max-width: 1240px) {
  .btr-merch { width: min(1280px, calc(100vw - 28px)); padding: 18px; }
  .btr-merch__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .btr-merch__grid.is-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
  .btr-merch { width: calc(100vw - 18px); max-width: calc(100vw - 18px); margin: 1.8rem auto; padding: 14px; box-shadow: 6px 6px 0 rgba(212,255,31,.14); }
  .btr-merch__title { font-size: 2.1rem; }
  .btr-merch__kicker { font-size: .54rem; letter-spacing: .3em; }
  .btr-merch__grid, .btr-merch__grid.is-2, .btr-merch__grid.is-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 12px; }
  .btr-merch__grid.is-solo { grid-template-columns: 1fr; }
  .btr-mp, .btr-mp__hit { gap: 10px; }
  .btr-mp__title { font-size: .88rem; }
  .btr-mp__meta { font-size: .52rem; letter-spacing: .12em; }
  .btr-mp__tag { font-size: .72rem; padding: 5px 8px; bottom: 10px; }
  .btr-mp__no { font-size: .5rem; }
  .btr-mp__quick { min-height: 44px; font-size: .95rem; }
  .btr-mp.is-solo .btr-mp__hit { grid-template-columns: 1fr; gap: 16px; }
  .btr-mp.is-solo .btr-mp__art { max-width: none; }
  .btr-mp.is-solo .btr-mp__title { font-size: clamp(2rem, 11vw, 2.8rem); }
  .btr-mp.is-solo .btr-mp__tag { display: block; }
  .btr-mp.is-solo .btr-mp__price { display: none; }
  .btr-mp__excerpt { -webkit-line-clamp: 3; font-size: .88rem; }
  .btr-mp__cta { width: 100%; justify-content: space-between; }

  .btr-ms__panel { position: fixed; inset: 0; transform: none; width: 100vw; height: 100vh; height: 100dvh; max-width: none; max-height: none; margin: 0; border: 0; border-radius: 0; box-shadow: none; display: flex; flex-direction: column; overflow: hidden; }
  .btr-ms__handle { display: none !important; }
  .btr-ms__close { top: calc(10px + env(safe-area-inset-top)); right: 10px; z-index: 12; width: 40px; height: 40px; border: 0 !important; background: #000 !important; color: var(--mz-paper) !important; box-shadow: 0 0 0 1px rgba(242,239,230,.55), 0 2px 10px rgba(0,0,0,.6); font-size: 1.2rem; }
  .btr-ms__gallery { flex: 0 0 auto; border-right: 0; border-bottom: 1px solid var(--mz-hair); }
  .btr-ms__track { aspect-ratio: auto; height: 44vh; height: 44dvh; min-height: 280px; background: #fff; }
  .btr-ms__nav { display: none; }
  .btr-ms__thumbs { display: none !important; }
  .btr-ms__info { flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; background: #000; }
  .btr-ms__body { padding: 18px 16px 8px; }
  .btr-ms__dock { position: sticky; bottom: 0; padding: 12px 16px calc(14px + env(safe-area-inset-bottom)); background: #000; }
  .btr-ms__title { font-size: clamp(2rem, 9vw, 3rem); line-height: .92; }
  .btr-ms__price { font-size: 1.8rem; }
  .btr-ov { min-height: 48px; min-width: 54px; font-size: .74rem; }
  .btr-buy { min-height: 62px; font-size: 1.2rem; }
}
@media (max-width: 400px) {
  .btr-merch__grid, .btr-merch__grid.is-2, .btr-merch__grid.is-3 { gap: 14px 10px; }
  .btr-mp__stamp span { font-size: 1.2rem; }
  .btr-mp__quick .amt { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .btr-merch *, .btr-ms * { transition: none !important; animation: none !important; }
}

/* ============================================================
   B. COMPONENT-LEVEL GRAMMAR TOKENS. Every decorative BTR literal (lime/paper offset
   shadows, MERCH watermark, image grayscale) is routed to a --merch-* token so it follows
   the selected theme/mood. Zoom stage stays neutral dark (image contrast). Appended after
   the proven base => wins on equal specificity. iOS scroll-lock rule included.
============================================================ */
.btr-merch { background: var(--merch-bg, #000); box-shadow: var(--merch-section-shadow, none); }
#btrMerch .btr-merch__head { background: var(--merch-bg, #000) !important; }
.btr-merch::after { display: var(--merch-watermark-display, none); }
.btr-merch__title { text-shadow: var(--merch-heading-shadow, none); }
.btr-ms__title { text-shadow: var(--merch-heading-shadow, none); color: var(--merch-ink, var(--mz-paper)); }
.btr-mp__art { background: var(--merch-card, #0a0a0a); border-color: var(--merch-border, var(--mz-paper)); border-width: var(--merch-border-width, 2px); border-radius: var(--merch-card-radius, 0px); box-shadow: var(--merch-card-shadow, none); }
.btr-mp__hit:hover .btr-mp__art, .btr-mp__hit:focus-visible .btr-mp__art { box-shadow: var(--merch-card-shadow-hover, var(--merch-card-shadow, none)); }
.btr-mp__img { border-radius: var(--merch-image-radius, 0px); filter: var(--merch-image-filter, none); }
.btr-mp.is-soldout .btr-mp__img { filter: var(--merch-image-filter, none) grayscale(1) brightness(.55); }
.btr-ms__panel { background: var(--merch-panel, #000); box-shadow: var(--merch-panel-shadow, none); }
.btr-ms__gallery { background: var(--merch-gallery, #050505); }
.btr-cart__panel { background: var(--merch-panel, #000); box-shadow: var(--merch-panel-shadow, none); }
.btr-mp__tag { border-radius: var(--merch-price-radius, 0px); box-shadow: var(--merch-price-shadow, none); }
.btr-mp__quick, .btr-mp__cta, .btr-buy, .btr-cart-fab, .btr-cart__checkout, .btr-cart-line__qty { border-radius: var(--merch-button-radius, 0px); box-shadow: var(--merch-button-shadow, none); }
.btr-mp__quick:hover, .btr-mp__cta:hover, .btr-buy:hover, .btr-cart__checkout:hover { box-shadow: var(--merch-button-shadow-hover, var(--merch-button-shadow, none)); }
.btr-merch__cat { border-radius: var(--merch-chip-radius, 0px); }
.btr-mp__quick, .btr-mp__cta, .btr-buy, .btr-cart-fab, .btr-cart__checkout, .btr-mp__tag, .btr-merch__cat[aria-pressed="true"] { color: var(--merch-cta-text, #000) !important; }
.btr-merch__search input, .btr-merch__sortWrap select { background: var(--merch-input-bg, #000); border-radius: var(--merch-input-radius, 0px); }
.btr-merch__search input, .btr-merch__sortWrap select, .btr-ms__body, .btr-ms__info { color: var(--merch-text, var(--mz-text)); }
/* iOS-safe body lock: position:fixed set by JS; this ring belts overflow too */
html.btr-merch-locked, html.btr-merch-locked body { overflow: hidden !important; }
html.btr-merch-locked body { position: fixed; left: 0; right: 0; width: 100%; }

/* ============ C. CONCRETE & GOLD — mapped to concrete's own design tokens (moods override --panel/--gold/--radius/--shadow in :root) ============ */
body[class*="concrete-mood-"] {
  --merch-bg: var(--bg,#05070f); --merch-card: var(--panel-2,#0d1424); --merch-panel: var(--panel,#0b1120); --merch-gallery: var(--bg-2,#080c17);
  --merch-text: var(--text,#f4f4fb); --merch-ink: var(--text,#f4f4fb); --merch-muted: var(--muted,#9ca7bf); --merch-muted-lo: var(--muted-2,#73819c);
  --merch-accent: var(--gold,#f8c44f); --merch-cta-text:#05070f; --merch-border: var(--line,rgba(255,255,255,.08)); --merch-border-lo: var(--line,rgba(255,255,255,.05)); --merch-border-width:1px;
  /* per-mood radius: concrete moods override --radius-* in :root (cyber_rage/gangster/the_hoodz=0 sharp, lofi=6, street=16, nocturnal=22, reggae/y2k=24, r_and_b=30) — merch follows the mood's own design tokens, not a hardcode */
  --merch-card-radius: var(--radius-lg, 18px); --merch-image-radius: var(--radius-md, 16px); --merch-button-radius: var(--radius-md, 14px); --merch-input-radius: var(--radius-sm, 12px); --merch-chip-radius: var(--radius-lg, 999px); --merch-price-radius: var(--radius-sm, 999px);
  --merch-card-shadow: var(--shadow-md,0 14px 30px rgba(0,0,0,.35)); --merch-card-shadow-hover: var(--shadow-lg,0 22px 60px rgba(0,0,0,.45));
  --merch-section-shadow: var(--shadow-lg,0 22px 60px rgba(0,0,0,.45)); --merch-panel-shadow: var(--shadow-lg,0 22px 60px rgba(0,0,0,.45));
  --merch-button-shadow:none; --merch-button-shadow-hover: var(--shadow-md,0 14px 30px rgba(0,0,0,.35)); --merch-price-shadow:none; --merch-heading-shadow:none;
  --merch-image-filter:none; --merch-watermark-display:none;
  --merch-font-display:'Bebas Neue','Anton',sans-serif; --merch-font-body:'Inter',system-ui,sans-serif; --merch-font-mono:'Inter',system-ui,sans-serif;
  --merch-input-bg: var(--merch-panel, rgba(0,0,0,.5));
}
/* --- concrete per-mood CTA on-accent (computed WCAG; grammar+colour come from the mood's own :root tokens) --- */
body.concrete-mood-90s_boom_bap_graffiti { --merch-cta-text: #000; }
body.concrete-mood-cyber_rage { --merch-cta-text: #000; }
body.concrete-mood-gangster_rap { --merch-cta-text: #fff; }
body.concrete-mood-lofi { --merch-cta-text: #000; }
body.concrete-mood-nocturnal { --merch-cta-text: #000; }
body.concrete-mood-r_and_b_soul { --merch-cta-text: #000; }
body.concrete-mood-reggae { --merch-cta-text: #000; }
body.concrete-mood-street_hip_hop { --merch-cta-text: #000; }
body.concrete-mood-the_hoodz { --merch-cta-text: #000; }
body.concrete-mood-y2k_bling_era { --merch-cta-text: #fff; }
body.concrete-mood-kend_lamr { --merch-cta-text: #fff; }   /* aliased physical mood: blueprint-blue accent (#0047ff) needs WHITE on-accent text (~6.2:1 AA); the direct-mood overrides above don't cover it. Keeps the blue accent; only the merch on-accent text token changes. */

/* ============ D. THE MANIFESTO — hard editorial (0-radius, 2px rule, no shadow, Anton/Inter/JetBrains). Colours from --mm-* (moods override). z-index above 99999. ============ */
body[class*="manifesto-mood-"] {
  --merch-bg: var(--mm-bg,#0a0a0a); --merch-card: var(--mm-paper,#131313); --merch-panel: var(--mm-paper,#131313); --merch-gallery: var(--mm-paper-3,#101010);
  --merch-text: var(--mm-ink,#fff); --merch-ink: var(--mm-ink,#fff); --merch-muted: var(--mm-ink-mute,#6a6a6a); --merch-muted-lo: var(--mm-ink-mute,#6a6a6a);
  --merch-accent: var(--mm-accent,#ff3b1f); --merch-cta-text:#000; --merch-border: var(--mm-rule,rgba(255,255,255,.12)); --merch-border-lo: var(--mm-rule-soft,rgba(255,255,255,.06)); --merch-border-width:2px;
  --merch-card-radius:0px; --merch-image-radius:0px; --merch-button-radius:0px; --merch-input-radius:0px; --merch-chip-radius:0px; --merch-price-radius:0px;
  --merch-card-shadow:none; --merch-card-shadow-hover:none; --merch-section-shadow:none; --merch-panel-shadow:none; --merch-button-shadow:none; --merch-button-shadow-hover:none; --merch-price-shadow:none; --merch-heading-shadow:none;
  --merch-image-filter:none; --merch-watermark-display:none;
  --merch-font-display: var(--mm-display,'Anton',sans-serif); --merch-font-body: var(--mm-sans,'Inter',system-ui,sans-serif); --merch-font-mono: var(--mm-mono,'JetBrains Mono',monospace);
  --merch-input-bg: var(--mm-bg,#0a0a0a);
}
body[class*="manifesto-mood-"] .btr-ms{z-index:100500;} body[class*="manifesto-mood-"] .btr-cart{z-index:102000;} body[class*="manifesto-mood-"] .btr-zoom{z-index:103000;}
/* --- manifesto per-mood CTA on-accent (computed WCAG; grammar+colour come from the mood's own :root tokens) --- */
body.manifesto-mood-avant_garde { --merch-cta-text: #000; }
body.manifesto-mood-big_billboard { --merch-cta-text: #000; }
body.manifesto-mood-black_ice { --merch-cta-text: #000; }
body.manifesto-mood-blood_moon_ritual { --merch-cta-text: #fff; }
body.manifesto-mood-bootleg_championship { --merch-cta-text: #fff; }
body.manifesto-mood-burnt_analog_mixtape { --merch-cta-text: #000; }
body.manifesto-mood-faded_newsprint { --merch-cta-text: #fff; }
body.manifesto-mood-gang_battle { --merch-cta-text: #fff; }
body.manifesto-mood-industrial_concrete { --merch-cta-text: #000; }
body.manifesto-mood-luxury_noir { --merch-cta-text: #000; }
body.manifesto-mood-midnight_print { --merch-cta-text: #000; }
body.manifesto-mood-monochrome_zine { --merch-cta-text: #000; }
body.manifesto-mood-rebel_propaganda { --merch-cta-text: #fff; }
body.manifesto-mood-reggae { --merch-cta-text: #000; }
body.manifesto-mood-soul_smoke_jazz_rap { --merch-cta-text: #fff; }
body.manifesto-mood-street_hiphop { --merch-cta-text: #000; }

/* ============ F. BRUTALIST EPK — bone/ink/rouge, 0-radius, 1px ink rule, no shadow, Anton/Fraunces/JetBrains. LIGHT surface. ============ */
body.merch-brutalist {
  --merch-bg: var(--bone,#ECE6D9); --merch-card: var(--bone-2,#DCD3C0); --merch-panel: var(--bone,#ECE6D9); --merch-gallery: var(--bone-3,#C9BFA8);
  --merch-text: var(--ink,#0E0E0E); --merch-ink: var(--ink,#0E0E0E); --merch-muted: var(--muted,#6E6A60); --merch-muted-lo: var(--muted,#6E6A60);
  --merch-accent: var(--rouge,#E5331E); --merch-cta-text: var(--bone,#ECE6D9); --merch-border: var(--hairline,#0E0E0E); --merch-border-lo: var(--hairline,#0E0E0E); --merch-border-width:1px;
  --merch-card-radius:0px; --merch-image-radius:0px; --merch-button-radius:0px; --merch-input-radius:0px; --merch-chip-radius:0px; --merch-price-radius:0px;
  --merch-card-shadow:none; --merch-card-shadow-hover:none; --merch-section-shadow:none; --merch-panel-shadow:none; --merch-button-shadow:none; --merch-button-shadow-hover:none; --merch-price-shadow:none; --merch-heading-shadow:none;
  --merch-image-filter:none; --merch-watermark-display:none;
  --merch-font-display: var(--f-display,'Anton',sans-serif); --merch-font-body: var(--f-serif,'Fraunces','Times New Roman',serif); --merch-font-mono: var(--f-mono,'JetBrains Mono',monospace);
  --merch-input-bg: rgba(236,230,217,.92);
}
body.merch-brutalist .btr-mp__hit:hover .btr-mp__art{ transform: translate(-2px,-2px); }

/* ============ G. RESPONSIVE — keep the mood on mobile (image pane follows theme, not hard white). Zoom stays dark. ============ */
@media (max-width: 768px) {
  .btr-ms__track { background: var(--merch-gallery, #fff) !important; }
  .btr-ms__close { background: var(--merch-panel, #000) !important; color: var(--merch-ink, var(--mz-paper)) !important; }
}

/* residual selected-state shadows -> tokens (kills the last paper offset leaks on premium) */
.btr-ov[aria-pressed="true"] { color: var(--merch-cta-text, #000) !important; box-shadow: var(--merch-button-shadow, none); }
.btr-merch__cat[aria-pressed="true"] { box-shadow: var(--merch-button-shadow, none); }

/* neutralize BTR arm-bounce offset shadow on premium (keyframe cannot be tokenized) */
.btr-buy.is-armed { animation: none !important; }

/* CTA FILL must out-specify the .btr-* button{background:none} reset. BUYABLE state only (state classes keep their own bg). */
.btr-buy:not(.is-idle):not(.is-soldout):not(.is-gone):not(.is-loading) { background: var(--merch-accent) !important; color: var(--merch-cta-text) !important; border: var(--merch-border-width, 2px) solid var(--merch-accent) !important; outline: 0 !important; }
.btr-mp__quick:not(.is-loading) { background: var(--merch-accent) !important; color: var(--merch-cta-text) !important; }

/* Brutalist CTA uses its NATIVE ink button (ink bg + bone text, AA ~18) rather than rouge fill (bone-on-rouge=3.5, fails AA). Rouge stays for chips/tags. */
body.merch-brutalist .btr-buy:not(.is-idle):not(.is-soldout):not(.is-gone):not(.is-loading),
body.merch-brutalist .btr-mp__quick:not(.is-loading) { background: var(--ink, #0E0E0E) !important; color: var(--bone, #ECE6D9) !important; border-color: var(--ink, #0E0E0E) !important; }

/* Brutalist accent-fill readability (Merch-scoped; theme untouched). --merch-cta-text is bone,
   calibrated for the ink CTA, so bone on the rouge fills is only ~3.5:1. Rouge chips (price badge,
   selected category, selected variant) take BLACK text (~4.8:1 AA, keeps the rouge accent). The cart
   checkout is a primary action => native ink treatment (ink bg + bone text, ~15:1) matching the buy/quick CTA. */
body.merch-brutalist .btr-mp__tag,
body.merch-brutalist .btr-merch__cat[aria-pressed="true"],
body.merch-brutalist .btr-ov[aria-pressed="true"] { color: #000 !important; }
body.merch-brutalist .btr-cart__checkout { background: var(--ink, #0E0E0E) !important; color: var(--bone, #ECE6D9) !important; border-color: var(--ink, #0E0E0E) !important; }
