/* ============================================================
   custom.css — вайбкодинг-стилі поверх теми (як на local).
   Наразі: motion-шар головної (bv-motion.js). Підключено
   останнім у functions.php, перебиває bevisible-main.
============================================================ */

/* ============================================================
   MOTION-ШАР ГОЛОВНОЇ (bv-motion.js, 2026-07-05)
   Токени руху + застосування CSS-змінних, які виставляє JS.
   Усе під html.bvm-on (клас НЕ додається при reduced-motion,
   тож нижче жодних анімаційних станів без JS/за reduce).
============================================================ */
:root{
  --bvm-ease: cubic-bezier(.22,.61,.2,1);        /* впевнене гальмування */
  --bvm-ease-pop: cubic-bezier(.34,1.56,.64,1);  /* пружний акцент */
}

/* --- 1. Hero «світлове поле» (Be Visible: промінь проявляє з темряви) ---
   Стилі поля живуть inline у hero.php (self-contained етолон); маску
   променя веде bv-motion.js (lightField). Тут правил не треба —
   колишні правила параллаксу/скрол-зуму орбіт видалено разом з орбітами. */

/* --- 2. Магнітні CTA: transform веде JS через --bvm-mx/--bvm-my ---
   Перебиває hover translateY(-2px) з hero.php (ліфт врахований у JS). */
html.bvm-on .bv-hero .bv-cta .bv-btn{
  transform: translate3d(var(--bvm-mx, 0px), var(--bvm-my, 0px), 0);
  transition: transform .18s var(--bvm-ease), box-shadow .25s, background .25s, color .25s, border-color .25s;
}

/* --- 3. Орбітальний скрол-прогрес (v2 «A»: без підложки, стрілка вгору) --- */
.bvm-orb{
  position: fixed; right: 22px; bottom: 22px; z-index: 990;
  width: 48px; height: 48px; padding: 0;
  border: 0; background: none; border-radius: 50%;
  cursor: pointer;
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity .45s var(--bvm-ease), transform .45s var(--bvm-ease),
              visibility 0s .45s;
}
.bvm-orb.is-vis{
  opacity: 1; visibility: visible; transform: translateY(0);
  transition: opacity .45s var(--bvm-ease), transform .45s var(--bvm-ease);
}
.bvm-orb:focus-visible{ outline: 2px solid #FFC400; outline-offset: 3px; }
.bvm-orb > svg:first-child{ position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
/* трек нейтральний — читається і на чорному hero, і на світлих секціях */
.bvm-orb__track{ fill: none; stroke: rgba(140,140,134,.4); stroke-width: 1.5; }
.bvm-orb__bar{
  fill: none; stroke: #0d0d0d; stroke-width: 2; stroke-linecap: round;
  filter: drop-shadow(0 0 4px rgba(13,13,13,.35));
}
/* Жовту кульку-«планету» ПРИБРАНО (за запитом); дуга прогресу лишається. */
.bvm-orb__sat{ display: none; }
/* стрілка «вгору» по центру — функція кнопки очевидна; hover — той самий чорний */
.bvm-orb__up{
  position: absolute; left: 50%; top: 50%;
  width: 16px; height: 16px; margin: -8px 0 0 -8px;
  stroke: #8a8a84; stroke-width: 2.4;
  transition: stroke .25s;
}
.bvm-orb:hover .bvm-orb__up{ stroke: #0d0d0d; }
/* мобільний: менше кільце, ближче до кута */
@media (max-width: 767px){
  .bvm-orb{ width: 44px; height: 44px; right: 14px; bottom: 14px; }
  .bvm-orb__sat i{ top: 0; width: 6px; height: 6px; margin-left: -3px; }
  .bvm-orb__up{ width: 14px; height: 14px; margin: -7px 0 0 -7px; }
}
@media (prefers-reduced-motion: reduce){ .bvm-orb{ display: none; } }
/* Орба тепер вантажиться на всіх сторінках (раніше лише на головній), тож
   могла лягти поверх власного липкого CTA-бару сторінки SEO-аудиту
   (.bv-sticky, position:fixed;bottom:0, ~66px заввишки, z-index:60) —
   той самий нижньоправий кут. Піднімаємо орбу над баром, поки він видимий
   (клас .on). :has() — сучасні браузери; де немає підтримки, орба просто
   лишається на звичному місці (без регресії, лише без цього уточнення). */
body:has(.bv-sticky.on) .bvm-orb{ bottom: 90px; }
@media (max-width: 767px){
  body:has(.bv-sticky.on) .bvm-orb{ bottom: 80px; }
}

/* --- 4. Кейс-картки: hover перенесено в template-parts/cases.php (разом із мобільною
   появою), щоб transition не конфліктував між двома файлами. --- */

/* ============================================================
   B2 · ДОСТУПНІСТЬ ФОРМ (19.09.2026)
   Підписи полів були <div class="form__label" for="…">. Атрибут for на <div>
   не працює: скрінрідер не отримував назви поля взагалі. Замінено на <label>,
   id полів префіксовано по шаблону (кілька форм живуть на одній сторінці —
   модалка з хедера присутня скрізь).
   У темі є глобальне правило label{…} — чорна плашка з жовтим текстом для
   міток іншого призначення. Скидаємо його для підписів форм, щоб вигляд
   лишився точно таким, як був із <div>.
============================================================ */
label.form__label{
  height:auto; min-height:0;
  background:none; background-color:transparent;
  border-radius:0; padding:0;
  display:block; text-align:left;
}

/* ============================================================
   ЕТАП 3 · ГЛОБАЛЬНІ ПРАВКИ ДИЗАЙНУ (19.09.2026)
   Стосуються вигляду й доступності, а не текстів, тож діють на всіх мовах.
============================================================ */

/* --- 1. Шрифт елементів форми ---
   <button>, <input>, <select> і <textarea> НЕ успадковують font-family від body:
   браузер підставляє свій системний шрифт. Через це головні CTA сайту
   («Обговорити проєкт», «Замовити SEO-пакет») малювались системним Arial,
   а не Montserrat теми. Правило стандартне і безпечне. */
button, input, select, textarea, optgroup{
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

/* --- 2. Золотий як колір ТЕКСТУ на світлому фоні ---
   Виміряно на шести сторінках послуг: 152 текстових вузли золотим кольором
   не дотягують до норми контрасту. Найгірші — зірочка обовʼязкового поля
   (#ffcc02 на білому, 2.12:1) і .c-primary (1.51:1).

   ПРАВИЛО ДЛЯ ВСЬОГО САЙТУ: жовтий/золотий як колір тексту допустимий лише
   на темному фоні (там контраст ~10:1). На світлому він лишається заливкою,
   рамкою, підкресленням-маркером і крапкою — але не кольором літер.
   Темнішого золотого токена, який давав би 4.5:1 на #f0f0f0, у темі немає:
   #b88600 → 2.86, #a07c1d → 3.42, #a06f00 → 3.86. Тому переводимо в чорнило.

   Ці два правила живуть у main.min.css, тож custom.css (підключений пізніше)
   їх перебиває. Решта золотого тексту — в inline-стилях блоків, вони правлені
   у відповідних файлах template-parts. */
.form__label span{ color:#0d0d0d; }
.c-primary{ color:#0d0d0d; }

/* ============================================================
   ГОЛОВНА (27.09.2026): Jura-заголовки — розмір як «Діджитал система…»
   (= тематичний .heading__title--h2 = 6rem десктоп / 3.2rem ≤1024px).
   Шрифт Jura лишається (заданий в inline-стилях блоків); міняємо лише кегль.
   Unbounded-заголовки (CASE FILES, Наш підхід, Як ми думаємо, Усі послуги,
   Як проходить співпраця, FAQ, Розберемо запит, Діджитал система) — НЕ чіпаємо.
   Scope body.home + !important — щоб перебити inline-кегль блоків.
   ============================================================ */
body.home .bv-start__h,      /* Оберіть ситуацію, що описує вас найкраще */
body.home .bv-free__h,       /* Безкоштовний розбір сайту */
body.home .bv-plh__h,        /* Українському бізнесу в Польщі */
body.home .bv-log__title{    /* Бортовий журнал: відгуки клієнтів */
  font-size:6rem !important;
}
body.home .bv-log__title{ text-transform:none !important; }   /* «Бортовий журнал» — не капслоком */
@media (max-width:1024px){
  body.home .bv-start__h,
  body.home .bv-free__h,
  body.home .bv-plh__h,
  body.home .bv-log__title{ font-size:3.2rem !important; }
}

/* Unbounded-заголовки — теж розміром як CASE FILES (.heading__title--h2 = 6rem/3.2rem),
   ВЕЛИКИМИ літерами: Наш підхід, Як ми думаємо, Як проходить співпраця, Усі послуги. */
body.home .bv-fit__title,
body.home .bv-think__title,
body.home .bv-tl__title,
body.home .bv-svc__title{
  font-size:6rem !important;
  text-transform:uppercase !important;
}
@media (max-width:1024px){
  body.home .bv-fit__title,
  body.home .bv-think__title,
  body.home .bv-tl__title,
  body.home .bv-svc__title{ font-size:3.2rem !important; }
}
/* build: 2026-09-27-b (Unbounded-заголовки → CASE FILES size + caps; форс URL combined CSS) */
