@import "tailwindcss";

@plugin "@tailwindcss/forms";

@custom-variant dark (&:is(.dark *));
@custom-variant data-active (&[data-active]);
@custom-variant data-disabled (&:is([data-disabled], [disabled]));
@custom-variant data-focus (&[data-focus]);
@custom-variant data-hover (&[data-hover]);

:root {
    --radius: 0.65rem;
    --background: oklch(1 0 0);
    --foreground: oklch(0.141 0.005 285.823);
    --card: oklch(1 0 0);
    --card-foreground: oklch(0.141 0.005 285.823);
    --popover: oklch(1 0 0);
    --popover-foreground: oklch(0.141 0.005 285.823);
    --primary: oklch(0.596 0.145 163);
    --primary-foreground: oklch(0.985 0.01 163);
    --secondary: oklch(0.93 0.04 163);
    --secondary-foreground: oklch(0.25 0.08 163);
    --muted: oklch(0.967 0.001 286.375);
    --muted-foreground: oklch(0.552 0.016 285.938);
    --accent: oklch(0.967 0.001 286.375);
    --accent-foreground: oklch(0.21 0.006 285.885);
    --destructive: oklch(0.577 0.245 27.325);
    --destructive-foreground: oklch(0.985 0 0);
    --border: oklch(0.92 0.004 286.32);
    --input: oklch(0.92 0.004 286.32);
    --ring: oklch(0.596 0.145 163);
    --shadow: 0 1px 2px 0 oklch(0 0 0 / 0.04);
    --chart-1: oklch(0.646 0.222 41.116);
    --chart-2: oklch(0.6 0.118 184.704);
    --chart-3: oklch(0.398 0.07 227.392);
    --chart-4: oklch(0.828 0.189 84.429);
    --chart-5: oklch(0.769 0.188 70.08);
    --sidebar: oklch(0.985 0 0);
    --sidebar-foreground: oklch(0.141 0.005 285.823);
    --sidebar-primary: oklch(0.596 0.145 163);
    --sidebar-primary-foreground: oklch(0.421 0.095 163);
    --sidebar-accent: oklch(0.967 0.001 286.375);
    --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
    --sidebar-border: oklch(0.92 0.004 286.32);
    --sidebar-ring: oklch(0.596 0.145 163);
  }

  .dark {
    --background: oklch(0.141 0.005 285.823);
    --foreground: oklch(0.985 0 0);
    --card: oklch(0.21 0.006 285.885);
    --card-foreground: oklch(0.985 0 0);
    --popover: oklch(0.21 0.006 285.885);
    --popover-foreground: oklch(0.985 0 0);
    --primary: oklch(0.65 0.16 163);
    --primary-foreground: oklch(0.15 0.05 163);
    --secondary: oklch(0.25 0.07 163);
    --secondary-foreground: oklch(0.9 0.02 163);
    --muted: oklch(0.274 0.006 286.033);
    --muted-foreground: oklch(0.705 0.015 286.067);
    --accent: oklch(0.274 0.006 286.033);
    --accent-foreground: oklch(0.985 0 0);
    --destructive: oklch(0.704 0.191 22.216);
    --destructive-foreground: oklch(0.985 0 0);
    --border: oklch(1 0 0 / 10%);
    --input: oklch(1 0 0 / 15%);
    --ring: oklch(0.554 0.135 163);
    --shadow: 0 1px 2px 0 oklch(0 0 0 / 0.3);
    --chart-1: oklch(0.488 0.243 264.376);
    --chart-2: oklch(0.696 0.17 162.48);
    --chart-3: oklch(0.769 0.188 70.08);
    --chart-4: oklch(0.627 0.265 303.9);
    --chart-5: oklch(0.645 0.246 16.439);
    --sidebar: oklch(0.21 0.006 285.885);
    --sidebar-foreground: oklch(0.985 0 0);
    --sidebar-primary: oklch(0.596 0.145 163);
    --sidebar-primary-foreground: oklch(0.421 0.095 163);
    --sidebar-accent: oklch(0.274 0.006 286.033);
    --sidebar-accent-foreground: oklch(0.985 0 0);
    --sidebar-border: oklch(1 0 0 / 10%);
    --sidebar-ring: oklch(0.554 0.135 163);
  }


@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-destructive-foreground: var(--destructive-foreground);
  --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);
  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);
  --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);
  --shadow-shadow: var(--shadow);
}

@layer base {
  * {
    @apply border-border outline-ring/50;
  }
  body {
    @apply bg-background text-foreground;
  }
  .dashboard-layout svg {
    stroke-width: 1.5;
  }
}

@layer components {
  .primary-title {
    @apply leading-[1.2]! max-w-2xl text-balance text-xl font-semibold tracking-tight sm:text-3xl text-foreground;
  }
  .primary-subtext {
    @apply mt-6 max-w-[620px] text-base leading-relaxed font-medium text-muted-foreground text-pretty;
  }
  [data-meal-id] {
    opacity: 1;
  }
  .sortable-ghost {
    opacity: 0.3;
    background: var(--muted);
  }
  .sortable-drag {
    opacity: 1 !important;
    box-shadow: 0 10px 25px rgba(0,0,0,0.15);
    cursor: grabbing !important;
  }

  .modal-root {
    @apply fixed inset-0 z-50 grid place-items-center p-4 sm:p-6;
  }

  .modal-root.hidden {
    @apply hidden;
  }

  .modal-backdrop {
    @apply opacity-0 transition-opacity duration-200 ease-[cubic-bezier(0.23,1,0.32,1)];
  }

  .modal-panel {
    @apply opacity-0 transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)];
    transform: scale(0.96) translateY(12px);
  }

  .modal-root[data-state="open"] .modal-backdrop {
    @apply opacity-100;
  }

  .modal-root[data-state="open"] .modal-panel {
    @apply opacity-100;
    transform: scale(1) translateY(0);
  }

  @media (prefers-reduced-motion: reduce) {
    .modal-backdrop,
    .modal-panel {
      @apply transition-none;
      transform: none;
    }

    .btn-copy-icon,
    .btn-copy-label,
    .btn-copy-icon--copied path {
      @apply transition-none;
    }
  }

  [data-copy-button-status="idle"] .btn-copy-icon--idle,
  [data-copy-button-status="copied"] .btn-copy-icon--copied,
  [data-copy-button-status="error"] .btn-copy-icon--error {
    @apply opacity-100 scale-100;
  }

  [data-copy-button-status="idle"] .btn-copy-icon--copied,
  [data-copy-button-status="idle"] .btn-copy-icon--error,
  [data-copy-button-status="copied"] .btn-copy-icon--idle,
  [data-copy-button-status="copied"] .btn-copy-icon--error,
  [data-copy-button-status="error"] .btn-copy-icon--idle,
  [data-copy-button-status="error"] .btn-copy-icon--copied {
    @apply opacity-0 scale-[0.92];
  }

  .btn-copy-icon {
    @apply col-start-1 row-start-1 transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)];
  }

  .btn-copy-icon--copied path {
    stroke-dasharray: 24;
    stroke-dashoffset: 24;
    transition: stroke-dashoffset 0.26s cubic-bezier(0.23, 1, 0.32, 1);
  }

  [data-copy-button-status="copied"] .btn-copy-icon--copied path {
    stroke-dashoffset: 0;
  }

  [data-copy-button-status="idle"] .btn-copy-label--idle,
  [data-copy-button-status="copied"] .btn-copy-label--copied,
  [data-copy-button-status="error"] .btn-copy-label--error {
    @apply opacity-100 translate-y-0 blur-none;
  }

  [data-copy-button-status="idle"] .btn-copy-label--copied,
  [data-copy-button-status="idle"] .btn-copy-label--error,
  [data-copy-button-status="copied"] .btn-copy-label--idle,
  [data-copy-button-status="copied"] .btn-copy-label--error,
  [data-copy-button-status="error"] .btn-copy-label--idle,
  [data-copy-button-status="error"] .btn-copy-label--copied {
    @apply opacity-0 translate-y-[3px] blur-[3px];
  }

  .btn-copy-label {
    @apply col-start-1 row-start-1 transition-[opacity,transform,filter] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)];
  }
}
