@import 'tailwindcss';

@plugin '@tailwindcss/typography';
@plugin 'tailwindcss-animate';

@custom-variant dark (&:is(.dark *));

@layer base {
  button:not(:disabled),
  [role="button"]:not(:disabled) {
    cursor: pointer;
  }
}

:root {
  /* Native controls (color inputs, etc.): light UA chrome. */
  color-scheme: light;
  --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 10% 3.9%;
  --chart-1: 12 76% 61%;
  --chart-2: 173 58% 39%;
  --chart-3: 197 37% 24%;
  --chart-4: 43 74% 66%;
  --chart-5: 27 87% 67%;
  --chart-overlay: hsl(var(--muted-foreground) / 0.22);
  --sidebar-background: 0 0% 98%;
  --sidebar-foreground: 240 5.3% 26.1%;
  --sidebar-primary: 240 5.9% 10%;
  --sidebar-primary-foreground: 0 0% 98%;
  --sidebar-accent: 240 4.8% 95.9%;
  --sidebar-accent-foreground: 240 5.9% 10%;
  --sidebar-border: 220 13% 91%;
  --sidebar-ring: 217.2 91.2% 59.8%;
  --radius: 0.5rem;
  --editor-keyword: 240 100% 50%;
  --editor-string: 0 57% 33%;
  --editor-number: 156 100% 30%;
  --editor-comment: 120 100% 25%;
  --editor-operator: 0 0% 0%;
  --editor-punctuation: 0 0% 0%;
  --editor-property: 214 100% 25%;
  --editor-function: 38 63% 33%;
  --editor-type: 156 100% 30%;
  --editor-constant: 204 100% 38%;
  --editor-invalid: 0 70% 49%;
  --editor-selection-match: 207 100% 84%;
  --editor-bracket-match: 0 0% 0%;
  --editor-fold-placeholder: 220 14% 91%;
  --editor-search-match: 60 100% 50%;
  --editor-search-match-selected: 60 100% 50%;
  --editor-lint-error: 0 63% 49%;
  --editor-lint-warning: 32 94% 48%;
}

.light {
  color-scheme: light;
}

.dark {
  /* Native controls: dark UA chrome. */
  color-scheme: dark;
  --background: 240 10% 3.9%;
  --foreground: 0 0% 98%;
  --card: 240 10% 3.9%;
  --card-foreground: 0 0% 98%;
  --popover: 240 10% 3.9%;
  --popover-foreground: 0 0% 98%;
  --primary: 0 0% 98%;
  --primary-foreground: 240 5.9% 10%;
  --secondary: 240 3.7% 15.9%;
  --secondary-foreground: 0 0% 98%;
  --muted: 240 3.7% 15.9%;
  --muted-foreground: 240 5% 64.9%;
  --accent: 240 3.7% 15.9%;
  --accent-foreground: 0 0% 98%;
  --destructive: 0 62.8% 30.6%;
  --destructive-foreground: 0 0% 98%;
  --border: 240 3.7% 15.9%;
  --input: 240 3.7% 15.9%;
  --ring: 240 4.9% 83.9%;
  --chart-1: 220 70% 50%;
  --chart-2: 160 60% 45%;
  --chart-3: 30 80% 55%;
  --chart-4: 280 65% 60%;
  --chart-5: 340 75% 55%;
  --chart-overlay: hsl(var(--muted-foreground) / 0.22);
  --sidebar-background: 240 5.9% 10%;
  --sidebar-foreground: 240 4.8% 95.9%;
  --sidebar-primary: 0 0% 98%;
  --sidebar-primary-foreground: 240 5.9% 10%;
  --sidebar-accent: 240 3.7% 15.9%;
  --sidebar-accent-foreground: 240 4.8% 95.9%;
  --sidebar-border: 240 3.7% 15.9%;
  --sidebar-ring: 217.2 91.2% 59.8%;
  --editor-keyword: 206 100% 60%;
  --editor-string: 25 58% 59%;
  --editor-number: 120 43% 71%;
  --editor-comment: 122 39% 49%;
  --editor-operator: 0 0% 83%;
  --editor-punctuation: 0 0% 83%;
  --editor-property: 207 100% 74%;
  --editor-function: 49 44% 67%;
  --editor-type: 167 47% 55%;
  --editor-constant: 210 100% 66%;
  --editor-invalid: 0 100% 63%;
  --editor-selection-match: 207 35% 35%;
  --editor-bracket-match: 0 0% 100%;
  --editor-fold-placeholder: 0 0% 24%;
  --editor-search-match: 43 16% 33%;
  --editor-search-match-selected: 43 16% 33%;
  --editor-lint-error: 3 88% 71%;
  --editor-lint-warning: 28 100% 72%;
}

@theme inline {
  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);
  --color-background: hsl(var(--background));
  --color-foreground: hsl(var(--foreground));
  --color-card: hsl(var(--card));
  --color-card-foreground: hsl(var(--card-foreground));
  --color-popover: hsl(var(--popover));
  --color-popover-foreground: hsl(var(--popover-foreground));
  --color-primary: hsl(var(--primary));
  --color-primary-foreground: hsl(var(--primary-foreground));
  --color-secondary: hsl(var(--secondary));
  --color-secondary-foreground: hsl(var(--secondary-foreground));
  --color-muted: hsl(var(--muted));
  --color-muted-foreground: hsl(var(--muted-foreground));
  --color-accent: hsl(var(--accent));
  --color-accent-foreground: hsl(var(--accent-foreground));
  --color-destructive: hsl(var(--destructive));
  --color-destructive-foreground: hsl(var(--destructive-foreground));
  --color-border: hsl(var(--border));
  --color-input: hsl(var(--input));
  --color-ring: hsl(var(--ring));
  --color-chart-1: hsl(var(--chart-1));
  --color-chart-2: hsl(var(--chart-2));
  --color-chart-3: hsl(var(--chart-3));
  --color-chart-4: hsl(var(--chart-4));
  --color-chart-5: hsl(var(--chart-5));
  --color-chart-overlay: var(--chart-overlay);
  --color-sidebar: hsl(var(--sidebar-background));
  --color-sidebar-foreground: hsl(var(--sidebar-foreground));
  --color-sidebar-primary: hsl(var(--sidebar-primary));
  --color-sidebar-primary-foreground: hsl(var(--sidebar-primary-foreground));
  --color-sidebar-accent: hsl(var(--sidebar-accent));
  --color-sidebar-accent-foreground: hsl(var(--sidebar-accent-foreground));
  --color-sidebar-border: hsl(var(--sidebar-border));
  --color-sidebar-ring: hsl(var(--sidebar-ring));
  --color-editor-keyword: hsl(var(--editor-keyword));
  --color-editor-string: hsl(var(--editor-string));
  --color-editor-number: hsl(var(--editor-number));
  --color-editor-comment: hsl(var(--editor-comment));
  --color-editor-operator: hsl(var(--editor-operator));
  --color-editor-punctuation: hsl(var(--editor-punctuation));
  --color-editor-property: hsl(var(--editor-property));
  --color-editor-function: hsl(var(--editor-function));
  --color-editor-type: hsl(var(--editor-type));
  --color-editor-constant: hsl(var(--editor-constant));
  --color-editor-invalid: hsl(var(--editor-invalid));
  --color-editor-selection-match: hsl(var(--editor-selection-match));
  --color-editor-bracket-match: hsl(var(--editor-bracket-match));
  --color-editor-fold-placeholder: hsl(var(--editor-fold-placeholder));
  --color-editor-search-match: hsl(var(--editor-search-match));
  --color-editor-search-match-selected: hsl(
    var(--editor-search-match-selected)
  );
  --color-editor-lint-error: hsl(var(--editor-lint-error));
  --color-editor-lint-warning: hsl(var(--editor-lint-warning));
  --animate-sqlrooms-progress: sqlrooms-progress 1s infinite linear;
}

@keyframes sqlrooms-progress {
  0% {
    transform: translateX(0) scaleX(0);
  }
  40% {
    transform: translateX(0) scaleX(0.4);
  }
  100% {
    transform: translateX(100%) scaleX(0.5);
  }
}

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

  body {
    @apply bg-background text-foreground;
  }
}

@layer utilities {
  .no-spinner {
    appearance: textfield;
  }

  .no-spinner::-webkit-outer-spin-button,
  .no-spinner::-webkit-inner-spin-button {
    appearance: none;
    margin: 0;
  }

  .scrollbar-thin {
    scrollbar-color: hsl(var(--border)) transparent;
    scrollbar-width: thin;
  }

  .scrollbar-thin::-webkit-scrollbar {
    width: 0.375rem;
    height: 0.375rem;
  }

  .scrollbar-thin::-webkit-scrollbar-thumb {
    background-color: hsl(var(--border));
    border-radius: 9999px;
  }

  .scrollbar-thin::-webkit-scrollbar-track {
    background-color: transparent;
  }
}

@layer components {
  .prose :where(ul, ol) {
    padding-left: 1.5em;
    margin-top: 0.75em;
    margin-bottom: 0.75em;
  }

  .prose :where(ul > li, ol > li) {
    margin-top: 0.25em;
    margin-bottom: 0.25em;
  }

  .prose :where(pre) {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
    border-radius: var(--radius);
    padding: 1em;
    overflow-x: auto;
  }

  .prose :where(code) {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
    border-radius: 0.25em;
    padding: 0.2em 0.4em;
    font-size: 0.875em;
  }

  .prose :where(blockquote) {
    border-left-color: hsl(var(--border));
    font-style: normal;
    color: hsl(var(--muted-foreground));
  }

  .prose :where(h1, h2, h3, h4, h5, h6) {
    color: hsl(var(--foreground));
    font-weight: 600;
  }

  .prose :where(a) {
    color: hsl(var(--primary));
    text-decoration: none;
  }

  .prose :where(a:hover) {
    text-decoration: underline;
  }

  .prose :where(table) {
    width: 100%;
    table-layout: auto;
    text-align: left;
    border-collapse: collapse;
  }

  .prose :where(th) {
    font-weight: 600;
    border-bottom-width: 2px;
    border-color: hsl(var(--border));
    padding: 0.5em;
  }

  .prose :where(td) {
    border-bottom-width: 1px;
    border-color: hsl(var(--border));
    padding: 0.5em;
  }

  .prose.prose-invert,
  .dark .prose {
    color: hsl(var(--foreground));
  }

  .prose.prose-invert :where(pre),
  .dark .prose :where(pre),
  .prose.prose-invert :where(code),
  .dark .prose :where(code) {
    background-color: hsl(var(--muted));
    color: hsl(var(--muted-foreground));
  }

  .prose.prose-invert :where(h1, h2, h3, h4, h5, h6),
  .dark .prose :where(h1, h2, h3, h4, h5, h6) {
    color: hsl(var(--foreground));
  }

  .prose.prose-invert :where(blockquote),
  .dark .prose :where(blockquote) {
    border-left-color: hsl(var(--border));
    color: hsl(var(--muted-foreground));
  }
}
