/* Universal purchase button — Next.js PurchaseStorePanel */

.mns-purchase-panel {
  --purchase-store-radius: var(--mns-radius, 4px);
  --purchase-store-control-height: clamp(44px, 5vw, 52px);
  --purchase-store-button-font-size: clamp(15px, 1.8vw, 18px);
  --purchase-store-panel-padding: clamp(10px, 2vw, 16px);
  position: relative;
  z-index: 30;
  display: grid;
  gap: 10px;
  width: 100%;
  overflow: visible;
  isolation: isolate;
}

.mns-purchase-panel__title {
  margin: 0;
  color: var(--mns-muted, #6f7672);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-align: center;
  text-transform: uppercase;
}

.mns-purchase-panel__button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: var(--purchase-store-control-height);
  padding: 0 clamp(18px, 3vw, 28px);
  border: 1px solid color-mix(in srgb, var(--mns-ink, #2E2F2F) 88%, black);
  border-radius: var(--purchase-store-radius);
  background:
    linear-gradient(
      180deg,
      color-mix(in srgb, var(--mns-ink, #2E2F2F) 92%, black) 0%,
      color-mix(in srgb, var(--mns-ink, #2E2F2F) 82%, black) 100%
    );
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.1),
    0 16px 38px rgba(20, 24, 22, 0.18);
  color: #fff;
  cursor: pointer;
  font: inherit;
  font-size: var(--purchase-store-button-font-size);
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1;
  text-align: center;
  transition:
    transform 180ms ease,
    border-color 180ms ease,
    background-color 180ms ease,
    box-shadow 180ms ease;
}

.mns-purchase-panel__button:hover,
.mns-purchase-panel__button:focus-visible {
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.14),
    0 20px 46px rgba(20, 24, 22, 0.22);
}

.mns-purchase-panel__button:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--mns-accent, #9EA7A2) 32%, transparent);
  outline-offset: 4px;
}

.mns-purchase-panel__button[aria-expanded="true"] {
  background:
    linear-gradient(
      180deg,
      color-mix(in srgb, var(--mns-ink, #2E2F2F) 80%, black) 0%,
      color-mix(in srgb, var(--mns-ink, #2E2F2F) 92%, black) 100%
    );
}

.mns-purchase-panel__popover {
  position: absolute;
  z-index: 80;
  top: calc(100% + 12px);
  left: 0;
  width: 100%;
  transform-origin: top center;
  animation: mns-purchase-popover-in 180ms ease both;
}

.mns-purchase-panel__popover--top {
  top: auto;
  bottom: calc(100% + 12px);
  transform-origin: bottom center;
  animation-name: mns-purchase-popover-in-bottom;
}

.mns-purchase-panel__popover[hidden] {
  display: none;
}

.mns-purchase-panel__sheet {
  position: relative;
  width: 100%;
  padding: var(--purchase-store-panel-padding);
  border: 1px solid color-mix(in srgb, var(--mns-line, #d8ddd7) 76%, transparent);
  border-radius: var(--purchase-store-radius);
  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.98) 0%,
      color-mix(in srgb, #fff 94%, white) 100%
    );
  box-shadow:
    0 22px 54px rgba(18, 28, 22, 0.13),
    inset 0 1px 0 rgba(255, 255, 255, 0.94);
}

.mns-purchase-panel__sheet::before {
  content: "";
  position: absolute;
  top: -7px;
  left: 50%;
  width: 14px;
  height: 14px;
  transform: translateX(-50%) rotate(45deg);
  border-top: 1px solid color-mix(in srgb, var(--mns-line, #d8ddd7) 76%, transparent);
  border-left: 1px solid color-mix(in srgb, var(--mns-line, #d8ddd7) 76%, transparent);
  background: rgba(255, 255, 255, 0.98);
}

.mns-purchase-panel__popover--top .mns-purchase-panel__sheet::before {
  top: auto;
  bottom: -7px;
  transform: translateX(-50%) rotate(225deg);
}

.mns-purchase-panel__store {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: var(--purchase-store-control-height);
  border: 1px solid transparent;
  border-radius: var(--purchase-store-radius);
  color: inherit;
  text-align: center;
  text-decoration: none;
  transition:
    border-color 180ms ease,
    background-color 180ms ease,
    box-shadow 180ms ease;
}

.mns-purchase-panel__store + .mns-purchase-panel__store {
  margin-top: calc(var(--purchase-store-panel-padding) * 0.6);
}

.mns-purchase-panel__store:hover,
.mns-purchase-panel__store:focus-visible {
  border-color: color-mix(in srgb, var(--mns-line, #d8ddd7) 70%, transparent);
  background: color-mix(in srgb, var(--mns-soft, #eef2ef) 62%, white);
  box-shadow: 0 10px 24px rgba(18, 28, 22, 0.08);
}

.mns-purchase-panel__store:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--mns-accent, #9EA7A2) 28%, transparent);
  outline-offset: 4px;
}

.mns-purchase-panel__store-logo {
  display: block;
  width: auto;
  max-width: min(72%, 280px);
  max-height: calc(var(--purchase-store-control-height) * 0.62);
  height: auto;
  object-fit: contain;
}

.mns-purchase-panel__store-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: calc(var(--purchase-store-control-height) * 0.72);
  max-width: 100%;
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  white-space: nowrap;
}

.mns-purchase-panel__store-label--amazon {
  color: #202124;
  font-family: Arial, Helvetica, sans-serif;
  font-size: calc(var(--purchase-store-button-font-size) * 1.35);
}

.mns-purchase-panel__store-label--rakuten {
  color: #bf0000;
  font-family: Arial, Helvetica, sans-serif;
  font-size: calc(var(--purchase-store-button-font-size) * 1.2);
}

.mns-purchase-panel__store-label--yahoo {
  color: #6001d2;
  font-family: Arial, Helvetica, sans-serif;
  font-size: calc(var(--purchase-store-button-font-size) * 1.1);
  letter-spacing: -0.05em;
}

.mns-purchase-panel__store-label--jsm {
  color: #2f4d45;
  font-family: Arial, Helvetica, sans-serif;
  font-size: calc(var(--purchase-store-button-font-size) * 1.05);
}

@keyframes mns-purchase-popover-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes mns-purchase-popover-in-bottom {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (max-width: 768px) {
  .mns-purchase-panel { gap: 8px; }
  .mns-purchase-panel__popover { top: calc(100% + 10px); }
  .mns-purchase-panel__popover--top {
    top: auto;
    bottom: calc(100% + 10px);
  }
  .mns-purchase-panel__sheet { padding: 12px; }
}
