@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  :root {
    /* oklch-based color system for perceptual uniformity */
    --background: 0 0% 100%;
    --foreground: 240 10% 3.9%;
    --card: 0 0% 100%;
    --card-foreground: 240 10% 3.9%;
    --popover: 0 0% 100%;
    --popover-foreground: 240 10% 3.9%;
    --primary: 240 5.9% 10%;
    --primary-foreground: 0 0% 98%;
    --secondary: 240 4.8% 95.9%;
    --secondary-foreground: 240 5.9% 10%;
    --muted: 240 4.8% 95.9%;
    --muted-foreground: 240 3.8% 46.1%;
    --accent: 240 4.8% 95.9%;
    --accent-foreground: 240 5.9% 10%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 0 0% 98%;
    --border: 240 5.9% 90%;
    --input: 240 5.9% 90%;
    --ring: 240 5.9% 10%;
    --radius: 0.375rem;

    /* Semantic status colors */
    --success: 142 71% 45%;
    --success-foreground: 0 0% 98%;
    --warning: 38 92% 50%;
    --warning-foreground: 0 0% 9%;
    --info: 217 91% 60%;
    --info-foreground: 0 0% 98%;

    /* Void accent colors (light fallbacks) */
    --void-cyan: 187 82% 40%;
    --void-mint: 160 60% 40%;
    --void-amber: 38 92% 42%;
    --void-violet: 263 70% 55%;
    --void-crimson: 0 72% 45%;

    /* Surface hierarchy */
    --surface-0: 0 0% 100%;
    --surface-1: 240 5% 96%;
    --surface-2: 240 6% 93%;
    --surface-3: 240 5% 88%;
  }

  .dark {
    /* Void palette */
    --background: 215 27% 4%;
    --foreground: 210 20% 92%;
    --card: 220 30% 8%;
    --card-foreground: 210 20% 92%;
    --popover: 220 30% 8%;
    --popover-foreground: 210 20% 92%;
    --primary: 187 82% 53%;
    --primary-foreground: 220 30% 6%;
    --secondary: 220 25% 11%;
    --secondary-foreground: 210 20% 92%;
    --muted: 220 20% 14%;
    --muted-foreground: 220 15% 50%;
    --accent: 220 20% 14%;
    --accent-foreground: 210 20% 92%;
    --destructive: 0 72% 51%;
    --destructive-foreground: 0 0% 98%;
    --border: 220 20% 14%;
    --input: 220 20% 14%;
    --ring: 187 82% 53%;

    /* Void accent colors */
    --void-cyan: 187 82% 53%;
    --void-mint: 160 60% 52%;
    --void-amber: 38 92% 50%;
    --void-violet: 263 90% 66%;
    --void-crimson: 0 72% 51%;

    /* Void status */
    --success: 160 60% 52%;
    --success-foreground: 0 0% 98%;
    --warning: 38 92% 50%;
    --warning-foreground: 0 0% 9%;
    --info: 187 82% 53%;
    --info-foreground: 0 0% 98%;

    /* Void surface hierarchy */
    --surface-0: 215 27% 4%;
    --surface-1: 222 35% 7%;
    --surface-2: 220 30% 10%;
    --surface-3: 220 25% 14%;
  }
}

@layer base {
  * {
    @apply border-border;
  }

  body {
    @apply bg-background text-foreground;
    font-feature-settings: "rlig" 1, "calt" 1;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }

  /* Custom scrollbar */
  ::-webkit-scrollbar {
    width: 5px;
    height: 5px;
  }

  ::-webkit-scrollbar-track {
    background: transparent;
  }

  ::-webkit-scrollbar-thumb {
    @apply bg-border rounded-full;
  }

  ::-webkit-scrollbar-thumb:hover {
    @apply bg-muted-foreground;
  }

  /* Modern button defaults — enhances ALL raw <button> elements */
  button:focus-visible {
    outline: none;
    box-shadow:
      0 0 0 2px hsl(var(--background)),
      0 0 0 4px hsl(var(--ring));
  }
}

@layer utilities {
  /* Kanban drag-over highlight */
  .drag-over {
    @apply border-primary/40;
    background: hsl(var(--primary) / 0.02);
  }

  /* Glass morphism effects */
  .glass {
    @apply bg-card/80 backdrop-blur-xl border border-border/50;
  }

  .glass-strong {
    @apply bg-card/90 backdrop-blur-2xl border border-border/60;
  }

  /* Surface levels */
  .surface-0 {
    background: hsl(var(--surface-0));
  }
  .surface-1 {
    background: hsl(var(--surface-1));
  }
  .surface-2 {
    background: hsl(var(--surface-2));
  }
  .surface-3 {
    background: hsl(var(--surface-3));
  }

  /* Status badge styles */
  .badge-success {
    @apply bg-green-500/15 text-green-400 border border-green-500/20;
  }
  .badge-warning {
    @apply bg-amber-500/15 text-amber-400 border border-amber-500/20;
  }
  .badge-error {
    @apply bg-red-500/15 text-red-400 border border-red-500/20;
  }
  .badge-info {
    @apply bg-blue-500/15 text-blue-400 border border-blue-500/20;
  }
  .badge-neutral {
    @apply bg-muted text-muted-foreground border border-border;
  }

  /* Glow effects for active states */
  .glow-primary {
    box-shadow: 0 0 20px hsl(var(--primary) / 0.15);
  }
  .glow-success {
    box-shadow: 0 0 20px hsl(var(--success) / 0.15);
  }

  /* Smooth transitions */
  .transition-smooth {
    @apply transition-all duration-200 ease-out;
  }

  /* Void glow utilities */
  .glow-cyan {
    box-shadow: 0 0 20px hsl(var(--void-cyan) / 0.2), 0 0 40px hsl(var(--void-cyan) / 0.08);
  }
  .glow-mint {
    box-shadow: 0 0 20px hsl(var(--void-mint) / 0.2), 0 0 40px hsl(var(--void-mint) / 0.08);
  }
  .glow-amber {
    box-shadow: 0 0 20px hsl(var(--void-amber) / 0.2), 0 0 40px hsl(var(--void-amber) / 0.08);
  }
  .glow-violet {
    box-shadow: 0 0 20px hsl(var(--void-violet) / 0.2), 0 0 40px hsl(var(--void-violet) / 0.08);
  }

  /* Void panel — glass card with luminous border */
  .void-panel {
    @apply bg-card/90 backdrop-blur-sm border border-border rounded-lg;
    box-shadow:
      inset 0 1px 0 hsl(var(--void-cyan) / 0.04),
      0 4px 24px hsl(var(--background) / 0.5),
      0 0 0 1px hsl(var(--void-cyan) / 0.04);
  }

  /* Void border glow — animated gradient border */
  .void-border-glow {
    position: relative;
  }
  .void-border-glow::before {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    background: linear-gradient(
      135deg,
      hsl(var(--void-cyan) / 0.3),
      transparent 40%,
      transparent 60%,
      hsl(var(--void-violet) / 0.2)
    );
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    padding: 1px;
    pointer-events: none;
    animation: edgeGlow 2s ease-in-out infinite;
  }

  /* Neon button hover effect */
  .btn-neon {
    @apply transition-all duration-200;
  }
  .btn-neon:hover {
    box-shadow: 0 0 16px hsl(var(--void-cyan) / 0.25);
  }

  /* Status badge glow variants */
  .badge-glow-success {
    box-shadow: 0 0 12px hsl(var(--void-mint) / 0.25);
  }
  .badge-glow-warning {
    box-shadow: 0 0 12px hsl(var(--void-amber) / 0.25);
  }
  .badge-glow-error {
    box-shadow: 0 0 12px hsl(var(--void-crimson) / 0.25);
  }

  /* Void background — layered CSS gradients */
  .void-bg {
    background-image:
      /* Subtle cyan spotlight at top */
      radial-gradient(ellipse 60% 30% at 50% 0%, hsl(var(--void-cyan) / 0.03), transparent),
      /* Grid lines */
      repeating-linear-gradient(0deg, hsl(var(--border) / 0.08) 0px, transparent 1px, transparent 40px),
      repeating-linear-gradient(90deg, hsl(var(--border) / 0.08) 0px, transparent 1px, transparent 40px),
      /* Dot intersections */
      radial-gradient(circle 0.5px at 0px 0px, hsl(var(--border) / 0.2) 0.5px, transparent 0.5px);
    background-size: 100% 100%, 40px 40px, 40px 40px, 40px 40px;
  }

  /* Panel styles */
  .panel {
    @apply bg-card border border-border rounded-lg;
  }

  .panel-header {
    @apply px-4 py-3 border-b border-border flex items-center justify-between;
  }

  .panel-body {
    @apply p-4;
  }

  /* Mono/code font */
  .font-mono-tight {
    font-family: 'JetBrains Mono', 'SF Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
    font-variant-numeric: tabular-nums;
  }

  /* Digital clock styling */
  .digital-clock {
    font-family: 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
    font-weight: 600;
    letter-spacing: 0.04em;
    font-variant-numeric: tabular-nums;
  }

  /* Pulse animations for status */
  .pulse-live {
    animation: pulse-live 2s ease-in-out infinite;
  }

  @keyframes pulse-live {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
  }

  .pulse-dot {
    animation: pulse-dot 2s ease-in-out infinite;
  }

  @keyframes pulse-dot {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.3); opacity: 0.7; }
  }

  /* Shimmer loading */
  .shimmer {
    background: linear-gradient(
      90deg,
      hsl(var(--muted)) 0%,
      hsl(var(--muted-foreground) / 0.1) 50%,
      hsl(var(--muted)) 100%
    );
    background-size: 200% 100%;
    animation: shimmer 1.5s ease-in-out infinite;
  }

  @keyframes shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
  }

  /* Slide-in for panels */
  .slide-in-right {
    animation: slideInRight 0.2s ease-out;
  }

  @keyframes slideInRight {
    from { transform: translateX(100%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
  }

  .slide-in-left {
    animation: slideInLeft 0.2s ease-out;
  }

  @keyframes slideInLeft {
    from { transform: translateX(-100%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
  }

  .fade-in {
    animation: fadeIn 0.15s ease-out;
  }

  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }

  .command-palette-in {
    animation: commandPaletteIn 0.1s ease-out;
  }

  @keyframes commandPaletteIn {
    from {
      opacity: 0;
      transform: scale(0.985);
    }
    to {
      opacity: 1;
      transform: scale(1);
    }
  }

  /* iOS safe area for bottom nav */
  .safe-area-bottom {
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }

  /* Touch-friendly tap targets */
  @media (pointer: coarse) {
    .touch-target {
      min-height: 44px;
      min-width: 44px;
    }
  }

  /* Progress bar shimmer */
  .shimmer-bar {
    position: relative;
    overflow: hidden;
  }
  .shimmer-bar::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 0%, hsl(var(--primary-foreground) / 0.25) 50%, transparent 100%);
    background-size: 50% 100%;
    animation: shimmerBar 1.5s ease-in-out infinite;
  }
  @keyframes shimmerBar {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(200%); }
  }

  /* Step check entrance */
  .check-enter {
    animation: checkEnter 0.3s ease-out;
  }
  @keyframes checkEnter {
    0% { opacity: 0; transform: scale(0.5); }
    60% { transform: scale(1.15); }
    100% { opacity: 1; transform: scale(1); }
  }

  /* Reduced motion */
  @media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01ms !important;
    }
  }
}

/* ═══════════════════════════════════════════════════════════════════════
 * Theme overrides — MUST come after @layer base so they win the cascade.
 * Each class is applied to <html> by next-themes alongside the "dark" class.
 * .void is empty because .dark already defines the void palette.
 * ═══════════════════════════════════════════════════════════════════════ */

.void {
  /* Inherits from .dark — no overrides needed */
}

.midnight-blue {
  --background: 222 47% 5%;
  --foreground: 213 20% 92%;
  --card: 222 44% 8%;
  --card-foreground: 213 20% 92%;
  --popover: 222 44% 8%;
  --popover-foreground: 213 20% 92%;
  --primary: 217 91% 60%;
  --primary-foreground: 222 47% 5%;
  --secondary: 222 30% 12%;
  --secondary-foreground: 213 20% 92%;
  --muted: 222 25% 15%;
  --muted-foreground: 215 15% 50%;
  --accent: 222 25% 15%;
  --accent-foreground: 213 20% 92%;
  --destructive: 0 72% 51%;
  --destructive-foreground: 0 0% 98%;
  --border: 222 25% 15%;
  --input: 222 25% 15%;
  --ring: 217 91% 60%;
  --void-cyan: 217 91% 60%;
  --void-mint: 160 60% 52%;
  --void-amber: 38 92% 50%;
  --void-violet: 263 90% 66%;
  --void-crimson: 0 72% 51%;
  --success: 160 60% 52%;
  --success-foreground: 0 0% 98%;
  --warning: 38 92% 50%;
  --warning-foreground: 0 0% 9%;
  --info: 217 91% 60%;
  --info-foreground: 0 0% 98%;
  --surface-0: 222 47% 5%;
  --surface-1: 222 44% 8%;
  --surface-2: 222 35% 12%;
  --surface-3: 222 25% 16%;
}

.synthwave {
  --background: 270 30% 5%;
  --foreground: 300 10% 92%;
  --card: 270 35% 9%;
  --card-foreground: 300 10% 92%;
  --popover: 270 35% 9%;
  --popover-foreground: 300 10% 92%;
  --primary: 330 80% 72%;
  --primary-foreground: 270 30% 5%;
  --secondary: 270 25% 13%;
  --secondary-foreground: 300 10% 92%;
  --muted: 270 20% 16%;
  --muted-foreground: 280 15% 50%;
  --accent: 270 20% 16%;
  --accent-foreground: 300 10% 92%;
  --destructive: 0 72% 51%;
  --destructive-foreground: 0 0% 98%;
  --border: 270 20% 16%;
  --input: 270 20% 16%;
  --ring: 330 80% 72%;
  --void-cyan: 330 80% 72%;
  --void-mint: 174 80% 55%;
  --void-amber: 45 100% 60%;
  --void-violet: 280 100% 70%;
  --void-crimson: 350 80% 55%;
  --success: 174 80% 55%;
  --success-foreground: 0 0% 98%;
  --warning: 45 100% 60%;
  --warning-foreground: 0 0% 9%;
  --info: 280 100% 70%;
  --info-foreground: 0 0% 98%;
  --surface-0: 270 30% 5%;
  --surface-1: 270 35% 9%;
  --surface-2: 270 28% 13%;
  --surface-3: 270 22% 18%;
}

.solarized-dark {
  --background: 192 100% 5%;
  --foreground: 44 10% 80%;
  --card: 192 81% 8%;
  --card-foreground: 44 10% 80%;
  --popover: 192 81% 8%;
  --popover-foreground: 44 10% 80%;
  --primary: 45 100% 35%;
  --primary-foreground: 192 100% 5%;
  --secondary: 194 50% 12%;
  --secondary-foreground: 44 10% 80%;
  --muted: 194 35% 15%;
  --muted-foreground: 195 20% 45%;
  --accent: 194 35% 15%;
  --accent-foreground: 44 10% 80%;
  --destructive: 1 71% 52%;
  --destructive-foreground: 0 0% 98%;
  --border: 194 35% 15%;
  --input: 194 35% 15%;
  --ring: 45 100% 35%;
  --void-cyan: 175 59% 40%;
  --void-mint: 68 100% 30%;
  --void-amber: 45 100% 35%;
  --void-violet: 237 45% 55%;
  --void-crimson: 1 71% 52%;
  --success: 68 100% 30%;
  --success-foreground: 0 0% 98%;
  --warning: 18 89% 55%;
  --warning-foreground: 0 0% 9%;
  --info: 175 59% 40%;
  --info-foreground: 0 0% 98%;
  --surface-0: 192 100% 5%;
  --surface-1: 192 81% 8%;
  --surface-2: 194 50% 12%;
  --surface-3: 194 35% 16%;
}

.catppuccin {
  --background: 240 21% 12%;
  --foreground: 227 68% 88%;
  --card: 240 21% 15%;
  --card-foreground: 227 68% 88%;
  --popover: 240 21% 15%;
  --popover-foreground: 227 68% 88%;
  --primary: 267 84% 81%;
  --primary-foreground: 240 21% 12%;
  --secondary: 240 18% 19%;
  --secondary-foreground: 227 68% 88%;
  --muted: 240 15% 22%;
  --muted-foreground: 228 24% 55%;
  --accent: 240 15% 22%;
  --accent-foreground: 227 68% 88%;
  --destructive: 347 87% 68%;
  --destructive-foreground: 0 0% 98%;
  --border: 240 15% 22%;
  --input: 240 15% 22%;
  --ring: 267 84% 81%;
  --void-cyan: 189 71% 73%;
  --void-mint: 115 54% 76%;
  --void-amber: 22 99% 68%;
  --void-violet: 267 84% 81%;
  --void-crimson: 347 87% 68%;
  --success: 115 54% 76%;
  --success-foreground: 240 21% 12%;
  --warning: 35 77% 49%;
  --warning-foreground: 0 0% 9%;
  --info: 189 71% 73%;
  --info-foreground: 240 21% 12%;
  --surface-0: 240 21% 12%;
  --surface-1: 240 21% 15%;
  --surface-2: 240 18% 19%;
  --surface-3: 240 15% 23%;
}

.dracula {
  --background: 231 15% 16%;
  --foreground: 60 30% 96%;
  --card: 232 14% 19%;
  --card-foreground: 60 30% 96%;
  --popover: 232 14% 19%;
  --popover-foreground: 60 30% 96%;
  --primary: 135 94% 65%;
  --primary-foreground: 231 15% 16%;
  --secondary: 232 12% 24%;
  --secondary-foreground: 60 30% 96%;
  --muted: 232 10% 28%;
  --muted-foreground: 228 8% 55%;
  --accent: 232 10% 28%;
  --accent-foreground: 60 30% 96%;
  --destructive: 0 100% 67%;
  --destructive-foreground: 0 0% 98%;
  --border: 232 10% 24%;
  --input: 232 10% 24%;
  --ring: 135 94% 65%;
  --void-cyan: 191 97% 77%;
  --void-mint: 135 94% 65%;
  --void-amber: 65 92% 76%;
  --void-violet: 265 89% 78%;
  --void-crimson: 0 100% 67%;
  --success: 135 94% 65%;
  --success-foreground: 231 15% 16%;
  --warning: 65 92% 76%;
  --warning-foreground: 0 0% 9%;
  --info: 191 97% 77%;
  --info-foreground: 231 15% 16%;
  --surface-0: 231 15% 16%;
  --surface-1: 232 14% 19%;
  --surface-2: 232 12% 24%;
  --surface-3: 232 10% 28%;
}

.nord {
  --background: 220 16% 16%;
  --foreground: 219 28% 88%;
  --card: 222 16% 19%;
  --card-foreground: 219 28% 88%;
  --popover: 222 16% 19%;
  --popover-foreground: 219 28% 88%;
  --primary: 193 43% 67%;
  --primary-foreground: 220 16% 16%;
  --secondary: 220 14% 24%;
  --secondary-foreground: 219 28% 88%;
  --muted: 220 12% 28%;
  --muted-foreground: 219 15% 52%;
  --accent: 220 12% 28%;
  --accent-foreground: 219 28% 88%;
  --destructive: 354 42% 56%;
  --destructive-foreground: 0 0% 98%;
  --border: 220 12% 24%;
  --input: 220 12% 24%;
  --ring: 193 43% 67%;
  --void-cyan: 193 43% 67%;
  --void-mint: 92 28% 65%;
  --void-amber: 40 71% 73%;
  --void-violet: 311 20% 63%;
  --void-crimson: 354 42% 56%;
  --success: 92 28% 65%;
  --success-foreground: 220 16% 16%;
  --warning: 40 71% 73%;
  --warning-foreground: 0 0% 9%;
  --info: 179 25% 65%;
  --info-foreground: 220 16% 16%;
  --surface-0: 220 16% 16%;
  --surface-1: 222 16% 19%;
  --surface-2: 220 14% 24%;
  --surface-3: 220 12% 28%;
}

.vercel {
  --background: 0 0% 0%;
  --foreground: 0 0% 93%;
  --card: 0 0% 7%;
  --card-foreground: 0 0% 93%;
  --popover: 0 0% 7%;
  --popover-foreground: 0 0% 93%;
  --primary: 0 0% 100%;
  --primary-foreground: 0 0% 0%;
  --secondary: 0 0% 10%;
  --secondary-foreground: 0 0% 93%;
  --muted: 0 0% 15%;
  --muted-foreground: 0 0% 53%;
  --accent: 0 0% 15%;
  --accent-foreground: 0 0% 93%;
  --destructive: 0 100% 45%;
  --destructive-foreground: 0 0% 98%;
  --border: 0 0% 20%;
  --input: 0 0% 20%;
  --ring: 0 0% 100%;
  --void-cyan: 0 0% 93%;
  --void-mint: 160 60% 52%;
  --void-amber: 38 92% 50%;
  --void-violet: 263 90% 66%;
  --void-crimson: 0 72% 51%;
  --success: 212 100% 60%;
  --success-foreground: 0 0% 98%;
  --warning: 36 77% 49%;
  --warning-foreground: 0 0% 9%;
  --info: 212 100% 60%;
  --info-foreground: 0 0% 98%;
  --surface-0: 0 0% 0%;
  --surface-1: 0 0% 7%;
  --surface-2: 0 0% 10%;
  --surface-3: 0 0% 15%;
}

.retro-terminal {
  --background: 0 0% 2%;
  --foreground: 120 100% 50%;
  --card: 0 0% 5%;
  --card-foreground: 120 80% 55%;
  --popover: 0 0% 5%;
  --popover-foreground: 120 80% 55%;
  --primary: 120 100% 50%;
  --primary-foreground: 0 0% 2%;
  --secondary: 120 10% 10%;
  --secondary-foreground: 120 80% 55%;
  --muted: 120 8% 13%;
  --muted-foreground: 120 30% 35%;
  --accent: 120 8% 13%;
  --accent-foreground: 120 80% 55%;
  --destructive: 0 80% 45%;
  --destructive-foreground: 0 0% 98%;
  --border: 120 15% 12%;
  --input: 120 15% 12%;
  --ring: 120 100% 50%;
  --void-cyan: 120 100% 50%;
  --void-mint: 120 80% 55%;
  --void-amber: 45 100% 45%;
  --void-violet: 120 60% 40%;
  --void-crimson: 0 80% 45%;
  --success: 120 80% 55%;
  --success-foreground: 0 0% 2%;
  --warning: 45 100% 45%;
  --warning-foreground: 0 0% 2%;
  --info: 120 100% 50%;
  --info-foreground: 0 0% 2%;
  --surface-0: 0 0% 2%;
  --surface-1: 0 0% 5%;
  --surface-2: 120 5% 9%;
  --surface-3: 120 10% 13%;
}

.paper {
  --background: 40 40% 95%;
  --foreground: 30 10% 15%;
  --card: 40 35% 92%;
  --card-foreground: 30 10% 15%;
  --popover: 40 35% 92%;
  --popover-foreground: 30 10% 15%;
  --primary: 43 80% 28%;
  --primary-foreground: 40 40% 95%;
  --secondary: 40 25% 88%;
  --secondary-foreground: 30 10% 15%;
  --muted: 40 20% 88%;
  --muted-foreground: 30 10% 45%;
  --accent: 40 20% 88%;
  --accent-foreground: 30 10% 15%;
  --destructive: 0 72% 45%;
  --destructive-foreground: 0 0% 98%;
  --border: 40 20% 82%;
  --input: 40 20% 82%;
  --ring: 43 80% 28%;
  --void-cyan: 43 80% 28%;
  --void-mint: 160 50% 35%;
  --void-amber: 30 80% 40%;
  --void-violet: 263 50% 45%;
  --void-crimson: 0 60% 40%;
  --success: 142 60% 38%;
  --success-foreground: 0 0% 98%;
  --warning: 38 80% 45%;
  --warning-foreground: 0 0% 9%;
  --info: 217 70% 50%;
  --info-foreground: 0 0% 98%;
  --surface-0: 40 40% 95%;
  --surface-1: 40 35% 92%;
  --surface-2: 40 25% 88%;
  --surface-3: 40 20% 82%;
}

/* Themed backgrounds */
.synthwave-bg {
  background-image:
    radial-gradient(ellipse 60% 30% at 50% 0%, hsl(330 80% 72% / 0.06), transparent),
    repeating-linear-gradient(0deg, hsl(var(--border) / 0.08) 0px, transparent 1px, transparent 40px),
    repeating-linear-gradient(90deg, hsl(var(--border) / 0.08) 0px, transparent 1px, transparent 40px),
    radial-gradient(circle 0.5px at 0px 0px, hsl(var(--border) / 0.2) 0.5px, transparent 0.5px);
  background-size: 100% 100%, 40px 40px, 40px 40px, 40px 40px;
}

@media (prefers-reduced-motion: reduce) {
  .animate-converge-left,
  .animate-converge-right,
  .animate-pair-fade-out {
    animation: none !important;
    opacity: 0 !important;
  }
  .animate-converge-burst {
    animation: none !important;
    opacity: 0 !important;
  }
  .animate-mc-fade-in {
    animation: none !important;
    opacity: 1 !important;
  }
}

.terminal-bg {
  background-image:
    radial-gradient(ellipse 50% 25% at 50% 0%, hsl(120 100% 50% / 0.04), transparent),
    repeating-linear-gradient(0deg, hsl(120 100% 50% / 0.03) 0px, transparent 1px, transparent 20px),
    repeating-linear-gradient(90deg, transparent 0px, transparent 19px, hsl(120 100% 50% / 0.02) 20px);
  background-size: 100% 100%, 20px 20px, 20px 20px;
}
