/* ============================================================
   THE IMMERSIVE MASONRY GALLERY — shop.php
   Indigo #1A1040 · gold #F0C14B · chalk #F2F0EA
   Unaligned column-count masonry, persistent radial filter
   utility in the bottom-right quadrant, orbit-dot navigation.
   ============================================================ */

body.a91-masonry-gallery {
  --indigo: #1A1040;
  --indigo-2: #241659;
  --indigo-3: #120B2D;
  --gold: #F0C14B;
  --gold-deep: #C89422;
  --chalk: #F2F0EA;
  --chalk-dim: rgba(242, 240, 234, 0.82);
  --line: rgba(242, 240, 234, 0.18);
  --ease: cubic-bezier(0.19, 1, 0.22, 1);
  --axis-pad: 3.5rem;

  background: var(--indigo);
  color: var(--chalk);
  font-family: 'Jost', 'Segoe UI', sans-serif;
  font-size: 16px;
  line-height: 1.6;
  overflow-x: clip;
}
body.a91-masonry-gallery ::selection { background: var(--gold); color: var(--indigo); }
body.a91-masonry-gallery :focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }

.mg-wash {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(60rem 40rem at 12% -10%, rgba(240, 193, 75, 0.16), transparent 70%),
    radial-gradient(48rem 48rem at 96% 104%, rgba(240, 193, 75, 0.12), transparent 68%),
    linear-gradient(180deg, var(--indigo-3), var(--indigo) 40%, var(--indigo-3));
}

/* ============================================================
   GALLERY
   ============================================================ */
.mg-gallery {
  position: relative;
  z-index: 10;
  max-width: 104rem;
  margin: 0 auto;
  padding: clamp(2rem, 4.5vw, 4rem) clamp(1rem, 4vw, 4rem) clamp(7rem, 12vh, 10rem);
}
body.a91-has-axis.a91-masonry-gallery .mg-gallery {
  padding-right: max(clamp(1rem, 4vw, 4rem), var(--axis-pad));
  padding-bottom: clamp(6rem, 10vh, 8.5rem);
}

/* ---------- wall plaque (brand-first header) ---------- */
.mg-plaque {
  max-width: 48rem;
  margin-bottom: clamp(1.75rem, 4vw, 3.2rem);
  padding-left: clamp(0.75rem, 2.5vw, 2.4rem);
  border-left: 3px solid var(--gold);
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
}
.mg-plaque-house {
  margin: 0 0 0.45rem;
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.32em;
  text-transform: uppercase;
}
.mg-plaque-brand {
  margin: 0 0 0.35rem;
  font-family: 'Bodoni Moda', Georgia, serif;
  font-size: clamp(2.4rem, 6.5vw, 5rem);
  font-weight: 900;
  line-height: 0.92;
  letter-spacing: -0.025em;
  text-transform: uppercase;
  color: var(--chalk);
  text-wrap: balance;
}
.mg-plaque-title {
  margin: 0 0 0.55rem;
  font-family: 'Bodoni Moda', Georgia, serif;
  font-size: clamp(1.2rem, 2.8vw, 1.85rem);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--gold);
}
.mg-plaque-search { margin: 0 0 0.7rem; color: var(--chalk); font-size: 1rem; }
.mg-plaque-search em { font-family: 'Bodoni Moda', serif; font-style: italic; color: var(--gold); }
.mg-plaque-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.4rem;
  align-items: baseline;
  font-size: 0.8rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--chalk-dim);
}
.mg-count strong { color: var(--gold); font-family: 'Bodoni Moda', serif; font-size: 1.25rem; letter-spacing: 0; }
.mg-active { color: var(--indigo); background: var(--gold); padding: 0.15rem 0.55rem; font-weight: 600; }

/* ---------- unaligned masonry ---------- */
.mg-masonry {
  column-count: 4;
  column-gap: clamp(0.9rem, 2vw, 1.8rem);
}
.mg-masonry[data-cols='2'] { column-count: 2; }
.mg-masonry[data-cols='3'] { column-count: 3; }
.mg-masonry[data-cols='4'] { column-count: 4; }
.mg-masonry[data-cols='5'] { column-count: 5; }

/* the shop card include, restyled as a hung gallery plate */
.mg-masonry .a91-shop-card {
  position: relative;
  display: block;
  break-inside: avoid;
  width: 100%;
  margin: 0 0 clamp(0.9rem, 2vw, 1.8rem);
  background: var(--chalk);
  color: var(--indigo);
  border: 1px solid rgba(26, 16, 64, 0.16);
  box-shadow: 0 10px 26px rgba(9, 5, 24, 0.4);
  opacity: 0;
  transform: translateY(26px) rotate(0deg);
  transition:
    opacity 0.6s var(--ease),
    transform 0.72s var(--ease),
    box-shadow 0.4s var(--ease);
}
.mg-masonry .a91-shop-card.is-hung { opacity: 1; transform: none; }

/* deliberately unaligned rhythm */
.mg-masonry .a91-shop-card:nth-child(4n + 1) { margin-top: 0; }
.mg-masonry .a91-shop-card:nth-child(4n + 2) { margin-top: clamp(0.8rem, 2.6vw, 2.6rem); }
.mg-masonry .a91-shop-card:nth-child(4n + 3) { margin-top: clamp(0.3rem, 1.2vw, 1.2rem); }
.mg-masonry .a91-shop-card:nth-child(4n) { margin-top: clamp(1.2rem, 3.4vw, 3.4rem); }
.mg-masonry .a91-shop-card:nth-child(7n) { margin-left: clamp(0rem, 1vw, 1rem); }
.mg-masonry .a91-shop-card:nth-child(5n) { margin-right: clamp(0rem, 1.2vw, 1.2rem); }

.mg-masonry .a91-shop-card:hover {
  box-shadow: 0 22px 46px rgba(9, 5, 24, 0.6);
  transform: translateY(-7px) rotate(-0.5deg);
  z-index: 5;
}

.mg-masonry .a91-shop-card-link {
  display: block;
  color: inherit;
  text-decoration: none;
}
.mg-masonry .a91-shop-card-img {
  position: relative;
  overflow: hidden;
  background: #E6E2D6;
  border-bottom: 1px solid rgba(26, 16, 64, 0.14);
}
body.a91-masonry-gallery .mg-masonry .a91-shop-card-img img {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  transition: transform 0.9s var(--ease), filter 0.5s ease;
}
/* varied plate proportions keep the columns from lining up */
.mg-masonry .a91-shop-card:nth-child(4n + 1) .a91-shop-card-img { aspect-ratio: 3 / 4; }
.mg-masonry .a91-shop-card:nth-child(4n + 2) .a91-shop-card-img { aspect-ratio: 1 / 1; }
.mg-masonry .a91-shop-card:nth-child(4n + 3) .a91-shop-card-img { aspect-ratio: 4 / 5; }
.mg-masonry .a91-shop-card:nth-child(4n) .a91-shop-card-img { aspect-ratio: 5 / 7; }
.mg-masonry .a91-shop-card:hover .a91-shop-card-img img { transform: scale(1.07); }

.mg-masonry .a91-shop-sale {
  position: absolute;
  z-index: 3;
  top: 0;
  left: 0;
  padding: 0.28rem 0.75rem;
  background: var(--gold);
  color: var(--indigo);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.mg-masonry .a91-shop-card-title {
  margin: 0.85rem 0.95rem 0.35rem;
  font-family: 'Bodoni Moda', Georgia, serif;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.005em;
  color: var(--indigo);
}
.mg-masonry .a91-shop-card-price {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin: 0 0.95rem 1rem;
  padding-top: 0.5rem;
  border-top: 1px solid rgba(26, 16, 64, 0.16);
}
.mg-masonry .a91-shop-card-price s { color: rgba(26, 16, 64, 0.5); font-size: 0.82rem; }
.mg-masonry .a91-shop-card-price strong {
  font-family: 'Bodoni Moda', serif;
  font-size: 1.18rem;
  font-weight: 900;
  color: var(--indigo);
}
.mg-masonry .a91-shop-card.is-sold-out { filter: saturate(0.35); }
.mg-masonry .a91-shop-card.is-sold-out .a91-shop-card-img::after {
  content: 'Sold out';
  position: absolute;
  inset: auto 0 0 0;
  padding: 0.4rem 0.9rem;
  background: var(--indigo);
  color: var(--chalk);
  font-size: 0.7rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

/* ---------- empty ---------- */
.mg-empty {
  max-width: 34rem;
  padding: 2rem;
  border: 2px solid var(--line);
  background: rgba(36, 22, 89, 0.6);
  box-shadow: 6px 6px 0 rgba(9, 5, 24, 0.45);
}
.mg-empty p { margin: 0 0 1rem; font-size: 1.05rem; }
.mg-empty a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.85rem;
  padding: 0.7rem 1.3rem;
  border: 2px solid var(--gold);
  background: var(--gold);
  color: var(--indigo);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  box-shadow: 4px 4px 0 rgba(9, 5, 24, 0.55);
  transition:
    transform 0.14s ease,
    box-shadow 0.14s ease,
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease;
}
.mg-empty a:hover,
.mg-empty a:focus-visible {
  background: var(--chalk);
  border-color: var(--chalk);
  color: var(--indigo);
  transform: translate(2px, 2px);
  box-shadow: 2px 2px 0 rgba(9, 5, 24, 0.55);
  outline: none;
}
.mg-empty a:active {
  transform: translate(4px, 4px);
  box-shadow: 0 0 0 transparent;
}

/* ---------- pagination (include markup) ---------- */
.a91-shop-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  margin-top: clamp(2rem, 4vw, 3.2rem);
  padding-top: 1.4rem;
  border-top: 1px solid var(--line);
}
.a91-page-num,
.a91-page-arrow {
  display: grid;
  place-items: center;
  min-width: 2.7rem;
  height: 2.7rem;
  padding: 0 0.5rem;
  border: 2px solid var(--line);
  color: var(--chalk);
  font-family: 'Bodoni Moda', serif;
  font-size: 0.95rem;
  text-decoration: none;
  box-shadow: 3px 3px 0 transparent;
  transition:
    transform 0.14s ease,
    box-shadow 0.14s ease,
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease;
}
.a91-page-num:hover,
.a91-page-num:focus-visible,
.a91-page-arrow:hover,
.a91-page-arrow:focus-visible {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--indigo);
  transform: translate(1px, 1px);
  box-shadow: 2px 2px 0 rgba(9, 5, 24, 0.45);
  outline: none;
}
.a91-page-num.is-active {
  background: var(--chalk);
  border-color: var(--chalk);
  color: var(--indigo);
  font-weight: 900;
  box-shadow: 3px 3px 0 rgba(240, 193, 75, 0.45);
}
.a91-page-gap { color: var(--chalk-dim); padding: 0 0.3rem; }

.mg-colophon {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 2rem;
  justify-content: space-between;
  margin-top: clamp(2.5rem, 5vw, 4rem);
  padding-top: 1.2rem;
  border-top: 1px solid var(--line);
  color: var(--chalk-dim);
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

/* ============================================================
   ORBIT NAV — dots on an arc around the radial hub
   ============================================================ */
.mg-orbit {
  position: fixed;
  z-index: 150;
  right: clamp(4.4rem, 6vw, 5.8rem);
  bottom: clamp(4.4rem, 6vw, 5.8rem);
  width: 0;
  height: 0;
  overflow: visible;
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.mg-orbit-dot {
  position: absolute;
  top: 0;
  left: 0;
  display: grid;
  place-items: center;
  width: 2.7rem;
  height: 2.7rem;
  margin: -1.35rem 0 0 -1.35rem;
  border: 1px solid var(--gold);
  border-radius: 50%;
  background: var(--indigo-3);
  color: var(--gold);
  text-decoration: none;
  transform:
    rotate(calc(180deg + var(--o) * 12.85deg))
    translate(clamp(7.2rem, 13vw, 10.5rem))
    rotate(calc(-180deg - var(--o) * 12.85deg));
  transition: background 0.28s ease, color 0.28s ease, border-color 0.28s ease, box-shadow 0.3s ease;
}
.mg-orbit-code { font-family: 'Bodoni Moda', serif; font-size: 0.8rem; font-weight: 700; }
.mg-orbit-label {
  position: absolute;
  right: calc(100% + 0.5rem);
  padding: 0.25rem 0.6rem;
  background: var(--gold);
  color: var(--indigo);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;
  opacity: 0;
  transform: translateX(6px);
  pointer-events: none;
  transition: opacity 0.28s ease, transform 0.32s var(--ease);
}
.mg-orbit-dot:hover,
.mg-orbit-dot:focus-visible {
  background: var(--gold);
  color: var(--indigo);
  box-shadow: 0 0 0 6px rgba(240, 193, 75, 0.18);
}
.mg-orbit-dot:hover .mg-orbit-label,
.mg-orbit-dot:focus-visible .mg-orbit-label,
.mg-orbit:focus-within .mg-orbit-label,
.mg-orbit-dot.is-here .mg-orbit-label {
  opacity: 1;
  transform: none;
}
.mg-orbit-dot.is-here { background: var(--chalk); border-color: var(--chalk); color: var(--indigo); }

/* Dim + shift when filters open — keep destinations usable */
body.a91-filters-open .mg-orbit {
  opacity: 0.55;
  transform: translateX(-5.5rem);
  pointer-events: auto;
}

/* ============================================================
   RADIAL FILTER UTILITY (bottom-right quadrant)
   ============================================================ */
.mg-radial-backdrop {
  position: fixed;
  inset: 0;
  z-index: 170;
  background: radial-gradient(circle at 92% 92%, rgba(18, 11, 45, 0.55), rgba(9, 5, 24, 0.88));
  backdrop-filter: blur(2px);
}

.mg-hub {
  position: fixed;
  z-index: 200;
  right: clamp(1rem, 2.4vw, 2rem);
  bottom: clamp(1rem, 2.4vw, 2rem);
  width: 5.6rem;
  height: 5.6rem;
  padding: 0;
  border: 3px solid var(--indigo-3);
  border-radius: 50%;
  background: var(--gold);
  color: var(--indigo);
  cursor: pointer;
  box-shadow: 0 14px 34px rgba(9, 5, 24, 0.6), 4px 4px 0 rgba(242, 240, 234, 0.2);
  transition: transform 0.35s var(--ease), background 0.25s ease, box-shadow 0.25s ease;
}
.mg-hub-ring {
  position: absolute;
  inset: -0.55rem;
  border: 1px dashed rgba(240, 193, 75, 0.7);
  border-radius: 50%;
  animation: mg-spin 22s linear infinite;
}
@keyframes mg-spin { to { transform: rotate(360deg); } }
.mg-hub-core {
  position: relative;
  display: grid;
  place-items: center;
  gap: 0.1rem;
  width: 100%;
  height: 100%;
}
.mg-hub-word {
  font-family: 'Bodoni Moda', serif;
  font-size: 0.95rem;
  font-weight: 900;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.mg-hub-badge {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  min-width: 1.4rem;
  padding: 0.05rem 0.3rem;
  border-radius: 999px;
  background: var(--indigo);
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 600;
}
.mg-hub:hover,
.mg-hub:focus-visible {
  transform: scale(1.05) translate(-1px, -1px);
  background: var(--chalk);
  color: var(--indigo);
  box-shadow: 0 18px 40px rgba(9, 5, 24, 0.65), 2px 2px 0 var(--gold);
  outline: none;
}
.mg-hub:active {
  transform: scale(0.98);
}
body.a91-filters-open .mg-hub {
  transform: rotate(135deg) scale(0.92);
  background: var(--chalk);
  color: var(--indigo);
}
body.a91-filters-open .mg-hub-word { font-size: 0.8rem; }

.mg-radial {
  position: fixed;
  z-index: 190;
  right: clamp(1rem, 2.4vw, 2rem);
  bottom: clamp(1rem, 2.4vw, 2rem);
  width: min(26rem, calc(100vw - 2rem));
  max-height: min(80vh, 44rem);
  overflow-y: auto;
  padding: 2.6rem 1.5rem 1.6rem 2.4rem;
  background: var(--indigo-2);
  color: var(--chalk);
  border: 1px solid rgba(240, 193, 75, 0.4);
  border-radius: 15rem 1.2rem 1.2rem 1.2rem;
  box-shadow: 0 26px 60px rgba(9, 5, 24, 0.7);
  transform-origin: 100% 100%;
  transform: scale(0.35) rotate(-14deg);
  opacity: 0;
  pointer-events: none;
  transition: transform 0.6s var(--ease), opacity 0.35s ease;
  scrollbar-width: thin;
  scrollbar-color: var(--gold) var(--indigo-3);
}
body.a91-filters-open .mg-radial {
  transform: none;
  opacity: 1;
  pointer-events: auto;
}
.mg-radial::-webkit-scrollbar { width: 8px; }
.mg-radial::-webkit-scrollbar-thumb { background: var(--gold); }
.mg-radial::-webkit-scrollbar-track { background: var(--indigo-3); }

.mg-radial-head { margin-bottom: 1.2rem; padding-right: 4.5rem; }
.mg-radial-head h2 {
  margin: 0 0 0.2rem;
  font-family: 'Bodoni Moda', serif;
  font-size: 1.5rem;
  font-weight: 900;
  letter-spacing: -0.01em;
}
.mg-radial-head p { margin: 0; color: var(--chalk-dim); font-size: 0.8rem; letter-spacing: 0.1em; text-transform: uppercase; }

.mg-radial-form { display: grid; gap: 0.2rem; }
.mg-arc { border-top: 1px solid var(--line); }
.mg-arc-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 0.8rem 0.2rem;
  border: 0;
  background: transparent;
  color: var(--chalk);
  font-family: 'Jost', sans-serif;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  transition: color 0.24s ease, padding-left 0.3s var(--ease);
}
.mg-arc-head:hover,
.mg-arc-head:focus-visible {
  color: var(--gold);
  padding-left: 0.6rem;
  outline: none;
}
.mg-arc-mark {
  position: relative;
  width: 0.95rem;
  height: 0.95rem;
  border: 1px solid currentColor;
  border-radius: 50%;
  flex: 0 0 auto;
  transition: transform 0.4s var(--ease), background 0.3s ease;
}
.mg-arc-mark::before,
.mg-arc-mark::after {
  content: '';
  position: absolute;
  background: currentColor;
}
.mg-arc-mark::before { top: 50%; left: 22%; right: 22%; height: 1px; transform: translateY(-50%); }
.mg-arc-mark::after { left: 50%; top: 22%; bottom: 22%; width: 1px; transform: translateX(-50%); transition: opacity 0.25s ease; }
.mg-arc.is-open .mg-arc-mark { transform: rotate(180deg); }
.mg-arc.is-open .mg-arc-mark::after { opacity: 0; }
.mg-arc-panel { padding: 0 0.2rem 1rem; display: grid; gap: 0.5rem; }
.mg-arc-panel[hidden] { display: none; }

.mg-check {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  font-size: 0.86rem;
  color: var(--chalk);
  cursor: pointer;
  padding: 0.22rem 0.3rem;
  transition: background 0.22s ease, color 0.22s ease;
}
.mg-check:hover { background: rgba(240, 193, 75, 0.14); }
.mg-check input {
  appearance: none;
  -webkit-appearance: none;
  width: 1.05rem;
  height: 1.05rem;
  margin: 0.22rem 0 0;
  border: 1px solid var(--gold);
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  flex: 0 0 auto;
  transition: background 0.2s ease, box-shadow 0.2s ease;
}
.mg-check input:checked { background: var(--gold); box-shadow: inset 0 0 0 3px var(--indigo-2); }

.mg-select { display: grid; gap: 0.3rem; }
.mg-select > span,
.mg-cols > span {
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
}
.mg-select select {
  width: 100%;
  padding: 0.65rem 0.75rem;
  border: 2px solid var(--line);
  border-radius: 0;
  background: var(--indigo-3);
  color: var(--chalk);
  font-family: 'Jost', sans-serif;
  font-size: 0.86rem;
}
.mg-select select:focus { outline: none; border-color: var(--gold); }

.mg-cols { display: grid; gap: 0.35rem; margin-top: 0.7rem; }
.mg-cols-btns { display: flex; gap: 0.35rem; }
.mg-col-btn {
  flex: 1 1 auto;
  min-height: 2.4rem;
  padding: 0.45rem 0.25rem;
  border: 2px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--chalk);
  font-family: 'Bodoni Moda', serif;
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  cursor: pointer;
  box-shadow: 2px 2px 0 transparent;
  transition:
    transform 0.14s ease,
    box-shadow 0.14s ease,
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease;
}
.mg-col-btn:hover,
.mg-col-btn:focus-visible {
  border-color: var(--gold);
  color: var(--gold);
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 rgba(240, 193, 75, 0.45);
  outline: none;
}
.mg-col-btn.is-active {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--indigo);
  font-weight: 900;
  box-shadow: 3px 3px 0 rgba(9, 5, 24, 0.45);
}
.mg-col-btn.is-active:hover,
.mg-col-btn.is-active:focus-visible {
  background: var(--chalk);
  border-color: var(--chalk);
  color: var(--indigo);
}

.mg-price-note { margin: 0 0 0.2rem; color: var(--chalk-dim); font-size: 0.78rem; }
.mg-price-row { display: flex; gap: 0.5rem; }
.mg-price-field {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  flex: 1 1 0;
  padding: 0.45rem 0.6rem;
  border: 2px solid var(--line);
  border-radius: 0;
  background: var(--indigo-3);
}
.mg-price-field > span { color: var(--gold); font-size: 0.85rem; }
.mg-price-field input {
  width: 100%;
  min-width: 0;
  border: 0;
  background: transparent;
  color: var(--chalk);
  font-family: 'Jost', sans-serif;
  font-size: 0.86rem;
}
.mg-price-field input::placeholder { color: rgba(242, 240, 234, 0.72); }
.mg-price-field input:focus { outline: none; }
.mg-price-field:focus-within { border-color: var(--gold); }
.mg-apply {
  justify-self: start;
  margin-top: 0.35rem;
  min-height: 2.7rem;
  padding: 0.6rem 1.2rem;
  border: 2px solid var(--gold);
  border-radius: 0;
  background: var(--gold);
  color: var(--indigo);
  font-family: 'Jost', sans-serif;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  cursor: pointer;
  box-shadow: 4px 4px 0 rgba(9, 5, 24, 0.5);
  transition:
    transform 0.14s ease,
    box-shadow 0.14s ease,
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease;
}
.mg-apply:hover,
.mg-apply:focus-visible {
  background: var(--chalk);
  border-color: var(--chalk);
  color: var(--indigo);
  transform: translate(2px, 2px);
  box-shadow: 2px 2px 0 rgba(9, 5, 24, 0.5);
  outline: none;
}
.mg-apply:active {
  transform: translate(4px, 4px);
  box-shadow: 0 0 0 transparent;
}

.mg-clear {
  display: inline-flex;
  align-items: center;
  margin-top: 0.9rem;
  min-height: 2.4rem;
  padding: 0.45rem 0.85rem;
  border: 2px solid var(--line);
  background: transparent;
  color: var(--chalk);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  box-shadow: 3px 3px 0 transparent;
  transition:
    transform 0.14s ease,
    box-shadow 0.14s ease,
    color 0.2s ease,
    border-color 0.2s ease,
    background 0.2s ease;
}
.mg-clear:hover,
.mg-clear:focus-visible {
  color: var(--indigo);
  background: var(--gold);
  border-color: var(--gold);
  transform: translate(1px, 1px);
  box-shadow: 2px 2px 0 rgba(9, 5, 24, 0.4);
  outline: none;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1200px) {
  .mg-masonry[data-cols='5'] { column-count: 4; }
}
@media (max-width: 980px) {
  .mg-masonry,
  .mg-masonry[data-cols='4'],
  .mg-masonry[data-cols='5'] { column-count: 3; }
  .mg-orbit-dot { transform: rotate(calc(180deg + var(--o) * 12.85deg)) translate(6.4rem) rotate(calc(-180deg - var(--o) * 12.85deg)); }
}
@media (max-width: 760px) {
  .mg-masonry,
  .mg-masonry[data-cols='3'],
  .mg-masonry[data-cols='4'],
  .mg-masonry[data-cols='5'] { column-count: 2; }

  /* orbit collapses into a bottom-left cluster so it never fights the hub */
  .mg-orbit {
    right: auto;
    left: 0.7rem;
    bottom: 0.7rem;
    width: min(15rem, calc(100vw - 8.5rem));
    height: auto;
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
  }
  .mg-orbit-dot {
    position: static;
    margin: 0;
    width: auto;
    height: auto;
    padding: 0.3rem 0.55rem;
    border-radius: 999px;
    transform: none;
    gap: 0.35rem;
    grid-auto-flow: column;
  }
  .mg-orbit-label {
    position: static;
    opacity: 1;
    transform: none;
    padding: 0;
    background: transparent;
    color: inherit;
    font-size: 0.66rem;
  }
  .mg-hub { width: 4.4rem; height: 4.4rem; }
  .mg-hub-word { font-size: 0.78rem; }
  .mg-radial { border-radius: 8rem 1rem 1rem 1rem; padding: 2rem 1.1rem 1.2rem 1.6rem; }
}
@media (max-width: 460px) {
  .mg-masonry,
  .mg-masonry[data-cols='2'],
  .mg-masonry[data-cols='3'],
  .mg-masonry[data-cols='4'],
  .mg-masonry[data-cols='5'] { column-count: 1; }
  .mg-masonry .a91-shop-card { margin-top: 0 !important; margin-left: 0 !important; margin-right: 0 !important; }
}

@media (prefers-reduced-motion: reduce) {
  body.a91-masonry-gallery *,
  body.a91-masonry-gallery *::before,
  body.a91-masonry-gallery *::after {
    transition-duration: 0.001ms !important;
    animation: none !important;
  }
  .mg-masonry .a91-shop-card { opacity: 1; transform: none; }
}
