@property --dk-hole {
  syntax: "<length>";
  inherits: false;
  initial-value: 72vmax;
}

.dk-transition-overlay {
  position: fixed;
  inset: 0;
  z-index: 99999;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
}

.dk-transition-overlay.is-active {
  opacity: 1;
}

.dk-black-masked {
  position: absolute;
  width: 300vmax;
  height: 300vmax;
  left: 50%;
  top: 50%;
  background: #000;
  transform: translate(-50%, -50%) rotate(0deg);
  transform-origin: center center;

  -webkit-mask-image: linear-gradient(#fff, #fff), var(--dk-logo);
  mask-image: linear-gradient(#fff, #fff), var(--dk-logo);
  -webkit-mask-size: 100% 100%, var(--dk-hole);
  mask-size: 100% 100%, var(--dk-hole);
  -webkit-mask-position: center, center;
  mask-position: center, center;
  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-repeat: no-repeat, no-repeat;
  -webkit-mask-composite: destination-out;
  mask-composite: exclude;
  -webkit-mask-mode: alpha, alpha;
  mask-mode: alpha, alpha;

  transition:
    --dk-hole 0.6s cubic-bezier(0.6, -0.28, 0.735, 0.045),
    transform 0.6s ease-in-out;
}

.dk-transition-overlay.fade-in .dk-black-masked {
  --dk-hole: 0vmax;
  transform: translate(-50%, -50%) rotate(360deg);
}

.dk-transition-overlay.page-arrival .dk-black-masked {
  animation: dkHoleOpen 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

.dk-transition-overlay.page-arrival {
  animation: dkOverlayFade 0.6s forwards;
}

@keyframes dkHoleOpen {
  0% {
    --dk-hole: 0vmax;
    transform: translate(-50%, -50%) rotate(360deg);
  }
  100% {
    --dk-hole: 72vmax;
    transform: translate(-50%, -50%) rotate(0deg);
  }
}

@keyframes dkOverlayFade {
  0%, 92% { opacity: 1; }
  100%    { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .dk-black-masked,
  .dk-transition-overlay.page-arrival,
  .dk-transition-overlay.page-arrival .dk-black-masked {
    transition: none !important;
    animation: none !important;
  }
}
.dk-music-toggle {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  z-index: 99998; /* below transition overlay (99999) */
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 0.85rem;
  border: 3px solid #ffd700;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.75);
  color: #ffd700;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: bold;
  cursor: pointer;
  pointer-events: auto;
  transition: transform 0.15s ease, background 0.15s ease;
}

.dk-music-toggle:hover {
  transform: scale(1.05);
  background: rgba(0, 0, 0, 0.9);
}

.dk-music-toggle.is-playing {
  background: #1a4d1a;
  box-shadow: 0 0 12px rgba(255, 215, 0, 0.35);
}

.dk-music-toggle.is-playing .dk-music-icon {
  animation: dk-music-bob 0.6s ease-in-out infinite alternate;
}

@keyframes dk-music-bob {
  from { transform: translateY(0); }
  to   { transform: translateY(-2px); }
}

@media (max-width: 600px) {
  .dk-music-toggle .dk-music-label {
    display: none;
  }
}