@import "tailwindcss";
@import "tw-animate-css";
@import "shadcn/tailwind.css";
@import "@fontsource-variable/geist/index.css";

/* Ensure font-display: swap is applied */
@font-face {
  font-family: 'Geist Variable';
  font-display: swap;
}

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

@theme inline {
    --font-heading: var(--font-sans);
    --font-sans: 'Geist Variable', sans-serif;
    --color-sidebar-ring: var(--sidebar-ring);
    --color-sidebar-border: var(--sidebar-border);
    --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
    --color-sidebar-accent: var(--sidebar-accent);
    --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
    --color-sidebar-primary: var(--sidebar-primary);
    --color-sidebar-foreground: var(--sidebar-foreground);
    --color-sidebar: var(--sidebar);
    --color-chart-5: var(--chart-5);
    --color-chart-4: var(--chart-4);
    --color-chart-3: var(--chart-3);
    --color-chart-2: var(--chart-2);
    --color-chart-1: var(--chart-1);
    --color-ring: var(--ring);
    --color-input: var(--input);
    --color-border: var(--border);
    --color-destructive: var(--destructive);
    --color-accent-foreground: var(--accent-foreground);
    --color-accent: var(--accent);
    --color-muted-foreground: var(--muted-foreground);
    --color-muted: var(--muted);
    --color-secondary-foreground: var(--secondary-foreground);
    --color-secondary: var(--secondary);
    --color-primary-foreground: var(--primary-foreground);
    --color-primary: var(--primary);
    --color-popover-foreground: var(--popover-foreground);
    --color-popover: var(--popover);
    --color-card-foreground: var(--card-foreground);
    --color-card: var(--card);
    --color-foreground: var(--foreground);
    --color-background: var(--background);
    --radius-sm: calc(var(--radius) * 0.6);
    --radius-md: calc(var(--radius) * 0.8);
    --radius-lg: var(--radius);
    --radius-xl: calc(var(--radius) * 1.4);
    --radius-2xl: calc(var(--radius) * 1.8);
    --radius-3xl: calc(var(--radius) * 2.2);
    --radius-4xl: calc(var(--radius) * 2.6);
}

:root {
    --background: #FAF7F2;
    --background-alt: #F0EAE0;
    --foreground: #1F1B18;
    --card: #F0EAE0;
    --card-foreground: #1F1B18;
    --popover: #FAF7F2;
    --popover-foreground: #1F1B18;
    --primary: #C9A15A;
    --primary-foreground: #FFFFFF;
    --primary-hover: #9C7A3C;
    --secondary: #E4DCCB;
    --secondary-foreground: #1F1B18;
    --muted: #F0EAE0;
    --muted-foreground: #5A5450;
    --accent: #C9A15A;
    --accent-hover: #9C7A3C;
    --accent-foreground: #FFFFFF;
    --destructive: #ef4444;
    --border: #E4DCCB;
    --input: #E4DCCB;
    --ring: #C9A15A;
    --radius: 0.75rem;
}

@theme inline {
    --color-brand-primary: #C9A15A;
    --color-brand-secondary: #9C7A3C;
    --color-brand-dark: #1F1B18;
    --color-brand-card: #F0EAE0;
    --color-brand-border: #E4DCCB;
    
    --font-heading: 'Geist Variable', sans-serif;
    --font-sans: 'Geist Variable', sans-serif;
}

@layer utilities {
    .bg-grid-white {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32' fill='none' stroke='rgb(31 27 24 / 0.05)'%3E%3Cpath d='M0 .5H31.5V32'/%3E%3C/svg%3E");
    }
    .text-gradient {
        @apply bg-clip-text text-transparent bg-gradient-to-r from-[var(--primary)] to-[var(--primary-hover)];
    }
    .glass-card {
        @apply bg-white/50 backdrop-blur-2xl border border-border rounded-2xl;
    }
    .glass-panel {
        @apply bg-white/30 backdrop-blur-3xl border border-border rounded-3xl;
    }
    .glow-blue {
        box-shadow: none;
    }
    .glow-purple {
        box-shadow: none;
    }
    .hover-lift {
        @apply transition-all duration-500 hover:-translate-y-2 hover:shadow-[0_20px_40px_rgba(0,0,0,0.05)];
    }
    .glow-hover {
        @apply transition-all duration-500 hover:shadow-[0_0_50px_rgba(201,161,90,0.15)] hover:border-[var(--primary)];
    }
    .perspective-2000 {
        perspective: 2000px;
    }
    .animate-pulse-slow {
        animation: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
    }

    /* GlowCard Styles */
    [data-glow] {
        --border-size: calc(var(--border, 2) * 1px);
        --spotlight-size: calc(var(--size, 150) * 1px);
        --hue: calc(var(--base) + (var(--xp, 0) * var(--spread, 0)));
        background-image: radial-gradient(
            var(--spotlight-size) var(--spotlight-size) at
            calc(var(--x, 0) * 1px)
            calc(var(--y, 0) * 1px),
            hsl(var(--hue, 210) calc(var(--saturation, 100) * 1%) calc(var(--lightness, 70) * 1%) / var(--bg-spot-opacity, 0.1)), transparent
        );
        background-color: var(--backdrop, transparent);
        background-size: calc(100% + (2 * var(--border-size))) calc(100% + (2 * var(--border-size)));
        background-position: 50% 50%;
        background-attachment: fixed;
        border: var(--border-size) solid var(--backup-border);
        position: relative;
        touch-action: pan-y;
    }

    @media (max-width: 768px) {
        [data-glow], [data-glow]::before, [data-glow]::after {
            background-image: none !important;
            mask: none !important;
            -webkit-mask: none !important;
            border-color: rgba(255, 255, 255, 0.1) !important;
        }
    }

    [data-glow]::before,
    [data-glow]::after {
        pointer-events: none;
        content: "";
        position: absolute;
        inset: calc(var(--border-size) * -1);
        border: var(--border-size) solid transparent;
        border-radius: calc(var(--radius) * 1px);
        background-attachment: fixed;
        background-size: calc(100% + (2 * var(--border-size))) calc(100% + (2 * var(--border-size)));
        background-repeat: no-repeat;
        background-position: 50% 50%;
        mask: linear-gradient(transparent, transparent), linear-gradient(white, white);
        mask-clip: padding-box, border-box;
        mask-composite: intersect;
    }
    
    [data-glow]::before {
        background-image: radial-gradient(
            calc(var(--spotlight-size) * 0.75) calc(var(--spotlight-size) * 0.75) at
            calc(var(--x, 0) * 1px)
            calc(var(--y, 0) * 1px),
            hsl(var(--hue, 210) calc(var(--saturation, 100) * 1%) calc(var(--lightness, 50) * 1%) / var(--border-spot-opacity, 1)), transparent 100%
        );
        filter: brightness(2);
    }
    
    [data-glow]::after {
        background-image: radial-gradient(
            calc(var(--spotlight-size) * 0.5) calc(var(--spotlight-size) * 0.5) at
            calc(var(--x, 0) * 1px)
            calc(var(--y, 0) * 1px),
            hsl(0 100% 100% / var(--border-light-opacity, 1)), transparent 100%
        );
    }
    
    [data-glow] [data-glow] {
        position: absolute;
        inset: 0;
        will-change: filter;
        opacity: var(--outer, 1);
        border-radius: calc(var(--radius) * 1px);
        border-width: calc(var(--border-size) * 20);
        filter: blur(calc(var(--border-size) * 10));
        background: none;
        pointer-events: none;
        border: none;
    }
    
    [data-glow] > [data-glow]::before {
        inset: -10px;
        border-width: 10px;
    }
}

.dark {
    --background: oklch(0.145 0 0);
    --foreground: oklch(0.985 0 0);
    --card: oklch(0.205 0 0);
    --card-foreground: oklch(0.985 0 0);
    --popover: oklch(0.205 0 0);
    --popover-foreground: oklch(0.985 0 0);
    --primary: oklch(0.922 0 0);
    --primary-foreground: oklch(0.205 0 0);
    --secondary: oklch(0.269 0 0);
    --secondary-foreground: oklch(0.985 0 0);
    --muted: oklch(0.269 0 0);
    --muted-foreground: oklch(0.708 0 0);
    --accent: oklch(0.269 0 0);
    --accent-foreground: oklch(0.985 0 0);
    --destructive: oklch(0.704 0.191 22.216);
    --border: oklch(1 0 0 / 10%);
    --input: oklch(1 0 0 / 15%);
    --ring: oklch(0.556 0 0);
    --chart-1: oklch(0.87 0 0);
    --chart-2: oklch(0.556 0 0);
    --chart-3: oklch(0.439 0 0);
    --chart-4: oklch(0.371 0 0);
    --chart-5: oklch(0.269 0 0);
    --sidebar: oklch(0.205 0 0);
    --sidebar-foreground: oklch(0.985 0 0);
    --sidebar-primary: oklch(0.488 0.243 264.376);
    --sidebar-primary-foreground: oklch(0.985 0 0);
    --sidebar-accent: oklch(0.269 0 0);
    --sidebar-accent-foreground: oklch(0.985 0 0);
    --sidebar-border: oklch(1 0 0 / 10%);
    --sidebar-ring: oklch(0.556 0 0);
}

@layer base {
  * {
    @apply border-border outline-ring/50;
    }
  body {
    @apply bg-background text-foreground antialiased;
    }
  html {
    @apply font-sans scroll-smooth;
  }

  /* Custom Scrollbar */
  ::-webkit-scrollbar {
    width: 8px;
  }
  ::-webkit-scrollbar-track {
    @apply bg-background;
  }
  ::-webkit-scrollbar-thumb {
    @apply bg-black/10 rounded-full border-2 border-background hover:bg-black/20 transition-colors;
  }

  /* Accessibility Focus Styles */
  :focus-visible {
    @apply outline-none ring-2 ring-[var(--primary)] ring-offset-2 ring-offset-background;
  }

  /* Selection Color */
  ::selection {
    @apply bg-[var(--primary)] text-white;
  }
}