@import url("/assets/css/theme-forgejo-auto.css");

/* extract.team — фирменная тема форжа. Собрана на бренд-палитре.
 *
 * Импорт базовой темы, а не копия: все ~240 семантических токенов Forgejo остаются
 * определёнными и обновляются вместе с форжем. Переопределяется только то, что несёт
 * бренд — акцент, нейтральная рампа и статусы.
 *
 * ЗНАЧЕНИЯ ЗАФИКСИРОВАНЫ ПО ГАЙДУ. Каждый цвет ниже — это либо ровно брендовый hex,
 * либо явная смесь ДВУХ СОСЕДНИХ брендовых серых через color-mix. Ничего «на глаз»
 * не подобрано. Гайд требует «keep values locked, do not interpolate»; при этом у
 * бренда 8 ступеней серого, а Forgejo нужно 18 (светлая) и 17 (тёмная). Промежуточные
 * слоты закрыты смесями соседей — это тот случай, который гайд относит к product-палитре
 * («the product uses a palette optimized for accessibility... consult the product team»).
 * Все места, где UI реально что-то показывает — поверхности, границы, текст — сидят
 * ровно на брендовых значениях.
 *
 * BLUE      #0000FF   CERULEAN #3C8AFF
 * GRAY 0    #FFFFFF   GRAY 10  #EEF0F3   GRAY 15  #DEE1E7   GRAY 30  #B1B7C3
 * GRAY 50   #717886   GRAY 60  #5B616E   GRAY 80  #32353D   GRAY 100 #0A0B0D
 * GREEN     #66C800   YELLOW   #FFD12F   RED      #FC401F   PINK     #FEA8CD
 * TAN       #B8A581   LIME     #B6F569
 */

/* ============================ СВЕТЛАЯ ============================ */
:root {
  /* Акцент — BLUE. На белом даёт 8.59:1, белый текст на нём — те же 8.59:1. */
  --color-primary: #0000FF;
  --color-primary-contrast: #FFFFFF;
  --color-primary-dark-1: color-mix(in srgb, #0000FF 88%, #0A0B0D);
  --color-primary-dark-2: color-mix(in srgb, #0000FF 76%, #0A0B0D);
  --color-primary-dark-3: color-mix(in srgb, #0000FF 64%, #0A0B0D);
  --color-primary-dark-4: color-mix(in srgb, #0000FF 52%, #0A0B0D);
  --color-primary-light-1: color-mix(in srgb, #0000FF 82%, #FFFFFF);
  --color-primary-light-2: color-mix(in srgb, #0000FF 64%, #FFFFFF);
  --color-primary-light-3: color-mix(in srgb, #0000FF 44%, #FFFFFF);
  --color-primary-light-4: color-mix(in srgb, #0000FF 24%, #FFFFFF);
  --color-primary-alpha-10: rgb(0 0 255 / 10%);
  --color-primary-alpha-20: rgb(0 0 255 / 20%);
  --color-primary-alpha-30: rgb(0 0 255 / 30%);
  --color-primary-alpha-40: rgb(0 0 255 / 40%);
  --color-primary-alpha-50: rgb(0 0 255 / 50%);
  --color-primary-alpha-60: rgb(0 0 255 / 60%);
  --color-primary-alpha-70: rgb(0 0 255 / 70%);
  --color-primary-alpha-80: rgb(0 0 255 / 80%);
  --color-primary-alpha-90: rgb(0 0 255 / 90%);
  --color-primary-hover: color-mix(in srgb, #0000FF 88%, #0A0B0D);
  --color-primary-active: color-mix(in srgb, #0000FF 76%, #0A0B0D);

  /* Нейтраль. Forgejo строит на ней все поверхности и текст, поэтому 240 токенов
   * трогать не нужно — достаточно рампы. Комментарий справа = брендовая ступень. */
  --zinc-50:  #EEF0F3;                                    /* GRAY 10  — карточки, box-body */
  --zinc-100: #EEF0F3;                                    /* GRAY 10  — шапки, навбар, футер */
  --zinc-150: color-mix(in srgb, #EEF0F3, #DEE1E7);
  --zinc-200: #DEE1E7;                                    /* GRAY 15  — подсветка, таймлайн */
  --zinc-250: color-mix(in srgb, #DEE1E7 70%, #B1B7C3);
  --zinc-300: #B1B7C3;                                    /* GRAY 30  — границы полей */
  --zinc-350: color-mix(in srgb, #B1B7C3 70%, #717886);
  --zinc-400: color-mix(in srgb, #B1B7C3, #717886);       /* граница при наведении */
  --zinc-450: color-mix(in srgb, #717886 70%, #B1B7C3);
  --zinc-500: #717886;                                    /* GRAY 50 */
  --zinc-550: #717886;                                    /* GRAY 50  — text-light-3 */
  --zinc-600: #5B616E;                                    /* GRAY 60  — text-light-2, 6.21:1 */
  --zinc-650: #5B616E;                                    /* GRAY 60  — text-light-1 */
  --zinc-700: color-mix(in srgb, #5B616E, #32353D);       /* text-light */
  --zinc-750: #32353D;                                    /* GRAY 80 */
  --zinc-800: #32353D;                                    /* GRAY 80  — input-text */
  --zinc-850: color-mix(in srgb, #32353D, #0A0B0D);
  --zinc-900: #0A0B0D;                                    /* GRAY 100 — основной текст, 19.69:1 */

  /* Статусы. Сплошные цвета — брендовые; фон и рамка — тот же цвет с прозрачностью
   * (это использование брендового цвета, а не новая ступень). Текст статуса — GRAY 100:
   * сам GREEN на белом даёт всего 2.1:1 и текстом быть не может. */
  --color-red: #FC401F;
  --color-green: #66C800;
  --color-orange: #FFD12F;
  --color-yellow: #FFD12F;
  --color-blue: #0000FF;
  --color-teal: #3C8AFF;
  --color-pink: #FEA8CD;
  --color-gold: #B8A581;
  --color-error-text: #0A0B0D;
  --color-error-bg: rgb(252 64 31 / 12%);
  --color-error-border: rgb(252 64 31 / 38%);
  --color-success-text: #0A0B0D;
  --color-success-bg: rgb(102 200 0 / 14%);
  --color-success-border: rgb(102 200 0 / 40%);
  --color-warning-text: #0A0B0D;
  --color-warning-bg: rgb(255 209 47 / 20%);
  --color-warning-border: rgb(255 209 47 / 55%);
  --color-info-text: #0A0B0D;
  --color-info-bg: rgb(0 0 255 / 8%);
  --color-info-border: rgb(0 0 255 / 28%);

  /* Оттенки семейств. База определяет для каждого цвета -light/-dark-1/-dark-2
   * и badge-тройку; без них Forgejo подставляет свои оранжевые. */
  --color-red-light: color-mix(in srgb, #FC401F 78%, #FFFFFF);
  --color-red-dark-1: color-mix(in srgb, #FC401F 88%, #0A0B0D);
  --color-red-dark-2: color-mix(in srgb, #FC401F 76%, #0A0B0D);
  --color-red-badge: #FC401F;
  --color-red-badge-bg: color-mix(in srgb, #FC401F 13%, transparent);
  --color-red-badge-hover-bg: color-mix(in srgb, #FC401F 27%, transparent);
  --color-green-light: color-mix(in srgb, #66C800 78%, #FFFFFF);
  --color-green-dark-1: color-mix(in srgb, #66C800 88%, #0A0B0D);
  --color-green-dark-2: color-mix(in srgb, #66C800 76%, #0A0B0D);
  --color-green-badge: #66C800;
  --color-green-badge-bg: color-mix(in srgb, #66C800 13%, transparent);
  --color-green-badge-hover-bg: color-mix(in srgb, #66C800 27%, transparent);
  --color-orange-light: color-mix(in srgb, #FFD12F 78%, #FFFFFF);
  --color-orange-dark-1: color-mix(in srgb, #FFD12F 88%, #0A0B0D);
  --color-orange-dark-2: color-mix(in srgb, #FFD12F 76%, #0A0B0D);
  --color-orange-badge: #FFD12F;
  --color-orange-badge-bg: color-mix(in srgb, #FFD12F 13%, transparent);
  --color-orange-badge-hover-bg: color-mix(in srgb, #FFD12F 27%, transparent);
  --color-yellow-light: color-mix(in srgb, #FFD12F 78%, #FFFFFF);
  --color-yellow-dark-1: color-mix(in srgb, #FFD12F 88%, #0A0B0D);
  --color-yellow-dark-2: color-mix(in srgb, #FFD12F 76%, #0A0B0D);
  --color-yellow-badge: #FFD12F;
  --color-yellow-badge-bg: color-mix(in srgb, #FFD12F 13%, transparent);
  --color-yellow-badge-hover-bg: color-mix(in srgb, #FFD12F 27%, transparent);
  --color-blue-light: color-mix(in srgb, #0000FF 78%, #FFFFFF);
  --color-blue-dark-1: color-mix(in srgb, #0000FF 88%, #0A0B0D);
  --color-blue-dark-2: color-mix(in srgb, #0000FF 76%, #0A0B0D);
  --color-teal-light: color-mix(in srgb, #3C8AFF 78%, #FFFFFF);
  --color-teal-dark-1: color-mix(in srgb, #3C8AFF 88%, #0A0B0D);
  --color-teal-dark-2: color-mix(in srgb, #3C8AFF 76%, #0A0B0D);
  --color-purple-light: color-mix(in srgb, #9333EA 78%, #FFFFFF);
  --color-purple-dark-1: color-mix(in srgb, #9333EA 88%, #0A0B0D);
  --color-purple-dark-2: color-mix(in srgb, #9333EA 76%, #0A0B0D);
  --color-pink-light: color-mix(in srgb, #FEA8CD 78%, #FFFFFF);
  --color-pink-dark-1: color-mix(in srgb, #FEA8CD 88%, #0A0B0D);
  --color-pink-dark-2: color-mix(in srgb, #FEA8CD 76%, #0A0B0D);
  --color-gold-light: color-mix(in srgb, #B8A581 78%, #FFFFFF);
  --color-gold-dark-1: color-mix(in srgb, #B8A581 88%, #0A0B0D);
  --color-gold-dark-2: color-mix(in srgb, #B8A581 76%, #0A0B0D);
  --color-grey: #717886;
  --color-grey-light: #B1B7C3;
  --color-purple: #9333EA;
  --color-primary-dark-5: color-mix(in srgb, #0000FF 42%, #0A0B0D);
  --color-primary-dark-6: color-mix(in srgb, #0000FF 32%, #0A0B0D);
  --color-primary-dark-7: color-mix(in srgb, #0000FF 22%, #0A0B0D);
  --color-primary-light-5: color-mix(in srgb, #0000FF 16%, #FFFFFF);
  --color-primary-light-6: color-mix(in srgb, #0000FF 9%, #FFFFFF);
  --color-primary-light-7: color-mix(in srgb, #0000FF 4%, #FFFFFF);
}

/* ============================ ТЁМНАЯ ============================ */
@media (prefers-color-scheme: dark) {
  :root {
    /* Акцент — CERULEAN, а не BLUE. Это не вкусовщина: BLUE на GRAY 100 даёт 2.29:1
     * и нечитаем, CERULEAN — 5.88:1. Гайд и держит CERULEAN как пару к BLUE. */
    --color-primary: #3C8AFF;
    --color-primary-contrast: #0A0B0D;                    /* текст на кнопке, 5.88:1 */
    --color-primary-dark-1: color-mix(in srgb, #3C8AFF 88%, #0A0B0D);
    --color-primary-dark-2: color-mix(in srgb, #3C8AFF 76%, #0A0B0D);
    --color-primary-dark-3: color-mix(in srgb, #3C8AFF 64%, #0A0B0D);
    --color-primary-dark-4: color-mix(in srgb, #3C8AFF 52%, #0A0B0D);
    --color-primary-light-1: color-mix(in srgb, #3C8AFF 82%, #FFFFFF);
    --color-primary-light-2: color-mix(in srgb, #3C8AFF 68%, #FFFFFF);
    --color-primary-light-3: color-mix(in srgb, #3C8AFF 56%, #FFFFFF);
    --color-primary-light-4: color-mix(in srgb, #3C8AFF 44%, #FFFFFF);
    --color-primary-alpha-10: rgb(60 138 255 / 10%);
    --color-primary-alpha-20: rgb(60 138 255 / 20%);
    --color-primary-alpha-30: rgb(60 138 255 / 30%);
    --color-primary-alpha-40: rgb(60 138 255 / 40%);
    --color-primary-alpha-50: rgb(60 138 255 / 50%);
    --color-primary-alpha-60: rgb(60 138 255 / 60%);
    --color-primary-alpha-70: rgb(60 138 255 / 70%);
    --color-primary-alpha-80: rgb(60 138 255 / 80%);
    --color-primary-alpha-90: rgb(60 138 255 / 90%);
    --color-primary-hover: color-mix(in srgb, #3C8AFF 84%, #FFFFFF);
    --color-primary-active: color-mix(in srgb, #3C8AFF 68%, #FFFFFF);

    /* Тёмная нейтраль. steel-100 — самый светлый (текст), steel-900 — фон страницы. */
    --steel-100: #EEF0F3;                                 /* GRAY 10  — основной текст, 17.25:1 */
    --steel-150: color-mix(in srgb, #EEF0F3, #DEE1E7);
    --steel-200: #DEE1E7;                                 /* GRAY 15 */
    --steel-250: color-mix(in srgb, #DEE1E7, #B1B7C3);
    --steel-300: #B1B7C3;                                 /* GRAY 30  — приглушённый, 9.78:1 */
    --steel-350: color-mix(in srgb, #B1B7C3 70%, #717886);
    --steel-400: color-mix(in srgb, #B1B7C3, #717886);
    --steel-450: color-mix(in srgb, #717886 70%, #B1B7C3);
    --steel-500: #717886;                                 /* GRAY 50 */
    --steel-550: color-mix(in srgb, #717886, #5B616E);
    --steel-600: #5B616E;                                 /* GRAY 60 */
    --steel-650: color-mix(in srgb, #5B616E, #32353D);    /* границы */
    --steel-700: #32353D;                                 /* GRAY 80 */
    --steel-750: color-mix(in srgb, #32353D 70%, #0A0B0D);
    --steel-800: color-mix(in srgb, #32353D 45%, #0A0B0D);/* карточки — светлее фона, иначе сливаются */
    --steel-850: color-mix(in srgb, #32353D 22%, #0A0B0D);
    --steel-900: #0A0B0D;                                 /* GRAY 100 — фон страницы */

    --color-red: #FC401F;
    --color-green: #66C800;
    --color-orange: #FFD12F;
    --color-yellow: #FFD12F;
    --color-blue: #3C8AFF;
    --color-teal: #3C8AFF;
    --color-pink: #FEA8CD;
    --color-gold: #B8A581;
    /* На тёмном сами брендовые цвета читаются как текст — тут они и стоят. */
    --color-error-text: #FC401F;
    --color-error-bg: rgb(252 64 31 / 14%);
    --color-error-border: rgb(252 64 31 / 42%);
    --color-success-text: #B6F569;                        /* LIME — GREEN на чёрном тускловат */
    --color-success-bg: rgb(102 200 0 / 16%);
    --color-success-border: rgb(102 200 0 / 45%);
    --color-warning-text: #FFD12F;
    --color-warning-bg: rgb(255 209 47 / 14%);
    --color-warning-border: rgb(255 209 47 / 42%);
    --color-info-text: #3C8AFF;
    --color-info-bg: rgb(60 138 255 / 12%);
    --color-info-border: rgb(60 138 255 / 38%);

    /* Те же семейства для тёмной: светлее, а не темнее. */
    --color-red-light: color-mix(in srgb, #FC401F 78%, #0A0B0D);
    --color-red-dark-1: color-mix(in srgb, #FC401F 88%, #0A0B0D);
    --color-red-dark-2: color-mix(in srgb, #FC401F 76%, #0A0B0D);
    --color-red-badge: #FC401F;
    --color-red-badge-bg: color-mix(in srgb, #FC401F 13%, transparent);
    --color-red-badge-hover-bg: color-mix(in srgb, #FC401F 27%, transparent);
    --color-green-light: color-mix(in srgb, #B6F569 78%, #0A0B0D);
    --color-green-dark-1: color-mix(in srgb, #B6F569 88%, #0A0B0D);
    --color-green-dark-2: color-mix(in srgb, #B6F569 76%, #0A0B0D);
    --color-green-badge: #B6F569;
    --color-green-badge-bg: color-mix(in srgb, #B6F569 13%, transparent);
    --color-green-badge-hover-bg: color-mix(in srgb, #B6F569 27%, transparent);
    --color-orange-light: color-mix(in srgb, #FFD12F 78%, #0A0B0D);
    --color-orange-dark-1: color-mix(in srgb, #FFD12F 88%, #0A0B0D);
    --color-orange-dark-2: color-mix(in srgb, #FFD12F 76%, #0A0B0D);
    --color-orange-badge: #FFD12F;
    --color-orange-badge-bg: color-mix(in srgb, #FFD12F 13%, transparent);
    --color-orange-badge-hover-bg: color-mix(in srgb, #FFD12F 27%, transparent);
    --color-yellow-light: color-mix(in srgb, #FFD12F 78%, #0A0B0D);
    --color-yellow-dark-1: color-mix(in srgb, #FFD12F 88%, #0A0B0D);
    --color-yellow-dark-2: color-mix(in srgb, #FFD12F 76%, #0A0B0D);
    --color-yellow-badge: #FFD12F;
    --color-yellow-badge-bg: color-mix(in srgb, #FFD12F 13%, transparent);
    --color-yellow-badge-hover-bg: color-mix(in srgb, #FFD12F 27%, transparent);
    --color-blue-light: color-mix(in srgb, #3C8AFF 78%, #0A0B0D);
    --color-blue-dark-1: color-mix(in srgb, #3C8AFF 88%, #0A0B0D);
    --color-blue-dark-2: color-mix(in srgb, #3C8AFF 76%, #0A0B0D);
    --color-teal-light: color-mix(in srgb, #3C8AFF 78%, #0A0B0D);
    --color-teal-dark-1: color-mix(in srgb, #3C8AFF 88%, #0A0B0D);
    --color-teal-dark-2: color-mix(in srgb, #3C8AFF 76%, #0A0B0D);
    --color-purple-light: color-mix(in srgb, #9333EA 78%, #0A0B0D);
    --color-purple-dark-1: color-mix(in srgb, #9333EA 88%, #0A0B0D);
    --color-purple-dark-2: color-mix(in srgb, #9333EA 76%, #0A0B0D);
    --color-pink-light: color-mix(in srgb, #FEA8CD 78%, #0A0B0D);
    --color-pink-dark-1: color-mix(in srgb, #FEA8CD 88%, #0A0B0D);
    --color-pink-dark-2: color-mix(in srgb, #FEA8CD 76%, #0A0B0D);
    --color-gold-light: color-mix(in srgb, #B8A581 78%, #0A0B0D);
    --color-gold-dark-1: color-mix(in srgb, #B8A581 88%, #0A0B0D);
    --color-gold-dark-2: color-mix(in srgb, #B8A581 76%, #0A0B0D);
    --color-grey: #B1B7C3;
    --color-grey-light: #DEE1E7;
    --color-purple: #C084FC;
    --color-primary-dark-5: color-mix(in srgb, #3C8AFF 42%, #0A0B0D);
    --color-primary-dark-6: color-mix(in srgb, #3C8AFF 32%, #0A0B0D);
    --color-primary-dark-7: color-mix(in srgb, #3C8AFF 22%, #0A0B0D);
    --color-primary-light-5: color-mix(in srgb, #3C8AFF 32%, #FFFFFF);
    --color-primary-light-6: color-mix(in srgb, #3C8AFF 22%, #FFFFFF);
    --color-primary-light-7: color-mix(in srgb, #3C8AFF 12%, #FFFFFF);
  }
}

/* ===================== Навигация =====================
 * Скрываем всё, кроме «Обзор». Область — только верхнее меню (`#navbar .navbar-left`),
 * поэтому меню внутри репозиториев (там свои /issues и /pulls) не затрагивается.
 *
 * Это скрытие ссылок, а НЕ ограничение доступа: страницы /issues, /pulls, /milestones
 * по-прежнему открываются по прямому адресу. Для запрета нужны настройки прав, не CSS.
 */
#navbar .navbar-left a.item[href$="/issues"],
#navbar .navbar-left a.item[href$="/pulls"],
#navbar .navbar-left a.item[href$="/milestones"],
#navbar .navbar-left a.item[href*="forgejo.org/docs"] {
  display: none !important;
}
