/**
 * THE GOONER LOUNGE · CYBERPUNK NEON DESIGN TOKENS
 * Shared visual language for root, ineedasidehug, and admin.
 * No Inter/Roboto/system-ui stacks. No brushed steel. No SaaS purple defaults.
 */
:root {
  /* Core neon */
  --neon-pink: #ff2d95;
  --neon-magenta: #ff2d95;
  --neon-hot: #ff1493;
  --neon-purple: #9b30ff;
  --neon-violet: #b44aff;
  --neon-cyan: #00f0ff;
  --neon-blue: #3d7eff;
  --neon-lime: #b8ff3c;

  /* Surfaces — pure black / near-black / navy underlayer */
  --void: #000000;
  --bg: #03010a;
  --bg-deep: #050212;
  --bg-navy: #06041a;
  --bg-card: rgba(10, 4, 24, 0.82);
  --bg-card-solid: #0c0618;
  --bg-elevated: rgba(18, 8, 36, 0.92);
  --bg-glass: rgba(8, 2, 18, 0.72);

  /* Lines & glows */
  --line: rgba(255, 45, 149, 0.28);
  --line-soft: rgba(155, 48, 255, 0.18);
  --line-cyan: rgba(0, 240, 255, 0.35);
  --line-strong: rgba(255, 45, 149, 0.55);
  --glow-pink: rgba(255, 45, 149, 0.55);
  --glow-purple: rgba(155, 48, 255, 0.5);
  --glow-cyan: rgba(0, 240, 255, 0.4);
  --glow-soft-pink: rgba(255, 45, 149, 0.14);
  --glow-soft-purple: rgba(155, 48, 255, 0.12);

  /* Text */
  --text: #fff5fb;
  --text-bright: #ffffff;
  --muted: rgba(255, 236, 248, 0.68);
  --dim: rgba(255, 236, 248, 0.4);
  --faint: rgba(255, 236, 248, 0.22);

  /* Semantic */
  --ok: #3dffb5;
  --warn: #ffd166;
  --danger: #ff3b6b;
  --proxy: #ff9f1c;

  /* Geometry */
  --radius-sm: 0.55rem;
  --radius: 1rem;
  --radius-lg: 1.5rem;
  --radius-xl: 2rem;
  --radius-pill: 999px;
  --max: 84rem;
  --shadow-deep: 0 28px 90px rgba(0, 0, 0, 0.65);
  --shadow-pink: 0 0 40px rgba(255, 45, 149, 0.35), 0 0 80px rgba(155, 48, 255, 0.18);
  --shadow-cyan: 0 0 36px rgba(0, 240, 255, 0.28);

  /* Type — geometric display + elegant condensed + mono data */
  --font-display: "Orbitron", "Audiowide", "Rajdhani", sans-serif;
  --font-condensed: "Exo 2", "Saira Condensed", "Rajdhani", sans-serif;
  --font-body: "Exo 2", "Saira", sans-serif;
  --font-serif: "Cormorant Garamond", "Playfair Display", Georgia, serif;
  --font-mono: "Share Tech Mono", "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace;

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-glitch: cubic-bezier(0.7, 0, 0.3, 1);

  /* Temporary personal bridge (root only) — days from epoch ms */
  --bridge-ttl-days: 14;
}

/* Global CRT / phosphor overlays (opt-in via body classes) */
.cp-scanlines::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(0, 0, 0, 0.12) 2px,
    rgba(0, 0, 0, 0.12) 4px
  );
  opacity: 0.35;
  mix-blend-mode: multiply;
}

.cp-vignette::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9997;
  background: radial-gradient(ellipse at center, transparent 40%, rgba(0, 0, 0, 0.55) 100%);
}

.cp-noise {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9996;
  opacity: 0.04;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

@keyframes cp-pulse-glow {
  0%, 100% { filter: drop-shadow(0 0 6px var(--glow-pink)); }
  50% { filter: drop-shadow(0 0 18px var(--glow-pink)) drop-shadow(0 0 28px var(--glow-purple)); }
}

@keyframes cp-neon-flicker {
  0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { opacity: 1; }
  20%, 24%, 55% { opacity: 0.72; }
}

@keyframes cp-scan {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(100vh); }
}

@keyframes cp-glitch-skew {
  0%, 100% { transform: none; }
  20% { transform: skewX(-0.6deg) translateX(1px); }
  40% { transform: skewX(0.4deg) translateX(-1px); }
  60% { transform: none; }
}

@keyframes cp-border-flow {
  0% { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

@keyframes cp-float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(8px, -14px) scale(1.04); }
}

/* Neon text utility */
.cp-neon-text {
  color: var(--text-bright);
  text-shadow:
    0 0 8px var(--glow-pink),
    0 0 24px var(--glow-purple),
    0 0 48px rgba(255, 45, 149, 0.35);
}

.cp-neon-cyan {
  color: var(--neon-cyan);
  text-shadow: 0 0 10px var(--glow-cyan), 0 0 28px rgba(0, 240, 255, 0.35);
}

/* Prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  .cp-scanlines::before,
  .cp-noise,
  * {
    animation: none !important;
    transition: none !important;
  }
}
