.magnifier-lens {
  position: fixed;
  z-index: 1000;
  width: 340px;
  height: 340px;
  overflow: hidden;
  border: 2px solid rgba(212, 180, 119, .9);
  border-radius: 50%;
  background: #07100f;
  box-shadow:
    0 18px 50px rgba(0, 0, 0, .58),
    0 0 0 5px rgba(7, 16, 15, .72),
    0 0 30px rgba(110, 242, 200, .14);
  opacity: 0;
  transform: scale(.88);
  transition: opacity .14s ease, transform .14s ease;
  pointer-events: none;
}

.magnifier-lens.visible {
  opacity: 1;
  transform: scale(1);
}

body.magnifier-touch-lock {
  overscroll-behavior: none;
}

.magnifier-lens canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}

.magnifier-spine-canvas { display: none !important; }
.magnifier-lens.highres-active .magnifier-copy-canvas { display: none; }
.magnifier-lens.highres-active .magnifier-spine-canvas { display: block !important; }

.magnifier-render-state {
  position: absolute;
  z-index: 3;
  left: 50%;
  top: 50%;
  display: none;
  max-width: 74%;
  transform: translate(-50%, -50%);
  color: rgba(232, 227, 216, .72);
  font: 600 9px/1.6 "Avenir Next", sans-serif;
  letter-spacing: .12em;
  text-align: center;
}

.magnifier-lens.highres-active:not(.highres-ready) .magnifier-render-state { display: block; }

.magnifier-lens::before,
.magnifier-lens::after {
  content: "";
  position: absolute;
  z-index: 2;
  background: rgba(110, 242, 200, .35);
}

.magnifier-lens::before { left: 50%; top: 8px; bottom: 8px; width: 1px; }
.magnifier-lens::after { top: 50%; left: 8px; right: 8px; height: 1px; }

.magnifier-scale {
  position: absolute;
  z-index: 3;
  right: 19px;
  bottom: 13px;
  padding: 3px 5px;
  color: #07100d;
  background: var(--accent, #6ef2c8);
  font: 700 9px/1 "Avenir Next", sans-serif;
  letter-spacing: .08em;
}

.magnifier-toggle[aria-pressed="true"] {
  color: #07100d !important;
  border-color: var(--accent, #6ef2c8) !important;
  background: var(--accent, #6ef2c8) !important;
}

.magnifier-hold-indicator {
  position: fixed;
  z-index: 1001;
  width: 44px;
  height: 44px;
  opacity: 0;
  transform: translate(-50%, -50%) scale(.82);
  transition: opacity .12s, transform .12s;
  pointer-events: none;
}

.magnifier-hold-indicator.active {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

.magnifier-hold-indicator svg {
  display: block;
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
  filter: drop-shadow(0 0 5px rgba(0, 0, 0, .7));
}

.magnifier-hold-indicator circle {
  fill: rgba(7, 16, 15, .28);
  stroke-width: 3;
}

.hold-track { stroke: rgba(232, 227, 216, .26); }

.hold-progress {
  stroke: var(--accent, #6ef2c8);
  stroke-linecap: round;
  stroke-dasharray: 100.54;
  stroke-dashoffset: 100.54;
}

.magnifier-hold-indicator.active .hold-progress {
  animation: magnifier-hold-progress .5s linear forwards;
}

@keyframes magnifier-hold-progress {
  to { stroke-dashoffset: 0; }
}

@media (hover: none), (pointer: coarse), (max-width: 700px) {
  .magnifier-toggle { display: none !important; }
  .magnifier-lens {
    display: block;
    width: min(72vw, 280px);
    height: auto;
    aspect-ratio: 1;
  }
}
