/* Prism syntax highlighting theme */
@import "./styles/prism-theme.css";

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

/* Custom scrollbar styling - uses theme variables */
* {
  scrollbar-width: thin;
  scrollbar-color: hsl(var(--scrollbar-thumb)) hsl(var(--scrollbar-track));
}

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

*::-webkit-scrollbar-track {
  background: hsl(var(--scrollbar-track));
}

*::-webkit-scrollbar-thumb {
  background-color: hsl(var(--scrollbar-thumb));
  border-radius: 4px;
}

*::-webkit-scrollbar-thumb:hover {
  background-color: hsl(var(--scrollbar-thumb-hover));
}

@layer base {
  :root {
    /* Core colors - light theme defaults (overridden by ThemeProvider) */
    --background: 0 0% 100%;
    --foreground: 222.2 84% 4.9%;
    --card: 0 0% 100%;
    --card-foreground: 222.2 84% 4.9%;
    --popover: 0 0% 100%;
    --popover-foreground: 222.2 84% 4.9%;
    --primary: 222.2 47.4% 11.2%;
    --primary-foreground: 210 40% 98%;
    --secondary: 210 40% 96.1%;
    --secondary-foreground: 222.2 47.4% 11.2%;
    --muted: 210 40% 96.1%;
    --muted-foreground: 215.4 16.3% 46.9%;
    --accent: 210 40% 96.1%;
    --accent-foreground: 222.2 47.4% 11.2%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 210 40% 98%;
    --border: 214.3 31.8% 91.4%;
    --input: 214.3 31.8% 91.4%;
    --ring: 222.2 84% 4.9%;
    --radius: 0.5rem;

    /* Status colors */
    --success: 142 76% 36%;
    --warning: 45 93% 47%;
    --info: 199 89% 48%;

    /* Nostr-specific colors */
    --zap: 45 93% 40%;
    --live: 0 72% 45%;

    /* UI highlight (active user, self-references) */
    --highlight: 25 90% 35%;

    /* Syntax highlighting */
    --syntax-comment: 215.4 16.3% 46.9%;
    --syntax-punctuation: 222.2 84% 30%;
    --syntax-property: 222.2 47.4% 11.2%;
    --syntax-string: 142 60% 30%;
    --syntax-keyword: 270 80% 50%;
    --syntax-function: 222.2 47.4% 11.2%;
    --syntax-variable: 222.2 84% 4.9%;
    --syntax-operator: 222.2 84% 20%;

    /* Diff colors */
    --diff-inserted: 142 60% 30%;
    --diff-inserted-bg: 142 60% 50% / 0.15;
    --diff-deleted: 0 70% 45%;
    --diff-deleted-bg: 0 70% 50% / 0.15;
    --diff-meta: 199 80% 40%;
    --diff-meta-bg: 199 80% 50% / 0.1;

    /* Scrollbar */
    --scrollbar-thumb: 222.2 84% 4.9% / 0.2;
    --scrollbar-thumb-hover: 222.2 84% 4.9% / 0.3;
    --scrollbar-track: 0 0% 0% / 0;

    /* Gradient colors (RGB values) */
    --gradient-1: 234 179 8;
    --gradient-2: 249 115 22;
    --gradient-3: 147 51 234;
    --gradient-4: 6 182 212;
  }

  /* Dark theme - applied via .dark class or ThemeProvider */
  .dark {
    --background: 222.2 84% 4.9%;
    --foreground: 210 40% 98%;
    --card: 222.2 84% 4.9%;
    --card-foreground: 210 40% 98%;
    --popover: 222.2 84% 4.9%;
    --popover-foreground: 210 40% 98%;
    --primary: 210 40% 98%;
    --primary-foreground: 222.2 47.4% 11.2%;
    --secondary: 217.2 32.6% 17.5%;
    --secondary-foreground: 210 40% 98%;
    --muted: 217.2 32.6% 17.5%;
    --muted-foreground: 215 20.2% 70%;
    --accent: 270 100% 70%;
    --accent-foreground: 222.2 84% 4.9%;
    --destructive: 0 62.8% 30.6%;
    --destructive-foreground: 210 40% 98%;
    --border: 217.2 32.6% 17.5%;
    --input: 217.2 32.6% 17.5%;
    --ring: 212.7 26.8% 83.9%;

    /* Status colors */
    --success: 142 76% 36%;
    --warning: 45 93% 47%;
    --info: 199 89% 48%;

    /* Nostr-specific colors */
    --zap: 45 93% 58%;
    --live: 0 72% 51%;

    /* UI highlight (active user, self-references) */
    --highlight: 27 96% 61%;

    /* Syntax highlighting */
    --syntax-comment: 215 20.2% 70%;
    --syntax-punctuation: 210 40% 70%;
    --syntax-property: 210 40% 98%;
    --syntax-string: 215 20.2% 70%;
    --syntax-keyword: 210 40% 98%;
    --syntax-function: 210 40% 98%;
    --syntax-variable: 210 40% 98%;
    --syntax-operator: 210 40% 98%;

    /* Diff colors */
    --diff-inserted: 134 60% 76%;
    --diff-inserted-bg: 145 63% 42% / 0.1;
    --diff-deleted: 0 100% 76%;
    --diff-deleted-bg: 0 100% 60% / 0.1;
    --diff-meta: 190 77% 70%;
    --diff-meta-bg: 190 77% 70% / 0.08;

    /* Scrollbar */
    --scrollbar-thumb: 0 0% 100% / 0.2;
    --scrollbar-thumb-hover: 0 0% 100% / 0.3;
    --scrollbar-track: 0 0% 0% / 0;

    /* Gradient colors (RGB values) */
    --gradient-1: 250 204 21;
    --gradient-2: 251 146 60;
    --gradient-3: 168 85 247;
    --gradient-4: 34 211 238;
  }
}

@layer base {
  * {
    @apply border-border;
  }
  body {
    @apply bg-background text-foreground font-mono;
  }
}

@layer utilities {
  .no-scrollbar::-webkit-scrollbar {
    display: none;
  }
  .no-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
  }

  .text-grimoire-gradient {
    background: linear-gradient(
      to bottom,
      rgb(var(--gradient-1)),
      rgb(var(--gradient-2)),
      rgb(var(--gradient-3)),
      rgb(var(--gradient-4))
    );
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}

/* react-medium-image-zoom theme customization - uses background with opacity */
[data-rmiz-modal-overlay] {
  background-color: hsl(var(--background) / 0.92) !important;
}

[data-rmiz-modal-content] {
  box-shadow: 0 0 40px hsl(var(--foreground) / 0.2);
}

/* React Mosaic Theme Customization */
.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme {
  background: hsl(var(--background));
}

/* Smooth animations for window resizing and repositioning */
/* Only animate during preset application, not manual resize/drag */
body.animating-layout
  .mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-tile {
  transition:
    width 150ms cubic-bezier(0.25, 0.1, 0.25, 1),
    height 150ms cubic-bezier(0.25, 0.1, 0.25, 1),
    top 150ms cubic-bezier(0.25, 0.1, 0.25, 1),
    left 150ms cubic-bezier(0.25, 0.1, 0.25, 1);
  contain: layout; /* Isolate layout calculations for better performance */
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window
  .mosaic-window-toolbar {
  background: hsl(var(--background));
  border: none;
  border-bottom: 1px solid hsl(var(--border));
  border-radius: 0;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window
  .mosaic-window-title {
  color: hsl(var(--foreground));
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-window {
  background: hsl(var(--background));
  outline: none;
  border-radius: 0 !important;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-window * {
  border-radius: 0 !important;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-window::before,
.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-window::after {
  display: none;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme.bp4-dark .mosaic-window,
.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme.bp4-dark .mosaic-preview {
  box-shadow: none;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window
  .mosaic-window-toolbar {
  background: hsl(var(--muted));
  border: none;
  border-bottom: 1px solid hsl(var(--border));
  color: hsl(var(--foreground));
  height: 30px;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window
  .mosaic-window-title {
  color: hsl(var(--foreground));
  font-family: inherit;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window
  .mosaic-window-body {
  background: hsl(var(--background));
  color: hsl(var(--foreground));
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-window-controls {
  color: hsl(var(--muted-foreground));
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window-controls:hover {
  color: hsl(var(--foreground));
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window-toolbar
  .separator {
  border-left: 1px solid hsl(var(--border));
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme
  .mosaic-window-body-overlay {
  background: hsl(var(--background));
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-preview {
  background: hsl(var(--accent) / 0.3);
  border: 2px solid hsl(var(--primary));
  outline: none;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-drop-target {
  border: 2px solid var(--border);
  outline: none;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-split:hover {
  background: hsl(var(--primary));
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-split.-row {
  width: 4px;
  margin: 0 -2px;
}

.mosaic.mosaic-blueprint-theme.mosaic-blueprint-theme .mosaic-split.-column {
  height: 4px;
  margin: -2px 0;
}

/* Accessibility: Focus indicators for keyboard navigation */
@layer base {
  /* Focus-visible for buttons and interactive elements */
  button:focus-visible,
  a:focus-visible,
  [role="button"]:focus-visible {
    outline: 2px solid hsl(var(--ring));
    outline-offset: 2px;
  }

  /* Focus-visible for input elements */
  input:focus-visible,
  textarea:focus-visible,
  select:focus-visible {
    outline: 2px solid hsl(var(--ring));
    outline-offset: 0;
  }

  /* Focus-visible for command launcher items */
  [cmdk-item]:focus-visible {
    outline: 2px solid hsl(var(--ring));
    outline-offset: -2px;
  }

  /* Focus-visible for tab buttons */
  .tabbar-button:focus-visible {
    outline: 2px solid hsl(var(--ring));
    outline-offset: 2px;
  }
}

/* TipTap Editor Styles */
.ProseMirror {
  min-height: 1.25rem;
  line-height: 1.25rem;
  position: relative;
}

.ProseMirror:focus {
  outline: none;
}

.ProseMirror p {
  margin: 0;
  line-height: 1.25rem;
}

.ProseMirror p.is-editor-empty:first-child::before {
  content: attr(data-placeholder);
  color: hsl(var(--muted-foreground));
  pointer-events: none;
  position: absolute;
  left: 0;
  top: 0;
}

/* Mention styles */
.ProseMirror .mention {
  color: hsl(var(--primary));
  background-color: hsl(var(--primary) / 0.1);
  padding: 0.125rem 0.25rem;
  border-radius: 0.25rem;
  text-decoration: none;
  cursor: pointer;
  font-weight: 500;
}

.ProseMirror .mention:hover {
  background-color: hsl(var(--primary) / 0.2);
}

/* Emoji styles */
.ProseMirror .emoji-node {
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
}

.ProseMirror .emoji-image {
  height: 1.2em;
  width: auto;
  vertical-align: middle;
  object-fit: contain;
}

.ProseMirror .emoji-unicode {
  font-size: 1.1em;
  line-height: 1;
  vertical-align: middle;
}

/* Hide scrollbar utility */
.hide-scrollbar {
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* IE/Edge */
}

.hide-scrollbar::-webkit-scrollbar {
  display: none; /* Chrome/Safari/Opera */
}
