.spsw-subcategory-viewer {
  --spsw-viewer-accent: #b28b33;
  --spsw-viewer-accent-rgb: 178, 139, 51;
  --spsw-viewer-text: #0f172a;
  --spsw-viewer-muted: #5b6472;
  --spsw-viewer-border: rgba(15, 23, 42, 0.08);
  --spsw-viewer-panel: rgba(255, 255, 255, 0.94);

  width: 100%;
  color: var(--spsw-viewer-text);
  font-family: "Poppins", "Segoe UI", sans-serif;
}

.spsw-subcategory-viewer *,
.spsw-subcategory-viewer *::before,
.spsw-subcategory-viewer *::after {
  box-sizing: border-box;
}

.spsw-subcategory-viewer__panel {
  display: grid;
  gap: 14px;
  padding: 20px;
  border: 1px solid var(--spsw-viewer-border);
  border-radius: 16px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(250, 252, 253, 0.92)),
    var(--spsw-viewer-panel);
  box-shadow: 0 16px 36px rgba(15, 23, 42, 0.06);
}

.spsw-subcategory-viewer__viewport {
  position: relative;
  min-height: clamp(360px, 56vh, 760px);
  height: min(68vh, 760px);
  overflow: hidden;
  border: 1px solid var(--spsw-viewer-border);
  border-radius: 14px;
  background:
    linear-gradient(180deg, rgba(251, 248, 240, 0.92), rgba(245, 238, 220, 0.82)),
    radial-gradient(circle at top right, rgba(178, 139, 51, 0.08), transparent 32%);
  touch-action: none;
  cursor: default;
}

.spsw-subcategory-viewer__viewport::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(15, 23, 42, 0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(15, 23, 42, 0.03) 1px, transparent 1px);
  background-size: 44px 44px;
  pointer-events: none;
  opacity: 0.7;
}

.spsw-subcategory-viewer__viewport.is-interactive {
  box-shadow: inset 0 0 0 2px rgba(var(--spsw-viewer-accent-rgb), 0.18);
}

.spsw-subcategory-viewer__viewport.can-pan.is-interactive {
  cursor: grab;
}

.spsw-subcategory-viewer__viewport.is-dragging.is-interactive {
  cursor: grabbing;
}

.spsw-subcategory-viewer__controls {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 3;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: calc(100% - 32px);
}

.spsw-subcategory-viewer__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  min-height: 42px;
  padding: 0 14px;
  border: 1px solid rgba(15, 23, 42, 0.1);
  border-radius: 12px;
  background: #ffffff;
  color: var(--spsw-viewer-text);
  font: inherit;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.spsw-subcategory-viewer__button--label {
  font-size: 0.84rem;
}

.spsw-subcategory-viewer__button:hover,
.spsw-subcategory-viewer__button:focus-visible {
  border-color: rgba(var(--spsw-viewer-accent-rgb), 0.48);
  color: var(--spsw-viewer-accent);
  outline: 0;
  transform: translateY(-1px);
  box-shadow: 0 10px 22px rgba(var(--spsw-viewer-accent-rgb), 0.12);
}

.spsw-subcategory-viewer__button[aria-pressed="true"],
.spsw-subcategory-viewer__button.is-active {
  background: rgba(178, 139, 51, 0.12);
  border-color: rgba(var(--spsw-viewer-accent-rgb), 0.36);
  color: var(--spsw-viewer-accent);
}

.spsw-subcategory-viewer__stage {
  position: relative;
  transform-origin: 0 0;
  will-change: transform;
}

.spsw-subcategory-image__image {
  display: block;
  width: 100%;
  height: auto;
  user-select: none;
  pointer-events: none;
}

.spsw-subcategory-viewer__footer {
  display: flex;
  justify-content: flex-end;
}

.spsw-subcategory-viewer__link {
  color: var(--spsw-viewer-accent);
  font-size: 0.84rem;
  font-weight: 700;
  text-decoration: none;
}

.spsw-subcategory-viewer__link:hover,
.spsw-subcategory-viewer__link:focus-visible {
  text-decoration: underline;
  outline: 0;
}

@media (max-width: 767px) {
  .spsw-subcategory-viewer__panel {
    padding: 16px;
  }

  .spsw-subcategory-viewer__viewport {
    min-height: 300px;
    height: 54vh;
  }

  .spsw-subcategory-viewer__controls {
    top: 12px;
    right: 12px;
  }

  .spsw-subcategory-viewer__button {
    min-width: 38px;
    min-height: 38px;
  }
}
