@import "tailwindcss";
@import "tw-animate-css";
@plugin "@tailwindcss/typography";

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

@theme {
  --font-sans: var(--font-sans), ui-sans-serif, system-ui, sans-serif,
    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
}

@theme inline {
  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);
  --radius-2xl: calc(var(--radius) + 8px);
  --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);

  --radius: 0rem;
  --tracking-tighter: calc(var(--tracking-normal) - 0.05em);
  --tracking-tight: calc(var(--tracking-normal) - 0.025em);
  --tracking-wide: calc(var(--tracking-normal) + 0.025em);
  --tracking-wider: calc(var(--tracking-normal) + 0.05em);
  --tracking-widest: calc(var(--tracking-normal) + 0.1em);
  --tracking-normal: var(--tracking-normal);
  --shadow-2xl: var(--shadow-2xl);
  --shadow-xl: var(--shadow-xl);
  --shadow-lg: var(--shadow-lg);
  --shadow-md: var(--shadow-md);
  --shadow: var(--shadow);
  --shadow-sm: var(--shadow-sm);
  --shadow-xs: var(--shadow-xs);
  --shadow-2xs: var(--shadow-2xs);
  --spacing: var(--spacing);
  --letter-spacing: var(--letter-spacing);
  --shadow-offset-y: var(--shadow-offset-y);
  --shadow-offset-x: var(--shadow-offset-x);
  --shadow-spread: var(--shadow-spread);
  --shadow-blur: var(--shadow-blur);
  --shadow-opacity: var(--shadow-opacity);
  --color-shadow-color: var(--shadow-color);
  --color-destructive-foreground: var(--destructive-foreground);

  /* Validation Colors */
  --color-validation-error-bg: var(--validation-error-bg);
  --color-validation-error-text: var(--validation-error-text);
  --color-validation-error-border: var(--validation-error-border);
  --color-validation-warning-bg: var(--validation-warning-bg);
  --color-validation-warning-text: var(--validation-warning-text);
  --color-validation-warning-border: var(--validation-warning-border);
  --color-validation-info-bg: var(--validation-info-bg);
  --color-validation-info-text: var(--validation-info-text);
  --color-validation-info-border: var(--validation-info-border);
}

:root {
  /* Light Mode - Teal/Cyan Sci-Fi Theme */
  --radius: 0.75rem;
  /* More rounded */
  --background: hsl(190 40% 98%);
  /* Very Light Cyan Background */
  --foreground: hsl(240 10% 3.9%);
  --card: hsl(180 20% 97%);
  /* Light Teal Card */
  --card-foreground: hsl(240 10% 3.9%);
  --popover: hsl(0 0% 100%);
  --popover-foreground: hsl(240 10% 3.9%);
  /* Teal Primary - Robot/Sci-fi feel */
  --primary: hsl(173 80% 40%);
  /* Teal-500: #14b8a6 */
  --primary-foreground: hsl(180 50% 10%);
  /* Dark teal text on teal */
  --secondary: hsl(180 30% 92%);
  --secondary-foreground: hsl(173 60% 20%);
  --muted: hsl(180 20% 94%);
  --muted-foreground: hsl(180 10% 40%);
  --accent: hsl(180 40% 90%);
  --accent-foreground: hsl(173 60% 20%);
  /* Red for destructive, Cyan for highlights */
  --destructive: hsl(0 84.2% 60.2%);
  --destructive-foreground: hsl(0 0% 98%);
  --border: hsl(180 20% 80%);
  /* Slightly more visible border */
  --input: hsl(180 20% 80%);
  --ring: hsl(173 80% 40%);
  /* Chart colors - teal/cyan themed */
  --chart-1: hsl(173 80% 40%);
  --chart-2: hsl(190 80% 55%);
  --chart-3: hsl(200 70% 50%);
  --chart-4: hsl(160 70% 45%);
  --chart-5: hsl(210 70% 55%);
  --sidebar: hsl(180 15% 94%);
  --sidebar-foreground: hsl(240 10% 3.9%);
  --sidebar-primary: hsl(173 80% 40%);
  --sidebar-primary-foreground: hsl(180 50% 10%);
  --sidebar-accent: hsl(180 25% 88%);
  --sidebar-accent-foreground: hsl(173 60% 20%);
  --sidebar-border: hsl(180 20% 85%);
  --sidebar-ring: hsl(173 80% 50%);

  --shadow-color: hsl(0 0% 0%);
  --shadow-opacity: 0;
  --shadow-blur: 0px;
  --shadow-spread: 0px;
  --shadow-offset-x: 0px;
  --shadow-offset-y: 1px;
  --letter-spacing: 0em;
  --spacing: 0.25rem;
  --shadow-2xs: 0px 1px 0px 0px hsl(0 0% 0% / 0);
  --shadow-xs: 0px 1px 0px 0px hsl(0 0% 0% / 0);
  --shadow-sm:
    0px 1px 0px 0px hsl(0 0% 0% / 0), 0px 1px 2px -1px hsl(0 0% 0% / 0);
  --shadow: 0px 1px 0px 0px hsl(0 0% 0% / 0), 0px 1px 2px -1px hsl(0 0% 0% / 0);
  --shadow-md:
    0px 1px 0px 0px hsl(0 0% 0% / 0), 0px 2px 4px -1px hsl(0 0% 0% / 0);
  --shadow-lg:
    0px 1px 0px 0px hsl(0 0% 0% / 0), 0px 4px 6px -1px hsl(0 0% 0% / 0);
  --shadow-xl:
    0px 1px 0px 0px hsl(0 0% 0% / 0), 0px 8px 10px -1px hsl(0 0% 0% / 0);
  --shadow-2xl: 0px 1px 0px 0px hsl(0 0% 0% / 0);
  --tracking-normal: 0em;
}

@media (prefers-color-scheme: dark) {
  :root {
    /* Dark Mode - Teal/Cyan Sci-Fi Theme */
    --background: hsl(200 20% 8%);
    /* Dark cyan/black */
    --foreground: hsl(180 20% 95%);
    /* Light cyan text */
    --card: hsl(200 15% 12%);
    /* Slightly lighter card */
    --card-foreground: hsl(180 20% 95%);
    --popover: hsl(200 15% 10%);
    --popover-foreground: hsl(180 20% 95%);
    --primary: hsl(173 80% 45%);
    /* Teal-500: brighter in dark */
    --primary-foreground: hsl(180 50% 10%);
    --secondary: hsl(200 15% 15%);
    --secondary-foreground: hsl(180 20% 90%);
    --muted: hsl(200 15% 15%);
    --muted-foreground: hsl(180 10% 60%);
    --accent: hsl(173 60% 25%);
    --accent-foreground: hsl(180 20% 95%);
    --destructive: hsl(0 70% 55%);
    --destructive-foreground: hsl(0 0% 100%);
    --border: hsl(200 15% 20%);
    --input: hsl(200 15% 20%);
    --ring: hsl(173 80% 45%);
    --chart-1: hsl(173 75% 50%);
    --chart-2: hsl(180 70% 60%);
    --chart-3: hsl(190 65% 55%);
    --chart-4: hsl(160 60% 50%);
    --chart-5: hsl(200 60% 55%);
    --sidebar: hsl(200 15% 10%);
    --sidebar-foreground: hsl(180 20% 90%);
    --sidebar-primary: hsl(173 80% 45%);
    --sidebar-primary-foreground: hsl(180 50% 10%);
    --sidebar-accent: hsl(200 15% 18%);
    --sidebar-accent-foreground: hsl(180 20% 90%);
    --sidebar-border: hsl(200 15% 18%);
    --sidebar-ring: hsl(173 80% 50%);
    --secondary-foreground: hsl(0 0% 98%);
    --muted: hsl(240 3.7% 15.9%);
    --muted-foreground: hsl(240 5% 64.9%);
    --accent: hsl(240 3.7% 15.9%);
    --accent-foreground: hsl(0 0% 98%);
    --destructive: hsl(0 62.8% 30.6%);
    --destructive-foreground: hsl(0 0% 98%);
    --border: hsl(240 3.7% 15.9%);
    --input: hsl(240 3.7% 15.9%);
    --ring: hsl(240 4.9% 83.9%);
    --chart-1: hsl(220 70% 50%);
    --chart-2: hsl(160 60% 45%);
    --chart-3: hsl(30 80% 55%);
    --chart-4: hsl(280 65% 60%);
    --chart-5: hsl(340 75% 55%);
    --sidebar: hsl(240 5.9% 10%);
    --sidebar-foreground: hsl(240 4.8% 95.9%);
    --sidebar-primary: hsl(224.3 76.3% 48%);
    --sidebar-primary-foreground: hsl(0 0% 100%);
    --sidebar-accent: hsl(240 3.7% 15.9%);
    --sidebar-accent-foreground: hsl(240 4.8% 95.9%);
    --sidebar-border: hsl(240 3.7% 15.9%);
    --sidebar-ring: hsl(217.2 91.2% 59.8%);
  }
}

:root {
  /* Validation Light Mode Defaults */
  --validation-error-bg: hsl(0 85% 97%);
  /* Red 50 */
  --validation-error-text: hsl(0 72% 45%);
  /* Red 700 */
  --validation-error-border: hsl(0 80% 90%);
  /* Red 200 */
  --validation-warning-bg: hsl(40 85% 97%);
  /* Amber 50 */
  --validation-warning-text: hsl(35 90% 35%);
  /* Amber 700 */
  --validation-warning-border: hsl(40 80% 90%);
  /* Amber 200 */
  --validation-info-bg: hsl(210 85% 97%);
  /* Blue 50 */
  --validation-info-text: hsl(220 80% 45%);
  /* Blue 700 */
  --validation-info-border: hsl(210 80% 90%);
  /* Blue 200 */
}

@layer base {
  * {
    @apply border-border outline-ring/50;
  }

  body {
    @apply bg-background text-foreground;
    letter-spacing: var(--tracking-normal);
  }

  /* Tabs (shadcn/radix) global theming */
  [data-slot="tabs-list"] {
    @apply bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-md p-1;
  }

  [data-slot="tabs-trigger"] {
    @apply ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center rounded-sm border border-transparent px-3 py-1.5 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50;
  }

  [data-slot="tabs-trigger"][data-state="active"] {
    @apply bg-background text-foreground shadow;
  }
}

/* Custom Component Theming */
@layer utilities {
  /* Chamfered corners - subtle sci-fi tech feel */
  .chamfer {
    clip-path: polygon(
      0.75rem, 0,
      100% 0,
      100% calc(100% - 0.75rem),
      calc(100% - 0.75rem) 100%,
      0 100%
    );
  }

  /* Soft corners - very rounded */
  .rounded-chonk {
    border-radius: 1rem;
  }

  /* Card with subtle gradient */
  .card-teal {
    background: linear-gradient(
      135deg,
      hsl(var(--card) / 1) 0%,
      hsl(var(--card-hue, 180) var(--card-sat, 20%) var(--card-light, 95%) / 0.5) 100%
    );
  }

  /* Glow effects for primary actions */
  .glow-teal {
    box-shadow: 0 0 20px hsl(var(--primary) / 0.3);
  }

  .glow-teal:hover {
    box-shadow: 0 0 30px hsl(var(--primary) / 0.5);
  }

  /* Subtle pulse animation for active states */
  @keyframes pulse-glow {
    0%, 100% {
      box-shadow: 0 0 10px hsl(var(--primary) / 0.2);
    }
    50% {
      box-shadow: 0 0 20px hsl(var(--primary) / 0.4);
    }
  }

  .animate-pulse-glow {
    animation: pulse-glow 2s ease-in-out infinite;
  }

  /* Italic/oblique text for labels */
  .font-slant {
    font-style: oblique 10deg;
  }

  /* Micro-interaction: subtle scale */
  .hover-scale {
    transition: transform 150ms ease-out;
  }

  .hover-scale:hover {
    transform: scale(1.02);
  }

  /* Border glow on focus */
  .ring-glow:focus-visible {
    box-shadow: 0 0 0 2px var(--background), 0 0 0 4px var(--primary);
  }
}

/* Viewport height constraint for proper flex layout */
html,
body,
#__next {
  height: 100%;
  min-height: 100vh;
}