/* AI Token Hub — тема консоли (new-api) поверх штатной.
 *
 * Отдаётся статикой (`/existera-theme.css`, location-алиас в console/nginx.conf)
 * и подключается <link>'ом прямо перед </head>, то есть ПОСЛЕ единственного
 * стиля приложения — так наши правила выигрывают каскад без гонки.
 * Раньше этот CSS жил внутри sub_filter-строки; у nginx есть жёсткий лимит на
 * длину одного параметра директивы, и со светлой палитрой он бы в него не влез.
 *
 * ГЛАВНОЕ ПРАВИЛО ЭТОГО ФАЙЛА: тёмные значения объявляются только под `.dark`,
 * светлые — только под `:not(.dark)`. Приложение (shadcn-style провайдер темы)
 * вешает класс `dark` на <html>; вариант «системная тема» тоже сводится к
 * наличию/отсутствию этого класса, так что отдельная medium-query не нужна.
 * До 2026-09-01 палитра была объявлена как `:root, .dark { … !important }` —
 * из-за `:root` тёмные токены применялись и в светлой теме, и переключатель
 * выглядел сломанным.
 */

/* ---------------------------------------------------------------- тёмная */

html.dark {
  --background: oklch(0.138 0.018 277.4) !important;
  --foreground: oklch(0.973 0.010 267.4) !important;

  --card: oklch(0.22 0.035 262 / 0.55) !important;
  --card-foreground: oklch(0.973 0.010 267.4) !important;
  --popover: oklch(0.19 0.04 262 / 0.68) !important;
  --popover-foreground: oklch(0.973 0.010 267.4) !important;

  --primary: oklch(0.658 0.182 261.0) !important;
  --primary-foreground: oklch(0.98 0.01 267) !important;
  --secondary: oklch(0.26 0.03 262 / 0.7) !important;
  --secondary-foreground: oklch(0.866 0.090 224.3) !important;

  --muted: oklch(0.21 0.02 262) !important;
  --muted-foreground: oklch(0.74 0.02 265) !important;
  --accent: oklch(0.826 0.131 194.9 / 0.18) !important;
  --accent-foreground: oklch(0.973 0.010 267.4) !important;

  --border: oklch(0.681 0.169 275 / 0.18) !important;
  --input: oklch(0.681 0.169 275 / 0.24) !important;
  --ring: oklch(0.826 0.131 194.9) !important;

  --chart-1: oklch(0.826 0.131 194.9) !important;
  --chart-2: oklch(0.658 0.182 261.0) !important;
  --chart-3: oklch(0.681 0.169 275.0) !important;
  --chart-4: oklch(0.866 0.090 224.3) !important;
  --chart-5: oklch(0.54 0.16 261) !important;
  --overview-accent-1: oklch(0.826 0.131 194.9) !important;
  --overview-accent-2: oklch(0.658 0.182 261.0) !important;
  --overview-accent-3: oklch(0.681 0.169 275.0) !important;

  --sidebar: oklch(0.15 0.03 262 / 0.5) !important;
  --sidebar-foreground: oklch(0.95 0.01 267) !important;
  --sidebar-primary: oklch(0.658 0.182 261.0) !important;
  --sidebar-primary-foreground: oklch(0.98 0.01 267) !important;
  --sidebar-accent: oklch(0.826 0.131 194.9 / 0.16) !important;
  --sidebar-accent-foreground: oklch(0.866 0.090 224.3) !important;
  --sidebar-border: oklch(0.681 0.169 275 / 0.16) !important;
  --sidebar-ring: oklch(0.826 0.131 194.9) !important;
}

/* ---------------------------------------------------------------- светлая */

html:not(.dark) {
  --background: oklch(0.984 0.004 265) !important;
  --foreground: oklch(0.215 0.030 266) !important;

  --card: oklch(1 0 0 / 0.74) !important;
  --card-foreground: oklch(0.215 0.030 266) !important;
  --popover: oklch(1 0 0 / 0.88) !important;
  --popover-foreground: oklch(0.215 0.030 266) !important;

  --primary: oklch(0.575 0.190 262.0) !important;
  --primary-foreground: oklch(0.990 0.005 265) !important;
  --secondary: oklch(0.955 0.014 250 / 0.85) !important;
  --secondary-foreground: oklch(0.430 0.110 243) !important;

  --muted: oklch(0.958 0.008 265) !important;
  --muted-foreground: oklch(0.505 0.022 266) !important;
  --accent: oklch(0.826 0.131 194.9 / 0.16) !important;
  --accent-foreground: oklch(0.260 0.040 266) !important;

  --border: oklch(0.600 0.120 262 / 0.20) !important;
  --input: oklch(0.600 0.120 262 / 0.30) !important;
  --ring: oklch(0.620 0.150 230) !important;

  /* На светлом фоне неоновые тона тёмной палитры не читаются — те же
     оттенки, но заметно темнее по светлоте. */
  --chart-1: oklch(0.620 0.125 195.0) !important;
  --chart-2: oklch(0.575 0.190 262.0) !important;
  --chart-3: oklch(0.600 0.170 275.0) !important;
  --chart-4: oklch(0.680 0.110 224.3) !important;
  --chart-5: oklch(0.480 0.150 261.0) !important;
  --overview-accent-1: oklch(0.620 0.125 195.0) !important;
  --overview-accent-2: oklch(0.575 0.190 262.0) !important;
  --overview-accent-3: oklch(0.600 0.170 275.0) !important;

  --sidebar: oklch(1 0 0 / 0.68) !important;
  --sidebar-foreground: oklch(0.240 0.030 266) !important;
  --sidebar-primary: oklch(0.575 0.190 262.0) !important;
  --sidebar-primary-foreground: oklch(0.990 0.005 265) !important;
  --sidebar-accent: oklch(0.826 0.131 194.9 / 0.18) !important;
  --sidebar-accent-foreground: oklch(0.360 0.100 240) !important;
  --sidebar-border: oklch(0.600 0.120 262 / 0.16) !important;
  --sidebar-ring: oklch(0.620 0.150 230) !important;
}

/* ------------------------------------------------------------------- фон */

/* `.bg-background` повторён рядом с html/body/#root не случайно: дашборд
   заворачивает содержимое в <main class="bg-background …"> — непрозрачную
   панель во всю высоту, которая иначе закрывает свечение. */
html.dark,
html.dark body,
html.dark #root,
html.dark .bg-background {
  background:
    radial-gradient(ellipse 900px 520px at 12% -8%, oklch(0.658 0.182 261 / 0.30), transparent 60%),
    radial-gradient(ellipse 820px 520px at 105% 0%, oklch(0.826 0.131 194.9 / 0.22), transparent 55%),
    oklch(0.138 0.018 277.4) !important;
  background-attachment: fixed, fixed, fixed !important;
}

html:not(.dark),
html:not(.dark) body,
html:not(.dark) #root,
html:not(.dark) .bg-background {
  background:
    radial-gradient(ellipse 900px 520px at 12% -8%, oklch(0.575 0.190 262 / 0.13), transparent 60%),
    radial-gradient(ellipse 820px 520px at 105% 0%, oklch(0.720 0.120 195 / 0.15), transparent 55%),
    oklch(0.984 0.004 265) !important;
  background-attachment: fixed, fixed, fixed !important;
}

html, body, #root {
  min-height: 100% !important;
}

/* ------------------------------------------------------------------ стекло */

/* В этой сборке уживаются две конвенции: примитивы shadcn несут атрибут
   data-slot (dialog, dropdown, select, command, sidebar), а собственные
   поверхности дашборда (Card и прочее) — обычные tailwind-классы
   bg-card / bg-popover / bg-sidebar без data-slot. Перечисляем оба набора. */
[data-slot="card"],
[data-slot="popover-content"],
[data-slot="sidebar"],
[data-slot="sidebar-inner"],
[data-slot="dialog-content"],
[data-slot="dropdown-menu-content"],
[data-slot="select-content"],
[data-slot="command"],
.bg-card,
.bg-popover,
.bg-sidebar {
  backdrop-filter: blur(14px) saturate(140%) !important;
  -webkit-backdrop-filter: blur(14px) saturate(140%) !important;
}

html.dark [data-slot="card"],
html.dark [data-slot="popover-content"],
html.dark [data-slot="sidebar"],
html.dark [data-slot="sidebar-inner"],
html.dark [data-slot="dialog-content"],
html.dark [data-slot="dropdown-menu-content"],
html.dark [data-slot="select-content"],
html.dark [data-slot="command"],
html.dark .bg-card,
html.dark .bg-popover,
html.dark .bg-sidebar {
  border: 1px solid oklch(0.681 0.169 275 / 0.18) !important;
}

html:not(.dark) [data-slot="card"],
html:not(.dark) [data-slot="popover-content"],
html:not(.dark) [data-slot="sidebar"],
html:not(.dark) [data-slot="sidebar-inner"],
html:not(.dark) [data-slot="dialog-content"],
html:not(.dark) [data-slot="dropdown-menu-content"],
html:not(.dark) [data-slot="select-content"],
html:not(.dark) [data-slot="command"],
html:not(.dark) .bg-card,
html:not(.dark) .bg-popover,
html:not(.dark) .bg-sidebar {
  border: 1px solid oklch(0.600 0.120 262 / 0.16) !important;
}

html.dark [data-slot="card"],
html.dark .bg-card {
  box-shadow:
    0 8px 32px oklch(0.05 0.02 260 / 0.45),
    0 0 0 1px oklch(0.826 0.131 194.9 / 0.06) inset !important;
}

html:not(.dark) [data-slot="card"],
html:not(.dark) .bg-card {
  box-shadow:
    0 8px 28px oklch(0.55 0.09 262 / 0.10),
    0 0 0 1px oklch(1 0 0 / 0.60) inset !important;
}

html.dark [data-slot="sidebar"],
html.dark .bg-sidebar {
  box-shadow: 1px 0 24px oklch(0.05 0.02 260 / 0.35) !important;
}

html:not(.dark) [data-slot="sidebar"],
html:not(.dark) .bg-sidebar {
  box-shadow: 1px 0 20px oklch(0.55 0.09 262 / 0.08) !important;
}

html.dark ::selection {
  background: oklch(0.658 0.182 261.0 / 0.35);
}

html:not(.dark) ::selection {
  background: oklch(0.575 0.190 262.0 / 0.20);
}

/* --------------------------------------------------------- мелкие правки */

/* Витрина моделей / Рейтинги: не давать заголовкам с именами моделей
   обрезаться до ~58px (h3.truncate внутри flex-колонки с min-w-0). */
h3.truncate {
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  min-width: 0;
}

.custom-home-content {
  display: block;
  padding-top: 6rem;
}
