/* stylelint-disable at-rule-no-unknown */
@tailwind base;
@tailwind components;
@tailwind utilities;

/* Subtle shimmer used on the recommendation pill during term switching */
@keyframes tekir-shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

.shimmer-soft {
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: 9999px; /* full */
  /* A very low-visibility moving light streak over a muted base */
  background-image: linear-gradient(110deg,
    rgba(255,255,255,0) 0%,
    rgba(255,255,255,0.04) 25%,
    rgba(255,255,255,0.12) 50%,
    rgba(255,255,255,0.04) 75%,
    rgba(255,255,255,0) 100%
  );
  background-size: 200% 100%;
  animation: tekir-shimmer 900ms ease-in-out infinite;
  opacity: 0.55;
}

@media (prefers-reduced-motion: reduce) {
  .shimmer-soft { animation: none; }
}

:root {
  --foreground-rgb: 0, 0, 0;
  --background-start-rgb: 214, 219, 220;
  --background-end-rgb: 255, 255, 255;
}

@media (prefers-color-scheme: dark) {
  :root {
    --foreground-rgb: 255, 255, 255;
    --background-start-rgb: 0, 0, 0;
    --background-end-rgb: 0, 0, 0;
  }
}

@layer base {
  :root {
    --background: 0 0% 100%;
    --foreground: 0 0% 3.9%;
    --card: 0 0% 100%;
    --card-foreground: 0 0% 3.9%;
    --popover: 0 0% 100%;
    --popover-foreground: 0 0% 3.9%;
    --primary: 0 0% 9%;
    --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%;
    --chart-1: 12 76% 61%;
    --chart-2: 173 58% 39%;
    --chart-3: 197 37% 24%;
    --chart-4: 43 74% 66%;
    --chart-5: 27 87% 67%;
    --radius: 0.5rem;
  }
  .dark {
    --background: 0 0% 6%;
    --foreground: 0 0% 98%;
    --card: 0 0% 3.9%;
    --card-foreground: 0 0% 98%;
    --popover: 0 0% 3.9%;
    --popover-foreground: 0 0% 98%;
    --primary: 0 0% 98%;
    --primary-foreground: 0 0% 9%;
    --secondary: 0 0% 14.9%;
    --secondary-foreground: 0 0% 98%;
    --muted: 0 0% 14.9%;
    --muted-foreground: 0 0% 63.9%;
    --accent: 0 0% 14.9%;
    --accent-foreground: 0 0% 98%;
    --destructive: 0 62.8% 30.6%;
    --destructive-foreground: 0 0% 98%;
    --border: 0 0% 14.9%;
    --input: 0 0% 14.9%;
    --ring: 0 0% 83.1%;
    --chart-1: 220 70% 50%;
    --chart-2: 160 60% 45%;
    --chart-3: 30 80% 55%;
    --chart-4: 280 65% 60%;
    --chart-5: 340 75% 55%;
  }
}

@layer base {
  * {
    @apply border-border;
  }
  body {
    @apply bg-background text-foreground;
    overflow-x: hidden;
  }
  html {
    overflow-x: hidden;
  }
  /* Prevent the main element from becoming an independent scroll container
     which can cause double scrollbars in some browsers. The document
     (body/html) should be the primary scroll container. */
  main {
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
  }
}

/* Blurry white outline used around main content clusters (adjusted for better visibility) */
:root {
  --outline-rgb: 18, 24, 40; /* brighter (white) for stronger glow */
}
.dark :root {
  --outline-rgb: 18, 24, 40;
}

@layer components {
  .blurry-outline {
    position: relative;
    z-index: 0;
  }
  .blurry-outline::before {
    content: '';
    position: absolute;
    inset: -10px; /* slightly larger spread for more presence */
    z-index: -1;
    border-radius: 0.75rem;
    /* stronger white glow in light mode */
    background: rgba(var(--outline-rgb), 0.22);
    filter: blur(14px);
    pointer-events: none;
    /* additive shadow fallback for environments with limited filter support */
    box-shadow: 0 6px 18px rgba(var(--outline-rgb), 0.12);
  }

  /* Slight soft text glow to make text pop over the blur; increased alpha for visibility */
  .blurry-outline :where(h1,h2,h3,h4,h5,h6,p,span,a,strong,em) {
    text-shadow: 0 0 8px rgba(var(--outline-rgb), 0.14);
  }

  /* Dark mode: reduce the strength so it doesn't become glaring while remaining visible */
  .dark .blurry-outline::before {
    background: rgba(var(--outline-rgb), 0.10);
    filter: blur(12px);
    box-shadow: 0 6px 16px rgba(var(--outline-rgb), 0.06);
  }
  .dark .blurry-outline :where(h1,h2,h3,h4,h5,h6,p,span,a,strong,em) {
    text-shadow: 0 0 6px rgba(var(--outline-rgb), 0.06);
  }

  /* Subtle enter animation used for clusters (fade + slide up) */
  @keyframes tekir-cluster-enter {
    from { opacity: 0; transform: translateY(6px) scale(0.995); }
    to { opacity: 1; transform: translateY(0) scale(1); }
  }

  .cluster-enter {
    animation: tekir-cluster-enter 220ms cubic-bezier(.2,.9,.2,1) both;
    will-change: opacity, transform;
  }

  @media (prefers-reduced-motion: reduce) {
    .cluster-enter { animation: none; }
  }
}