@import "tailwindcss";
@plugin "@tailwindcss/typography";
@source "./shadcn-safelist.html";

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

html {
  font-size: 17px;
}

@theme {
  --font-sans: "Nunito", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}

: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.6 0.27 302.79);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.967 0.001 286.375);
  --secondary-foreground: oklch(0.21 0.006 285.885);
  --tertiary: oklch(0.6 0.2 190);
  --tertiary-foreground: oklch(0.969 0.016 293.756);
  --quaternary: oklch(0.6 0.18 222);
  --quaternary-foreground: oklch(0.969 0.016 293.756);
  --muted: oklch(0.967 0.001 286.375);
  --muted-foreground: oklch(0.46 0 0);
  --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(1 0 0);
  --border: oklch(0.92 0.004 286.32);
  --input: oklch(0.92 0.004 286.32);
  --ring: oklch(0.702 0.183 293.541);
  --chart-1: oklch(0.811 0.111 293.571);
  --chart-2: oklch(0.6 0.27 302.79);
  --chart-3: oklch(0.541 0.281 293.009);
  --chart-4: oklch(0.491 0.27 292.581);
  --chart-5: oklch(0.432 0.232 292.759);
  --sidebar: oklch(0.985 0 0);
  --sidebar-foreground: oklch(0.141 0.005 285.823);
  --sidebar-primary: oklch(0.6 0.27 302.79);
  --sidebar-primary-foreground: oklch(0.969 0.016 293.756);
  --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.702 0.183 293.541);

  /* Branding colors */
  --success: oklch(0.64 0.18 147.8);
  --success-foreground: oklch(0.64 0.18 147.8);
  --info: oklch(0.57 0.11 229.42);
  --info-foreground: oklch(0.57 0.11 229.42);
  --warning: oklch(0.75 0.15 82.23);
  --warning-foreground: oklch(0.75 0.15 82.23);
  --error: var(--destructive);
  --error-foreground: var(--destructive);
}

.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.6 0.27 302.79);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.274 0.006 286.033);
  --secondary-foreground: oklch(0.985 0 0);
  --tertiary: oklch(0.6 0.2 190);
  --tertiary-foreground: oklch(0.969 0.016 293.756);
  --quaternary: oklch(0.6 0.18 222);
  --quaternary-foreground: oklch(0.969 0.016 293.756);
  --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(1 0 0);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 15%);
  --ring: oklch(0.38 0.189 293.745);
  --chart-1: oklch(0.811 0.111 293.571);
  --chart-2: oklch(0.6 0.27 302.79);
  --chart-3: oklch(0.541 0.281 293.009);
  --chart-4: oklch(0.491 0.27 292.581);
  --chart-5: oklch(0.432 0.232 292.759);
  --sidebar: oklch(0.21 0.006 285.885);
  --sidebar-foreground: oklch(0.985 0 0);
  --sidebar-primary: oklch(0.6 0.27 302.79);
  --sidebar-primary-foreground: oklch(0.969 0.016 293.756);
  --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.38 0.189 293.745);

  /* Branding colors */
  --success: oklch(0.64 0.18 147.8);
  --success-foreground: oklch(0.64 0.18 147.8);
  --info: oklch(0.57 0.11 229.42);
  --info-foreground: oklch(0.57 0.11 229.42);
  --warning: oklch(0.75 0.15 82.23);
  --warning-foreground: oklch(0.75 0.15 82.23);
  --error: var(--destructive);
  --error-foreground: var(--destructive);
}

@theme {
  /* Branding colors */
  --color-success: var(--success);
  --color-success-foreground: var(--success-foreground);
  --color-info: var(--info);
  --color-info-foreground: var(--info-foreground);
  --color-warning: var(--warning);
  --color-warning-foreground: var(--warning-foreground);
  --color-error: var(--error);
  --color-error-foreground: var(--error-foreground);
}

@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-tertiary: var(--tertiary);
  --color-tertiary-foreground: var(--tertiary-foreground);
  --color-quaternary: var(--quaternary);
  --color-quaternary-foreground: var(--quaternary-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);
}

/* shadcn-style dropdown animation */
@keyframes dropdown-in {
  from { opacity: 0; transform: scale(0.95); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes dropdown-out {
  from { opacity: 1; transform: scale(1); }
  to   { opacity: 0; transform: scale(0.95); }
}
[data-state="open"][role="menu"] {
  animation-name: dropdown-in;
}
[data-state="closed"][role="menu"] {
  animation-name: dropdown-out;
}

@layer base {
  * {
    @apply border-border outline-ring/50;
  }
  body {
    @apply bg-background text-foreground overflow-x-hidden;
  }
  mark {
    @apply bg-primary/10 text-primary;
    padding-left: 0.3em;
    padding-right: 0.3em;
  }
  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    @apply font-extrabold;
    font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  }

  p {
    @apply text-base;
  }

  .no-scrollbar::-webkit-scrollbar {
    display: none;
  }
  .no-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
  }
}

/* ---- Text Animate ---- */
.text-animate {
  display: inline;
}
.text-animate-part {
  display: inline-block;
  opacity: 0;
  animation-duration: 0.4s;
  animation-fill-mode: forwards;
}
@keyframes text-fade-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes text-blur-in {
  from { opacity: 0; filter: blur(8px); }
  to   { opacity: 1; filter: blur(0); }
}
@keyframes text-slide-up {
  from { opacity: 0; transform: translateY(100%); }
  to   { opacity: 1; transform: translateY(0); }
}
.text-animate-fade-in   { animation-name: text-fade-in; }
.text-animate-blur-in   { animation-name: text-blur-in; }
.text-animate-slide-up  { animation-name: text-slide-up; }

/* ---- Text Shimmer Wave (per-character, replicates Front-Apps TextShimmerWave) ---- */
.text-shimmer-wave-char {
  display: inline-block;
  white-space: pre;
  transform-style: preserve-3d;
  animation: shimmer-wave-char ease-in-out infinite;
  color: var(--foreground);
}

/* ---- Card appear animation ---- */
@keyframes card-appear {
  from {
    opacity: 0;
    filter: blur(4px);
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
  }
}
.appeared {
  animation: card-appear 0.5s ease-out both;
}

/* ---- Load-more turbo frames — transparent to CSS grid ---- */
turbo-frame[id$="_load_more"] {
  display: contents;
}

/* ---- Sheet / Dialog animation (shadcn-rails) ---- */
@keyframes shadcn-fade-in  { from { opacity: 0; } to { opacity: 1; } }
@keyframes shadcn-fade-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes shadcn-slide-in-from-right  { from { transform: translateX(100%); } to { transform: translateX(0); } }
@keyframes shadcn-slide-out-to-right   { from { transform: translateX(0); } to { transform: translateX(100%); } }
@keyframes shadcn-slide-in-from-left   { from { transform: translateX(-100%); } to { transform: translateX(0); } }
@keyframes shadcn-slide-out-to-left    { from { transform: translateX(0); } to { transform: translateX(-100%); } }
@keyframes shadcn-slide-in-from-top    { from { transform: translateY(-100%); } to { transform: translateY(0); } }
@keyframes shadcn-slide-out-to-top     { from { transform: translateY(0); } to { transform: translateY(-100%); } }
@keyframes shadcn-slide-in-from-bottom { from { transform: translateY(100%); } to { transform: translateY(0); } }
@keyframes shadcn-slide-out-to-bottom  { from { transform: translateY(0); } to { transform: translateY(100%); } }

.shadcn-sheet-portal {
  position: fixed;
  inset: 0;
  z-index: 50;
}

/* Overlay */
.shadcn-sheet-portal [data-shadcn--sheet-target="overlay"][data-state="open"] {
  animation: shadcn-fade-in 300ms ease-out both;
}
.shadcn-sheet-portal [data-shadcn--sheet-target="overlay"][data-state="closed"] {
  animation: shadcn-fade-out 200ms ease-in both;
}

/* Content panel — open */
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][data-state="open"] {
  animation-duration: 500ms;
  animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
  animation-fill-mode: both;
}
/* Content panel — close */
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][data-state="closed"] {
  animation-duration: 300ms;
  animation-timing-function: ease-in;
  animation-fill-mode: both;
}

/* Right side (default) */
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-in-from-right[data-state="open"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-in-from-right"][data-state="open"] {
  animation-name: shadcn-slide-in-from-right;
}
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-out-to-right[data-state="closed"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-out-to-right"][data-state="closed"] {
  animation-name: shadcn-slide-out-to-right;
}

/* Left side */
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-in-from-left[data-state="open"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-in-from-left"][data-state="open"] {
  animation-name: shadcn-slide-in-from-left;
}
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-out-to-left[data-state="closed"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-out-to-left"][data-state="closed"] {
  animation-name: shadcn-slide-out-to-left;
}

/* Top side */
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-in-from-top[data-state="open"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-in-from-top"][data-state="open"] {
  animation-name: shadcn-slide-in-from-top;
}
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-out-to-top[data-state="closed"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-out-to-top"][data-state="closed"] {
  animation-name: shadcn-slide-out-to-top;
}

/* Bottom side */
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-in-from-bottom[data-state="open"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-in-from-bottom"][data-state="open"] {
  animation-name: shadcn-slide-in-from-bottom;
}
.shadcn-sheet-portal [data-shadcn--sheet-target="content"].slide-out-to-bottom[data-state="closed"],
.shadcn-sheet-portal [data-shadcn--sheet-target="content"][class*="slide-out-to-bottom"][data-state="closed"] {
  animation-name: shadcn-slide-out-to-bottom;
}

/* ---- Field error animation ---- */
@keyframes field-error-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.field-error.animate-in {
  animation: field-error-in 0.2s ease-out both;
}

/* ---- tooltip ---- */
[data-tooltip] {
  position: relative;
}
[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  left: calc(100% + 8px);
  top: 50%;
  transform: translateY(-50%);
  background: oklch(0.21 0.006 285.885);
  color: white;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.4;
  padding: 8px 12px;
  border-radius: 8px;
  white-space: normal;
  width: max-content;
  max-width: 260px;
  z-index: 50;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
}
[data-tooltip]:hover::after {
  opacity: 1;
}

/* ---- intl-tel-input overrides ---- */
.iti { width: 100%; }
.iti__country-list { z-index: 50; }
