@import 'tailwindcss';

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

@font-face {
  font-family: 'ClashDisplay';
  src: url('/fonts/ClashDisplay/ClashDisplay-Semibold.woff2') format('woff2'),
      url('/fonts/ClashDisplay/ClashDisplay-Semibold.woff') format('woff');
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Lexend';
  src: url('/fonts/Lexend/Lexend-Regular.woff2') format('woff2'),
      url('/fonts/Lexend/Lexend-Regular.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

.font-custom {
  font-family: 'ClashDisplay', sans-serif;
}

:root {
  --background: oklch(0.98 0 0);
  --foreground: oklch(0.24 0 0);
  --card: oklch(0.99 0 0);
  --card-foreground: oklch(0.24 0 0);
  --popover: oklch(0.99 0 0);
  --popover-foreground: oklch(0.24 0 0);
  --primary: oklch(0.43 0.04 42.00);
  --primary-foreground: oklch(1.00 0 0);
  --secondary: oklch(0.92 0.07 76.67);
  --secondary-foreground: oklch(0.35 0.07 41.41);
  --muted: oklch(0.95 0 0);
  --muted-foreground: oklch(0.50 0 0);
  --accent: oklch(0.93 0 0);
  --accent-foreground: oklch(0.24 0 0);
  --destructive: oklch(0.63 0.19 33.26);
  --border: oklch(0.88 0 0);
  --input: oklch(0.88 0 0);
  --ring: oklch(0.43 0.04 42.00);
  --chart-1: oklch(0.43 0.04 42.00);
  --chart-2: oklch(0.92 0.07 76.67);
  --chart-3: oklch(0.93 0 0);
  --chart-4: oklch(0.94 0.05 75.02);
  --chart-5: oklch(0.43 0.04 42.00);
  --sidebar: oklch(0.99 0 0);
  --sidebar-foreground: oklch(0.26 0 0);
  --sidebar-primary: oklch(0.33 0 0);
  --sidebar-primary-foreground: oklch(0.99 0 0);
  --sidebar-accent: oklch(0.98 0 0);
  --sidebar-accent-foreground: oklch(0.33 0 0);
  --sidebar-border: oklch(0.94 0 0);
  --sidebar-ring: oklch(0.77 0 0);

  --radius: 0.5rem;

  --font-sans: "Lexend", sans-serif;
  --font-mono:
    Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
    'Liberation Mono', 'Courier New', monospace;
  
  --shadow-2xs: 0 1px 3px 0px oklch(0.00 0 0 / 0.05);
  --shadow-xs: 0 1px 3px 0px oklch(0.00 0 0 / 0.05);
  --shadow-sm: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 1px 2px -1px oklch(0.00 0 0 / 0.10);
  --shadow: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 1px 2px -1px oklch(0.00 0 0 / 0.10);
  --shadow-md: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 2px 4px -1px oklch(0.00 0 0 / 0.10);
  --shadow-lg: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 4px 6px -1px oklch(0.00 0 0 / 0.10);
  --shadow-xl: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 8px 10px -1px oklch(0.00 0 0 / 0.10);
  --shadow-2xl: 0 1px 3px 0px oklch(0.00 0 0 / 0.25);
  
}

.dark {
  --background: oklch(0.18 0 0);
  --foreground: oklch(0.95 0 0);
  --card: oklch(0.21 0 0);
  --card-foreground: oklch(0.95 0 0);
  --popover: oklch(0.21 0 0);
  --popover-foreground: oklch(0.95 0 0);
  --primary: oklch(0.92 0.05 67.14);
  --primary-foreground: oklch(0.20 0.02 201.14);
  --secondary: oklch(0.32 0.02 67.00);
  --secondary-foreground: oklch(0.92 0.05 67.14);
  --muted: oklch(0.25 0 0);
  --muted-foreground: oklch(0.77 0 0);
  --accent: oklch(0.29 0 0);
  --accent-foreground: oklch(0.95 0 0);
  --destructive: oklch(0.63 0.19 33.26);
  --border: oklch(0.24 0.01 88.77);
  --input: oklch(0.40 0 0);
  --ring: oklch(0.92 0.05 67.14);
  --chart-1: oklch(0.92 0.05 67.14);
  --chart-2: oklch(0.32 0.02 67.00);
  --chart-3: oklch(0.29 0 0);
  --chart-4: oklch(0.35 0.02 67.11);
  --chart-5: oklch(0.92 0.05 67.14);
  --sidebar: oklch(0.21 0.01 285.56);
  --sidebar-foreground: oklch(0.97 0 0);
  --sidebar-primary: oklch(0.49 0.22 264.43);
  --sidebar-primary-foreground: oklch(1.00 0 0);
  --sidebar-accent: oklch(0.27 0.01 285.81);
  --sidebar-accent-foreground: oklch(0.97 0 0);
  --sidebar-border: oklch(0.27 0.01 285.81);
  --sidebar-ring: oklch(0.87 0.01 286.27);
  
  --shadow-2xs: 0 1px 3px 0px oklch(0.00 0 0 / 0.05);
  --shadow-xs: 0 1px 3px 0px oklch(0.00 0 0 / 0.05);
  --shadow-sm: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 1px 2px -1px oklch(0.00 0 0 / 0.10);
  --shadow: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 1px 2px -1px oklch(0.00 0 0 / 0.10);
  --shadow-md: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 2px 4px -1px oklch(0.00 0 0 / 0.10);
  --shadow-lg: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 4px 6px -1px oklch(0.00 0 0 / 0.10);
  --shadow-xl: 0 1px 3px 0px oklch(0.00 0 0 / 0.10), 0 8px 10px -1px oklch(0.00 0 0 / 0.10);
  --shadow-2xl: 0 1px 3px 0px oklch(0.00 0 0 / 0.25);
}

@theme inline {
  --color-background: var(--background);
  --color-foreground: var(--foreground);
  --color-card: var(--card);
  --color-card-foreground: var(--card-foreground);
  --color-popover: var(--popover);
  --color-popover-foreground: var(--popover-foreground);
  --color-primary: var(--primary);
  --color-primary-foreground: var(--primary-foreground);
  --color-secondary: var(--secondary);
  --color-secondary-foreground: var(--secondary-foreground);
  --color-muted: var(--muted);
  --color-muted-foreground: var(--muted-foreground);
  --color-accent: var(--accent);
  --color-accent-foreground: var(--accent-foreground);
  --color-destructive: var(--destructive);
  --color-border: var(--border);
  --color-input: var(--input);
  --color-ring: var(--ring);
  --color-chart-1: var(--chart-1);
  --color-chart-2: var(--chart-2);
  --color-chart-3: var(--chart-3);
  --color-chart-4: var(--chart-4);
  --color-chart-5: var(--chart-5);
  --color-sidebar: var(--sidebar);
  --color-sidebar-foreground: var(--sidebar-foreground);
  --color-sidebar-primary: var(--sidebar-primary);
  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
  --color-sidebar-accent: var(--sidebar-accent);
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
  --color-sidebar-border: var(--sidebar-border);
  --color-sidebar-ring: var(--sidebar-ring);

  --font-sans: var(--font-sans);
  --font-mono: var(--font-mono);
  --font-serif: var(--font-serif);

  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);

  --shadow-2xs: var(--shadow-2xs);
  --shadow-xs: var(--shadow-xs);
  --shadow-sm: var(--shadow-sm);
  --shadow: var(--shadow);
  --shadow-md: var(--shadow-md);
  --shadow-lg: var(--shadow-lg);
  --shadow-xl: var(--shadow-xl);
  --shadow-2xl: var(--shadow-2xl);
}

@layer base {
  *,
  ::after,
  ::before,
  ::backdrop,
  ::file-selector-button {
    @apply border-border outline-ring/50 tracking-tight;
  }

  html {
    @apply bg-background text-foreground scheme-light;
    overflow-x: hidden;

    &.dark {
      @apply scheme-dark;
    }

    ::-webkit-scrollbar-corner {
      @apply bg-transparent;
    }
  }

  .disable-transitions * {
    @apply transition-none!;
  }

  body {
    @apply font-sans text-base leading-normal;
    overflow-x: hidden;
    width: 100%;
    max-width: 100vw;
  }

  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    @apply text-foreground font-bold;
  }

  a {
    @apply no-underline;
  }

  img {
    @apply max-w-full rounded-md;
  }

  pre {
    @apply bg-muted/60 overflow-x-auto rounded-md p-4 max-w-full;
    word-break: break-word;
    overflow-wrap: break-word;
  }

  table {
    @apply w-full max-w-full;
    display: block;
    overflow-x: auto;
  }

  code {
    @apply font-mono text-sm;
  }

  blockquote {
    @apply text-muted-foreground border-l-2 pl-4 italic;
  }
}

@layer base {
  ::selection {
    @apply bg-primary text-primary-foreground;
  }

  ::backdrop {
    @apply bg-background/50;
  }

  /* Heading anchor links */
  .heading-anchor {
    opacity: 0;
    transition: opacity 0.2s ease-in-out;
    text-decoration: none !important;
    color: var(--color-muted-foreground);
    font-weight: 400;
    margin-left: 0.5rem;
    display: inline-flex;
    align-items: center;
  }

  .prose h2:hover .heading-anchor,
  .prose h3:hover .heading-anchor,
  .prose h4:hover .heading-anchor,
  .prose h5:hover .heading-anchor,
  .prose h6:hover .heading-anchor {
    opacity: 1;
  }

  .heading-anchor:hover {
    color: var(--color-primary);
  }

  .heading-anchor:hover .anchor-icon {
    stroke: var(--color-primary);
  }

  .heading-anchor:focus {
    opacity: 1;
    outline: 2px solid var(--color-ring);
    outline-offset: 2px;
    border-radius: 2px;
  }

  /* Icon styling */
  .anchor-icon {
    width: 1rem;
    height: 1rem;
    stroke: currentColor;
    transition: stroke 0.2s ease-in-out;
  }

  /* Prevent anchor link from inheriting prose link styles */
  .prose .heading-anchor {
    text-decoration: none !important;
    text-underline-offset: 0 !important;
  }
}

@theme {
  --animate-marquee-left: marquee-left var(--duration, 40s) linear infinite;
  --animate-marquee-up: marquee-up var(--duration, 40s) linear infinite;
}

@keyframes marquee-left {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(calc(-100% - var(--gap, 1rem)));
  }
}

@keyframes marquee-up {
  from {
    transform: translateY(0);
  }
  to {
    transform: translateY(calc(-100% - var(--gap, 1rem)));
  }
}

/* Theme toggle circle animation using View Transitions API */
::view-transition-old(root),
::view-transition-new(root) {
  animation: none;
  mix-blend-mode: normal;
}

::view-transition-old(root) {
  z-index: 1;
}

::view-transition-new(root) {
  z-index: 9999;
  animation: circle-clip-in 0.5s ease-in-out forwards;
}

@keyframes circle-clip-in {
  from {
    clip-path: circle(0% at var(--toggle-x, 50%) var(--toggle-y, 50%));
  }
  to {
    clip-path: circle(150% at var(--toggle-x, 50%) var(--toggle-y, 50%));
  }
}