/* Zubok & Partners — дизайн-токены v0.2
   Источник: design/design-system.md §2.1–2.7. Копия v0.1 из design/tokens.css
   приведена к v0.2: основной фон страницы — --ink-800 #162130 (как в референсе),
   --ink-700 #2B3645 ушёл во вспомогательные подложки и зоны отдыха.
   Все контрасты ниже пересчитаны от --ink-800 по формуле WCAG 2.x
   (относительная яркость sRGB, (L1+0.05)/(L2+0.05)), а не оценены на глаз.
   Файл принадлежит таску 01. Варианты его только подключают. */

:root {
  color-scheme: dark;

  /* ── Цвет ─────────────────────────────────────────────────────────────
     Ориентир по объёму латуни — не больше 3–5 % площади экрана (2.1).
     Заливка латунью допустима только на ховере кнопки. */
  --ink-900: #10161F;   /* герой, футер, шапка, оверлей на фото */
  --ink-800: #162130;   /* ОСНОВНОЙ ФОН СТРАНИЦЫ */
  --ink-700: #2B3645;   /* вторая подложка, зоны отдыха */
  --ink-600: #3A4657;   /* нейтральные линии, полоса скроллбара */

  --paper:   #F4F2EE;   /* светлые секции для длинного текста */
  --paper-2: #E8E4DD;   /* линии на светлом, 1.13:1 к paper — только линия */

  --text-hi:     #EDEAE4;  /* основной текст, 13.51:1 на ink-800 · 15.12:1 на ink-900 */
  --text-lo:     #A8B0BA;  /* вторичный текст,  7.40:1 на ink-800 ·  8.29:1 на ink-900 */
  --text-ink:    #10161F;  /* текст на светлом, 16.24:1 на paper */
  --text-ink-lo: #475466;  /* вторичный на светлом, 6.89:1 на paper */

  --champagne: #F2DAAC;  /* заголовки карточек, 11.90:1 на ink-800 · 13.31:1 на ink-900 */
  --brass-400: #EDBD84;  /* ховер, орнамент,     9.44:1 на ink-800 · 10.56:1 на ink-900 */
  --brass-500: #C6A272;  /* линии, номера, рамки, 6.81:1 на ink-800 ·  7.62:1 на ink-900 */
  --brass-800: #7A5E3A;  /* акцент-текстом на светлом, 5.38:1 на paper */

  --ghost:  #242F40;     /* водяной знак, 1.20:1 на ink-800 — филигрань, не текст */
  --danger: #D98A6A;     /* ошибка на тёмном, 6.02:1 на ink-800 · 6.74:1 на ink-900 */
  /* На светлом #D98A6A даёт 2.41:1 и текстом не годится; затемнённый вариант — 5.08:1
     на --paper. Подставляется вместо --danger внутри .zp-paper. */
  --danger-ink: color-mix(in srgb, var(--danger) 60%, var(--text-ink));

  /* Латунь #C6A272 на paper даёт 2.13:1 — текстом на светлом не используется нигде,
     только линией. Текстовый акцент на светлом — --brass-800. */

  /* Волосяные линии. Разграфка вместо заливок (1.4, 2.5).
     --hairline-card — 55 % латуни: скомпонованный цвет #776854, 3.01:1 к ink-800
     и 3.14:1 к ink-900 — проходит WCAG 1.4.11 для границ интерфейсных элементов,
     поэтому им рисуются рамки карточек и линии полей формы.
     --hairline-dark — 40 % латуни: #5C554A, 2.20:1 — только декоративные линии
     и разделители, границей управляющего элемента быть не может. */
  --hairline-dark:  color-mix(in srgb, var(--brass-500) 40%, transparent);
  --hairline-card:  color-mix(in srgb, var(--brass-500) 55%, transparent);
  --hairline-light: var(--paper-2);

  /* ── Типографика ──────────────────────────────────────────────────────
     Playfair Display — заголовки, Inter — текст (2.2).
     Локальные фолбэки обязательны: без сети страница остаётся вёрсткой. */
  --font-display: "Playfair Display", "Iowan Old Style", "Times New Roman", Georgia, serif;
  --font-text: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  --fs-h1: 4rem;        --lh-h1: 1.08;
  --fs-h2: 2.75rem;     --lh-h2: 1.15;
  --fs-h3: 1.875rem;    --lh-h3: 1.25;
  --fs-h4: 1.375rem;    --lh-h4: 1.3;
  --fs-lead: 1.1875rem; --lh-lead: 1.65;
  --fs-body: 1.0625rem; --lh-body: 1.7;
  --fs-small: 0.9375rem;--lh-small: 1.6;
  --fs-label: 0.75rem;  --lh-label: 1.2;  --ls-label: 0.16em;
  --fs-num: 3rem;       --lh-num: 1;
  --fs-card-title: 1.25rem; --lh-card-title: 1.3; --ls-card-title: 0.06em;
  --fs-quote: 1.625rem; --lh-quote: 1.45;
  --ls-display: -0.01em;

  /* ── Пространство, шаг 8 ──────────────────────────────────────────── */
  --s-1: 4px;  --s-2: 8px;  --s-3: 12px; --s-4: 16px; --s-5: 24px;
  --s-6: 32px; --s-7: 48px; --s-8: 64px; --s-9: 96px;
  --s-10: 128px; --s-11: 160px;

  --section-y: var(--s-11);
  --gap-card: var(--s-5);
  --pad-card: var(--s-6);

  /* ── Сетка ────────────────────────────────────────────────────────── */
  --container: 1320px;
  --cols: 12;
  --gutter: 24px;
  --margin: 60px;
  /* Мера строки. Записана в em, а не в ch, и это исправление, а не вкус:
     `ch` — ширина знака «0», а в Inter он в 1.31 раза шире среднего знака
     (10.73 px против 8.17 px на кегле 17). Обещанные 68ch давали 89 знаков
     в строке — токен врал ровно на эту разницу. 33em держит 66–70 знаков
     на всей шкале (лид 19 px, текст 17 px), потому что em масштабируется
     вместе с кеглем, а знак — вместе с em. Требование §7: до 68 в лиде,
     до 72 в основном тексте. */
  --measure: 33em;

  /* ── Форма и рамки ────────────────────────────────────────────────── */
  --radius: 2px;          /* скругления принадлежат рамке презентации, не макету (1.4) */
  --border: 1px;          /* волосяная линия */
  --border-accent: 2px;   /* левая линия цитаты */
  --header-h: 72px;
  --blur-header: 12px;

  --focus: var(--brass-400);
  --focus-w: 2px;
  --focus-offset: 3px;

  /* ── Движение (2.7) ───────────────────────────────────────────────── */
  --ease: cubic-bezier(0.2, 0, 0, 1);
  --dur-instant: 1ms;
  --dur-hover: 200ms;
  --dur-enter: 400ms;

  /* ── Фирменная графика ────────────────────────────────────────────────
     Шеврон-разделитель — метка «^» из знака Z (assets/logo/zubok-partners-mark.svg),
     вырезанная по её собственному viewBox. Подаётся как mask-image, поэтому цвет
     остаётся токеном, а не запекается в картинку. Пропорция 74.29 × 61.05. */
  --mark-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='163.64 0 74.29 61.05'%3E%3Cpath d='M163.64,54.32 195.06,0 206.29,0 207.41,0.67 237.93,53.65 237.93,54.32 235.69,55.89 227.83,59.93 226.71,61.05 225.81,61.05 218.18,47.36 216.84,45.79 215.49,42.65 213.47,39.96 212.79,37.93 206.06,27.16 205.39,25.14 203.37,22.45 202.69,20.43 201.57,19.3 201.35,18.18 200.67,18.18 175.76,61.05Z'/%3E%3C/svg%3E");
  --mark-aspect: 400 / 458.14;   /* пропорция знака Z для водяного знака */
  /* Знак Z целиком — для водяного знака .zp-ghost. Тоже маской и тоже data URI:
     во внешнем файле стоит fill="currentColor", а в маске currentColor не разрешается,
     и знак пропадает целиком. Заодно снимается зависимость от путей при file://. */
  --mark-z: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 458.14' fill-rule='evenodd'%3E%3Cpath d='M163.64,54.32 195.06,0 206.29,0 207.41,0.67 237.93,53.65 237.93,54.32 235.69,55.89 227.83,59.93 226.71,61.05 225.81,61.05 218.18,47.36 216.84,45.79 215.49,42.65 213.47,39.96 212.79,37.93 206.06,27.16 205.39,25.14 203.37,22.45 202.69,20.43 201.57,19.3 201.35,18.18 200.67,18.18 175.76,61.05Z M0.22,354.88 0,340.97 0.67,340.29 49.61,303.7 50.28,303.7 50.51,303.03 54.99,299.66 55.67,299.66 55.89,298.99 60.38,295.62 61.05,295.62 61.28,294.95 65.77,291.58 66.44,291.58 67.56,290.24 69.14,289.56 102.36,264.2 127.05,245.79 127.72,245.79 127.95,245.12 132.44,241.75 133.11,241.75 133.33,241.08 137.82,237.71 138.5,237.71 138.72,237.04 143.88,233.67 297.42,118.52 297.19,118.07 27.38,118.07 26.94,118.97 27.61,120.31 29.85,123.01 32.32,127.5 34.79,130.64 35.02,131.76 36.14,132.66 36.36,133.78 43.55,144.11 43.77,145.23 44.89,146.13 45.12,147.25 51.63,156.45 52.53,158.7 53.87,159.82 53.87,160.72 60.38,169.92 61.28,172.17 62.63,173.29 62.63,174.19 69.14,183.39 70.03,185.63 71.38,186.76 71.38,187.65 77.89,196.86 78.79,199.1 80.13,200.22 80.13,201.12 86.64,210.33 87.54,212.57 89.56,214.81 89.56,215.94 77.89,223.12 64.87,203.37 64.65,202.24 63.52,201.35 63.3,200.22 56.12,189.9 55.89,188.78 54.77,187.88 54.55,186.76 47.36,176.43 47.14,175.31 46.02,174.41 45.79,173.29 38.61,162.96 38.38,161.84 34.34,156.45 32.32,152.64 29.85,149.49 29.63,148.37 25.59,142.99 23.57,139.17 21.1,136.03 20.88,134.9 16.84,129.52 14.81,125.7 12.35,122.56 12.12,121.44 8.08,116.05 7.63,114.48 13.69,103.93 400,104.15 400,118.52 397.53,119.87 397.31,120.54 394.84,121.89 394.61,122.56 392.14,123.91 391.92,124.58 389.45,125.93 389.23,126.6 386.76,127.95 386.53,128.62 384.06,129.97 383.84,130.64 381.37,131.99 381.14,132.66 378.68,134.01 378.45,134.68 375.98,136.03 375.76,136.7 373.29,138.05 145.68,309.09 145.01,309.09 144.78,309.76 142.31,311.11 142.09,311.78 139.62,313.13 139.39,313.8 136.92,315.15 136.7,315.82 134.23,317.17 134.01,317.85 131.54,319.19 131.31,319.87 128.84,321.21 128.62,321.89 126.15,323.23 125.93,323.91 123.46,325.25 123.23,325.93 120.76,327.27 120.54,327.95 118.07,329.29 117.85,329.97 115.38,331.31 115.15,331.99 112.68,333.33 112.46,334.01 109.99,335.35 109.76,336.03 107.3,337.37 103.48,340.74 103.48,341.19 373.29,341.19 373.51,340.29 372.39,338.27 371.27,337.37 371.04,336.25 362.51,323.91 362.29,322.78 353.76,310.44 353.54,309.32 345.01,296.97 344.78,295.85 336.25,283.5 336.03,282.38 327.5,270.03 327.27,268.91 318.74,256.57 318.52,255.44 310.66,244.22 310.66,243.55 312.01,242.42 322.33,236.14 392.37,343.43 392.59,345.01 389.9,349.05 387.21,354.88Z M24.02,341.19 79.69,340.97 375.53,119.19 375.98,118.07 322.33,118.07 320.76,118.52 315.38,122.56 315.15,123.23 313.58,123.91 289.79,142.09 289.11,142.09 288.89,142.76 286.42,144.11 286.2,144.78 283.73,146.13 283.5,146.8 281.03,148.15 280.81,148.82 278.34,150.17 278.11,150.84 275.65,152.19 275.42,152.86 272.95,154.21 248.71,172.39 248.48,173.06 237.93,180.47 237.71,181.14 236.14,181.82 215.04,197.98 214.37,197.98 214.14,198.65 211.67,200 211.45,200.67 208.98,202.02 208.75,202.69 206.29,204.04 206.06,204.71 203.59,206.06 203.37,206.73 200.9,208.08 200.67,208.75 198.2,210.1 140.29,253.87 139.62,253.87 139.39,254.55 136.92,255.89 136.7,256.57 134.23,257.91 134.01,258.59 131.54,259.93 131.31,260.61 128.84,261.95 128.62,262.63 126.15,263.97 125.93,264.65 123.46,265.99 99.21,284.18 98.99,284.85 88.44,292.26 88.22,292.93 86.64,293.6 24.47,340.07Z M163.86,403.59 170.82,400 173.51,397.98 175.98,397.31 200.67,439.96 201.35,439.96 202.02,438.83 203.37,435.69 206.73,430.75 207.41,428.73 209.43,426.04 210.77,422.9 216.84,413.24 217.51,411.22 219.53,408.53 225.81,397.08 235.24,402.02 237.49,403.37 237.93,404.26 228.73,420.65 227.61,421.77 226.94,423.79 224.92,426.49 224.24,428.51 222.22,431.2 220.88,434.34 217.51,439.28 216.84,441.3 214.81,444 213.47,447.14 212.12,448.71 210.77,451.85 207.41,456.79 207.18,457.91 195.06,458.14 184.51,440.63 183.84,438.61 181.82,435.91 176.43,425.81 174.41,423.12 171.04,416.39 167.68,411.45 166.33,408.31 164.31,405.61 163.64,404.26Z'/%3E%3C/svg%3E");
}

@media (max-width: 1439px) { :root { --margin: 48px; } }

@media (max-width: 1023px) {
  :root { --cols: 8; --gutter: 20px; --margin: 32px; --section-y: var(--s-9); }
}

@media (max-width: 767px) {
  :root {
    --cols: 4; --gutter: 16px; --margin: 20px;
    --section-y: 80px;
    --pad-card: var(--s-5); --gap-card: var(--s-4);
    --header-h: 60px;
    --fs-h1: 2.5rem;    --lh-h1: 1.12;
    --fs-h2: 1.875rem;  --lh-h2: 1.2;
    --fs-h3: 1.5rem;    --lh-h3: 1.3;
    --fs-h4: 1.1875rem;
    --fs-lead: 1.0625rem;
    --fs-body: 1rem;
    --fs-small: 0.875rem;
    --fs-label: 0.6875rem;
    --fs-num: 2.25rem;
    --fs-card-title: 1.0625rem; --lh-card-title: 1.35;
    --fs-quote: 1.3125rem;
  }
}

/* Движения нет вовсе: и переходы, и появления сводятся к мгновенным.
   Всё в base.css и в вариантах обязано брать длительность из этих переменных. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-hover: var(--dur-instant);
    --dur-enter: var(--dur-instant);
    --ease: linear;
  }
}
