/* === Cassette Preloader  === */
#tape-preloader::before {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    45deg,
    rgba(255,255,255,0.04) 0 2px,
    rgba(0,0,0,0.02) 2px 4px
  );
  pointer-events: none;
  mix-blend-mode: overlay;
}
#tape-preloader {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  /* Retro gradient background (TDK-blue + off-white) */
  background: linear-gradient(135deg, #1f1742 0%, #332066 100%) !important;
  z-index: 2147483647 !important;
  overflow: hidden !important;
  transition: opacity .7s ease !important;
}

#tape-preloader.hidden {
  opacity: 0 !important;
  pointer-events: none !important;
}

/* cassette body */
#tape-preloader .cassette::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(rgba(255,255,255,0.04) 1px, transparent 1px),
    radial-gradient(rgba(0,0,0,0.05) 1px, transparent 1px);
  background-size: 3px 3px, 2px 2px;
  opacity: 0.25;
  mix-blend-mode: overlay;
  pointer-events: none;
}

#tape-preloader .cassette {
  width: min(420px, 86vw);
  aspect-ratio: 420 / 250;
  background: linear-gradient(145deg, #2b2b2b, #1a1a1a);
  border: 3px solid #444;
  border-radius: 12px;
  box-shadow:
    0 8px 35px rgba(0,0,0,0.8),
    0 2px 10px rgba(0,0,0,0.5);
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
  overflow: hidden;
}
#tape-preloader .cassette::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    repeating-linear-gradient(
      120deg,
      rgba(255,255,255,0.02) 0px,
      rgba(255,255,255,0.02) 1px,
      transparent 2px,
      transparent 12px
    ),
    repeating-linear-gradient(
      60deg,
      rgba(255,255,255,0.015) 0px,
      rgba(255,255,255,0.015) 2px,
      transparent 3px,
      transparent 14px
    );
  opacity: 0.15;
  mix-blend-mode: soft-light;
  pointer-events: none;
}

/* label top */
#tape-preloader .label-top {
  width: 100%;
  height: 18%;
  background: linear-gradient(180deg, #f8f8f8, #dedede);
  border-bottom: 3px solid #b0b0b0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 5%;
  font-family: "Permanent Marker", "Patrick Hand", "Comic Sans MS", cursive;
  font-size: clamp(14px, 3vw, 20px);
  color: #111;
  font-size: clamp(10px, 2.6vw, 18px);
  position: relative;
}

#tape-preloader .label-top::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  height: 4px;
  width: 100%;
  background: linear-gradient(90deg, #24254f, #595674, #8430f2);
}

/* === Cassette window detailing (TDK SA-X style) === */
#tape-preloader .window {
  position: relative;
  width: 85%;
  height: 40%;
  margin-top: 3%;
  background: linear-gradient(180deg, rgba(45,45,45,0.75), rgba(20,20,20,0.9));
  border: 2px solid rgba(255,255,255,0.08);
  border-radius: 12px / 18px; /* slightly curved corners like a real cassette */
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 14%;
  box-shadow:
    inset 0 2px 4px rgba(0,0,0,0.8),
    inset 0 -2px 4px rgba(255,255,255,0.06),
    0 2px 10px rgba(0,0,0,0.5);
  overflow: hidden;
}

/* glossy reflection edge */
#tape-preloader .window::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(
    135deg,
    rgba(255,255,255,0.15) 0%,
    rgba(255,255,255,0.04) 40%,
    rgba(0,0,0,0) 60%
  );
  pointer-events: none;
  mix-blend-mode: screen;
}

/* inner glare reflection strip */
#tape-preloader .window::after {
  content: "";
  position: absolute;
  top: 15%;
  left: 8%;
  width: 150%;
  height: 40%;
  background: linear-gradient(
    100deg,
    rgba(255,255,255,0.2) 0%,
    rgba(255,255,255,0.05) 40%,
    rgba(255,255,255,0) 80%
  );
  border-radius: inherit;
  transform: skewX(-15deg);
  animation: tdk-window-shine 6s linear infinite;
  pointer-events: none;
}

/* optional tint for depth */
#tape-preloader .tint {
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 50%, rgba(0,0,0,0.3), rgba(0,0,0,0.7));
  mix-blend-mode: multiply;
  z-index: 1;
  pointer-events: none;
}
/* tape belt */
#tape-preloader .tape {
  position: absolute;
  top: 70%;
  left: 18%;
  right: 18%;
  height: 8%;
  transform: translateY(-50%);
  background: linear-gradient(90deg, #0f0f0f, #1a1a1a, #0f0f0f);
  border-radius: 4px;
  overflow: hidden;
}
#tape-preloader .tape::before {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    90deg,
    rgba(255,255,255,0.06) 0 8px,
    transparent 8px 16px
  );
  animation: tdk-tape-flow .6s linear infinite;
}

/* reels */
#tape-preloader .reel {
  width: 22%;
  aspect-ratio: 1/1;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #cfcfcf 0%, #777 60%, #222 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  animation: tdk-reel-spin 2.5s linear infinite;
  overflow: hidden;
  box-shadow: inset 0 3px 6px rgba(0,0,0,0.6), 0 0 8px rgba(0,0,0,0.4);
}

/* inner hub — larger & darker */
#tape-preloader .hub {
  width: 60%;  /* increased from 25% ? 40% */
  height: 60%;
  background: radial-gradient(circle at 60% 60%, #000 0%, #111 40%, #000 100%);
  border-radius: 50%;
  z-index: 4;
  box-shadow:
    inset 0 2px 4px rgba(255,255,255,0.05),
    0 1px 3px rgba(0,0,0,0.5);
}

/* spokes — thicker and more defined */
#tape-preloader .spokes {
  position: absolute;
  inset: 0;
  background: repeating-conic-gradient(#000 0deg 12deg, transparent 12deg 30deg);
  border-radius: 50%;
  z-index: 3;
  mix-blend-mode: overlay;
  opacity: 0.5;
  transform: scale(0.85); /* gives spacing between hub and outer ring */
}
/* label bottom */
#tape-preloader .label-bottom {
  width: 70%;
  height: 15%;
  margin-top: 4%;
  background: linear-gradient(180deg, #e2e2e2, #d6d6d6);
  border-radius: 4px;
  font-family: "Permanent Marker", "Patrick Hand", "Comic Sans MS", cursive;
  font-size: clamp(14px, 3vw, 20px);
  text-transform: uppercase;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #000;
  font-size: clamp(10px, 2.2vw, 16px);
  box-shadow: inset 0 -2px 3px rgba(0,0,0,0.3);
}

/* screws */
#tape-preloader .screw {
  position: absolute;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, #d0d0d0 0%, #999 60%, #333 100%);
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,0.4),
    inset 0 -1px 2px rgba(0,0,0,0.6),
    0 1px 3px rgba(0,0,0,0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  z-index: 6;
}

/* cross slot lines */
#tape-preloader .screw::before,
#tape-preloader .screw::after {
  content: "";
  position: absolute;
  width: 70%;
  height: 2px;
  background: linear-gradient(90deg, #111, #666, #111);
  border-radius: 1px;
  box-shadow: 0 0 1px rgba(255,255,255,0.3);
  opacity: 0.9;
}
#tape-preloader .screw::after {
  transform: rotate(90deg);
}

/* screw positions */
#tape-preloader .screw.tl { top: 8px; left: 8px; }
#tape-preloader .screw.tr { top: 8px; right: 8px; }
#tape-preloader .screw.bl { bottom: 8px; left: 8px; }
#tape-preloader .screw.br { bottom: 8px; right: 8px; }

/* subtle random rotation for realism */
#tape-preloader .screw.tl { transform: rotate(12deg); }
#tape-preloader .screw.tr { transform: rotate(-8deg); }
#tape-preloader .screw.bl { transform: rotate(5deg); }
#tape-preloader .screw.br { transform: rotate(-15deg); }



/* animations */
@keyframes tdk-reel-spin { to { transform: rotate(360deg); } }
@keyframes tdk-tape-flow { to { transform: translateX(-16px); } }

/* responsive tweaks */
@media (max-width:480px) {
  #tape-preloader .cassette { border-width: 2px; }
}
