/* NEON SPEED ZONE — JET SET RADIO INSPIRED */

:root {
  --ink: #17171c;
  --paper: #e8e3cf;
  --paper-2: #f3eedb;
  --hot: #7048c8;
  --cyan: #00d9c5;
  --blue: #25243a;
  --yellow: #ff6b1a;
  --orange: #ff6b1a;
  --lime: #b8ff00;
  --purple: #7048c8;
  --muted: #55535b;
  --shadow: 6px 6px 0 var(--ink);
  --border: 3px solid var(--ink);
  --max: 1180px;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background-color: #17171c;
  background-image:
    radial-gradient(circle at 20% 20%, rgba(184,255,0,.10) 0 2px, transparent 3px),
    radial-gradient(circle at 80% 70%, rgba(0,217,197,.08) 0 2px, transparent 3px),
    repeating-linear-gradient(0deg, rgba(255,255,255,.025) 0 1px, transparent 1px 5px);
  background-size: 42px 42px, 57px 57px, auto;
  color: var(--ink);
  font-family: "Trebuchet MS", Arial, sans-serif;
  line-height: 1.45;
}

a { color: inherit; }
img { max-width: 100%; }

.site-shell {
  width: min(calc(100% - 28px), var(--max));
  margin: 22px auto 50px;
}

/* HEADER */

.site-header {
  position: relative;
  overflow: hidden;
  background: var(--ink);
  border: var(--border);
  box-shadow: 7px 7px 0 var(--lime);
  padding: 22px;
  transform: rotate(-.5deg);
}

.site-header::before,
.site-header::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  opacity: .9;
}

.site-header::before {
  width: 180px;
  height: 180px;
  right: -80px;
  top: -105px;
  border: 18px solid var(--cyan);
}

.site-header::after {
  width: 140px;
  height: 140px;
  right: 70px;
  bottom: -110px;
  border: 18px solid var(--orange);
}

.logo {
  position: relative;
  z-index: 1;
  display: inline-block;
  font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
  font-size: clamp(2.5rem, 9vw, 6.5rem);
  line-height: .8;
  letter-spacing: -3px;
  text-transform: uppercase;
  color: var(--lime);
  -webkit-text-stroke: 3px var(--ink);
  text-shadow: 7px 7px 0 var(--purple);
  transform: skew(-8deg);
}

.tagline {
  position: relative;
  z-index: 1;
  margin: 13px 0 0;
  color: var(--paper-2);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 2px;
}

/* NAV */

.nav {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin: 20px 0;
}

.nav a {
  display: inline-block;
  padding: 9px 13px;
  background: var(--paper);
  border: var(--border);
  box-shadow: 4px 4px 0 var(--lime);
  font-weight: 900;
  text-decoration: none;
  text-transform: uppercase;
  transform: rotate(var(--tilt, 0deg)) skew(-2deg);
}

.nav a:nth-child(2n) { --tilt: 1deg; }
.nav a:nth-child(3n) { --tilt: -1deg; }

.nav a:hover,
.nav a[aria-current="page"] {
  background: var(--lime);
  transform: translate(3px, 3px) rotate(var(--tilt, 0deg));
  box-shadow: 1px 1px 0 var(--ink);
}

.page-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 22px;
  align-items: start;
}

.main { min-width: 0; }

.sidebar {
  display: grid;
  gap: 18px;
}

.panel {
  position: relative;
  background: var(--paper);
  border: var(--border);
  box-shadow: var(--shadow);
  padding: 20px;
  margin-bottom: 22px;
}

.panel.white { background: var(--paper-2); }
.panel.cyan { background: var(--cyan); }
.panel.yellow { background: var(--orange); }
.panel.pink { background: var(--purple); color: var(--paper-2); }
.panel.blue { background: var(--blue); color: var(--paper-2); }
.panel.lime { background: var(--lime); }

.panel-title {
  margin: -2px 0 16px;
  display: inline-block;
  padding: 5px 10px;
  background: var(--ink);
  color: var(--lime);
  font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
  font-size: 1.65rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  transform: rotate(-1deg) skew(-5deg);
}

.panel-title.pink { color: var(--purple); }
.panel-title.cyan { color: var(--cyan); }
.panel-title.lime { color: var(--lime); }

.hero {
  min-height: 330px;
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 18px;
  align-items: center;
  background: linear-gradient(135deg, #25243a 0 55%, #7048c8 55% 70%, #17171c 70%);
  color: var(--paper-2);
  overflow: hidden;
}

.hero h1 {
  margin: 0;
  font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
  font-size: clamp(3rem, 8vw, 6rem);
  line-height: .82;
  text-transform: uppercase;
  letter-spacing: -2px;
  color: var(--lime);
  -webkit-text-stroke: 2px var(--ink);
  text-shadow: 6px 6px 0 var(--ink);
}

.hero p { max-width: 560px; font-weight: 800; font-size: 1.05rem; }

.sticker {
  display: grid;
  place-items: center;
  min-height: 190px;
  padding: 20px;
  background: var(--orange);
  color: var(--ink);
  border: var(--border);
  box-shadow: 8px 8px 0 var(--ink);
  font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
  font-size: clamp(2rem, 5vw, 4rem);
  text-align: center;
  line-height: .9;
  transform: rotate(5deg);
}

/* DETAILS */

.kicker {
  font-weight: 900;
  color: var(--purple);
  text-transform: uppercase;
  letter-spacing: 2px;
}

.big { font-size: 1.2rem; font-weight: 800; }
.mini { font-size: .84rem; color: var(--muted); }

.marquee {
  overflow: hidden;
  border-block: var(--border);
  background: var(--lime);
  font-weight: 1000;
  text-transform: uppercase;
  white-space: nowrap;
  padding: 7px 0;
  margin: 18px 0;
}

.marquee span {
  display: inline-block;
  padding-left: 100%;
  animation: crawl 16s linear infinite;
}

@keyframes crawl { to { transform: translateX(-100%); } }

.tag-cloud {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.tag {
  display: inline-block;
  padding: 5px 9px;
  background: var(--cyan);
  border: 2px solid var(--ink);
  font-weight: 900;
  font-size: .85rem;
}

.tag:nth-child(2n) { background: var(--lime); }
.tag:nth-child(3n) { background: var(--purple); color: white; }

.info-table {
  width: 100%;
  border-collapse: collapse;
}

.info-table th,
.info-table td {
  padding: 8px;
  border-bottom: 2px dashed var(--ink);
  text-align: left;
  vertical-align: top;
}

.info-table th {
  width: 35%;
  text-transform: uppercase;
  font-size: .8rem;
}

.todo-list { margin: 0; padding-left: 22px; }
.todo-list li { margin: 7px 0; font-weight: 700; }

/* COLLECTION */

.collection-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-start;
}

.collection-item {
  display: block;
  padding: 0;
}

.collection-item img {
  display: block;
  width: auto;
  height: auto;
}


.collection-section { margin-top: 28px; }

.collection-section h3 {
  display: inline-block;
  margin: 0 0 12px;
  padding: 5px 9px;
  background: var(--ink);
  color: var(--lime);
  text-transform: uppercase;
}

/* QUIZZES */



/* LINKS / SHRINES */

.link-grid,
.shrine-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 15px;
}

.link-card,
.shrine-card {
  display: block;
  padding: 15px;
  background: var(--paper-2);
  border: 3px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  text-decoration: none;
}

.link-card:hover,
.shrine-card:hover { background: var(--cyan); }

.link-card strong,
.shrine-card strong {
  display: block;
  font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
  font-size: 1.4rem;
  text-transform: uppercase;
}

/* SIDEBAR */

.counter {
  display: inline-block;
  padding: 5px 9px;
  background: #111;
  color: var(--lime);
  font-family: monospace;
  font-size: 1.2rem;
  letter-spacing: 4px;
  border: 2px solid #555;
}

.status {
  display: grid;
  grid-template-columns: 13px 1fr;
  gap: 8px;
  align-items: start;
}

.status-dot {
  width: 13px;
  height: 13px;
  margin-top: 4px;
  background: var(--lime);
  border: 2px solid var(--ink);
  border-radius: 50%;
  box-shadow: 0 0 10px var(--lime);
}

/* FOOTER */

.footer {
  margin-top: 25px;
  padding: 20px;
  background: var(--ink);
  color: white;
  border: var(--border);
  text-align: center;
}

.footer a {
  color: var(--cyan);
  font-weight: 900;
}

/* MOBILE */

@media (max-width: 800px) {
  .page-grid, .hero { grid-template-columns: 1fr; }
  .sidebar { grid-template-columns: 1fr 1fr; }
  .hero { min-height: 0; }
  .link-grid, .shrine-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .site-shell { width: min(calc(100% - 14px), var(--max)); margin-top: 10px; }
  .site-header { padding: 17px; }
  .sidebar { grid-template-columns: 1fr; }
  .panel { padding: 15px; }
  .collection-grid { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); }
  .nav a { flex: 1 1 auto; text-align: center; }
}

/* =========================================================
   GRAFFITI DECORATIONS
   Animated street-art / arcade chaos
   ========================================================= */

/* ---------- FLOATING GRAFFITI TAGS ---------- */

.graffiti {
  position: fixed;
  z-index: 20;
  pointer-events: none;
  user-select: none;
  font-family: Impact, Haettenschweiler, "Arial Black", sans-serif;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -1px;
  -webkit-text-stroke: 2px var(--ink);
  text-shadow: 4px 4px 0 var(--ink);
  animation: graffitiFloat 4s ease-in-out infinite;
}

.graffiti.g1 {
  top: 17%;
  left: 2%;
  color: var(--hot);
  font-size: 2.2rem;
  transform: rotate(-12deg);
}

.graffiti.g2 {
  top: 42%;
  right: 2%;
  color: var(--cyan);
  font-size: 1.8rem;
  transform: rotate(10deg);
  animation-delay: -1.5s;
}

.graffiti.g3 {
  bottom: 13%;
  left: 3%;
  color: var(--yellow);
  font-size: 1.7rem;
  transform: rotate(8deg);
  animation-delay: -2.5s;
}

@keyframes graffitiFloat {
  0%, 100% {
    translate: 0 0;
  }

  50% {
    translate: 0 -9px;
  }
}


/* ---------- SPRAY PAINT BLOBS ---------- */

.spray {
  position: absolute;
  z-index: 0;
  width: 150px;
  height: 150px;
  border-radius: 50%;
  opacity: .55;
  filter: blur(1px);
  pointer-events: none;
  animation: sprayPulse 3s ease-in-out infinite;
}

.spray::before,
.spray::after {
  content: "";
  position: absolute;
  inset: -18px;
  border-radius: 50%;
  border: 5px dotted currentColor;
  opacity: .7;
}

.spray::after {
  inset: 25px;
  border-style: dashed;
}

.spray-pink {
  background: var(--hot);
  color: var(--hot);
}

.spray-cyan {
  background: var(--cyan);
  color: var(--cyan);
}

.spray-yellow {
  background: var(--yellow);
  color: var(--yellow);
}

@keyframes sprayPulse {
  0%, 100% {
    scale: 1;
    rotate: 0deg;
  }

  50% {
    scale: 1.08;
    rotate: 5deg;
  }
}


/* ---------- SPEED LINES ---------- */

.speed-lines {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}

.speed-lines span {
  position: absolute;
  display: block;
  width: 130px;
  height: 5px;
  background: var(--ink);
  transform: skewX(-35deg);
  animation: speedRun 2.2s linear infinite;
}

.speed-lines span:nth-child(1) {
  top: 15%;
  left: -150px;
}

.speed-lines span:nth-child(2) {
  top: 35%;
  left: -300px;
  width: 220px;
  animation-delay: -.8s;
}

.speed-lines span:nth-child(3) {
  top: 67%;
  left: -180px;
  width: 90px;
  animation-delay: -1.2s;
}

.speed-lines span:nth-child(4) {
  top: 82%;
  left: -400px;
  width: 180px;
  animation-delay: -.3s;
}

@keyframes speedRun {
  from {
    translate: 0 0;
  }

  to {
    translate: calc(100vw + 500px) 0;
  }
}


/* ---------- SPINNING ARROWS ---------- */

.graffiti-arrow {
  position: absolute;
  width: 65px;
  height: 65px;
  border: 7px solid var(--ink);
  border-left-color: transparent;
  border-radius: 50%;
  pointer-events: none;
  animation: arrowSpin 2.5s linear infinite;
}

.graffiti-arrow::after {
  content: "";
  position: absolute;
  right: -12px;
  top: -7px;
  width: 0;
  height: 0;
  border-top: 13px solid transparent;
  border-bottom: 13px solid transparent;
  border-left: 24px solid var(--ink);
  transform: rotate(20deg);
}

@keyframes arrowSpin {
  to {
    rotate: 360deg;
  }
}


/* ---------- STAR BURSTS ---------- */

.starburst {
  position: absolute;
  z-index: 3;
  display: grid;
  place-items: center;
  width: 85px;
  height: 85px;
  background: var(--yellow);
  clip-path: polygon(
    50% 0%,
    61% 32%,
    85% 10%,
    73% 39%,
    100% 50%,
    70% 59%,
    91% 85%,
    62% 72%,
    50% 100%,
    39% 70%,
    8% 89%,
    28% 60%,
    0% 50%,
    31% 40%,
    9% 13%,
    39% 30%
  );
  font-family: Impact, sans-serif;
  font-size: .8rem;
  text-align: center;
  transform: rotate(-8deg);
  animation: starWobble 2s ease-in-out infinite;
}

@keyframes starWobble {
  0%, 100% {
    scale: 1;
    rotate: -8deg;
  }

  50% {
    scale: 1.08;
    rotate: 4deg;
  }
}


/* ---------- LITTLE ORBITING DOTS ---------- */

.orbit {
  position: absolute;
  width: 80px;
  height: 80px;
  border: 3px dashed var(--ink);
  border-radius: 50%;
  animation: orbitRotate 5s linear infinite;
}

.orbit::before,
.orbit::after {
  content: "";
  position: absolute;
  width: 13px;
  height: 13px;
  border: 2px solid var(--ink);
  border-radius: 50%;
}

.orbit::before {
  top: -7px;
  left: 30px;
  background: var(--hot);
}

.orbit::after {
  bottom: 8px;
  right: -6px;
  background: var(--cyan);
}

@keyframes orbitRotate {
  to {
    rotate: 360deg;
  }
}


/* ---------- "POW!" / COMIC POP ---------- */

.comic-pop {
  position: absolute;
  z-index: 4;
  padding: 13px 18px;
  background: var(--hot);
  border: 4px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
  color: white;
  font-family: Impact, sans-serif;
  font-size: 1.5rem;
  text-transform: uppercase;
  transform: rotate(-8deg);
  animation: comicPop 2.8s ease-in-out infinite;
}

@keyframes comicPop {
  0%, 100% {
    scale: 1;
  }

  50% {
    scale: 1.12;
  }
}


/* ---------- HALFTONE OVERLAY ---------- */

.halftone {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .22;
  background-image: radial-gradient(
    var(--ink) 1px,
    transparent 1.5px
  );
  background-size: 9px 9px;
  mix-blend-mode: multiply;
}


/* ---------- GLITCHY TEXT ---------- */

.glitch {
  position: relative;
  display: inline-block;
  animation: glitchShake 3s steps(1) infinite;
}

@keyframes glitchShake {
  0%, 90%, 100% {
    translate: 0;
  }

  92% {
    translate: -3px 1px;
  }

  94% {
    translate: 3px -1px;
  }

  96% {
    translate: -2px 0;
  }
}


/* ---------- MOBILE: DON'T COVER THE CONTENT ---------- */

@media (max-width: 800px) {
  .graffiti,
  .graffiti-arrow,
  .orbit {
    display: none;
  }

  .speed-lines {
    opacity: .35;
  }
}