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

/* Design tokens — HSL form, sourced from shadcn/ui's "neutral" palette. */
@layer base {
  :root {
    --background: 0 0% 100%;
    --foreground: 240 3% 12%;
    --card: 0 0% 100%;
    --card-foreground: 240 3% 12%;
    --popover: 0 0% 100%;
    --popover-foreground: 240 3% 12%;
    --primary: 240 4% 16%;
    --primary-foreground: 0 0% 98%;
    --secondary: 0 0% 96.1%;
    --secondary-foreground: 0 0% 9%;
    --muted: 0 0% 96.1%;
    --muted-foreground: 0 0% 45.1%;
    --accent: 0 0% 96.1%;
    --accent-foreground: 0 0% 9%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 0 0% 98%;
    --border: 0 0% 89.8%;
    --input: 0 0% 89.8%;
    --ring: 0 0% 3.9%;
    --radius: 0.4375rem;
    --sidebar: 0 0% 98.5%;
    --sidebar-foreground: 0 0% 3.9%;
    --sidebar-accent: 0 0% 95.8%;
    --sidebar-accent-foreground: 0 0% 9%;
    --sidebar-border: 0 0% 89.8%;
  }

  .dark {
    --background: 0 0% 10%;
    --foreground: 240 4% 96%;
    --card: 0 0% 12%;
    --card-foreground: 240 4% 96%;
    --popover: 0 0% 12%;
    --popover-foreground: 240 4% 96%;
    --primary: 240 5% 98%;
    --primary-foreground: 0 0% 9%;
    --secondary: 0 0% 12%;
    --secondary-foreground: 0 0% 98%;
    --muted: 0 0% 13%;
    --muted-foreground: 0 0% 60%;
    --accent: 0 0% 15%;
    --accent-foreground: 0 0% 98%;
    --destructive: 0 62.8% 30.6%;
    --destructive-foreground: 0 0% 98%;
    --border: 0 0% 18%;
    --input: 0 0% 18%;
    --ring: 0 0% 83.1%;
    --sidebar: 0 0% 11.5%;
    --sidebar-foreground: 0 0% 98%;
    --sidebar-accent: 0 0% 15.5%;
    --sidebar-accent-foreground: 0 0% 98%;
    --sidebar-border: 0 0% 18%;
  }
}

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

  html,
  body,
  #root {
    @apply h-full;
  }

  body {
    @apply bg-background text-foreground font-sans antialiased;
  }

  ::selection {
    @apply bg-primary/15;
  }
}

@layer utilities {
  .shadow-inner-right {
    box-shadow: inset -9px 0 6px -1px rgb(0 0 0 / 0.02);
  }

  /* Markdown body styles, ported from agent-chat-ui's markdown-styles.css. */
  .markdown-content > :first-child {
    @apply mt-0;
  }
  .markdown-content > :last-child {
    @apply mb-0;
  }

  /* Override Tailwind Typography's built-in colors with our design tokens
     so assistant messages use the same --foreground as user messages. */
  .markdown-content {
    --tw-prose-body: hsl(var(--foreground));
    --tw-prose-headings: hsl(var(--foreground));
    --tw-prose-bold: hsl(var(--foreground));
    --tw-prose-lead: hsl(var(--foreground));
  }

  /* CJK-friendly line-height: prose paragraphs default to 1.625 which is
     tight for Chinese/Japanese/Korean characters. Bump to 1.8 for better
     readability when the browser detects a CJK primary font. */
  :lang(zh),
  :lang(zh-CN),
  :lang(zh-TW),
  :lang(zh-HK),
  :lang(ja),
  :lang(ko) {
    --cjk-line-height: 1.8;
  }
  :root {
    --cjk-line-height: 1.625;
  }

  /* Shimmer band sweeping across the reasoning header while
     ``reasoning_delta`` frames are arriving. Pure CSS, no JS animation,
     respects ``prefers-reduced-motion``. */
  @keyframes reasoning-shimmer-sweep {
    0% {
      background-position: -200% 0;
    }
    100% {
      background-position: 200% 0;
    }
  }
  .reasoning-shimmer {
    background-image: linear-gradient(
      90deg,
      transparent 0%,
      hsl(var(--muted-foreground) / 0.18) 50%,
      transparent 100%
    );
    background-size: 200% 100%;
    background-repeat: no-repeat;
    animation: reasoning-shimmer-sweep 2.2s linear infinite;
  }
  @media (prefers-reduced-motion: reduce) {
    .reasoning-shimmer {
      animation: none;
    }
  }

  /* Subtle scrollbar that doesn't fight the dark background. */
  .scrollbar-thin {
    scrollbar-width: thin;
    scrollbar-color: hsl(var(--muted-foreground) / 0.4) transparent;
  }
  .scrollbar-thin::-webkit-scrollbar {
    width: 6px;
    height: 6px;
  }
  .scrollbar-thin::-webkit-scrollbar-thumb {
    background-color: hsl(var(--muted-foreground) / 0.4);
    border-radius: 9999px;
  }
}
