/* v10 safe CSS. Do not touch project background settings logic. */

.nexign-empty-state-bender-wrap {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  width: 100% !important;
  margin-top: 24px !important;
  pointer-events: none !important;
}

.nexign-empty-state-bender {
  width: 300px !important;
  height: 310px !important;
  min-width: 300px !important;
  min-height: 310px !important;
  max-width: 300px !important;
  max-height: 310px !important;
  object-fit: contain !important;
  display: block !important;
}

.nexign-main-logo-replacement {
  width: 142px !important;
  height: 54px !important;
  max-width: 142px !important;
  max-height: 54px !important;
  object-fit: contain !important;
  display: inline-block !important;
  vertical-align: middle !important;
}

aside .nexign-main-logo-replacement,
nav .nexign-main-logo-replacement,
header .nexign-main-logo-replacement,
.logo .nexign-main-logo-replacement,
.logo-link .nexign-main-logo-replacement {
  width: 128px !important;
  height: 46px !important;
  max-width: 128px !important;
  max-height: 46px !important;
}

@media (max-width: 900px) {
  .nexign-empty-state-bender {
    width: 210px !important;
    height: 220px !important;
    min-width: 210px !important;
    min-height: 220px !important;
    max-width: 210px !important;
    max-height: 220px !important;
  }
}


/* === V11 MAIN LOGO NO FLICKER CSS START === */

/*
  Раннее CSS-скрытие штатного SVG-логотипа Vikunja.
  JS затем удаляет этот SVG из DOM и ставит Nexign.
*/
svg:has(path[fill="#196aff"][d^="M226.9 46.8"]),
svg:has(path[d^="M226.9 46.8A126"]),
svg:has(path[d*="M226.9 46.8A126"]) {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
}

.nexign-main-logo-replacement {
  width: 142px !important;
  height: 54px !important;
  max-width: 142px !important;
  max-height: 54px !important;
  object-fit: contain !important;
  display: inline-block !important;
  vertical-align: middle !important;
}

aside .nexign-main-logo-replacement,
nav .nexign-main-logo-replacement,
header .nexign-main-logo-replacement,
.logo .nexign-main-logo-replacement,
.logo-link .nexign-main-logo-replacement {
  width: 128px !important;
  height: 46px !important;
  max-width: 128px !important;
  max-height: 46px !important;
}

/* === V11 MAIN LOGO NO FLICKER CSS END === */


/* === V12 LOGIN IMAGE REPLACEMENT START === */

/*
  Только экран входа.
  Заменяем стандартную картинку в <section class="image"> на загруженную.
*/
.no-auth-wrapper section.image,
.no-auth-wrapper .image:has(.image-title),
body:has(.no-auth-wrapper) section.image,
body:has(.no-auth-wrapper) .image:has(.image-title) {
  background:
    linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.28)),
    url("/custom/nexign-bender-full.png?v=nexign-tasks-v12-login-image-20260525") center center / cover no-repeat !important;
}

/* Оставляем надпись "С возвращением!", но делаем читаемой */
.no-auth-wrapper section.image .image-title,
.no-auth-wrapper .image:has(.image-title) .image-title,
body:has(.no-auth-wrapper) section.image .image-title,
body:has(.no-auth-wrapper) .image:has(.image-title) .image-title {
  color: #ffffff !important;
  text-shadow: 0 3px 16px rgba(0,0,0,.75), 0 1px 2px rgba(0,0,0,.95) !important;
  z-index: 2 !important;
}

/* === V12 LOGIN IMAGE REPLACEMENT END === */


/* === V13 HARD REMOVE EMPTY LLAMA CSS START === */

/*
  Страховка от мелькания empty-state ламы.
  JS удаляет SVG из DOM, а CSS не даёт ей показаться даже на 1 кадр.
*/
main.app-content svg:has(path[d^="M266.3 175.3"]),
main.app-content svg:has(path[d^="M77.8 304.5"]),
main.app-content svg:has(path[fill="#58595b"]),
main.app-content svg:has(circle[fill="#196aff"]):has(path[fill="#58595b"]),
main.app-content svg:has(circle[fill="#196AFF"]):has(path[fill="#58595b"]) {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
  pointer-events: none !important;
}

/* === V13 HARD REMOVE EMPTY LLAMA CSS END === */


/* === V14 REMOVE LOGIN WRAPPER LLAMA START === */

/*
  Лама в нижнем левом углу login — это background у .no-auth-wrapper:
  url(/assets/llama-*.svg?url). Убираем именно фон-ламу, не трогая
  section.image с нашей картинкой входа.
*/
.no-auth-wrapper,
.no-auth-wrapper[data-v-d56b4d0d],
body:has(.no-auth-wrapper) .no-auth-wrapper,
html:has(.no-auth-wrapper) .no-auth-wrapper {
  background: #202938 !important;
  background-image: none !important;
  background-color: #202938 !important;
}

/* Защита от pseudo-фонов на auth wrapper */
.no-auth-wrapper::before,
.no-auth-wrapper::after,
.no-auth-wrapper[data-v-d56b4d0d]::before,
.no-auth-wrapper[data-v-d56b4d0d]::after {
  content: none !important;
  display: none !important;
  background: none !important;
  background-image: none !important;
}

/* === V14 REMOVE LOGIN WRAPPER LLAMA END === */


/* === V15 NEXIGN GREEN ACCENT START === */

/*
  Nexign Green accent override.
  Меняет ярко-синий акцент Vikunja на зелёный из брендбука Nexign.
*/
:root,
html,
html.dark,
body {
  --primary: #00CA22 !important;
  --primary-color: #00CA22 !important;
  --primary-hover: #00B81F !important;
  --link: #00CA22 !important;
  --link-color: #00CA22 !important;
  --bulma-primary: #00CA22 !important;
  --bulma-link: #00CA22 !important;
  --button-primary-background-color: #00CA22 !important;
  --button-primary-border-color: #00CA22 !important;
  --button-primary-hover-background-color: #00B81F !important;
  --button-primary-hover-border-color: #00B81F !important;
  accent-color: #00CA22 !important;
}

/* Активные пункты меню слева */
.menu-list a.router-link-active,
.menu-list a.router-link-exact-active,
.menu-list a.is-active,
.sidebar a.router-link-active,
.sidebar a.router-link-exact-active,
nav a.router-link-active,
nav a.router-link-exact-active,
aside a.router-link-active,
aside a.router-link-exact-active,
.app-container a.router-link-active,
.app-container a.router-link-exact-active {
  color: #00CA22 !important;
}

/* Иконки активных пунктов меню */
.menu-list a.router-link-active svg,
.menu-list a.router-link-exact-active svg,
.menu-list a.is-active svg,
.sidebar a.router-link-active svg,
.sidebar a.router-link-exact-active svg,
nav a.router-link-active svg,
nav a.router-link-exact-active svg,
aside a.router-link-active svg,
aside a.router-link-exact-active svg {
  color: #00CA22 !important;
  fill: #00CA22 !important;
}

/* Основные кнопки */
.button.is-primary,
.button.is-link,
.button-primary,
.base-button.button.is-primary,
.base-button.is-primary,
.base-button--variant-primary,
button.is-primary,
button.button.is-primary,
a.button.is-primary {
  background-color: #00CA22 !important;
  border-color: #00CA22 !important;
  color: #071018 !important;
  font-weight: 800 !important;
  box-shadow: none !important;
}

/* Hover/focus для кнопок */
.button.is-primary:hover,
.button.is-primary:focus,
.button.is-link:hover,
.button.is-link:focus,
.button-primary:hover,
.button-primary:focus,
.base-button.button.is-primary:hover,
.base-button.button.is-primary:focus,
.base-button.is-primary:hover,
.base-button.is-primary:focus,
button.is-primary:hover,
button.is-primary:focus,
a.button.is-primary:hover,
a.button.is-primary:focus {
  background-color: #00B81F !important;
  border-color: #00B81F !important;
  color: #071018 !important;
}

/* Малые кнопки-ссылки, активные тексты, системные ссылки */
a,
.button-link,
.api-config__change-button,
.has-text-primary,
.has-text-link,
.text-primary,
.text-link,
.project-title-button,
.dropdown-item.is-active {
  color: #00CA22 !important;
}

/* Но опасные действия не перекрашиваем */
.is-danger,
.has-text-danger,
.help.is-danger,
.button.is-danger,
button.is-danger,
a.is-danger {
  color: var(--danger, #ff4136) !important;
}

.button.is-danger,
button.is-danger {
  background-color: var(--danger, #ff4136) !important;
  border-color: var(--danger, #ff4136) !important;
  color: #fff !important;
}

/* Фокусы input/select/textarea */
.input:focus,
.textarea:focus,
.select select:focus,
input:focus,
textarea:focus,
select:focus {
  border-color: #00CA22 !important;
  box-shadow: 0 0 0 .125em rgba(0, 202, 34, .22) !important;
}

/* Checkbox/radio */
input[type="checkbox"],
input[type="radio"] {
  accent-color: #00CA22 !important;
}

/* Прогресс/акцентные бейджи, если Vikunja использует primary-классы */
.tag.is-primary,
.notification.is-primary,
.progress.is-primary::-webkit-progress-value,
progress.is-primary::-webkit-progress-value {
  background-color: #00CA22 !important;
  color: #071018 !important;
}

/* SVG, у которых цвет идёт через currentColor */
.has-text-primary svg,
.has-text-link svg,
.button.is-primary svg,
.button.is-link svg,
a.has-text-primary svg,
a.has-text-link svg {
  color: #00CA22 !important;
  fill: currentColor !important;
}

/* === V15 NEXIGN GREEN ACCENT END === */


/* === V16 TWO GREEN CONTRAST START === */

/*
  Nexign green contrast model:
  - #00CA22: основной яркий зелёный
  - #008F18: тёмный зелёный для hover/active/границ
  - #071018: тёмный текст на зелёных кнопках
*/

:root,
html,
html.dark,
body {
  --nexign-green: #00CA22 !important;
  --nexign-green-dark: #008F18 !important;
  --nexign-green-soft: rgba(0, 202, 34, .14) !important;
  --nexign-green-border: rgba(0, 202, 34, .42) !important;
  --nexign-ink: #071018 !important;
  --primary: #00CA22 !important;
  --primary-color: #00CA22 !important;
  --primary-hover: #008F18 !important;
  --link: #00CA22 !important;
  --link-color: #00CA22 !important;
  --bulma-primary: #00CA22 !important;
  --bulma-link: #00CA22 !important;
  accent-color: #00CA22 !important;
}

/* 1) Активные пункты меню: текст и иконки зелёные на тёмном фоне */
.menu-list a.router-link-active,
.menu-list a.router-link-exact-active,
.menu-list a.is-active,
.sidebar a.router-link-active,
.sidebar a.router-link-exact-active,
nav a.router-link-active,
nav a.router-link-exact-active,
aside a.router-link-active,
aside a.router-link-exact-active,
.app-container a.router-link-active,
.app-container a.router-link-exact-active {
  color: #00CA22 !important;
  background: rgba(0, 202, 34, .08) !important;
}

.menu-list a.router-link-active svg,
.menu-list a.router-link-exact-active svg,
.menu-list a.is-active svg,
.sidebar a.router-link-active svg,
.sidebar a.router-link-exact-active svg,
nav a.router-link-active svg,
nav a.router-link-exact-active svg,
aside a.router-link-active svg,
aside a.router-link-exact-active svg {
  color: #00CA22 !important;
  fill: currentColor !important;
}

/* 2) Обычные пункты меню при наведении — мягкий зелёный фон, не яркая плашка */
.menu-list a:hover,
.sidebar a:hover,
nav a:hover,
aside a:hover {
  background: rgba(0, 202, 34, .08) !important;
  color: #00CA22 !important;
}

/* 3) Основные кнопки: зелёный фон + тёмный текст/иконки */
.button.is-primary,
.button.is-link,
.button-primary,
.base-button.button.is-primary,
.base-button.is-primary,
.base-button--variant-primary,
button.is-primary,
button.button.is-primary,
a.button.is-primary,
button[type="submit"].is-primary {
  background-color: #00CA22 !important;
  border-color: #00CA22 !important;
  color: #071018 !important;
  font-weight: 800 !important;
  box-shadow: none !important;
}

/* ВАЖНО: иконки/плюсы/символы внутри зелёных кнопок должны быть тёмными, а не зелёными */
.button.is-primary svg,
.button.is-link svg,
.button-primary svg,
.base-button.button.is-primary svg,
.base-button.is-primary svg,
button.is-primary svg,
button.button.is-primary svg,
a.button.is-primary svg,
.button.is-primary .icon,
.button.is-link .icon,
button.is-primary .icon,
.button.is-primary span,
.button.is-link span,
button.is-primary span,
a.button.is-primary span {
  color: #071018 !important;
  fill: currentColor !important;
}

/* 4) Hover/focus: тёмный зелёный фон + белый текст, чтобы не терялся */
.button.is-primary:hover,
.button.is-primary:focus,
.button.is-link:hover,
.button.is-link:focus,
.button-primary:hover,
.button-primary:focus,
.base-button.button.is-primary:hover,
.base-button.button.is-primary:focus,
.base-button.is-primary:hover,
.base-button.is-primary:focus,
button.is-primary:hover,
button.is-primary:focus,
a.button.is-primary:hover,
a.button.is-primary:focus {
  background-color: #008F18 !important;
  border-color: #008F18 !important;
  color: #ffffff !important;
}

.button.is-primary:hover svg,
.button.is-primary:focus svg,
.button.is-link:hover svg,
.button.is-link:focus svg,
button.is-primary:hover svg,
button.is-primary:focus svg,
.button.is-primary:hover .icon,
.button.is-primary:focus .icon,
.button.is-primary:hover span,
.button.is-primary:focus span,
button.is-primary:hover span,
button.is-primary:focus span {
  color: #ffffff !important;
  fill: currentColor !important;
}

/* 5) Disabled-кнопки: не яркие, но читаемые */
.button.is-primary[disabled],
.button.is-primary:disabled,
button.is-primary[disabled],
button.is-primary:disabled,
.base-button.is-primary[disabled],
.base-button.is-primary:disabled {
  background-color: rgba(0, 143, 24, .55) !important;
  border-color: rgba(0, 143, 24, .55) !important;
  color: rgba(255, 255, 255, .72) !important;
}

/* 6) Текстовые ссылки и кнопки-ссылки */
a,
.button-link,
.api-config__change-button,
.has-text-primary,
.has-text-link,
.text-primary,
.text-link,
.project-title-button {
  color: #00CA22 !important;
}

a:hover,
.button-link:hover,
.api-config__change-button:hover,
.has-text-primary:hover,
.has-text-link:hover {
  color: #00E62A !important;
}

/* 7) Dropdown active/selected */
.dropdown-item.is-active,
.dropdown-item:active,
.dropdown-item:hover {
  background-color: rgba(0, 202, 34, .12) !important;
  color: #00CA22 !important;
}

/* 8) Input/select focus */
.input:focus,
.textarea:focus,
.select select:focus,
input:focus,
textarea:focus,
select:focus {
  border-color: #00CA22 !important;
  box-shadow: 0 0 0 .125em rgba(0, 202, 34, .22) !important;
}

/* 9) Checkbox/radio */
input[type="checkbox"],
input[type="radio"] {
  accent-color: #00CA22 !important;
}

/* 10) Tags/progress/primary badges */
.tag.is-primary,
.notification.is-primary {
  background-color: rgba(0, 202, 34, .14) !important;
  border: 1px solid rgba(0, 202, 34, .42) !important;
  color: #00CA22 !important;
}

.progress.is-primary::-webkit-progress-value,
progress.is-primary::-webkit-progress-value {
  background-color: #00CA22 !important;
}

/* 11) Не перекрашиваем опасные/ошибочные состояния */
.is-danger,
.has-text-danger,
.help.is-danger,
.button.is-danger,
button.is-danger,
a.is-danger {
  color: var(--danger, #ff4136) !important;
}

.button.is-danger,
button.is-danger {
  background-color: var(--danger, #ff4136) !important;
  border-color: var(--danger, #ff4136) !important;
  color: #ffffff !important;
}

/* 12) Не ломаем белый текст в заголовках/основной типографике */
.title,
.subtitle,
.label,
.content,
.content h1,
.content h2,
.content h3,
.content h4,
.content p {
  color: inherit;
}

/* === V16 TWO GREEN CONTRAST END === */


/* === V18 BLOCK ALL LLAMA BACKGROUNDS START === */

/*
  Убираем фоновые ламы загрузки/offline.
  Главные найденные источники:
  - .no-auth-wrapper -> /assets/llama-*.svg?url
  - .offline -> /assets/llama-nightscape-*.jpg
*/
.offline,
.offline[data-v-cd2aeee7],
.no-auth-wrapper,
.no-auth-wrapper[data-v-d56b4d0d] {
  background-image: none !important;
}

.offline::before,
.offline::after,
.no-auth-wrapper::before,
.no-auth-wrapper::after {
  content: none !important;
  display: none !important;
  background: none !important;
  background-image: none !important;
}

/* === V18 BLOCK ALL LLAMA BACKGROUNDS END === */


/* === V19 KILL ALL LLAMAS CSS START === */

/*
  Финальная страховка от всех лам:
  - фон no-auth-wrapper
  - фон offline/loading
  - img/source/object с llama в src
  - inline svg с сигнатурами ламы
*/
.offline,
.offline[data-v-cd2aeee7],
.no-auth-wrapper,
.no-auth-wrapper[data-v-d56b4d0d],
[class*="llama"],
[class*="Llama"] {
  background-image: none !important;
}

img[src*="llama" i],
source[src*="llama" i],
object[data*="llama" i],
embed[src*="llama" i],
svg:has(path[d^="M266.3 175.3"]),
svg:has(path[d^="M77.8 304.5"]),
svg:has(path[fill="#58595b"]),
svg:has(circle[fill="#196aff"]):has(path[fill="#58595b"]) {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
  pointer-events: none !important;
}

/* === V19 KILL ALL LLAMAS CSS END === */


/* === V23 KILL ONLY LOADING LOGO START === */

/*
  Убираем только ламу/логотип на загрузочном экране:
  <section class="vikunja-loading"><svg class="logo">...</svg>
  Не трогаем обычные иконки, Бендера, favicon и логотип Nexign.
*/
section.vikunja-loading > svg.logo,
section.vikunja-loading svg.logo[data-v-cd2aeee7],
#app section.vikunja-loading > svg.logo {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
  max-width: 0 !important;
  max-height: 0 !important;
  margin: 0 !important;
  pointer-events: none !important;
}

/* === V23 KILL ONLY LOADING LOGO END === */

