src/globals.css
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  :root {
    --color-text-base: 0, 0, 0;
    --color-text-muted: 120, 120, 120;
    --color-text-inverted: 255, 255, 255;
    --color-fill: 245, 245, 245;
    --muted: 200, 200, 200;
    --color: 249, 115, 22;
    --color-button-accent: 249, 115, 22;
    --color-button-accent-hover: 55, 55, 55;
    --color-button-muted: 244, 239, 238;
    --color-nvim-button: 95, 175, 215;
    --color-nvim-blue: 35, 95, 135;
    --color-nvim-green: 0, 150, 0;

    [data-theme="blue"] {
      --color-text-base: 15, 23, 42;
      --color-text-muted: 100, 116, 139;
      --color-text-inverted: 240, 240, 240;
      --color-fill: 203, 213, 225;
      --muted: 148, 163, 184;
      --color: 59, 130, 246;
      --color-button-accent: 59, 130, 246;
      --color-button-accent-hover: 0, 185, 255;
      --color-button-muted: 226, 232, 240;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 0, 150, 0;
    }

    [data-theme="red"] {
      --color-text-base: 28, 25, 23;
      --color-text-muted: 100, 100, 100;
      --color-text-inverted: 245, 245, 245;
      --color-fill: 231, 229, 228;
      --muted: 220, 220, 220;
      --color: 239, 68, 68;
      --color-button-accent: 239, 68, 68;
      --color-button-accent-hover: 220, 50, 70;
      --color-button-muted: 245, 245, 245;
      --color-nvim-blue: 35, 95, 135;
      --color-nvim-green: 0, 150, 0;
    }

    [data-theme="green"] {
      --color-text-base: 40, 40, 40;
      --color-text-muted: 110, 110, 110;
      --color-text-inverted: 230, 230, 230;
      --color-fill: 236, 252, 203;
      --muted: 189, 220, 147;
      --color: 101, 163, 13;
      --color-button-accent: 101, 163, 13;
      --color-button-accent-hover: 120, 220, 120;
      --color-button-muted: 211, 235, 173;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 0, 150, 0;
    }

    [data-theme="cyber"] {
      --color-text-base: 130, 130, 130;
      --color-text-muted: 144, 135, 5;
      --color-text-inverted: 240, 240, 240;
      --color-fill: 202, 180, 14;
      --muted: 50, 50, 50;
      --color: 205, 21, 43;
      --color-button-accent: 155, 21, 43;
      --color-button-accent-hover: 0, 185, 255;
      --color-button-muted: 249, 239, 6;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 0, 150, 200;
    }
  }

  .dark {
    --color-text-base: 255, 255, 255;
    --color-text-muted: 150, 150, 150;
    --color-text-inverted: 255, 255, 255;
    --color-fill: 18, 18, 18;
    --muted: 36, 36, 36;
    --color: 227, 77, 10;
    --color-button-accent: 227, 77, 10;
    --color-button-accent-hover: 231, 121, 43;
    --color-button-muted: 26, 26, 26;
    --color-nvim-blue: 95, 175, 215;
    --color-nvim-green: 135, 215, 135;

    [data-theme="blue"] {
      --color-text-base: 248, 250, 252;
      --color-text-muted: 148, 163, 184;
      --color-text-inverted: 240, 240, 240;
      --color-fill: 2, 6, 23;
      --muted: 51, 65, 85;
      --color: 59, 130, 246;
      --color-button-accent: 59, 130, 246;
      --color-button-accent-hover: 0, 185, 255;
      --color-button-muted: 30, 41, 59;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 135, 215, 135;
    }

    [data-theme="red"] {
      --color-text-base: 231, 229, 228;
      --color-text-muted: 168, 162, 158;
      --color-text-inverted: 245, 245, 245;
      --color-fill: 28, 25, 23;
      --muted: 45, 45, 45;
      --color: 248, 113, 113;
      --color-button-accent: 248, 113, 113;
      --color-button-accent-hover: 220, 50, 70;
      --color-button-muted: 120, 113, 108;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 135, 215, 135;
    }

    [data-theme="green"] {
      --color-text-base: 230, 230, 230;
      --color-text-muted: 104, 124, 104;
      --color-text-inverted: 230, 230, 230;
      --color-fill: 10, 20, 10;
      --muted: 54, 64, 54;
      --color: 132, 204, 22;
      --color-button-accent: 132, 204, 22;
      --color-button-accent-hover: 120, 220, 120;
      --color-button-muted: 34, 44, 34;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 135, 215, 135;
    }

    [data-theme="cyber"] {
      --color-text-base: 252, 255, 54;
      --color-text-muted: 125, 125, 125;
      --color-text-inverted: 240, 240, 240;
      --color-fill: 15, 15, 15;
      --muted: 50, 50, 50;
      --color: 90, 237, 251;
      --color-button-accent: 70, 210, 220;
      --color-button-accent-hover: 0, 185, 255;
      --color-button-muted: 25, 81, 86;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 135, 215, 135;
    }

    [data-theme="pink"] {
      --color-text-base: 255, 240, 245;
      --color-text-muted: 255, 182, 193;
      --color-text-inverted: 40, 40, 40;
      --color-fill: 40, 40, 40;
      --muted: 110, 110, 110;
      --color: 255, 105, 180;
      --color-button-accent: 255, 105, 180;
      --color-button-accent-hover: 255, 182, 193;
      --color-button-muted: 255, 240, 245;
      --color-nvim-blue: 95, 175, 215;
      --color-nvim-green: 135, 215, 135;
    }
  }

  body {
    @apply bg-nvim-bg text-nvim-fg font-mono select-none;

    .c-cursor {
      position: fixed;
      z-index: 9999;
      pointer-events: none;
      border-radius: 200px;
      @apply bg-skin-hue/20;
    }
  }

  ::-webkit-scrollbar {
    width: 8px;
  }

  ::-webkit-scrollbar-track {
    @apply bg-nvim-bg;
  }

  ::-webkit-scrollbar-thumb {
    @apply bg-nvim-gray rounded;
  }
  .modified-cursor-none {
    cursor: none !important;
  }
  .hover-grad-text {
    @apply text-center text-transparent bg-clip-text transition-all ease-in-out duration-700;
    background-image: linear-gradient(
            to right,
            theme("colors.slate.950"),
            theme("colors.slate.950") 33%,
            theme("colors.red.500") 66%,
            theme(colors.orange.400),
            theme("colors.yellow.500"),
            theme("colors.blue"),
            theme("colors.purple.500")
    );
    background-size: 300% 100%;
    background-position: top left 100%;
  }

  @media screen and (min-width: 640px) {
    .hover-grad-text {
      background-position: top left;
    }
    .hover-grad-text:hover {
      background-position: top left 100%;
    }
  }

  .animate-marker {
    animation: marker 4s ease-out infinite;
  }

  @keyframes marker {
    0% {
      transform: translate(-50%, -50%) scale(1);
      opacity: 1;
    }
    35% {
      transform: translate(-50%, -50%) scale(6);
      opacity: 0;
    }
    100% {
      transform: translate(-50%, -50%) scale(6);
      opacity: 0;
    }
  }
}