/* PROУрок — постійні стилі й виправлення (підключається завжди, незалежно від Tailwind-білду) */

/* ===========================================================================
   ЗМІСТ (порядок — як у файлі, а не за номером)

   Номер секції — це ЯРЛИК, а не позиція: історично блоки дописувались у
   кінець файлу, зберігаючи свій номер. Шукайте по рядку «18c.» разом із
   крапкою — так знаходиться саме заголовок, а не згадка в коментарі.

   Правило нумерації: якщо новий блок дублює вже зайнятий номер — новий
   отримує наступний вільний, а старший за розташуванням лишає свій. Так
   посилання з PHP і README не протухають при кожному релізі.

    0     Скидання для inline SVG            0a  Підкреслення посилань
    0b    Рамка фокуса на посиланнях         0c  a:visited і контентні посилання
    0d    Центрування в круглих кнопках
    1     Іконкові кнопки хедера (скидання Storefront)
    2     Внутрішні сторінки WooCommerce (кабінет, кошик, оформлення)
    3     Футер на всю ширину
    4     Форми та кнопки WooCommerce
    5     Ціна у картці каталогу
    6     Range-слайдер ціни
    7     Пагінація каталогу
    8     Анімація появи карток
    9     Вхід / реєстрація — вкладки
   10     Темна тема внутрішніх сторінок WooCommerce
   11     Форма «Додати матеріал» — файлові інпути
   12     Кабінет «Мій обліковий запис»
   13     Сторінка товару: галерея, панель купівлі, вкладки, відгуки
   14     HERO каталогу
   38     Юридичні сторінки                  38a Робочі мітки «що дописати»
   15     Низ футера: реквізити ФОП, бейджі
   16     Панель каталогу: лічильник, фільтри, сортування
   17     Hero-банер кабінету, входу, реєстрації
   18     Контентні сторінки (спільні pu-*)  18b «Стати автором»   18c «Довідка»
   19     Класи і прозорість матеріалу       19a–19g
   20     Прев'ю матеріалу + лайтбокс        20a–20h
   39     Умови завантаження
   21     Тип матеріалу — комбобокс          21a–21f
   22     Головна навігація                  22a–22d
   23     Компоненти замість Tailwind-утиліт 23a–23c
   24     Оформлення замовлення: цифрова доставка
   25     Страхувальна сітка для поодиноких Tailwind-утиліт
   26     Компактна шапка                    26a Логотип на вузьких екранах
   27     Блок акаунта в панелі меню         27a–27d
   28     Сторінка «Контакти»                28a–28f
   40     Джерела прев'ю (форма автора)
   29     Джерела і прозорість — вкладка товару
   30     Модерація матеріалів               30a–30s
   31     Кабінет автора: відповідь модератора  31a Призупинення  31b Кнопка «Модерація»
   32     Шапка: дії акаунта в один рядок
   33     Редактор опису матеріалу
   34     Гаманець автора
   35     Модерація: фільтр авторів і призупинення  35a–35e
   36     Коментар автора при повторній подачі      36a–36d
   37     Штатні автори та матеріали Платформи      37a–37c
   41     Кнопка «нагору»
   42     Головна сторінка кабінету покупця         42a Адаптив  42b Темна тема
   43     Стіл підтримки                            43a–43h
   44     Згоди при реєстрації та в кабінеті
   45     Поле пароля: перемикач видимості
   46     Код товару
   47     Платежі та фіскалізація
   48     Видача матеріалів: подяка й завантаження  48.1–48.6
   49     Повернення коштів                         49a
   50     Оформлення: підсумок і спосіб оплати
   51     Особисті дані (edit-account)
   52     Кошик: картки матеріалів                  52a–52h
   53     Залишки Storefront: 404, подяка, пароль   53a–53g
   =========================================================================== */

/* ---------------------------------------------------------------------------
 * 0. Скидання для inline SVG (частина Tailwind preflight, який ми вимкнули
 *    в tailwind.config.js через сумісність із Storefront/WooCommerce).
 *    Без цього <svg> лишається display:inline і має "підвал" під базовою
 *    лінією (як у <img>), через що іконки у круглих/квадратних кнопках
 *    (серце, кошик, редагувати, видалити тощо) виглядають зміщеними від
 *    центру, навіть якщо сама кнопка center-ована через flex/grid.
 * ------------------------------------------------------------------------- */
svg { display: block; vertical-align: middle; }

/* ---------------------------------------------------------------------------
 * 0a. Скидання підкреслення посилань (частина Tailwind preflight, який ми
 *    вимкнули в tailwind.config.js через сумісність із Storefront/WooCommerce).
 *    Без цього посилання без явного text-decoration (напр. заголовок товару
 *    в картці каталогу) успадковують підкреслення з user-agent стилів
 *    браузера — а не з нашого CSS. Через різницю в тому, як Chrome і Firefox
 *    малюють text-decoration на тексті, обрізаному через line-clamp
 *    (-webkit-line-clamp), це підкреслення в Chrome виглядало "розірваним"
 *    під частиною рядка, а в Firefox — суцільним під усім текстом.
 *    Компоненти, яким підкреслення таки потрібне (посилання в тексті
 *    кабінету, футер сторінок-довідок тощо), вмикають його явно власним
 *    класом — той селектор специфічніший за цей і завжди переможе. */
a { text-decoration: none; }

/* ---------------------------------------------------------------------------
 * 0b. Рамка фокуса/натискання на посиланнях.
 *    У браузера є власний контур (outline), який з'являється на посиланні
 *    після кліку мишею (стан :active чи :focus без клавіатури) — для
 *    багаторядкового тексту (напр. назва товару в картці, обрізана через
 *    line-clamp) він малюється не однією лінією під текстом, а прямокутником
 *    навколо кожного рядка окремо, тому й виглядає як "рамка" довкола
 *    останніх рядків заголовка.
 *    Прибираємо його лише для кліку мишею — :focus-visible і надалі working:
 *    навігація з клавіатури (Tab) все ще показує контур для доступності. */
a:focus:not(:focus-visible),
a:active {
  outline: none;
}

/* Доповнено 1.50.17. Скидання вище лишається, але його виявилось замало:
 * на назві матеріалу в картці каталогу (два рядки, обрізані через
 * line-clamp) при затиснутій лівій кнопці досі промальовується рамка.
 *
 * Відтворити її з вихідних файлів теми не вдалося — жодне правило в
 * theme.css, main.css і style.css такого не задає. Тож ідемо не від
 * винуватця, а від симптому й закриваємо всі три механізми, якими браузер
 * малює таку рамку на посиланні: контур, тінь і підсвітку дотику. Останнє
 * стосується не лише мобільних: Chrome застосовує -webkit-tap-highlight
 * і при миші на пристроях із сенсорним екраном — а це майже всі сучасні
 * ноутбуки.
 *
 * ⚠️ :focus-visible свідомо не чіпаємо: навігація з клавіатури мусить
 * лишати видимий контур, інакше сторінка стає непрохідною без миші. */
a:active,
a:focus:not(:focus-visible),
.prourok-card a:active,
.prourok-card a:focus:not(:focus-visible) {
  box-shadow: none;
  -webkit-tap-highlight-color: transparent;
}

/* ---------------------------------------------------------------------------
 * 0b-bis. Скруглення на клікабельних елементах не зникає на :active/:focus —
 *     ЄДИНЕ правило на весь сайт, а не по одному класу (1.54.6).
 *
 * ⚠️ 1.54.7: ЦЕЙ РОЗДІЛ ЛІКУВАВ НЕ ТУ ПРИЧИНУ. Справжня — підсвітка дотику,
 * див. розділ 0b-ter одразу нижче. Правила тут лишаються: вони коректні
 * для клавіатурного фокуса й нічого не ламають.
 *
 * ІСТОРІЯ ПРОБЛЕМИ. Її повідомляли тричі поспіль про різні, нічим не
 * пов'язані місця: стрілку пагінації каталогу, тоді головне меню й
 * кнопку «Перейти до каталогу» в кабінеті. Кожен раз причина була своя:
 *   — елемент узагалі не мав правила :focus-visible (пагінація);
 *   — елемент МАВ правило, але воно саме малювало квадрат:
 *     `outline: 2px solid …` не огинає border-radius, на відміну від
 *     box-shadow, і більшість браузерів малює такий контур прямокутником
 *     по краю рамки незалежно від скруглення (головне меню — розділ 22,
 *     і ще сім місць по всій темі, усі виправлені на box-shadow);
 *   — елемент користується Tailwind-класом rounded-* прямо в розмітці
 *     (кнопки шапки, іконки дій у кабінеті автора, серце «в обране» на
 *     картці товару) — і про такі border-radius theme.css узагалі не
 *     знає, тож жоден точковий аудит по CSS-класах з border-radius
 *     їх не знайде.
 *
 * Третій випадок і показав, що ганятися за конкретними класами — шлях
 * без кінця: рахунок точкових виправлень зростає з кожним новим звітом,
 * а спосіб пошуку (грep по border-radius у CSS) структурно не бачить
 * елементів, чиє скруглення прийшло з розмітки, а не з теми. Тому далі —
 * не список класів, а ОДНЕ правило на рівні тегів <a>/<button> і
 * role="button", яке ловить УСІ клікабельні елементи сайту одразу,
 * незалежно від того, звідки в них border-radius і чи згадає його
 * колись іще один аудит.
 *
 * Специфічність (0,0,1,1) — найнижча можлива для псевдокласу на тегу,
 * тож будь-яке власне, точковіше правило компонента (кольорове кільце
 * кнопки модерації, кнопки WooCommerce тощо) продовжує його перекривати
 * без змін. Це правило — лише підлога за замовчуванням для всього, що
 * досі не отримало власного стилю фокуса. */
a:active,
a:focus:not(:focus-visible),
button:active,
button:focus:not(:focus-visible),
[role="button"]:active,
[role="button"]:focus:not(:focus-visible),
input[type="submit"]:active,
input[type="submit"]:focus:not(:focus-visible),
input[type="button"]:active,
input[type="button"]:focus:not(:focus-visible) {
  outline: none;
}

a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input[type="submit"]:focus-visible,
input[type="button"]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}

button:active,
button:focus:not(:focus-visible),
[role="button"]:active,
[role="button"]:focus:not(:focus-visible),
input[type="submit"]:active,
input[type="submit"]:focus:not(:focus-visible),
input[type="button"]:active,
input[type="button"]:focus:not(:focus-visible) {
  -webkit-tap-highlight-color: transparent;
}

/* ---------------------------------------------------------------------------
 * 0b-ter. Прямокутник при натисканні — підсвітка дотику (1.54.7)
 *
 * СИМПТОМ. Натискаєш кнопку чи пункт меню — поки палець/кнопка миші
 * притиснуті, елемент виглядає квадратним. Пагінація, головне меню,
 * «Перейти до каталогу», кнопки WooCommerce — скрізь однаково.
 *
 * СПРАВЖНЯ ПРИЧИНА. Border-radius нікуди не зникає — жодне правило теми
 * його не обнуляє (перевірено всі три файли стилів). Поверх елемента
 * браузер малює ПІДСВІТКУ ДОТИКУ (-webkit-tap-highlight-color):
 * напівпрозорий прямокутник на всю рамку елемента, який скруглення не
 * враховує. Chrome/Edge показують її не лише на телефонах, а й на кожному
 * пристрої з сенсорним екраном — тобто на більшості сучасних ноутбуків,
 * навіть коли клікаєш мишею.
 *
 * Скриншоти це підтверджують кольором: помаранчева кнопка в момент
 * натискання стає рівно на ~18 % темнішою — це типова підсвітка Chrome
 * rgba(0,0,0,.18) поверх #EB8018, а на білому тлі меню — сірий
 * прямокутник того самого походження.
 *
 * ЧОМУ ПОПЕРЕДНІ ВИПРАВЛЕННЯ НЕ ДІЯЛИ. Тема вже сім разів вимикала цю
 * підсвітку (розділи 0b, 0b-bis, 7b, 30f-bis та ін.) — і кожного разу в
 * селекторі стану: `a:active { -webkit-tap-highlight-color: transparent }`.
 * Але колір підсвітки браузер зчитує В МОМЕНТ ПОЧАТКУ ДОТИКУ, з елемента в
 * звичайному стані — ДО того, як спрацює :active. Значення, задане лише
 * для :active/:focus, приходить запізно й ігнорується. Тому 1.54.5 і
 * 1.54.6 (outline → box-shadow) нічого не змінили на екрані: вони
 * виправляли контур фокуса клавіатури, а не цей прямокутник.
 *
 * РІШЕННЯ. Властивість успадковується, тож достатньо задати її на <html>
 * у спокійному стані — це вимикає підсвітку для всього сайту одразу,
 * включно з елементами, яких не знає жоден аудит. Теги нижче дублюють
 * на випадок, якщо якийсь плагін задасть власний колір проміжному
 * батьківському елементу.
 *
 * ЧИ НЕ ЗНИКНЕ ВІДГУК НА НАТИСКАННЯ. Ні: у кнопок теми є власні стани
 * :hover / :active (зміна фону, зсув на 1 px), вони лишаються. Прибирається
 * лише системний прямокутник, який з дизайном не узгоджується. */
html {
  -webkit-tap-highlight-color: transparent;
}

a,
button,
summary,
label,
select,
[role="button"],
[role="tab"],
input[type="submit"],
input[type="button"],
input[type="checkbox"],
input[type="radio"] {
  -webkit-tap-highlight-color: transparent;
}

/* ---------------------------------------------------------------------------
 * 0c. Фіолетовий a:visited і неоформлені контентні посилання.
 *
 *    Storefront (батьківська тема) задає власний колір для відвіданих
 *    посилань — той самий типовий браузерний фіолетовий. Наші власні
 *    компоненти (.pu-fact a, .pu-step a, .pu-faq-body a, .prourok-legal a
 *    тощо) цього не показують, бо там колір заданий явно на самому `a` —
 *    але це правило не чіпає стан :visited окремо, тому такий явний колір
 *    діє для посилання завжди, відвідане воно чи ні, і Storefront тут
 *    не встигає втрутитися. Проблема — саме там, де жоден наш клас ще
 *    не задав колір (простий текст у .pu-checklist, .pu-head, .pu-final,
 *    .pu-lead): такі посилання і показували фіолетовий після кліку.
 *
 *    Рішення у два шари:
 *     1) Глобально знімаємо фіолетовий: колір відвіданого посилання більше
 *        ніде не відрізняється від невідвіданого (успадковує колір з місця,
 *        де немає власного правила, — і не змінюється сам собою пізніше).
 *     2) Даємо контентним посиланням у .prourok-page (без власного класу)
 *        той самий фірмовий помаранчевий і підкреслення, що вже й так
 *        прийняті на сторінці, — замість кольору Storefront за замовчуванням.
 *
 *    Специфічність `.prourok-page a` (клас+тип) навмисно нижча за всі наявні
 *    компонентні правила `.prourok-page .pu-X a` (два класи+тип: .pu-fact a,
 *    .pu-step a, .pu-link, .pu-btn, .pu-jump a, .pu-faq-body a тощо) — вони
 *    й надалі перемагають і лишаються без змін. Кнопок (.pu-btn) це також
 *    не чіпає з тієї ж причини.
 *
 *    ⚠️ ЧОМУ НЕ `a:visited { color: inherit }` (так було до 1.32.4):
 *    Firefox навмисно ігнорує `inherit` (як і `currentColor`) у правилах для
 *    :visited — це захист приватності: через успадковане значення сторінка
 *    могла б обчислити, за якими посиланнями людина вже ходила. Chrome цю
 *    заяву застосовує, тож баг був видимий ЛИШЕ у Firefox: заява
 *    відкидалась, і перемагав фіолетовий із таблиці самого браузера
 *    (`a:visited` = клас+псевдоклас, специфічність 0,1,1 — сильніша навіть
 *    за Tailwind-класи кольору на батьківському <ul>, звідки посилання
 *    успадковують колір у футері).
 *
 *    Тому нижче для :visited скрізь стоять ЯВНІ кольори — ті самі, що й у
 *    звичайному стані. Firefox дозволяє в :visited лише обмежений набір
 *    властивостей (color, background-color, border-color, outline-color)
 *    і лише з конкретними значеннями — цій умові явні hex відповідають. */

.prourok-page a,
.prourok-page a:visited {
  color: #C96A0E;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.prourok-page a:hover { color: #12436C; }
.dark .prourok-page a,
.dark .prourok-page a:visited { color: #F5A54F; }
.dark .prourok-page a:hover { color: #ffffff; }

/* Темні поверхні: hero, скляний чекліст у ньому й темна смуга.
 *
 * Глобальні кольори вище розраховані на світлий фон: #C96A0E ще сяк-так
 * читається на темно-синьому, але hover #12436C — це майже той самий navy,
 * що й фон, тож посилання під курсором ЗНИКАЄ (симптом: у чеклісті «Що
 * можна продавати» на сторінці автора). Тут інвертуємо логіку: спокійний
 * стан — світлий помаранчевий, наведення — білий, як уже зроблено для
 * .pu-fact у темній смузі.
 *
 * Кнопки й jump-навігація всередині hero не зачеплені: у них власні
 * правила з !important (.pu-btn, .pu-jump a). */
.prourok-page .pu-hero a,
.prourok-page .pu-hero a:visited,
.prourok-page .pu-checklist a,
.prourok-page .pu-checklist a:visited,
.prourok-page .pu-dark a,
.prourok-page .pu-dark a:visited {
  color: #F5A54F;
}
.prourok-page .pu-hero a:hover,
.prourok-page .pu-checklist a:hover,
.prourok-page .pu-dark a:hover {
  color: #ffffff;
}

/* Футер: колір посилань не заданий на самому <a> — він успадковується від
 * <ul class="text-slate-500">. Успадкування UA-правило для :visited перебиває,
 * тож тут потрібні явні значення, що дублюють ті самі Tailwind-кольори.
 *
 * ⚠️ КЛЮЧОВЕ (виправлено в 1.33.1): самих :visited-правил виявилось мало.
 * Успадкований колір — це НЕ декларація, тож у каскаді він програє будь-якій
 * декларації, включно з правилом `a:visited` із таблиці самого браузера.
 * Тому основний запобіжник — рядок нижче: авторська декларація `color` на
 * самому <a> у звичайному стані. Авторські стилі мають вищий пріоритет за
 * стилі браузера НЕЗАЛЕЖНО від специфічності, тож щойно колір заданий явно,
 * фіолетовому вже нема за що зачепитись — в усіх браузерах одразу.
 * `inherit` тут безпечний: обмеження Firefox стосуються лише правил для
 * :visited, а це звичайне правило.
 *
 * Hover не постраждав: Tailwind-клас `.hover\:text-orange-600:hover`
 * (клас+псевдоклас) специфічніший за `.prourok-footer a` (клас+тип). */
.prourok-footer a { color: inherit; }
.prourok-footer a:visited { color: #64748B; }
.dark .prourok-footer a:visited { color: #9DBBD8; }
.prourok-footer .prourok-footer-contacts a:visited { color: #64748B; }
.dark .prourok-footer .prourok-footer-contacts a:visited { color: #9DBBD8; }
.prourok-footer a:hover:visited { color: #C96A0E; }
.dark .prourok-footer a:hover:visited { color: #F5A54F; }

/* Сторінки «Увійти» / «Реєстрація» та решта розділів кабінету: посилання
 * «Забули пароль?», умови, політика конфіденційності. Той самий принцип, що
 * й у футері: спершу явна декларація на <a>, і лише потім :visited-дублі. */
.woocommerce-account .woocommerce a,
.prourok-auth a { color: #12436C; }
.woocommerce-account a:visited,
.prourok-auth a:visited { color: #12436C; }
.dark .woocommerce-account a:visited,
.dark .prourok-auth a:visited { color: #9DBBD8; }
.woocommerce-account a:hover:visited,
.prourok-auth a:hover:visited { color: #C96A0E; }

/* ---------------------------------------------------------------------------
 * 0d. Гарантоване центрування іконок/тексту в круглих та квадратних кнопках дій
 *    (серце-обране, перегляд/редагувати/видалити в кабінеті, іконки хедера).
 *    НЕ покладаємось лише на Tailwind-класи grid/place-items-center: у режимі
 *    CDN-прев'ю (без npm run build) вони інколи не встигають застосуватися,
 *    через що іконка "провисає" в кутку кнопки замість центру. Це правило —
 *    завжди підключений, чистий CSS-запобіжник незалежно від стану Tailwind.
 * ------------------------------------------------------------------------- */
.prourok-icon-btn {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  /* Storefront застосовує до всіх <button>/.button власний padding за
   * золотим перетином (напр. .6180469716em 1.41575em). При фіксованому
   * розмірі наших іконкових кнопок (36×36, 40×40px) цей padding "з'їдає"
   * весь внутрішній простір, стискаючи іконку до невидимого розміру.
   * Скидаємо його тут — в одному спільному класі для всіх іконкових кнопок. */
  padding: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
  line-height: 1 !important;
}

/* Гарантовані колір/фон для критично важливих іконкових кнопок незалежно
 * від того, чи встигли застосуватися Tailwind-класи кольору/фону. Якщо
 * Tailwind CDN з якоїсь причини не спрацював, ці кнопки НЕ повинні ставати
 * невидимими (колір іконки = колір фону) — тому задаємо значення напряму,
 * plain CSS'ом, що завжди підключений через theme.css. */

/* Серце «в обране» на картці товару */
.prourok-heart-toggle {
  background: rgba(255,255,255,.95) !important;
  color: #64748B !important; /* slate-500 */
}
.prourok-heart-toggle:hover { color: #EB8018 !important; }
.prourok-heart-toggle svg {
  width: 18px !important;
  height: 18px !important;
}
/* Задаємо stroke/fill НАПРЯМУ на svg/path, а не лише через успадкування
 * currentColor від кнопки. SVG-презентаційні атрибути (fill/stroke,
 * прописані прямо в тезі) мають найнижчий пріоритет у каскаді — їх
 * перекриє будь-яке зовнішнє правило, що зачіпає svg/path (навіть слабке,
 * напр. з Storefront/WooCommerce чи іншого плагіна). Тому фіксуємо колір
 * тут явно, з !important, щоб він гарантовано вигравав. */
.prourok-heart-toggle svg,
.prourok-heart-toggle svg path {
  stroke: #64748B !important;
  fill: none !important;
}
.prourok-heart-toggle:hover svg,
.prourok-heart-toggle:hover svg path {
  stroke: #EB8018 !important;
}
/* Активний стан («в обраному») — заповнене серце помаранчевим */
.prourok-heart-toggle.is-active svg,
.prourok-heart-toggle.is-active svg path {
  stroke: #EB8018 !important;
  fill: #EB8018 !important;
}

/* Іконки хедера (перемикач теми, кошик) */
.prourok-header-icon {
  color: #475569 !important; /* slate-600 */
  background: transparent;
}
.dark .prourok-header-icon { color: #CBDCEC !important; }
.prourok-header-icon:hover { background: #F1F5F9; }
.dark .prourok-header-icon:hover { background: #17293A; }
.prourok-header-icon svg,
.prourok-header-icon svg path,
.prourok-header-icon svg circle,
.prourok-header-icon svg line {
  stroke: #475569 !important;
  fill: none !important;
}
.dark .prourok-header-icon svg,
.dark .prourok-header-icon svg path,
.dark .prourok-header-icon svg circle,
.dark .prourok-header-icon svg line {
  stroke: #CBDCEC !important;
}

/* Аватар користувача в хедері (ініціали) */
.prourok-avatar {
  background: #12436C !important;
  color: #ffffff !important;
}

/* Дії в кабінеті автора: переглянути / редагувати / видалити */
.prourok-action-btn {
  border: 1px solid #CBD5E1 !important;
  color: #0E3557 !important;
  background: #ffffff !important;
}
.dark .prourok-action-btn { border-color: #24384B !important; color: #ffffff !important; background: #12212E !important; }
.prourok-action-btn:hover { border-color: #F08F2E !important; }
.prourok-action-btn--danger { color: #64748B !important; }
.dark .prourok-action-btn--danger { color: #94A3B8 !important; }
.prourok-action-btn--danger:hover { border-color: #F87171 !important; color: #EF4444 !important; }

/* Заблокована дія (напр. видалення призупиненого матеріалу, 1.27.0).
   Клас, а не Tailwind-утиліта cursor-not-allowed: її немає в зібраному
   main.css, бо вона з'явилася в розмітці після останнього `npm run build`,
   і курсор лишився б звичайною стрілкою. */
.prourok-action-btn--locked {
  cursor: not-allowed;
  opacity: .75;
}

.prourok-action-btn--locked svg,
.prourok-action-btn--locked svg path { stroke: #CBD5E1 !important; }

.dark .prourok-action-btn--locked svg,
.dark .prourok-action-btn--locked svg path { stroke: #3E6E9E !important; }
.prourok-action-btn svg {
  width: 16px !important;
  height: 16px !important;
}
.prourok-action-btn svg,
.prourok-action-btn svg path {
  stroke: #0E3557 !important;
  fill: none !important;
}
.dark .prourok-action-btn svg,
.dark .prourok-action-btn svg path {
  stroke: #ffffff !important;
}
.prourok-action-btn--danger svg,
.prourok-action-btn--danger svg path {
  stroke: #64748B !important;
}
.dark .prourok-action-btn--danger svg,
.dark .prourok-action-btn--danger svg path {
  stroke: #94A3B8 !important;
}
.prourok-action-btn--danger:hover svg,
.prourok-action-btn--danger:hover svg path {
  stroke: #EF4444 !important;
}

/* Форма видалення в кабінеті автора не повинна впливати на flex-розкладку
 * сусідніх кнопок (переглянути/редагувати) — "розчиняємо" її в layout'і,
 * лишаючи саму кнопку рівноправним flex-елементом ряду. */
.prourok-inline-form {
  display: contents;
}

/* Лічильник кількості товарів у кошику (мала цифрова мітка) */
.prourok-cart-count {
  background: #EB8018 !important;
  color: #ffffff !important;
  min-width: 18px !important;
  height: 18px !important;
}

/* ---------------------------------------------------------------------------
 * 1. Скидання стилів Storefront для іконкових кнопок у хедері
 *    (Storefront додає власний фон/рамку/паддинг до <button>, що зміщує іконку)
 * ------------------------------------------------------------------------- */
.prourok-header button,
.prourok-header a.button,
.prourok-header input[type="button"] {
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
  min-width: 0;
  line-height: 1;
  color: inherit;
}
.prourok-header button:hover,
.prourok-header button:focus {
  background: transparent;
}
.prourok-header a { box-shadow: none; text-decoration: none; }
.prourok-header a:hover { box-shadow: none; }
.prourok-header svg { display: block; }

/* ---------------------------------------------------------------------------
 * 2. Внутрішні сторінки WooCommerce (кабінет, кошик, оформлення)
 *    Прибираємо блоговий сайдбар Storefront і робимо контент на всю ширину
 * ------------------------------------------------------------------------- */
.woocommerce-account #secondary,
.woocommerce-cart #secondary,
.woocommerce-checkout #secondary,
.woocommerce-page #secondary {
  display: none !important;
}
.woocommerce-account #primary,
.woocommerce-cart #primary,
.woocommerce-checkout #primary,
.woocommerce-page #primary {
  width: 100% !important;
  max-width: 100% !important;
  float: none !important;
  margin: 0 !important;
}

/* Контейнер контенту цих сторінок */
.woocommerce-account .woocommerce,
.woocommerce-cart .woocommerce,
.woocommerce-checkout .woocommerce,
.woocommerce-page.page .entry-content {
  max-width: 1120px;
  margin-left: auto;
  margin-right: auto;
  padding: 24px 16px 48px;
}

/* Заголовки сторінок */
.woocommerce-account .entry-title,
.woocommerce-cart .entry-title,
.woocommerce-checkout .entry-title {
  font-family: 'Manrope', sans-serif;
  font-weight: 800;
  color: #12436C;
  max-width: 1120px;
  margin: 28px auto 8px;
  padding: 0 16px;
}

/* ---------------------------------------------------------------------------
 * 3. Футер має бути на всю ширину й скидати обтікання
 * ------------------------------------------------------------------------- */
.prourok-footer {
  clear: both;
  width: 100%;
  position: relative;
  z-index: 1;
}

/* ---------------------------------------------------------------------------
 * 4. Форми та кнопки WooCommerce у фірмовому стилі
 * ------------------------------------------------------------------------- */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce-page input.input-text,
.woocommerce-page input[type="text"],
.woocommerce-page input[type="email"],
.woocommerce-page input[type="tel"],
.woocommerce-page input[type="password"],
.woocommerce-page select {
  border: 1px solid #E2E8F0;
  border-radius: 12px;
  padding: 12px 14px;
  background: #fff;
  color: #0F1E2E;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce-page input:focus,
.woocommerce-page select:focus {
  outline: none;
  border-color: #F08F2E;
  box-shadow: 0 0 0 3px rgba(235,128,24,.25);
}

.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce .button.alt,
.woocommerce #place_order {
  background: #EB8018 !important;
  color: #fff !important;
  border-radius: 12px !important;
  font-weight: 600 !important;
  padding: 12px 20px !important;
  border: 0 !important;
  text-shadow: none !important;
  transition: background .2s ease;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #place_order:hover,
.woocommerce .button.alt:hover {
  background: #C96A0E !important;
}

/* Це найпоширеніша кнопка на сайті: «Додати в кошик», «Оформити
 * замовлення», «Оновити кошик» — усе через один селектор вище. Без
 * власного правила фокуса підпадає під той самий системний квадратний
 * контур, що й решта елементів у розділі 7b (theme.css нижче), лише тут
 * це найпомітніше через частоту використання. */
.woocommerce #respond input#submit:focus,
.woocommerce a.button:focus,
.woocommerce button.button:focus,
.woocommerce input.button:focus,
.woocommerce .button.alt:focus,
.woocommerce #place_order:focus {
  outline: none !important;
}
.woocommerce #respond input#submit:focus-visible,
.woocommerce a.button:focus-visible,
.woocommerce button.button:focus-visible,
.woocommerce input.button:focus-visible,
.woocommerce .button.alt:focus-visible,
.woocommerce #place_order:focus-visible {
  outline: none !important;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45) !important;
}

/* Вторинні кнопки (напр., «Оновити кошик») */
.woocommerce button.button[name="update_cart"],
.woocommerce .button.wc-backward {
  background: #12436C !important;
}
.woocommerce button.button[name="update_cart"]:hover,
.woocommerce .button.wc-backward:hover {
  background: #0E3557 !important;
}

/* Картки таблиць кошика/кабінету */
.woocommerce table.shop_table {
  border-radius: 16px;
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
}
.woocommerce-MyAccount-navigation ul {
  list-style: none;
  margin: 0 0 24px;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.woocommerce-MyAccount-navigation ul li a {
  display: inline-block;
  padding: 8px 14px;
  border-radius: 10px;
  background: #EAF1F8;
  color: #12436C;
  font-weight: 600;
  text-decoration: none;
}
.woocommerce-MyAccount-navigation ul li.is-active a {
  background: #12436C;
  color: #fff;
}

/* ---------------------------------------------------------------------------
 * 5. Ціна у картці каталогу
 * ------------------------------------------------------------------------- */
.prourok-price .price,
.prourok-price ins,
.prourok-price .amount {
  font-family: 'Manrope', sans-serif; font-weight: 800; font-size: 19px; color: #12436C; text-decoration: none;
}
.dark .prourok-price .price,
.dark .prourok-price .amount { color: #fff; }
.prourok-price del { opacity: .7; }
.prourok-price del .amount { color: #94A3B8; font-weight: 500; font-size: 12px; }
.prourok-price.is-free .amount { color: #059669; }

/* ---------------------------------------------------------------------------
 * 6. Range-слайдер ціни у фільтрах
 * ------------------------------------------------------------------------- */
.prourok-filters input[type=range] {
  -webkit-appearance: none; appearance: none;
  height: 6px; border-radius: 9999px; background: #E2E8F0; cursor: pointer; width: 100%;
}
.dark .prourok-filters input[type=range] { background: #24384B; }
.prourok-filters input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none; width: 20px; height: 20px; border-radius: 9999px;
  background: #EB8018; border: 3px solid #fff; box-shadow: 0 1px 4px rgba(15,30,46,.25); cursor: pointer;
}
.dark .prourok-filters input[type=range]::-webkit-slider-thumb { border-color: #12212E; }
.prourok-filters input[type=range]::-moz-range-thumb {
  width: 20px; height: 20px; border-radius: 9999px; background: #EB8018; border: 3px solid #fff; cursor: pointer;
}

/* Фірмові чекбокси/радіо */
.prourok-check { accent-color: #EB8018; width: 18px; height: 18px; cursor: pointer; }

/* ---------------------------------------------------------------------------
 * 7. Власна пагінація каталогу (prourok_pagination() у template-helpers.php)
 * ------------------------------------------------------------------------- */
.prourok-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.prourok-pager__item {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  min-width: 40px;
  padding: 0 10px;
  border-radius: 12px;
  border: 1px solid #E2E8F0;
  color: #0E3557;
  font-weight: 600;
  font-size: 14px;
  text-decoration: none;
  background: #fff;
  transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.dark .prourok-pager__item { border-color: #24384B; color: #CBDCEC; background: #12212E; }
.prourok-pager__item:hover:not(.is-current):not(.is-dots) { border-color: #F08F2E; }
.prourok-pager__item.is-current { background: #12436C; border-color: #12436C; color: #fff; cursor: default; }
.prourok-pager__item.is-dots { border-color: transparent; background: transparent; color: #94A3B8; cursor: default; }
.prourok-pager__item svg { width: 16px; height: 16px; }

/* ---------------------------------------------------------------------------
 * 7b. Скруглення на клікабельних елементах не зникає на :active/:focus
 *     (1.54.5, доповнено 1.54.6)
 *
 * СИМПТОМ. Клік по кнопці — кути на мить стають прямими, ніби
 * border-radius обнулився. Повідомлялося про пагінацію (1.54.5), потім
 * про головне меню й «Перейти до каталогу» (1.54.6) — тобто це не
 * поодинокий випадок, а системна вада, і саме так вона й діагностована.
 *
 * ЩО ВИЯВИВ ПОВТОРНИЙ АУДИТ 1.54.6
 * ---------------------------------
 * Перший прохід (1.54.5) шукав елементи, які мають border-radius, але
 * ВЗАГАЛІ не мають правила :focus-visible. За таким критерієм головне
 * меню (.prourok-nav-link) пройшло перевірку — і даремно: правило в
 * нього Є (розділ 22), але воно саме́ й малює квадрат:
 *
 *     .prourok-nav-link:focus-visible {
 *       outline: 2px solid #EB8018;   ← ось причина
 *       outline-offset: 2px;
 *     }
 *
 * outline, на відміну від box-shadow, НЕ огинає border-radius елемента —
 * більшість браузерів малює його прямокутником по краю рамки незалежно
 * від скруглення. Це й є справжній механізм «квадратизації», а не
 * здогад про Safari з 1.54.5 (той здогад лишається правдоподібним для
 * звичайного :active/:focus без явного правила, але не пояснював, чому
 * СКРУГЛЕНЕ меню з власним :focus-visible теж квадратилось).
 *
 * Той самий шаблон (`outline: … solid …` замість box-shadow) знайдено
 * ще у сімох місцях теми: вкладки WooCommerce, підказка FAQ, «хлібна
 * крихта» на сторінці 404, кнопка форматування опису, кнопка «нагору»,
 * перемикач видимості пароля (сторінка входу), кнопка завантаження
 * файлу в кабінеті покупця. Усі виправлено тим самим способом:
 * outline → box-shadow того самого кольору.
 *
 * Другий прохід аудиту (1.54.6) виправив і саму методику пошуку:
 * перший грep не бачив класів на <a>, чий атрибут class ідемо після
 * `<?php echo esc_url(...); ?>` — символ `>` усередині `?>` обривав
 * пошук раніше, ніж він доходив до class="…". Через це три реальні
 * кнопки шапки (посилання «Кабінет автора» / «Модерація» / «Підтримка»,
 * посилання на чергу модерації, посилання акаунта з аватаркою) не
 * потрапили в список 1.54.5. Тепер додані.
 *
 * ЧОМУ САМЕ ТУТ, А НЕ ТІЛЬКИ В ПАГІНАЦІЇ. border-radius у CSS ніхто не
 * скидає — жодне правило в theme.css, main.css чи style.css цієї теми
 * такого не робить. Розділ 0b гасить outline лише для звичайного кліку
 * мишею (`a:active`, `a:focus:not(:focus-visible)`), а `:focus-visible`
 * там свідомо лишений — інакше зникла б клавіатурна навігація. Для
 * елементів без власного :focus-visible спрацьовує типовий браузерний
 * контур (теж прямокутний); для елементів із власним, але outline-based
 * правилом — той самий ефект, лише вже нашими руками.
 *
 * РІШЕННЯ. Список нижче — усі клікабельні елементи теми з border-radius,
 * які досі не мали box-shadow-based кільця фокуса: `:focus-visible`
 * малює власне кільце тінню (вона огинає border-radius, на відміну від
 * outline) і прибирає системний контур; `:active`/звичайний `:focus`
 * додатково глушать outline і tap-highlight про всяк випадок.
 *
 * Список об'єднано в одне правило через спільний селектор: усі елементи
 * використовують той самий помаранчевий колір кільця, що й решта теми
 * (розділ 33 і сусідні :focus-visible), тож дублювати оголошення для
 * кожного класу окремо немає сенсу — різниться лише border-radius,
 * і його для кожного класу все одно підтверджує лише вже наявне базове
 * правило (у стані спокою радіус ніхто не займав).
 *
 * ⚠️ Із 1.54.6 базовий захист для <a>/<button>/[role=button] дає
 * універсальне правило в розділі 0c (на початку файлу) — воно спрацює
 * навіть для елементів, яких не було в жодному аудиті. Список нижче
 * лишається як явний, задокументований каталог конкретних випадків і
 * для елементів із додатковими потребами (комбінація з іншою тінню,
 * !important, колір, відмінний від стандартного). Прибирати його не
 * потрібно: специфічніший селектор ніколи не шкодить, лише дублює.
 */
.prourok-pager__item:active,
.prourok-pager__item:focus,
.prourok-auth-tab:active,
.prourok-auth-tab:focus,
.pu-404__submit:active,
.pu-404__submit:focus,
.pu-acc__btn:active,
.pu-acc__btn:focus,
.pu-acc__tile:active,
.pu-acc__tile:focus,
.pu-chip:active,
.pu-chip:focus,
.pu-dl-empty__btn:active,
.pu-dl-empty__btn:focus,
.pu-fb__go:active,
.pu-fb__go:focus,
.pu-fop__save:active,
.pu-fop__save:focus,
.pu-lb-btn:active,
.pu-lb-btn:focus,
.pu-lb-nav:active,
.pu-lb-nav:focus,
.pu-lb-thumb:active,
.pu-lb-thumb:focus,
.pu-mod-act:active,
.pu-mod-act:focus,
.pu-mod-btn:active,
.pu-mod-btn:focus,
.pu-mod-phrase:active,
.pu-mod-phrase:focus,
.pu-mod-prev:active,
.pu-mod-prev:focus,
.pu-mod-purge__btn:active,
.pu-mod-purge__btn:focus,
.pu-mod-row__cover:active,
.pu-mod-row__cover:focus,
.pu-mod-tab:active,
.pu-mod-tab:focus,
.pu-preset:active,
.pu-preset:focus,
.prourok-nav-action:active,
.prourok-nav-action:focus,
.pu-modlink:active,
.pu-modlink:focus,
.pu-nav-user:active,
.pu-nav-user:focus {
  outline: none;
  -webkit-tap-highlight-color: transparent;
}

.prourok-pager__item:focus-visible,
.prourok-auth-tab:focus-visible,
.pu-404__submit:focus-visible,
.pu-acc__btn:focus-visible,
.pu-acc__tile:focus-visible,
.pu-chip:focus-visible,
.pu-dl-empty__btn:focus-visible,
.pu-fb__go:focus-visible,
.pu-fop__save:focus-visible,
.pu-lb-btn:focus-visible,
.pu-lb-nav:focus-visible,
.pu-lb-thumb:focus-visible,
.pu-mod-act:focus-visible,
.pu-mod-btn:focus-visible,
.pu-mod-phrase:focus-visible,
.pu-mod-prev:focus-visible,
.pu-mod-purge__btn:focus-visible,
.pu-mod-row__cover:focus-visible,
.pu-mod-tab:focus-visible,
.pu-preset:focus-visible,
.prourok-nav-action:focus-visible,
.pu-modlink:focus-visible,
.pu-nav-user:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}

/* ---------------------------------------------------------------------------
 * 8. Анімація появи карток + reduced motion
 * ------------------------------------------------------------------------- */
@keyframes prourok-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
.prourok-card { animation: prourok-rise .5s cubic-bezier(.2,.7,.2,1) both; }

@media (prefers-reduced-motion: reduce) {
  .prourok-card { animation: none; }
  * { transition-duration: .001ms !important; }
}

/* ---------------------------------------------------------------------------
 * 9. Вхід / реєстрація — вкладки
 * ------------------------------------------------------------------------- */
.prourok-auth { max-width: 760px; margin: 0 auto; }
.prourok-auth-tabs {
  display: flex; gap: 8px; background: #EAF1F8; padding: 6px; border-radius: 14px; margin-bottom: 28px;
}
.dark .prourok-auth-tabs { background: #17293A; }
.prourok-auth-tab {
  flex: 1; padding: 10px 16px; border-radius: 10px; font-weight: 600; font-size: 15px;
  color: #475569; background: transparent; border: 0; cursor: pointer; transition: background .2s ease, color .2s ease;
}
.prourok-auth-tab:hover { color: #12436C; }
.dark .prourok-auth-tab:hover { color: #fff; }
.prourok-auth-tab.is-active { background: #fff; color: #12436C; box-shadow: 0 1px 3px rgba(15,30,46,.1); }
.dark .prourok-auth-tab.is-active { background: #0B1620; color: #fff; }
.prourok-auth-panel { display: none; }
.prourok-auth-panel.is-active { display: block; }
.prourok-auth .woocommerce-form { max-width: 520px; }
.prourok-auth .woocommerce-form-row { margin-bottom: 16px; }
.prourok-auth label { display: block; font-weight: 600; margin-bottom: 6px; color: #0F1E2E; }
.dark .prourok-auth label { color: #EAF1F8; }
.prourok-auth .input-text { width: 100%; }
.prourok-auth-note {
  max-width: 520px; padding: 16px; border-radius: 12px; background: #FEF3E7; color: #9E520B; font-weight: 500;
}
.dark .prourok-auth-note { background: #17293A; color: #F9C489; }

/* Ховаємо стандартні дві колонки WooCommerce (ми використовуємо вкладки) */
.prourok-auth.u-columns { display: block; }

/* ---------------------------------------------------------------------------
 * 10. Темна тема для внутрішніх сторінок WooCommerce
 * ------------------------------------------------------------------------- */
.dark.woocommerce-account,
.dark.woocommerce-cart,
.dark.woocommerce-checkout,
.dark .woocommerce-account,
.dark .woocommerce-cart,
.dark .woocommerce-checkout {
  background: #0B1620;
  color: #EAF1F8;
}
.dark .woocommerce-page .entry-title,
.dark .woocommerce-account .entry-title,
.dark .woocommerce-cart .entry-title,
.dark .woocommerce-checkout .entry-title { color: #fff; }
.dark .woocommerce-page input.input-text,
.dark .woocommerce-page select,
.dark .woocommerce form .form-row input.input-text {
  background: #12212E; border-color: #24384B; color: #EAF1F8;
}
.dark .woocommerce table.shop_table,
.dark .woocommerce-MyAccount-content { color: #EAF1F8; }

/* ---------------------------------------------------------------------------
 * 11. Форма «Додати матеріал» — файлові інпути у фірмовому стилі
 * ------------------------------------------------------------------------- */
.prourok-file {
  display: block;
  padding: 10px 12px;
  border: 1px dashed #CBD5E1;
  border-radius: 12px;
  background: #F7F9FB;
  color: #475569;
  cursor: pointer;
}
.dark .prourok-file { border-color: #24384B; background: #0B1620; color: #94A3B8; }
.prourok-file::file-selector-button {
  margin-right: 12px;
  padding: 8px 14px;
  border: 0;
  border-radius: 9999px;
  background: #12436C;
  color: #fff;
  font-weight: 600;
  font-size: 13px;
  cursor: pointer;
  transition: background .2s ease;
}
.prourok-file::file-selector-button:hover { background: #0E3557; }

/* ---------------------------------------------------------------------------
 * 12. Кабінет «Мій обліковий запис» — сітка нав + контент, власні іконки
 * ------------------------------------------------------------------------- */

/* Скидаємо float-макет Storefront для нав/контенту кабінету */
.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content {
  float: none !important;
  width: auto !important;
  margin: 0 !important;
}

/* Двоколонкова сітка застосовується ЛИШЕ коли поруч реально є нав-сайдбар
 * (Майстерня/Замовлення/...). До логіну на цій сторінці лише одна дитина
 * (форма входу/реєстрації) — якщо накласти сітку з фіксованою першою
 * колонкою й тоді, вона притисне форму до 260px зліва, лишивши порожнечу
 * праворуч.
 *
 * Перевірка через :has() дивиться на РЕАЛЬНУ структуру HTML (чи є
 * нав-елемент), а не на клас body.logged-in. Це навмисно: якщо на сайті
 * працює кеш сторінок, він може віддавати застарілий <body> без класу
 * logged-in навіть залогіненому користувачу — :has() від цього не
 * залежить, бо перевіряє те, що реально прийшло в HTML цього запиту.
 * (:has() підтримується всіма сучасними браузерами з 2023–2024 років.) */
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) {
  display: grid !important;
  grid-template-columns: 260px 1fr;
  gap: 28px;
  align-items: start;
}
@media (max-width: 900px) {
  .woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) { grid-template-columns: 1fr; }
}
.woocommerce-account .woocommerce:not(:has(.woocommerce-MyAccount-navigation)) {
  display: block;
}

/* Навігація: вертикальний список фірмових «пігулок» */
.prourok-account-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.prourok-account-nav ul li { margin: 0; padding: 0; }
.prourok-account-nav ul li a {
  display: flex !important;
  align-items: center;
  gap: 12px;
  padding: 14px 18px !important;
  box-sizing: border-box;
  border-radius: 12px;
  background: #EAF1F8;
  color: #12436C;
  font-weight: 600;
  font-size: 14px;
  text-decoration: none;
  transition: background .2s ease, color .2s ease;
}
.dark .prourok-account-nav ul li a { background: #17293A; color: #CBDCEC; }
.prourok-account-nav ul li a:hover { background: #CBDCEC; }
.dark .prourok-account-nav ul li a:hover { background: #1F3549; }
.prourok-account-nav ul li.is-active a { background: #12436C; color: #fff; }
.dark .prourok-account-nav ul li.is-active a { background: #12436C; color: #fff; }
.prourok-account-nav ul li.is-active a:hover { background: #0E3557; }
.prourok-account-nav ul li a svg { flex-shrink: 0; }

/* Прибираємо будь-які залишкові псевдо-іконки Storefront (dashicons через ::before/::after),
   щоб поруч із нашою SVG не з'являлася друга, зайва іконка */
.prourok-account-nav ul li a::before,
.prourok-account-nav ul li a::after,
.prourok-account-nav ul li::before,
.prourok-account-nav ul li::after {
  content: none !important;
}

/* Мобільна версія: горизонтальна прокручувана стрічка вкладок */
@media (max-width: 900px) {
  .prourok-account-nav ul { flex-direction: row; overflow-x: auto; padding-bottom: 4px; }
  .prourok-account-nav ul li a { white-space: nowrap; }
}

/* Контент кабінету — картка у фірмовому стилі */
.woocommerce-MyAccount-content {
  background: #fff;
  border: 1px solid #E2E8F0;
  border-radius: 16px;
  padding: 28px;
  box-shadow: 0 1px 3px rgba(15,30,46,.06), 0 6px 20px rgba(15,30,46,.06);
}
.dark .woocommerce-MyAccount-content { background: #12212E; border-color: #24384B; }
.woocommerce-MyAccount-content a { color: #C96A0E; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.woocommerce-MyAccount-content a:hover { color: #9E520B; }
.woocommerce-MyAccount-content table.shop_table th { color: #12436C; }
.dark .woocommerce-MyAccount-content table.shop_table th { color: #fff; }

/* Сповіщення (info/success/error) — прибираємо зламані dashicon-псевдоелементи */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-noreviews {
  border-radius: 14px;
  padding: 16px 20px;
  border: 0;
  list-style: none;
}
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before { content: none !important; }

/* Повідомлення «додано до кошика» тощо.
 *
 * ПЕРЕРОБЛЕНО 1.50.15. Було: суцільна широка смуга насиченим кольором на
 * всю ширину контенту, з великою помаранчевою кнопкою всередині. Для
 * підтвердження рутинної дії («товар у кошику») це надто голосно: смуга
 * важча за сам кошик під нею, а коли додати два матеріали поспіль — дві
 * смуги займають пів-екрана й відтісняють те, заради чого людина прийшла.
 *
 * Стало: світла підкладка з кольоровою рискою збоку. Повідомлення лишається
 * помітним, але читається як примітка до сторінки, а не як подія, важливіша
 * за сторінку. */
.woocommerce-message,
.woocommerce-info {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem 1rem;
  background: #EAF1F8;
  border-left: 3px solid #12436C;
  color: #0E3557;
  font-size: 14px;
  line-height: 1.5;
}

.woocommerce-message { background: #E6F4EA; border-left-color: #1B5E20; color: #14532D; }

.woocommerce-message a:not(.button),
.woocommerce-info a:not(.button) { color: inherit; text-decoration: underline; }

/* Кнопка всередині повідомлення — вторинна, а не головна дія на сторінці:
   головна тут «Оформити замовлення» нижче, і дві однаково яскраві
   помаранчеві кнопки змагалися б за увагу. */
.woocommerce-message .button,
.woocommerce-info .button {
  margin-left: auto;
  height: 2.25rem;
  padding: 0 .875rem;
  display: inline-flex;
  align-items: center;
  border-radius: 12px;
  background: transparent !important;
  border: 1px solid currentColor;
  color: inherit !important;
  font-size: 13.5px;
  font-weight: 600;
}
.woocommerce-message .button:hover,
.woocommerce-info .button:hover { background: rgba(15,30,46,.06) !important; }

/* WooCommerce ставить повідомленню tabindex="-1" і переводить на нього
   фокус для програм екранного доступу — браузер малює навколо чорну рамку.
   Прибираємо лише її, лишаючи видимий фокус для клавіатури. */
.woocommerce-message:focus,
.woocommerce-info:focus,
.woocommerce-error:focus { outline: none; }

.dark .woocommerce-info { background: #0D2438; border-left-color: #9DBBD8; color: #CBDCEC; }
.dark .woocommerce-message { background: #0F2A1C; border-left-color: #4ADE80; color: #BBF7D0; }

.woocommerce-error {
  background: #FEE2E2;
  color: #991B1B;
}
.dark .woocommerce-error { background: rgba(69,10,10,.35); color: #FCA5A5; }

/* ---------------------------------------------------------------------------
 * 13. Сторінка окремого товару — галерея, панель купівлі, вкладки, відгуки,
 *    схожі матеріали. Галерея й вкладки лишаються на "рушії" WooCommerce
 *    (штатні хуки/JS для зуму й перемикання вкладок), тут — лише реcкін.
 * ------------------------------------------------------------------------- */

/* Велика ціна на сторінці товару (окремо від .prourok-price картки каталогу) */
.prourok-price-lg .price,
.prourok-price-lg ins,
.prourok-price-lg .amount {
  font-family: 'Manrope', sans-serif;
  font-weight: 800;
  font-size: 30px;
  color: #12436C;
  text-decoration: none;
}
.dark .prourok-price-lg .price,
.dark .prourok-price-lg .amount { color: #fff; }
.prourok-price-lg del { opacity: .7; }
.prourok-price-lg del .amount { color: #94A3B8; font-weight: 500; font-size: 16px; margin-right: 8px; }
.prourok-price-lg ins { text-decoration: none; }

/* Галерея зображень */
.prourok-single-gallery .woocommerce-product-gallery,
.prourok-single-gallery .woocommerce-product-gallery__wrapper,
.prourok-single-gallery .woocommerce-product-gallery__image {
  width: 100% !important;
}
.prourok-single-gallery .woocommerce-product-gallery {
  border-radius: 20px;
  overflow: hidden;
  border: 1px solid #E2E8F0;
  background: #F7F9FB;
}
.dark .prourok-single-gallery .woocommerce-product-gallery { border-color: #24384B; background: #12212E; }
.prourok-single-gallery .woocommerce-product-gallery__image img {
  width: 100% !important;
  height: auto !important;
  display: block;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.prourok-single-gallery .flex-control-thumbs {
  display: flex;
  gap: 8px;
  padding: 12px;
  margin: 0;
  list-style: none;
  flex-wrap: wrap;
}
.prourok-single-gallery .flex-control-thumbs li { width: 64px; }
.prourok-single-gallery .flex-control-thumbs img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 10px;
  cursor: pointer;
  border: 2px solid transparent;
  opacity: .65;
  transition: opacity .2s ease, border-color .2s ease;
}
.prourok-single-gallery .flex-control-thumbs img:hover { opacity: 1; }
.prourok-single-gallery .flex-control-thumbs img.flex-active { border-color: #EB8018; opacity: 1; }
.prourok-single-gallery .woocommerce-product-gallery__trigger {
  background: rgba(255,255,255,.9);
  border-radius: 9999px;
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
}

/* Форма «Купити»: кількість + кнопка */
.prourok-single-addtocart form.cart {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.prourok-single-addtocart .quantity { margin: 0; }
.prourok-single-addtocart .quantity .qty {
  width: 64px;
  height: 48px;
  text-align: center;
  border-radius: 12px !important;
  border: 1px solid #CBD5E1 !important;
  font-weight: 600;
}
.dark .prourok-single-addtocart .quantity .qty { background: #12212E !important; border-color: #24384B !important; color: #fff !important; }
.prourok-single-addtocart .single_add_to_cart_button {
  width: 100% !important;
  height: 48px !important;
  padding: 0 24px !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  white-space: nowrap !important;
  flex: 1;
}

/* Вкладки: опис / характеристики / відгуки */
.woocommerce-tabs.wc-tabs-wrapper { margin-top: 8px; }

/* Storefront застосовує float до списку вкладок і панелі контенту (стара
 * двоколонкова верстка) — через це контент опису "виїжджав" праворуч від
 * списку вкладок замість того, щоб бути під ним. Скидаємо float і ширину
 * явно, щоб усе стояло одне під одним на всю ширину. */
.woocommerce-tabs.wc-tabs-wrapper ul.tabs.wc-tabs,
.woocommerce-tabs.wc-tabs-wrapper .woocommerce-Tabs-panel,
.woocommerce-tabs.wc-tabs-wrapper .panel {
  float: none !important;
  width: 100% !important;
  clear: both !important;
  margin-left: 0 !important;
}

.woocommerce-tabs ul.tabs.wc-tabs {
  display: flex;
  gap: 6px;
  list-style: none;
  padding: 6px;
  margin: 0 0 24px;
  background: #EAF1F8;
  border-radius: 14px;
  flex-wrap: wrap;
}
.dark .woocommerce-tabs ul.tabs.wc-tabs { background: #17293A; }
.woocommerce-tabs ul.tabs.wc-tabs li { margin: 0; }
.woocommerce-tabs ul.tabs.wc-tabs li a {
  display: inline-block;
  padding: 10px 18px;
  border-radius: 10px;
  font-weight: 600;
  font-size: 14px;
  color: #475569;
  text-decoration: none;
}
.dark .woocommerce-tabs ul.tabs.wc-tabs li a { color: #94A3B8; }
.woocommerce-tabs ul.tabs.wc-tabs li.active a {
  background: #fff;
  color: #12436C;
  box-shadow: 0 1px 3px rgba(15,30,46,.1);
}
.dark .woocommerce-tabs ul.tabs.wc-tabs li.active a { background: #0B1620; color: #fff; }

/* Storefront (батьківська тема) домальовує під активною вкладкою трикутник-
   "хвостик" (стрілку), що вказує на панель контенту знизу — стандартна
   поведінка для його оригінального дизайну вкладок з підкресленням. У
   нашому редизайні "пігулками" (заокруглений білий фон замість підкреслення)
   ця стрілка вже нічого не з'єднує і просто накладається на текст вкладки.
   Глушимо явно, з тим самим селектором (li.active::after), яким її додає
   Storefront, — інакше рахунок специфічності залежить від порядку підключення
   стилів. */
.woocommerce-tabs ul.tabs.wc-tabs li.active::after,
.woocommerce-tabs ul.tabs.wc-tabs li.active:after {
  content: none !important;
  display: none !important;
  border: none !important;
}

/* Власний фокус клавіатурою замість браузерного за замовчуванням: без
   outline-offset рамка лягала впритул до тексту вузьких вкладок (наприклад
   "Опис") і візуально "з'їдала" останню літеру. */
.woocommerce-tabs ul.tabs.wc-tabs li a:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}
.woocommerce-tabs .woocommerce-Tabs-panel {
  max-width: 760px;
  line-height: 1.7;
  color: #334155;
}
.dark .woocommerce-tabs .woocommerce-Tabs-panel { color: #CBDCEC; }
.woocommerce-tabs .woocommerce-Tabs-panel h2 {
  font-family: 'Manrope', sans-serif;
  font-weight: 800;
  color: #12436C;
  font-size: 20px;
  margin-bottom: 12px;
}
.dark .woocommerce-tabs .woocommerce-Tabs-panel h2 { color: #fff; }
.woocommerce-tabs table.shop_attributes { border-collapse: collapse; width: 100%; }
.woocommerce-tabs table.shop_attributes th,
.woocommerce-tabs table.shop_attributes td {
  border: 1px solid #E2E8F0;
  padding: 10px 14px;
  text-align: left;
}
.dark .woocommerce-tabs table.shop_attributes th,
.dark .woocommerce-tabs table.shop_attributes td { border-color: #24384B; }
.woocommerce-tabs table.shop_attributes th { background: #F7F9FB; font-weight: 600; color: #12436C; }
.dark .woocommerce-tabs table.shop_attributes th { background: #12212E; color: #fff; }

/* Відгуки */
#reviews .woocommerce-Reviews-title,
#reviews h2 {
  font-family: 'Manrope', sans-serif;
  font-weight: 800;
  color: #12436C;
  font-size: 20px;
}
.dark #reviews .woocommerce-Reviews-title,
.dark #reviews h2 { color: #fff; }
.commentlist { list-style: none; margin: 20px 0 0; padding: 0; }
.commentlist .comment { border-bottom: 1px solid #E2E8F0; padding: 20px 0; }
.dark .commentlist .comment { border-color: #24384B; }
.commentlist .comment_container { display: flex; gap: 14px; }
.commentlist .avatar { border-radius: 9999px; width: 44px; height: 44px; flex-shrink: 0; }
.woocommerce-review__author { font-weight: 700; color: #12436C; }
.dark .woocommerce-review__author { color: #fff; }
.woocommerce-review__dash { display: none; }
.woocommerce-review__published-date { color: #94A3B8; font-size: 12.5px; }
.star-rating { color: #EB8018; }
.star-rating::before { color: #E2E8F0; }
.description p { color: #475569; margin-top: 6px; line-height: 1.6; }
.dark .description p { color: #CBDCEC; }

#review_form_wrapper { margin-top: 28px; padding-top: 24px; border-top: 1px solid #E2E8F0; }
.dark #review_form_wrapper { border-color: #24384B; }
.comment-form-rating .stars a { color: #CBD5E1; text-decoration: none; }
.comment-form-rating .stars a:hover,
.comment-form-rating .stars a.active,
.comment-form-rating p.stars.selected a.active { color: #EB8018; }
#review_form textarea,
#review_form input[type="text"],
#review_form input[type="email"] {
  border: 1px solid #E2E8F0 !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  width: 100%;
}
.dark #review_form textarea,
.dark #review_form input[type="text"],
.dark #review_form input[type="email"] {
  background: #12212E !important;
  border-color: #24384B !important;
  color: #fff !important;
}

/* Схожі / супутні матеріали */
.related.products,
.upsells.products {
  margin-top: 56px;
  padding-top: 40px;
  border-top: 1px solid #E2E8F0;
}
.dark .related.products,
.dark .upsells.products { border-color: #24384B; }
.related.products > h2,
.upsells.products > h2 {
  font-family: 'Manrope', sans-serif;
  font-weight: 800;
  color: #12436C;
  font-size: 22px;
  margin-bottom: 20px;
}
.dark .related.products > h2,
.dark .upsells.products > h2 { color: #fff; }
.related.products ul.products,
.upsells.products ul.products {
  display: grid !important;
  /* Замість жорсткого стрибка "3 колонки → 2 колонки" на фіксованому
   * брейкпоінті, сітка сама вирішує, скільки карток (мінімум ~240px
   * кожна) влазить у наявну ширину — без різкого перескоку та без
   * "сирітського" одного товару в порожньому рядку. */
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 20px;
  list-style: none;
  padding: 0;
  margin: 0;
}

/* ---------------------------------------------------------------------------
 * 14. HERO каталогу — фон-«сузір'я» + 3D-сцена з паралаксом.
 *    Увесь критичний вигляд свідомо тут, у постійно підключеному theme.css,
 *    а не на Tailwind-класах: на цьому хості Tailwind CDN неодноразово
 *    не встигав застосуватися.
 * ------------------------------------------------------------------------- */
/* Резерв на випадок, якщо Tailwind не застосується: без цього класу
 * мітка поля пошуку стала б видимим текстом посеред банера. */
.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.prourok-hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(155deg, #C9D6E6 0%, #DCE5EF 42%, #EDF1F6 100%);
  border-bottom: 1px solid #DCE4EE;
}
.dark .prourok-hero {
  background: linear-gradient(155deg, #0C1B29 0%, #10263A 45%, #143047 100%);
  border-bottom-color: #1E3448;
}

/* Мережа-сузір'я */
.prourok-hero-net {
  position: absolute; inset: 0;
  pointer-events: none;
  opacity: .85;
}
.prourok-hero-net svg { width: 100%; height: 100%; display: block; }
.dark .prourok-hero-net { opacity: .3; }

/* М'яке світло у верхньому правому куті — глибина, як в оригіналі */
.prourok-hero-glow {
  position: absolute;
  right: -6%; top: -34%;
  width: 62%; height: 150%;
  pointer-events: none;
  background: radial-gradient(closest-side, rgba(255,255,255,.85), rgba(255,255,255,0) 72%);
}
.dark .prourok-hero-glow {
  background: radial-gradient(closest-side, rgba(64,120,180,.20), rgba(64,120,180,0) 72%);
}

/* --- Сітка: текст ліворуч, сцена праворуч --- */
.prourok-hero-inner {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 46%);
  align-items: center;
  gap: 28px;
  max-width: 80rem;
  margin-left: auto;
  margin-right: auto;
  /* Висота банера визначається вмістом (заголовок + слоган + пошук) */
  padding: 40px 16px;
}
@media (min-width: 640px)  { .prourok-hero-inner { padding-left: 24px; padding-right: 24px; } }
@media (min-width: 1024px) { .prourok-hero-inner { padding: 48px 32px; } }

.prourok-hero-content { min-width: 0; }

/* --- Заголовок --- */
.prourok-hero-title {
  margin: 0;
  font-family: 'Manrope', sans-serif;
  font-weight: 800;
  letter-spacing: -.022em;
  line-height: 1.02;
  font-size: clamp(36px, 5.4vw, 60px);
}
.prourok-hero-title span { display: block; }
.prourok-hero-title-1 { color: #12436C; }
.dark .prourok-hero-title-1 { color: #fff; }
.prourok-hero-title-2 { color: #EB8018; }

/* --- Рукописний слоган з підкладкою --- */
.prourok-hero-tagline {
  position: relative;
  display: inline-block;
  margin: 18px 0 0;
  font-family: 'Caveat', 'Manrope', cursive;
  font-weight: 700;
  font-size: clamp(23px, 2.8vw, 30px);
  color: #12436C;
  line-height: 1.25;
  padding: 6px 20px 12px;
  border-radius: 14px;
  background: rgba(255, 255, 255, .62);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
}
.dark .prourok-hero-tagline { color: #DCE9F7; background: rgba(15, 34, 52, .72); }
.prourok-hero-tagline::after {
  content: '';
  position: absolute;
  left: 20px; right: 20px; bottom: 7px;
  height: 3px;
  border-radius: 9999px;
  background: #EB8018;
}

/* --- Пошук --- */
.prourok-hero-search { margin-top: 22px; max-width: 560px; }
.prourok-hero-search-box { position: relative; }
.prourok-hero-search-ic {
  position: absolute; left: 18px; top: 50%; transform: translateY(-50%);
  color: #8FA3B8; pointer-events: none;
}
.prourok-hero-search input[type="search"] {
  width: 100%;
  height: 58px;
  padding: 0 126px 0 50px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.9) !important;
  background: rgba(255,255,255,.96);
  color: #0F1E2E;
  font-size: 15px;
  box-shadow: 0 10px 30px rgba(20,50,85,.12);
  transition: border-color .2s ease, box-shadow .2s ease;
}
.dark .prourok-hero-search input[type="search"] {
  background: #12212E; border-color: #24384B !important; color: #EAF1F8;
}
.prourok-hero-search input[type="search"]::placeholder { color: #93A5B8; }
.prourok-hero-search input[type="search"]:focus {
  outline: none;
  border-color: #F08F2E !important;
  box-shadow: 0 0 0 3px rgba(235,128,24,.25), 0 10px 30px rgba(20,50,85,.14);
}
.prourok-hero-search button[type="submit"] {
  position: absolute; right: 7px; top: 7px; bottom: 7px;
  padding: 0 24px;
  border: 0;
  border-radius: 12px;
  background: #EB8018 !important;
  color: #fff !important;
  font-weight: 700;
  font-size: 14.5px;
  cursor: pointer;
  transition: background .2s ease;
}
.prourok-hero-search button[type="submit"]:hover { background: #C96A0E !important; }

/* Без власного правила фокуса — той самий системний квадратний контур,
 * що й для решти елементів у розділі 7b. */
.prourok-hero-search button[type="submit"]:focus {
  outline: none;
}
.prourok-hero-search button[type="submit"]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}

/* --- 3D-сцена: власний повільний рух + паралакс при прокрутці --- */
.prourok-hero-art {
  position: relative;
  justify-self: end;
  width: 100%;
  /* Зсув від прокрутки застосовується до обгортки, а не до <img>, щоб він
   * не конфліктував з keyframe-анімацією самого зображення нижче
   * (обидва правила інакше боролися б за одну властивість transform). */
  transform: translate3d(0, var(--py, 0px), 0);
  will-change: transform;
}
.prourok-hero-art img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 620px;
  margin-left: auto;
  filter: drop-shadow(0 26px 40px rgba(20,50,85,.16));
  animation: prourok-hero-float 9s ease-in-out infinite;
}
@keyframes prourok-hero-float {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -16px, 0); }
}

/* --- Адаптив --- */
@media (max-width: 1100px) {
  .prourok-hero-inner { grid-template-columns: minmax(0, 1fr) minmax(0, 42%); }
}
@media (max-width: 860px) {
  .prourok-hero-inner { grid-template-columns: 1fr; gap: 22px; }
  .prourok-hero-art { justify-self: center; }
  .prourok-hero-art img { max-width: 420px; margin: 0 auto; }
}
@media (max-width: 620px) {
  .prourok-hero-search input[type="search"] { height: 54px; padding-right: 108px; }
  .prourok-hero-search button[type="submit"] { padding: 0 17px; font-size: 13.5px; }
  .prourok-hero-art img { max-width: 320px; }
}

@media (prefers-reduced-motion: reduce) {
  .prourok-hero-art { transform: none !important; }
  .prourok-hero-art img { animation: none !important; }
}

/* ---------------------------------------------------------------------------
 * 38. Юридичні сторінки: оферта, конфіденційність, повернення
 *
 * Селектори продубльовано навмисно:
 *   .prourok-legal              — коли обгортка збереглася при вставці HTML;
 *   body.prourok-legal-page ... — запобіжник, якщо редактор обгортку з'їв
 *                                 (клас додає inc/legal-pages.php).
 * Використовуємо чистий CSS без залежності від Tailwind — юридичні сторінки
 * мають читатися навіть за повністю відваленого білду.
 * ------------------------------------------------------------------------- */

.prourok-legal,
body.prourok-legal-page .entry-content {
  max-width: 800px;
  margin: 0 auto;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.75;
  color: #33475B;
}

/* Заголовок сторінки (H1 виводить сам шаблон Storefront).
 *
 * Продубльовано через :has() навмисно. Селектор з body-класом залежить від
 * PHP: якщо сторінка з якоїсь причини не розпізналася як юридична (застарілий
 * кеш, плагін кешування сторінок, зміна слага), клас не додасться і заголовок
 * лишиться в дефолтному стилі Storefront — рівно та ситуація, що вже була.
 * :has() вирішує це на боці CSS: достатньо, щоб у DOM була обгортка контенту. */
body.prourok-legal-page .entry-header,
body:has(.prourok-legal) .entry-header {
  max-width: 800px;
  margin: 0 auto 8px;
  padding: 0;
}
body.prourok-legal-page .entry-title,
body:has(.prourok-legal) .entry-title {
  margin: 0 0 4px !important;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif !important;
  font-size: clamp(26px, 3.2vw, 34px) !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.025em;
  color: #12436C !important;
  text-transform: none !important;
}

/* Повна ширина замість колонки під сайдбар.
 *
 * Сам сайдбар прибирає inc/legal-pages.php, але Storefront лишає контентній
 * колонці ширину 73.9% і правий відступ під нього — без цих правил текст
 * тулився б ліворуч, а третина сторінки стояла б порожньою. Селектор з
 * :has() дублює body-клас із тієї ж причини, що й для заголовка. */
body.prourok-legal-page .content-area,
body:has(.prourok-legal) .content-area {
  width: 100% !important;
  max-width: none !important;
  margin-right: 0 !important;
  float: none !important;
}
body.prourok-legal-page #secondary,
body:has(.prourok-legal) #secondary {
  display: none !important;
}

/* Розділи. Storefront задає власні margin для h2 — перекриваємо. */
.prourok-legal h2,
body.prourok-legal-page .entry-content h2 {
  margin: 40px 0 14px !important;
  padding-top: 22px;
  border-top: 1px solid #E3E8EE;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 18px !important;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: -0.01em;
  color: #12436C !important;
}
.prourok-legal h2:first-of-type,
body.prourok-legal-page .entry-content h2:first-of-type {
  border-top: 0;
  padding-top: 0;
  margin-top: 26px !important;
}

.prourok-legal p,
body.prourok-legal-page .entry-content p {
  margin: 0 0 14px;
}

.prourok-legal strong,
body.prourok-legal-page .entry-content strong {
  color: #0F1E2E;
  font-weight: 600;
}

.prourok-legal a,
body.prourok-legal-page .entry-content a {
  color: #C96A0E;
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  transition: color .15s ease;
}
.prourok-legal a:hover,
body.prourok-legal-page .entry-content a:hover {
  color: #12436C;
}

/* Плашка з датою редакції */
.prourok-legal .legal-meta,
body.prourok-legal-page .entry-content .legal-meta {
  margin: 0 0 30px;
  padding: 12px 16px;
  background: #F4F8FB;
  border-left: 3px solid #EB8018;
  border-radius: 0 8px 8px 0;
  font-size: 14px;
  line-height: 1.6;
  color: #5A6675;
}

/* Блок реквізитів / контактів */
.prourok-legal .legal-requisites,
body.prourok-legal-page .entry-content .legal-requisites {
  margin-top: 6px;
  padding: 18px 20px;
  background: #F4F8FB;
  border: 1px solid #E3E8EE;
  border-radius: 12px;
  font-size: 15px;
  line-height: 1.85;
}

/* --- Темна тема (клас .dark на <html>, ставить assets/js/catalog.js) --- */
.dark .prourok-legal,
.dark body.prourok-legal-page .entry-content {
  color: #C7D2DE;
}
.dark body.prourok-legal-page .entry-title,
.dark body:has(.prourok-legal) .entry-title {
  color: #ffffff !important;
}
.dark .prourok-legal h2,
.dark body.prourok-legal-page .entry-content h2 {
  color: #ffffff !important;
  border-top-color: #24384B;
}
.dark .prourok-legal strong,
.dark body.prourok-legal-page .entry-content strong {
  color: #ffffff;
}
.dark .prourok-legal a,
.dark body.prourok-legal-page .entry-content a {
  color: #F5A54F;
}
.dark .prourok-legal a:hover,
.dark body.prourok-legal-page .entry-content a:hover {
  color: #ffffff;
}
.dark .prourok-legal .legal-meta,
.dark body.prourok-legal-page .entry-content .legal-meta,
.dark .prourok-legal .legal-requisites,
.dark body.prourok-legal-page .entry-content .legal-requisites {
  background: #12212E;
  border-color: #24384B;
  color: #A9B7C6;
}

/* --- Адаптив --- */
@media (max-width: 782px) {
  .prourok-legal,
  body.prourok-legal-page .entry-content {
    font-size: 15px;
    line-height: 1.7;
  }
  .prourok-legal h2,
  body.prourok-legal-page .entry-content h2 {
    margin-top: 32px !important;
    font-size: 17px !important;
  }
}

/* Друк: юридичні сторінки часто зберігають у PDF */
@media print {
  .prourok-header, .prourok-footer, .prourok-legal .prourok-todo { display: none !important; }
  .prourok-legal, body.prourok-legal-page .entry-content { max-width: none; color: #000; }
  .prourok-legal a, body.prourok-legal-page .entry-content a { color: #000; }
  .prourok-legal h2, body.prourok-legal-page .entry-content h2 { color: #000 !important; }
}

/* ---------------------------------------------------------------------------
 * 38a. Робочі мітки «що дописати» (тимчасові, до підключення еквайрингу)
 *
 * Видимість керується з inc/legal-pages.php:
 *   — за замовчуванням мітки бачить лише адміністратор;
 *   — define('PROUROK_LEGAL_DRAFT', false) у wp-config.php ховає їх усім.
 * Прибирати самі <span> з HTML сторінок можна вже після запуску, без поспіху.
 * ------------------------------------------------------------------------- */
.prourok-todo {
  display: inline-block;
  margin: 0 4px;
  padding: 1px 8px;
  background: #CCE035;
  border-radius: 4px;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.55;
  color: #2B3440;
  vertical-align: baseline;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}
.prourok-todo::before {
  content: "✎ ";
}
.dark .prourok-todo {
  background: #CCE035;
  color: #12212E;
}

/* ---------------------------------------------------------------------------
 * 15. Нижня частина футера: реквізити ФОП, копірайт, платіжні бейджі
 *
 * Чому власний CSS, а не Tailwind-утиліти:
 * `npm run build` вирізає з main.css усі класи, яких не було в шаблонах на
 * момент збірки. Утиліта, дописана в PHP після білду (напр. gap-x-5),
 * у продакшн-CSS просто відсутня — і рядок «злипається» без жодної помилки
 * в консолі. Реквізити продавця — юридично обов'язковий елемент сторінки,
 * тож вони не повинні залежати від того, чи перезібрано Tailwind.
 * ------------------------------------------------------------------------- */

/* Колонка «Контакти» у сітці футера.
 * Візуально повторює сусідні колонки-списки, але назва ФОП — не посилання,
 * тому потрібен окремий набір правил, а не успадкування від <a>. */
.prourok-footer .prourok-footer-contacts {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 14px;
  line-height: 1.5;
  color: #64748B;
}
.prourok-footer .prourok-footer-contacts li {
  margin: 0 0 8px;
  list-style: none;
}
.prourok-footer .prourok-footer-contacts li:first-child {
  font-weight: 600;
  color: #475569;
}
.prourok-footer .prourok-footer-contacts li:last-child { margin-bottom: 0; }
.prourok-footer .prourok-footer-contacts a {
  color: inherit;
  text-decoration: none;
  transition: color .15s ease;
  white-space: nowrap;
}
.prourok-footer .prourok-footer-contacts a:hover {
  color: #C96A0E;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Копірайт + бейджі. Верхня межа перенесена сюди з видаленого рядка
 * реквізитів — інакше нижня смуга злилася б із сіткою колонок. */
.prourok-footer .prourok-footer-bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px 20px;
  margin-top: 34px;
  padding-top: 22px;
  border-top: 1px solid #E2E8F0;
}

.prourok-footer .prourok-footer-copy {
  margin: 0;
  font-size: 13px;
  color: #94A3B8;
}

.prourok-footer .prourok-footer-badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.prourok-footer .prourok-footer-badges span {
  padding: 4px 10px;
  border: 1px solid #E2E8F0;
  border-radius: 6px;
  background: #ffffff;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.5;
  color: #64748B;
  white-space: nowrap;
}

/* Списки в колонках футера: Tailwind preflight вимкнено, тому маркери
 * лишаються видимими, а відступи — браузерні. Прибираємо тут, щоб не
 * залежати від наявності класів list-none/space-y-2 у зібраному CSS. */
.prourok-footer ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.prourok-footer ul li {
  margin: 0 0 8px;
  list-style: none;
}
.prourok-footer ul li:last-child { margin-bottom: 0; }

/* --- Темна тема --- */
.dark .prourok-footer .prourok-footer-contacts { color: #9DBBD8; }
.dark .prourok-footer .prourok-footer-contacts li:first-child { color: #CBDCEC; }
.dark .prourok-footer .prourok-footer-contacts a:hover { color: #F5A54F; }
.dark .prourok-footer .prourok-footer-bottom { border-top-color: #24384B; }
.dark .prourok-footer .prourok-footer-copy { color: #6994BE; }
.dark .prourok-footer .prourok-footer-badges span {
  background: #12212E;
  border-color: #24384B;
  color: #9DBBD8;
}

/* --- Адаптив: на вузьких екранах рознесення по краях виглядає рвано,
 *     тому переходимо на звичайний стовпчик з рівними відступами. --- */
@media (max-width: 782px) {
  .prourok-footer .prourok-footer-bottom {
    justify-content: flex-start;
    gap: 12px;
    margin-top: 28px;
    padding-top: 18px;
  }
}

/* ---------------------------------------------------------------------------
 * 16. Панель каталогу: лічильник, «Фільтри», сортування
 *
 * Проблема, яку лікує ця секція: на телефоні рядок з кнопкою «Фільтри» та
 * полем сортування вилазив за межі екрана. Причин три, і кожна усувається
 * окремо — прибрати щось одне недостатньо:
 *   1) <select> завжди завширшки з НАЙДОВШИЙ свій варіант, навіть невибраний
 *      (лікується скороченням підписів у functions.php);
 *   2) flex-контейнер за замовчуванням має min-width:auto, тому не дозволяє
 *      дочірнім елементам стискатися нижче їхнього вмісту — тут задаємо 0;
 *   3) лейбл «Сортувати:» з'їдає ~78px, які на 360px екрані критичні.
 * Все чистим CSS: панель каталогу не повинна ламатися через стан Tailwind-білду.
 * ------------------------------------------------------------------------- */

.prourok-catalog-toolbar { min-width: 0; }

.prourok-catalog-tools {
  min-width: 0;
  flex-wrap: wrap;
  justify-content: flex-end;
}

/* Форма сортування має право стискатися */
.prourok-catalog-tools .woocommerce-ordering {
  min-width: 0;
  margin: 0;
}
.prourok-orderby-wrap {
  min-width: 0;
  flex: 1 1 auto;
}
#prourok-orderby {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  text-overflow: ellipsis;
}

@media (max-width: 640px) {
  /* Лейбл ховаємо візуально, але лишаємо в DOM: скрінрідер має озвучити
   * призначення поля. Дублювати його в aria-label самого <select> уже не
   * потрібно — він там є. */
  .woocommerce-ordering label[for="prourok-orderby"] {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
  }

  /* Сортування займає окремий рядок під кнопкою «Фільтри» — на вузькому
   * екрані це читабельніше, ніж два стиснутих елементи поруч. */
  .prourok-catalog-tools {
    width: 100%;
    justify-content: flex-start;
    gap: 8px;
  }
  .prourok-catalog-tools .woocommerce-ordering {
    flex: 1 1 auto;
    display: flex;
  }
  #prourok-orderby {
    height: 40px;
    padding-left: 12px;
    padding-right: 32px;
    font-size: 14px;
  }
}

@media (max-width: 400px) {
  /* Найвужчі екрани: кнопка й поле стають на окремі рядки на всю ширину. */
  .prourok-catalog-tools > * { flex: 1 1 100%; }
  .prourok-catalog-tools #prourok-mobile-filter { justify-content: center; }
}

/* ---------------------------------------------------------------------------
 * 17. Hero-банер на сторінках кабінету, входу та реєстрації
 *
 * Той самий шаблон, що й у каталозі (template-parts/hero.php), але в
 * компактному варіанті: без поля пошуку, нижчий, з меншою ілюстрацією.
 * На сторінці входу висота банера каталогу відсунула б форму нижче згину
 * екрана — а форма тут головна дія, вона має бути видимою одразу.
 * ------------------------------------------------------------------------- */

.prourok-hero--compact .prourok-hero-inner {
  padding-top: 26px;
  padding-bottom: 26px;
  gap: 20px;
  grid-template-columns: minmax(0, 1fr) minmax(0, 34%);
}
@media (min-width: 1024px) {
  .prourok-hero--compact .prourok-hero-inner { padding: 30px 32px; }
}

.prourok-hero--compact .prourok-hero-title {
  font-size: clamp(28px, 4vw, 40px);
  line-height: 1.1;
}
.prourok-hero--compact .prourok-hero-tagline {
  margin-top: 14px;
  font-size: 24px;
  line-height: 1.3;
  max-width: 42ch;
}
.prourok-hero--compact .prourok-hero-art img {
  max-width: 320px;
  animation-duration: 11s;
}

/* Варіант без ілюстрації — текст займає всю ширину */
.prourok-hero-inner--noart { grid-template-columns: minmax(0, 1fr) !important; }

/* Заголовок сторінки від шаблону WooCommerce ховаємо: його роль перебрав
 * заголовок банера. Два H1 поспіль — і візуальний шум, і помилка структури
 * документа. Клас на <body> ставить inc/account-hero.php. */
.prourok-has-account-hero .entry-title,
.prourok-has-account-hero .page-title,
.prourok-has-account-hero .woocommerce-products-header__title { display: none; }

/* Контент кабінету підтягуємо ближче до банера — інакше між ними
 * лишається порожня смуга від відступів шаблону сторінки. */
.prourok-has-account-hero .site-main,
.prourok-has-account-hero .content-area { padding-top: 22px; }

@media (max-width: 860px) {
  .prourok-hero--compact .prourok-hero-inner {
    grid-template-columns: 1fr;
    padding-top: 22px;
    padding-bottom: 22px;
  }
  /* На вузькому екрані ілюстрація з'їдала б увесь перший екран, тому в
   * компактному варіанті лишаємо тільки текст. */
  .prourok-hero--compact .prourok-hero-art { display: none; }
  .prourok-hero--compact .prourok-hero-tagline { font-size: 20px; }
}

/* Плавна підміна тексту банера при перемиканні вкладок «Увійти»/«Реєстрація».
 * Клас на пів секунди вішає JS — без нього текст стрибав би різко. */
.prourok-hero-title,
.prourok-hero-tagline {
  transition: opacity .18s ease;
}
.prourok-hero.is-swapping .prourok-hero-title,
.prourok-hero.is-swapping .prourok-hero-tagline {
  opacity: 0;
}

/* ---------------------------------------------------------------------------
 * 18. Контентні сторінки: «Про нас», «Стати автором»
 *
 * Спільний скоуп — .prourok-page. Він стоїть на обгортці обох сторінок поруч
 * зі своїм класом (.prourok-page / .prourok-author), тож базова типографіка,
 * сітка, картки й кнопки описані один раз.
 *
 * Селектори продубльовано за тим самим принципом, що й на юридичних сторінках:
 *   .prourok-page                 — коли обгортка збереглася при вставці HTML;
 *   body.prourok-content-page ... — запобіжник, якщо редактор обгортку з'їв
 *                                   (клас додає inc/content-pages.php).
 *
 * Чистий CSS без Tailwind: сторінка має виглядати однаково і в CDN-прев'ю,
 * і після `npm run build`, і якщо білд відвалився зовсім.
 * ------------------------------------------------------------------------- */

/* Змінні оголошені на ДВОХ рівнях навмисно.
 *
 * `.prourok-page` — основний носій: обгортка приходить із самої розмітки
 * сторінки, і всі селектори секції 18 прив'язані саме до неї.
 *
 * `body.prourok-content-page` — другий шар на випадок, коли обгортку
 * втрачено при вставці HTML. Без цього дубля наслідки непропорційно
 * руйнівні й неочевидні: `background` у .pu-hero зібраний із var(--pu-navy),
 * а незнайома змінна робить НЕВАЛІДНОЮ всю властивість — браузер відкидає
 * ввесь фон, тоді як `color: #fff` заданий літералом і лишається. Виходить
 * білий заголовок на білому тлі: текст просто зникає, і на перший погляд
 * це схоже на зламану верстку, а не на відсутній один клас.
 *
 * Обгортку тепер повертає й PHP (prourok_content_ensure_wrapper), тож це
 * підстраховка на випадок застарілого кешу чи нерозпізнаного слага. */
.prourok-page,
body.prourok-content-page {
  --pu-navy: #12436C;
  --pu-navy-dark: #0A2841;
  --pu-orange: #EB8018;
  --pu-orange-soft: #FEF3E7;
  --pu-ink: #0F1E2E;
  --pu-muted: #5A6675;
  --pu-line: #E3E8EE;
  --pu-bg: #F4F8FB;
  --pu-card: #ffffff;
}

.prourok-page {
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 17px;
  line-height: 1.65;
  color: var(--pu-ink);

  /* Секції виходять за межі контейнера через від'ємні margin (див. .pu-bleed).
   * clip не створює нового scroll-контейнера, тому sticky-хедер лишається
   * робочим — на відміну від overflow:hidden. */
  overflow-x: clip;
}

.prourok-page *,
.prourok-page *::before,
.prourok-page *::after { box-sizing: border-box; }

/* --- Прибираємо обгортку Storefront ---
 *
 * Заголовок сторінки дублював би H1 з hero, а колонка під сайдбар лишає
 * праворуч порожню третину екрана. Сам сайдбар прибирає inc/about-page.php,
 * ширину лагодимо тут. :has() дублює body-клас на випадок, коли PHP не
 * розпізнав сторінку (застарілий кеш, зміна слага). */
body.prourok-content-page .entry-header,
body:has(.prourok-page) .entry-header,
body.prourok-content-page .page-title,
body:has(.prourok-page) .page-title { display: none !important; }

body.prourok-content-page .content-area,
body:has(.prourok-page) .content-area {
  width: 100% !important;
  max-width: none !important;
  margin-right: 0 !important;
  float: none !important;
}
body.prourok-content-page #secondary,
body:has(.prourok-page) #secondary { display: none !important; }

/* Storefront додає верхній відступ контенту — hero має починатися одразу
 * під хедером, без білої смуги. */
body.prourok-content-page .site-content,
body:has(.prourok-page) .site-content { padding-top: 0 !important; }
body.prourok-content-page .site-main,
body:has(.prourok-page) .site-main { padding-top: 0 !important; }

/* --- Типографіка --- */
.prourok-page h1,
.prourok-page h2,
.prourok-page h3 {
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  color: var(--pu-navy);
  font-weight: 800;
  line-height: 1.18;
  letter-spacing: -0.02em;
  margin: 0 0 0.6em !important;
  text-transform: none;
}
.prourok-page p { margin: 0 0 1.1em; }
.prourok-page p:last-child { margin-bottom: 0; }
.prourok-page strong { color: var(--pu-navy); font-weight: 700; }

/* Темні поверхні у СВІТЛІЙ темі: hero, скляний чекліст у ньому, темна смуга
 * й головна картка каналів на «Контактах».
 *
 * Правило вище фарбує <strong> у --pu-navy — це майже той самий колір, що й
 * фон цих секцій, тож виділений текст просто зникає. Симптом видно на
 * «Стати автором» («73% від ціни кожного продажу» в картці «Прозорий
 * відсоток») і на «Про нас» («WayForPay» у картці «Офіційні платежі») —
 * тобто саме там, де strong несе ключову цифру чи назву.
 *
 * У темній темі проблеми немає: там .dark .prourok-page strong уже білий. */
.prourok-page .pu-hero strong,
.prourok-page .pu-checklist strong,
.prourok-page .pu-dark strong,
.prourok-page .pu-fact strong,
.prourok-page .pu-channel--primary strong { color: #ffffff; }

/* --- Сітка --- */
.pu-wrap { max-width: 1180px; margin: 0 auto; padding: 0 24px; }
.pu-section { padding: 88px 0; }
.pu-section--bg { background: var(--pu-bg); }

/* Секція на всю ширину вікна всередині вузького контейнера Storefront.
 * 100vw + від'ємні margin — єдиний спосіб, який не залежить від того,
 * який саме шаблон сторінки обрано в адмінці. */
.pu-bleed {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}

/* --- HERO --- */
.pu-hero {
  position: relative;
  overflow: hidden;
  padding: 96px 0 104px;
  color: #fff;
  background:
    radial-gradient(900px 520px at 88% -10%, rgba(235, 128, 24, .30), transparent 62%),
    linear-gradient(150deg, var(--pu-navy) 0%, var(--pu-navy-dark) 100%);
}
/* Крапкова сітка «сузір'я» — той самий прийом, що в hero каталогу. */
.pu-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(255, 255, 255, .16) 1px, transparent 1px);
  background-size: 22px 22px;
  -webkit-mask-image: linear-gradient(115deg, #000 0 28%, transparent 62%);
  mask-image: linear-gradient(115deg, #000 0 28%, transparent 62%);
  opacity: .55;
  pointer-events: none;
}
.pu-hero .pu-wrap { position: relative; z-index: 2; max-width: 920px; }

/* Ілюстрацію-сцену (hero-scene.webp) на контентних сторінках («Про нас»,
 * «Стати автором», «Довідка», «Контакти») навмисно НЕ використовуємо —
 * на темному navy-фоні цих hero вона виглядає негармонійно. Сцена
 * лишається тільки там, де вже прижилась і на світлому фоні: каталог і
 * вхід/реєстрація (template-parts/hero.php).
 *
 * Історія: спершу тут був значок-бейдж (.pu-hero__mark, 1.31.0) — прибрано
 * в 1.32.0 як такий, що виглядає негарно. Потім та сама сцена, що на
 * каталозі (.pu-hero__scene, 1.32.0) — після перевірки прибрано й саму
 * сцену з цих чотирьох сторінок (1.32.1): на темному фоні контентних
 * сторінок вона не пасує так само, як не пасував бейдж. «Кабінет автора»
 * мав власний варіант сцени (.pu-dash-hero-art) — з тієї ж причини (темний
 * фон) прибрано і його в 1.32.2. */

.pu-eyebrow {
  display: inline-block;
  margin-bottom: 22px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--pu-orange);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #F9C489;
}
.pu-hero h1 {
  color: #fff !important;
  font-size: clamp(34px, 5.2vw, 60px);
  margin-bottom: 24px !important;
  max-width: 24ch;
}
/* Другий рядок заголовка — завжди з нового рядка, а не там, де випаде перенос
 * при поточній ширині екрана. display:block замість <br> навмисно: на вузькому
 * екрані рядки все одно можуть переноситися далі, і зайвий <br> ламав би ритм. */
.pu-hero h1 em {
  display: block;
  font-style: normal;
  color: #F5A54F;
}
.pu-lead {
  max-width: 62ch;
  font-size: clamp(17px, 2vw, 21px);
  line-height: 1.6;
  color: rgba(255, 255, 255, .9);
}
.pu-lead strong { color: #fff; }

/* --- Історія --- */
.pu-story { display: grid; grid-template-columns: 1.35fr .9fr; gap: 56px; align-items: start; }
.pu-quote {
  padding: 32px 30px;
  background: var(--pu-card);
  border: 1px solid var(--pu-line);
  border-left: 5px solid var(--pu-orange);
  border-radius: 14px;
  box-shadow: 0 18px 40px -28px rgba(18, 67, 108, .5);
}
.pu-quote p {
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--pu-navy);
}
.pu-quote cite {
  display: block;
  margin-top: 16px;
  font-size: 14px;
  font-style: normal;
  font-weight: 600;
  color: var(--pu-muted);
}

/* --- Заголовок секції --- */
.pu-head { max-width: 66ch; margin-bottom: 44px; }
.pu-head h2 { font-size: clamp(26px, 3.4vw, 38px); }
.pu-head p { font-size: 18px; color: var(--pu-muted); }

/* --- Картки --- */
.pu-grid { display: grid; gap: 22px; }
.pu-grid--3 { grid-template-columns: repeat(3, 1fr); }
.pu-grid--4 { grid-template-columns: repeat(4, 1fr); }

.pu-card {
  display: flex;
  flex-direction: column;
  padding: 30px 26px;
  background: var(--pu-card);
  border: 1px solid var(--pu-line);
  border-radius: 16px;
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.pu-card:hover {
  transform: translateY(-4px);
  border-color: #CBDCEC;
  box-shadow: 0 4px 12px rgba(15, 30, 46, .10), 0 12px 32px rgba(18, 67, 108, .12);
}
.pu-card h3 { font-size: 19px; margin-bottom: 10px !important; }
.pu-card p { font-size: 15.5px; line-height: 1.6; color: var(--pu-muted); }
.pu-card--link p { flex: 1; }

.pu-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  margin-bottom: 18px;
  border-radius: 11px;
  background: var(--pu-orange-soft);
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 800;
  color: var(--pu-orange);
}

/* Іконка: stroke/fill задаємо НАПРЯМУ на svg і path (той самий запобіжник,
 * що для іконок хедера) — currentColor тут перебивають чужі стилі. */
.pu-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  margin-bottom: 18px;
  border-radius: 12px;
  background: var(--pu-navy);
}
.pu-icon svg,
.pu-icon svg path {
  width: 24px;
  height: 24px;
  stroke: #ffffff !important;
  fill: none !important;
  stroke-width: 1.8;
}

.prourok-page .pu-link {
  display: inline-block !important;
  margin-top: 18px;
  font-size: 15px;
  font-weight: 700;
  color: var(--pu-orange) !important;
  text-decoration: none !important;
}
.prourok-page .pu-link:hover { text-decoration: underline !important; }

/* Раніше стояв упритул під сіткою карток (28px) і читався як хвіст останньої
 * картки, а не як окремий підсумковий блок секції. Збільшений відступ +
 * акцентна смуга зліва (той самий прийом, що в .pu-quote) відокремлюють його
 * візуально, не виносячи в окрему секцію з іншим фоном. */
.pu-note {
  margin-top: 48px;
  padding: 22px 26px;
  background: var(--pu-orange-soft);
  border-left: 4px solid var(--pu-orange);
  border-radius: 0 14px 14px 0;
  font-size: 16px;
  color: #9E520B;
}
.pu-note strong { color: #9E520B; }

/* Специфічність: .prourok-page p (клас+елемент) перекриває .pu-note (клас),
 * тому margin-top з базового правила не застосовується. Префікс обгортки
 * дає два класи й повертає відступ. */
.prourok-page .pu-note { margin-top: 48px; }

/* --- Темна смуга «Як ми працюємо» --- */
.pu-dark {
  padding: 84px 0;
  color: #fff;
  background: linear-gradient(160deg, var(--pu-navy) 0%, var(--pu-navy-dark) 100%);
}
.pu-dark h2 { color: #fff !important; }
.pu-dark .pu-head p { color: rgba(255, 255, 255, .75); }
.pu-fact { border-top: 2px solid rgba(255, 255, 255, .16); padding-top: 20px; }
.pu-fact h3 { color: #fff !important; font-size: 17.5px; margin-bottom: 8px !important; }
.pu-fact p { font-size: 15.5px; color: rgba(255, 255, 255, .74); }
.pu-fact .pu-mark { color: #F5A54F; font-weight: 700; }
.prourok-page .pu-fact a { color: #F5A54F; text-decoration: underline; text-underline-offset: 2px; }
.prourok-page .pu-fact a:hover { color: #fff; }

/* --- CTA --- */
.pu-cta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 44px;
  row-gap: 30px;
  padding: 52px 48px;
  background: var(--pu-card);
  border: 1px solid var(--pu-line);
  border-radius: 20px;
  box-shadow: 0 4px 12px rgba(15, 30, 46, .10), 0 12px 32px rgba(18, 67, 108, .12);
}
.pu-cta > div { display: flex; flex-direction: column; }
.pu-cta > div + div { border-left: 1px solid var(--pu-line); padding-left: 44px; }
.pu-cta h3 { font-size: 24px; margin-bottom: 12px !important; }
.pu-cta p { margin-bottom: 24px; color: var(--pu-muted); }

/* Storefront жорстко задає власний padding кнопкам
 * (0.6180469716em 1.41575em) і колір фону — звідси !important. */
.prourok-page .pu-btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  align-self: flex-start;
  margin-top: auto;
  padding: 15px 30px !important;
  border: 2px solid transparent !important;
  border-radius: 12px !important;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 16px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  text-decoration: none !important;
  text-shadow: none !important;
  transition: transform .2s ease, background .2s ease, color .2s ease;
}
.prourok-page .pu-btn--primary {
  background: var(--pu-orange) !important;
  color: #fff !important;
  box-shadow: 0 14px 26px -14px rgba(235, 128, 24, .85);
}
.prourok-page .pu-btn--primary:hover { background: #C96A0E !important; transform: translateY(-2px); }
.prourok-page .pu-btn--ghost {
  background: transparent !important;
  color: var(--pu-navy) !important;
  border-color: var(--pu-navy) !important;
}
.prourok-page .pu-btn--ghost:hover { background: var(--pu-navy) !important; color: #fff !important; transform: translateY(-2px); }

/* Рядок контактів — окремий рядок ВСЕРЕДИНІ картки, на всю її ширину.
 * Раніше він стояв після картки і візуально «прилипав» до попередньої секції:
 * читався як хвіст блоку вище, а не як частина CTA. */
.prourok-page .pu-contact {
  grid-column: 1 / -1;
  margin: 0;
  padding-top: 28px;
  border-top: 1px solid var(--pu-line);
  text-align: center;
  font-size: 16px;
  color: var(--pu-muted);
}
.prourok-page .pu-contact a { color: var(--pu-orange); text-decoration: underline; text-underline-offset: 2px; }

/* --- Поява при завантаженні (та сама логіка, що в картках каталогу) --- */
.pu-rise { animation: puRise .7s cubic-bezier(.22, .8, .3, 1) both; }
.pu-rise:nth-child(2) { animation-delay: .06s; }
.pu-rise:nth-child(3) { animation-delay: .12s; }
.pu-rise:nth-child(4) { animation-delay: .18s; }
.pu-rise:nth-child(5) { animation-delay: .24s; }
.pu-rise:nth-child(6) { animation-delay: .30s; }
@keyframes puRise {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .prourok-page * { animation: none !important; transition: none !important; }
}

/* --- Темна тема (клас .dark на <html>, ставить assets/js/catalog.js) --- */
.dark .prourok-page {
  --pu-ink: #E6EDF4;
  --pu-muted: #A9B7C6;
  --pu-line: #24384B;
  --pu-bg: #0E1B27;
  --pu-card: #12212E;
  --pu-orange-soft: #1E2A22;
}
.dark .prourok-page h1,
.dark .prourok-page h2,
.dark .prourok-page h3,
.dark .prourok-page strong { color: #ffffff; }
.dark .prourok-page .pu-quote p { color: #ffffff; }
.dark .prourok-page .pu-note { background: #12212E; border: 1px solid #24384B; border-left: 4px solid var(--pu-orange); color: #F5A54F; }
.dark .prourok-page .pu-note strong { color: #F5A54F; }
.dark .prourok-page .pu-btn--ghost { color: #ffffff !important; border-color: #ffffff !important; }
.dark .prourok-page .pu-btn--ghost:hover { background: #ffffff !important; color: var(--pu-navy) !important; }
.dark .prourok-page .pu-card:hover { border-color: #34506B; }

/* --- Адаптив --- */
@media (max-width: 1024px) {
  .pu-grid--3, .pu-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .pu-story { grid-template-columns: 1fr; gap: 36px; }
}
@media (max-width: 782px) {
  .prourok-page { font-size: 16px; }
  .pu-section { padding: 60px 0; }
  .pu-hero { padding: 68px 0 72px; }
  .pu-dark { padding: 60px 0; }
  .pu-grid--3, .pu-grid--4 { grid-template-columns: 1fr; }
  .pu-cta { grid-template-columns: 1fr; column-gap: 0; row-gap: 30px; padding: 34px 26px; }
  .pu-cta > div + div {
    border-left: 0;
    border-top: 1px solid var(--pu-line);
    padding-left: 0;
    padding-top: 34px;
  }
  .prourok-page .pu-btn { width: 100%; }
}

/* --- Друк --- */
@media print {
  .prourok-page .pu-hero,
  .prourok-page .pu-dark { background: none !important; color: #000 !important; }
  .prourok-page .pu-hero h1,
  .prourok-page .pu-dark h2,
  .prourok-page .pu-fact h3 { color: #000 !important; }
  .prourok-page .pu-btn, .prourok-page .prourok-todo { display: none !important; }
}

/* ---------------------------------------------------------------------------
 * 18b. Сторінка «Стати автором»
 *
 * Три секції: hero з чеклістом, чотири кроки, темна смуга з умовами та CTA.
 * Усе базове (типографіка, .pu-wrap, .pu-card, .pu-btn, .pu-dark) успадковано
 * з секції 18 — тут лише те, чого на сторінці «Про нас» немає.
 * ------------------------------------------------------------------------- */

/* --- Hero у дві колонки: текст + чекліст --- */
.pu-hero--split .pu-wrap { max-width: 1180px; }
.pu-hero-split {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 56px;
  align-items: center;
}
.pu-hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 18px;
  margin-top: 30px;
}
.pu-hero-hint { font-size: 15px; color: rgba(255, 255, 255, .7); }

/* Чекліст «що можна продавати». Прозоре скло на градієнті hero — щоб картка
 * читалася як частина банера, а не як біла заплатка на ньому. */
.pu-checklist {
  padding: 30px 30px 26px;
  background: rgba(255, 255, 255, .07);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 18px;
}
.pu-checklist h2 {
  margin: 0 0 18px !important;
  font-size: 17px !important;
  font-weight: 700;
  letter-spacing: .01em;
  color: #ffffff !important;
}
.pu-checklist ul { margin: 0; padding: 0; list-style: none; }
.pu-checklist li {
  position: relative;
  margin: 0 0 11px;
  padding-left: 30px;
  font-size: 15.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, .88);
}
.pu-checklist li:last-child { margin-bottom: 0; }

/* Примітка «Чого не приймаємо» під списком.
 *
 * Змістовно це протилежність переліку вище, тому вона не має читатись як
 * ще один його пункт: відокремлюємо лінією, зменшуємо кегль і притлумлюємо
 * колір. Без цього абзац злипається з останнім рядком списку й виглядає як
 * пункт, у якого просто загубилася галочка. */
.prourok-page .pu-checklist p {
  margin: 18px 0 0;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, .16);
  font-size: 14px;
  line-height: 1.55;
  color: rgba(255, 255, 255, .68);
}
/* Галочка намальована бордерами, а не svg: один елемент замість восьми іконок
 * у розмітці, і нічого не ламається, якщо стилі завантажилися частково. */
.pu-checklist li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: .34em;
  width: 13px;
  height: 7px;
  border-left: 2px solid #F5A54F;
  border-bottom: 2px solid #F5A54F;
  transform: rotate(-45deg);
}

/* --- Кроки --- */
.pu-step {
  padding-top: 22px;
  border-top: 2px solid var(--pu-line);
}
.pu-step-num {
  display: block;
  margin-bottom: 12px;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 44px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--pu-line);
}
.pu-step h3 { font-size: 19px; margin-bottom: 10px !important; }
.pu-step p { font-size: 15.5px; line-height: 1.6; color: var(--pu-muted); }
.prourok-page .pu-step a { color: var(--pu-orange); text-decoration: underline; text-underline-offset: 2px; }

/* --- Фінальний блок у темній смузі --- */
.pu-final {
  margin-top: 48px;
  padding-top: 40px;
  border-top: 1px solid rgba(255, 255, 255, .16);
  text-align: center;
}
.pu-final h3 {
  color: #ffffff !important;
  font-size: clamp(22px, 2.6vw, 28px);
  margin-bottom: 12px !important;
}
.pu-final p {
  max-width: 60ch;
  margin: 0 auto 26px;
  color: rgba(255, 255, 255, .78);
}
.pu-final .pu-btn { align-self: center; margin-top: 0; }

/* Варіант без роздільника — коли блок відкриває секцію, а не завершує її. */
.pu-final--bare { margin-top: 0; padding-top: 0; border-top: 0; }

/* Рядок-післямова під фінальним блоком. Окремий клас, а не .pu-contact:
 * той живе всередині грид-картки CTA і має свій роздільник та відступи.
 *
 * Селектор навмисно з префіксом .prourok-page (два класи), а не голий
 * .pu-final-note (один клас): інакше програє за специфічністю глобальному
 * скидачу відступів .prourok-page p { margin: 0 0 1.1em } — той формально
 * сильніший за один клас, і верхній відступ обнулявся, хоч у джерелі стояв
 * нижче. Саме це й «приклеювало» рядок до кнопки. */
.prourok-page .pu-final-note {
  margin: 28px 0 0;
  text-align: center;
  font-size: 15.5px;
  color: rgba(255, 255, 255, .62);
}
.prourok-page .pu-final-note a { color: #F5A54F; text-decoration: underline; text-underline-offset: 2px; }
.prourok-page .pu-final-note a:hover { color: #ffffff; }

/* Кнопка-контур на темному фоні: базовий варіант має темно-синій бордер,
 * який на цій смузі просто не видно. */
.pu-dark .pu-btn--ghost,
.prourok-page .pu-dark .pu-btn--ghost {
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, .55) !important;
}
.pu-dark .pu-btn--ghost:hover,
.prourok-page .pu-dark .pu-btn--ghost:hover {
  background: #ffffff !important;
  color: var(--pu-navy) !important;
}

/* --- Темна тема --- */
.dark .prourok-page .pu-step-num { color: #24384B; }

/* --- Адаптив --- */
@media (max-width: 1024px) {
  .pu-hero-split { grid-template-columns: 1fr; gap: 36px; }
}
@media (max-width: 782px) {
  .pu-checklist { padding: 24px 22px; }
  .pu-step-num { font-size: 38px; }
  .pu-hero-actions { gap: 14px; }
  .pu-final { margin-top: 36px; padding-top: 32px; }
}

/* ---------------------------------------------------------------------------
 * 18c. Сторінка «Довідка»
 *
 * Акордеони зроблені на нативних <details>/<summary> — без жодного рядка JS.
 * Причина та сама, що й з Tailwind: чим менше сторінка залежить від зовнішніх
 * скриптів, тим менше способів у неї зламатися на живому хостингу. Нативний
 * елемент до того ж працює з клавіатури й доступний для скрінрідерів «з
 * коробки», а пошуковики бачать текст відповіді навіть у згорнутому стані.
 * ------------------------------------------------------------------------- */

/* Коротший hero: на довідці банер — це вказівник, а не окремий екран. */
.pu-hero--short { padding: 72px 0 76px; }

/* Швидкий перехід до розділів */
.pu-jump { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.prourok-page .pu-jump a {
  display: inline-flex !important;
  align-items: center;
  padding: 10px 20px;
  border: 1px solid rgba(255, 255, 255, .32);
  border-radius: 999px;
  font-size: 15px;
  font-weight: 600;
  color: #ffffff !important;
  text-decoration: none !important;
  transition: background .2s ease, border-color .2s ease;
}
.prourok-page .pu-jump a:hover {
  background: rgba(255, 255, 255, .12);
  border-color: rgba(255, 255, 255, .55);
}

/* --- Акордеон --- */
.pu-faq { display: grid; gap: 12px; max-width: 920px; }

.pu-faq details {
  background: var(--pu-card);
  border: 1px solid var(--pu-line);
  border-radius: 14px;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.pu-faq details:hover { border-color: #CBDCEC; }
.pu-faq details[open] {
  border-color: #CBDCEC;
  box-shadow: 0 4px 12px rgba(15, 30, 46, .07);
}

.prourok-page .pu-faq summary {
  position: relative;
  display: block;              /* Firefox: без цього лишається типовий трикутник */
  padding: 20px 60px 20px 24px;
  list-style: none;
  cursor: pointer;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 17px;
  font-weight: 700;
  line-height: 1.45;
  color: var(--pu-navy);
}
.prourok-page .pu-faq summary::-webkit-details-marker { display: none; }
.prourok-page .pu-faq summary:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px var(--pu-orange);
  border-radius: 14px;
}

/* Шеврон намальований бордерами: без svg у розмітці й без залежності від
 * іконкового шрифту. */
.prourok-page .pu-faq summary::after {
  content: "";
  position: absolute;
  right: 26px;
  top: 50%;
  width: 11px;
  height: 11px;
  border-right: 2px solid var(--pu-orange);
  border-bottom: 2px solid var(--pu-orange);
  transform: translateY(-70%) rotate(45deg);
  transition: transform .2s ease;
}
.prourok-page .pu-faq details[open] summary::after {
  transform: translateY(-25%) rotate(225deg);
}

.prourok-page .pu-faq-body {
  padding: 0 24px 22px;
  font-size: 16px;
  line-height: 1.65;
  color: var(--pu-muted);
}
.prourok-page .pu-faq-body p { margin: 0 0 12px; }
.prourok-page .pu-faq-body p:last-child { margin-bottom: 0; }
.prourok-page .pu-faq-body ol,
.prourok-page .pu-faq-body ul { margin: 0 0 12px; padding-left: 22px; }
.prourok-page .pu-faq-body li { margin-bottom: 6px; }
.prourok-page .pu-faq-body a {
  color: var(--pu-orange);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.prourok-page .pu-faq-body strong { color: var(--pu-navy); }

/* --- Темна тема --- */
.dark .prourok-page .pu-faq summary { color: #ffffff; }
.dark .prourok-page .pu-faq-body strong { color: #ffffff; }
.dark .pu-faq details:hover,
.dark .pu-faq details[open] { border-color: #34506B; }

/* --- Адаптив --- */
@media (max-width: 782px) {
  .pu-hero--short { padding: 56px 0 60px; }
  .prourok-page .pu-faq summary { padding: 17px 50px 17px 18px; font-size: 16px; }
  .prourok-page .pu-faq-body { padding: 0 18px 18px; font-size: 15.5px; }
  .prourok-page .pu-jump a { padding: 9px 16px; font-size: 14px; }
}

/* ---------------------------------------------------------------------------
 * 19. Класи, прозорість матеріалу (позначка ШІ + джерела)
 *
 * Живе тут, а не в Tailwind-утилітах, бо ці елементи потрібні й у сайдбарі
 * каталогу, і у формі автора, і на сторінці товару — а theme.css підключається
 * завжди, незалежно від стану Tailwind-білду.
 * ------------------------------------------------------------------------- */

/* --- 19a. Сітка класів --- */
.pu-grade-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 8px;
}
.pu-grade-grid--filter { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; }

.pu-grade { position: relative; margin: 0; }
.pu-grade input {
  position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;
}
.pu-grade > span {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  aspect-ratio: 1 / 1.06;
  border: 1.5px solid #DDE5EC; border-radius: 9px; background: #fff;
  font-family: 'Manrope', sans-serif; font-weight: 600; font-size: 16px;
  color: #0E3557; cursor: pointer; user-select: none;
  transition: transform .13s cubic-bezier(.34,1.56,.64,1), background .16s, border-color .16s, color .16s, box-shadow .16s;
}
.pu-grade > span > i {
  font-style: normal; font-size: 9px; font-weight: 500; letter-spacing: .04em;
  color: #7C8CA0; margin-top: 1px; transition: color .16s;
}
.pu-grade-grid--filter > .pu-grade > span { font-size: 14px; border-radius: 8px; }
.pu-grade-grid--filter > .pu-grade > span > i { font-size: 8px; }

.pu-grade > span:hover { border-color: #12436C; transform: translateY(-2px); }
.pu-grade input:checked + span {
  background: #12436C; border-color: #12436C; color: #fff;
  box-shadow: 0 6px 14px -6px rgba(18,67,108,.55);
}
.pu-grade input:checked + span > i { color: #F5C79A; }
.pu-grade input:focus-visible + span { box-shadow: 0 0 0 3px rgba(235,128,24,.4); }

/* Класи без матеріалів у сайдбарі: видимі, але неактивні — учитель бачить усю
   шкалу, при цьому фільтр не пропонує варіант із нульовим результатом. */
.pu-grade.is-empty > span {
  opacity: .38; cursor: not-allowed; background: #F6F8FA;
}
.pu-grade.is-empty > span:hover { border-color: #DDE5EC; transform: none; }

/* Застарілі діапазони («5–7 клас») — окремим рядком чипів, щоб було видно,
   що вони не частина нової шкали й підлягають перепризначенню. */
.pu-grade-legacy { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.pu-grade-chip { position: relative; margin: 0; }
.pu-grade-chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.pu-grade-chip > span {
  display: inline-flex; align-items: center; padding: 6px 13px;
  border: 1.5px dashed #DDE5EC; border-radius: 99px;
  font-size: 13px; font-weight: 500; color: #566A7E; cursor: pointer;
  transition: .16s;
}
.pu-grade-chip input:checked + span {
  background: #12436C; border-color: #12436C; border-style: solid; color: #fff;
}

/* --- 19b. Пресети діапазонів --- */
.pu-grade-presets { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 14px; }
.pu-preset {
  font-family: inherit; font-size: 13px; font-weight: 600; color: #12436C;
  background: #fff; border: 1.5px solid #DDE5EC; border-radius: 99px;
  padding: 6px 14px; cursor: pointer; transition: .16s;
}
.pu-preset:hover { border-color: #12436C; background: #EAF1F8; }
.pu-preset--clear { color: #7C8CA0; margin-left: auto; }
.pu-preset--clear:hover { border-color: #EB8018; color: #C96A0E; background: #FEF3E7; }

.pu-grade-tally {
  margin: 14px 0 0; padding-top: 12px; border-top: 1px dashed #DDE5EC;
  font-size: 13.5px; color: #7C8CA0;
}
.pu-grade-tally b { color: #0E3557; font-weight: 600; }

.pu-hint-pill {
  font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
  color: #7C8CA0; background: #F4F7FA; border: 1px solid #DDE5EC;
  border-radius: 99px; padding: 3px 9px;
}

/* --- 19c. Чекбокс-картка (ШІ, «без прив'язки до класу») --- */
.pu-flag {
  display: flex; gap: 13px; align-items: flex-start; padding: 15px 16px;
  border: 1.5px solid #DDE5EC; border-radius: 10px; background: #fff;
  cursor: pointer; transition: border-color .18s, background .18s, box-shadow .18s;
}
.pu-flag:hover { border-color: #F5C79A; }
.pu-flag input { position: absolute; opacity: 0; width: 0; height: 0; }
.pu-flag-box {
  flex: 0 0 auto; width: 20px; height: 20px; margin-top: 1px;
  border: 2px solid #C3CFDA; border-radius: 5px; background: #fff;
  position: relative; transition: .18s;
}
.pu-flag-box::after {
  content: ''; position: absolute; left: 6px; top: 2px; width: 4px; height: 9px;
  border: solid #fff; border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg) scale(.4); opacity: 0; transition: .18s;
}
.pu-flag input:checked ~ .pu-flag-box { background: #EB8018; border-color: #EB8018; }
.pu-flag input:checked ~ .pu-flag-box::after { opacity: 1; transform: rotate(45deg) scale(1); }
.pu-flag input:checked ~ .pu-flag-txt strong { color: #C96A0E; }
.pu-flag:has(input:checked) {
  border-color: #EB8018; background: #FEF3E7; box-shadow: 0 0 0 3px rgba(235,128,24,.09);
}
.pu-flag input:focus-visible ~ .pu-flag-box { box-shadow: 0 0 0 3px rgba(235,128,24,.35); }
.pu-flag-txt strong {
  display: block; font-weight: 600; font-size: 15px; color: #0E3557;
  margin-bottom: 3px; transition: color .18s;
}
.pu-flag-txt small { display: block; color: #7C8CA0; font-size: 13px; line-height: 1.5; }

.pu-reveal {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 12px 15px; border: 1px solid #DDE5EC; border-radius: 9px; background: #FBFCFD;
}
.pu-reveal[hidden] { display: none; }

/* --- 19d. Бейдж ШІ --- */
.pu-ai-badge {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 12px; font-weight: 600; color: #0E3557;
  background: #fff; border: 1.5px solid #F5C79A; border-radius: 99px;
  padding: 4px 12px 4px 5px; white-space: nowrap;
}
.pu-ai-badge > i {
  font-style: normal; font-size: 9.5px; font-weight: 700; letter-spacing: .02em;
  width: 19px; height: 19px; border-radius: 50%; background: #EB8018; color: #fff;
  display: grid; place-items: center; flex: 0 0 auto;
}
.pu-ai-badge--compact { padding: 3px; border-color: rgba(255,255,255,.75); box-shadow: 0 1px 4px rgba(15,30,46,.18); }

/* --- 19e. Блок прозорості на сторінці товару --- */
.pu-transparency-ai {
  display: flex; align-items: flex-start; gap: 10px; margin: 0 0 14px;
  font-size: 13.5px; line-height: 1.55; color: #566A7E;
}
.pu-transparency-ai > .pu-ai-badge { margin-top: 1px; }

.pu-sources { border: 1px solid #DDE5EC; border-radius: 10px; background: #FBFCFD; }
.pu-sources > summary {
  display: flex; align-items: center; gap: 9px; cursor: pointer;
  padding: 12px 15px; font-size: 13.5px; font-weight: 600; color: #0E3557;
  list-style: none;
}
.pu-sources > summary::-webkit-details-marker { display: none; }
.pu-sources > summary::after {
  content: ''; width: 7px; height: 7px; margin-left: auto;
  border-right: 2px solid #7C8CA0; border-bottom: 2px solid #7C8CA0;
  transform: rotate(45deg); transition: transform .2s;
}
.pu-sources[open] > summary::after { transform: rotate(-135deg); }
.pu-sources > summary > span {
  font-size: 11px; font-weight: 700; color: #C96A0E;
  background: #FEF3E7; border-radius: 99px; padding: 1px 7px;
}
.pu-sources > ul {
  margin: 0; padding: 0 15px 14px 32px; list-style: decimal;
  font-size: 13px; line-height: 1.6; color: #566A7E;
}
.pu-sources > ul > li { margin-bottom: 5px; word-break: break-word; }
.pu-sources > ul > li:last-child { margin-bottom: 0; }

/* --- 19f. Темна тема --- */
.dark .pu-grade > span { background: #12212E; border-color: #24384B; color: #E7EEF5; }
.dark .pu-grade > span > i { color: #7E97AF; }
.dark .pu-grade.is-empty > span { background: #0F1C27; }
.dark .pu-grade-chip > span { border-color: #24384B; color: #A9C0D3; }
.dark .pu-preset { background: #12212E; border-color: #24384B; color: #CBDCEC; }
.dark .pu-preset:hover { background: #17293A; border-color: #3E6E9E; }
.dark .pu-hint-pill { background: #17293A; border-color: #24384B; color: #7E97AF; }
.dark .pu-flag { background: #12212E; border-color: #24384B; }
.dark .pu-flag-txt strong { color: #fff; }
.dark .pu-flag-txt small { color: #9DB4C8; }
.dark .pu-flag:has(input:checked) { background: rgba(235,128,24,.10); border-color: #C96A0E; }
.dark .pu-flag input:checked ~ .pu-flag-txt strong { color: #F9C489; }
.dark .pu-reveal { background: #0F1C27; border-color: #24384B; }
.dark .pu-ai-badge { background: #12212E; color: #E7EEF5; border-color: #6E3907; }
.dark .pu-sources { background: #0F1C27; border-color: #24384B; }
.dark .pu-sources > summary { color: #fff; }
.dark .pu-sources > summary > span { background: rgba(235,128,24,.16); color: #F9C489; }
.dark .pu-sources > ul { color: #9DB4C8; }
.dark .pu-grade-tally { border-top-color: #24384B; color: #9DB4C8; }
.dark .pu-grade-tally b { color: #fff; }
.dark .pu-transparency-ai { color: #9DB4C8; }

/* --- 19g. Адаптив --- */
@media (max-width: 900px) {
  .pu-grade-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .pu-grade-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .pu-grade-grid--filter { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .pu-preset--clear { margin-left: 0; }
}

/* ---------------------------------------------------------------------------
   20. ПРЕВ'Ю МАТЕРІАЛУ (сітка під обкладинкою + лайтбокс)
   Файл: inc/product-previews.php, assets/js/previews.js, preview-maker.js
   --------------------------------------------------------------------------- */

/* --- 20a. Сітка прев'ю --- */
.pu-previews { margin-top: 22px; }

.pu-previews-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 12px; }
.pu-previews-title {
  margin: 0; font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-size: 13px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #0E3557;
}
.pu-previews-count {
  margin-left: auto; font-size: 12px; font-weight: 600; color: #C96A0E;
  background: #FEF3E7; border-radius: 99px; padding: 2px 9px;
}

.pu-previews-grid {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px; margin: 0; padding: 0; list-style: none;
}
.pu-previews-grid > li { margin: 0; }

.pu-previews-cell {
  opacity: 0; transform: translateY(10px);
  transition: opacity .45s ease, transform .45s cubic-bezier(.22,.61,.36,1);
  transition-delay: calc(var(--pu-i, 0) * 55ms);
}
.pu-previews-cell.is-in { opacity: 1; transform: none; }

.pu-preview {
  display: block; position: relative; width: 100%; padding: 0;
  border: 1px solid #DDE5EC; border-radius: 12px; overflow: hidden;
  background: #F4F7FA; cursor: zoom-in; aspect-ratio: 3 / 4;
  transition: border-color .18s ease, box-shadow .22s ease, transform .22s cubic-bezier(.22,.61,.36,1);
}
.pu-preview::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  border-radius: 11px; box-shadow: inset 0 0 0 1px rgba(15,30,46,.05);
}
.pu-preview > img {
  display: block; width: 100%; height: 100%; object-fit: contain; object-position: center;
  -webkit-user-select: none; user-select: none; -webkit-user-drag: none;
}
.pu-preview:hover, .pu-preview:focus-visible {
  border-color: #F5A54F; transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(15,30,46,.10), 0 12px 28px rgba(18,67,108,.10); outline: none;
}
.pu-preview:focus-visible { box-shadow: 0 0 0 3px rgba(235,128,24,.35); }

.pu-preview-num {
  position: absolute; top: 7px; left: 7px; z-index: 2;
  min-width: 20px; height: 20px; padding: 0 6px; display: grid; place-items: center;
  border-radius: 6px; background: rgba(14,53,87,.78); backdrop-filter: blur(4px);
  color: #fff; font-size: 11px; font-weight: 700; line-height: 1;
}
.pu-preview-zoom {
  position: absolute; right: 7px; bottom: 7px; z-index: 2;
  display: grid; place-items: center; height: 28px; width: 28px;
  border-radius: 8px; background: rgba(255,255,255,.94); color: #12436C;
  box-shadow: 0 1px 4px rgba(15,30,46,.18);
  opacity: 0; transform: translateY(4px) scale(.9);
  transition: opacity .18s ease, transform .18s cubic-bezier(.22,.61,.36,1);
}
.pu-preview:hover .pu-preview-zoom, .pu-preview:focus-visible .pu-preview-zoom { opacity: 1; transform: none; }

.pu-previews-note {
  display: flex; align-items: flex-start; gap: 7px;
  margin: 11px 0 0; font-size: 12px; line-height: 1.5; color: #7C8CA0;
}
.pu-previews-note svg { flex: 0 0 auto; margin-top: 2px; color: #9DB4C8; }

.pu-previews-warn {
  margin: 10px 0 0; padding: 9px 12px; border-radius: 10px;
  background: #FEF3E7; border: 1px solid #F9C489; font-size: 12px; line-height: 1.5; color: #9E520B;
}
.pu-previews-warn code { font-size: 11px; }

/* --- 20b. Лайтбокс --- */
html.pu-lb-lock { overflow: hidden; }

.pu-lb { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; }
.pu-lb[hidden] { display: none; }

.pu-lb-backdrop {
  position: absolute; inset: 0; background: rgba(7,27,44,.86);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  opacity: 0; transition: opacity .2s ease;
}
.pu-lb.is-open .pu-lb-backdrop { opacity: 1; }

.pu-lb-shell {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  width: 100%; max-width: 1600px; padding: 14px;
  opacity: 0; transform: scale(.96) translateY(10px);
  transition: opacity .2s ease, transform .26s cubic-bezier(.22,.61,.36,1);
}
.pu-lb.is-open .pu-lb-shell { opacity: 1; transform: none; }

/* Лічильник сторінок + хрестик закривання: рядок над карткою перегляду,
 * хрестик — праворуч (margin-left:auto штовхає його до правого краю рядка,
 * тобто до правого краю самої картки, бо рядок обмежений max-width:92vw). */
.pu-lb-bar { display: flex; align-items: center; gap: 12px; width: 100%; max-width: 92vw; }

.pu-lb-counter {
  display: inline-flex; align-items: baseline; gap: 3px;
  font-size: 13px; color: rgba(255,255,255,.62); font-variant-numeric: tabular-nums;
}
.pu-lb-counter b { font-size: 15px; font-weight: 700; color: #fff; }
.pu-lb-counter i { font-style: normal; opacity: .45; }

.pu-lb-btn {
  display: flex; align-items: center; justify-content: center; height: 40px; width: 40px;
  border-radius: 12px; border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.08); color: #fff; cursor: pointer; padding: 0;
  transition: background .16s ease, border-color .16s ease, transform .16s ease;
}
.pu-lb-btn:hover { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.28); }
.pu-lb-btn:active { transform: scale(.94); }
.pu-lb-close { margin-left: auto; }

/* SVG усередині кнопок: браузер за замовчуванням трактує <svg> як inline-
   елемент і лишає під ним "хвостик" висоти рядка (як під літерами p, g) —
   через це іконка виглядала трохи вище центру. display:block прибирає цей
   хвостик, тож flex/grid-центрування кнопки центрує саме іконку. */
.pu-lb-btn svg,
.pu-lb-nav svg {
  display: block;
  flex-shrink: 0;
}

.pu-lb-stage { position: relative; display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; }

.pu-lb-figure {
  position: relative; margin: 0; display: flex; align-items: center; justify-content: center;
  border-radius: 10px; overflow: hidden; background: rgba(255,255,255,.04);
  box-shadow: 0 24px 70px rgba(0,0,0,.45);
}

/* КЛЮЧОВА ВИМОГА: збільшене зображення займає 80% висоти екрана.
   svh враховує адресний рядок мобільних браузерів; vh — запасний варіант. */
.pu-lb-img {
  display: block; height: 80vh; height: 80svh;
  width: auto; max-width: 92vw; object-fit: contain;
  -webkit-user-select: none; user-select: none; -webkit-user-drag: none;
  opacity: 0; transition: opacity .22s ease;
}
.pu-lb-img.is-ready { opacity: 1; }

.pu-lb-spinner {
  position: absolute; height: 30px; width: 30px; border-radius: 50%;
  border: 2px solid rgba(255,255,255,.22); border-top-color: #F5A54F;
  animation: pu-spin .7s linear infinite;
}
@keyframes pu-spin { to { transform: rotate(360deg); } }

/* Стрілки гортання — поряд зі зображенням: flex-сусіди .pu-lb-figure
 * всередині .pu-lb-stage (див. gap:10px вище), а не десь окремо на екрані. */
.pu-lb-nav {
  flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
  height: 48px; width: 48px; padding: 0;
  border-radius: 50%; border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.08); color: #fff; cursor: pointer;
  transition: background .16s ease, transform .16s ease;
}
.pu-lb-nav:hover { background: rgba(255,255,255,.18); }
.pu-lb-nav:active { transform: scale(.92); }

.pu-lb-strip { display: flex; gap: 8px; max-width: 92vw; overflow-x: auto; padding: 2px; scrollbar-width: none; }
.pu-lb-strip::-webkit-scrollbar { display: none; }
.pu-lb-thumb {
  flex: 0 0 auto; height: 54px; width: 42px; padding: 0;
  border-radius: 7px; overflow: hidden; cursor: pointer;
  border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.06);
  opacity: .5; transition: opacity .16s ease, border-color .16s ease, transform .16s ease;
}
.pu-lb-thumb > img { display: block; height: 100%; width: 100%; object-fit: cover; }
.pu-lb-thumb:hover { opacity: .85; }
.pu-lb-thumb.is-active { opacity: 1; border-color: #F5A54F; transform: translateY(-2px); }

/* --- 20c. Темна тема --- */
.dark .pu-previews-title { color: #fff; }
.dark .pu-previews-count { background: rgba(235,128,24,.16); color: #F9C489; }
.dark .pu-preview { background: #0F1C27; border-color: #24384B; }
.dark .pu-preview::after { box-shadow: inset 0 0 0 1px rgba(255,255,255,.04); }
.dark .pu-preview:hover, .dark .pu-preview:focus-visible { border-color: #C96A0E; }
.dark .pu-preview-zoom { background: #17293A; color: #CBDCEC; }
.dark .pu-previews-note { color: #7E97AF; }
.dark .pu-previews-note svg { color: #4E6B85; }
.dark .pu-previews-warn { background: rgba(235,128,24,.10); border-color: #6E3907; color: #F9C489; }

/* --- 20d. Адаптив --- */
@media (max-width: 640px) {
  .pu-previews-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .pu-lb-shell { padding: 8px; gap: 8px; }
  .pu-lb-img { height: 80vh; height: 80svh; max-width: 96vw; }
  /* На вузькому екрані обабіч зображення немає місця для стрілок у потоці —
     кладемо їх поверх картинки, вертикально по центру. */
  .pu-lb-nav { position: absolute; top: 50%; transform: translateY(-50%); height: 40px; width: 40px; z-index: 2; }
  .pu-lb-nav:active { transform: translateY(-50%) scale(.92); }
  .pu-lb-prev { left: 2px; }
  .pu-lb-next { right: 2px; }
  .pu-lb-strip { max-width: 96vw; }
}

/* --- 20e. Зменшена анімація --- */
@media (prefers-reduced-motion: reduce) {
  .pu-previews-cell { opacity: 1; transform: none; transition: none; }
  .pu-lb-shell, .pu-lb-backdrop, .pu-lb-img, .pu-preview, .pu-lb-nav { transition: none; }
  .pu-lb-spinner { animation: none; }
}

/* --- 20f. Друк --- */
@media print { .pu-lb { display: none !important; } }

/* --- 20g. Форма автора: наявні прев'ю + автозбірка з PDF --- */
.pu-prev-existing { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
.pu-prev-old { position: relative; display: block; width: 84px; cursor: pointer; }
.pu-prev-old-img {
  display: block; width: 84px; height: 108px; object-fit: cover;
  border-radius: 9px; border: 1px solid #DDE5EC; background: #F4F7FA;
  transition: opacity .16s ease, filter .16s ease;
}
.pu-prev-old-n {
  position: absolute; top: 5px; left: 5px; min-width: 18px; height: 18px; padding: 0 5px;
  display: grid; place-items: center; border-radius: 5px;
  background: rgba(14,53,87,.78); color: #fff; font-size: 10px; font-weight: 700;
}
.pu-prev-old-rm { display: flex; align-items: center; gap: 5px; margin-top: 5px; font-size: 11.5px; color: #7C8CA0; }
.pu-prev-old:has(input:checked) .pu-prev-old-img { opacity: .35; filter: grayscale(1); }
.pu-prev-old:has(input:checked) .pu-prev-old-rm { color: #C0392B; font-weight: 600; }

.pu-maker { margin-bottom: 12px; padding: 12px 14px; border: 1px dashed #CBDCEC; border-radius: 12px; background: #F7FAFC; }
.pu-maker[data-state="ok"]   { border-color: #9DCFA8; background: #F3FAF5; border-style: solid; }
.pu-maker[data-state="fail"] { border-color: #F9C489; background: #FEF7EF; border-style: solid; }
.pu-maker-head { display: flex; align-items: center; gap: 9px; font-size: 13px; color: #0E3557; }
.pu-maker-head b { font-weight: 600; }
.pu-maker-dot {
  flex: 0 0 auto; height: 9px; width: 9px; border-radius: 50%;
  background: #F5A54F; box-shadow: 0 0 0 0 rgba(245,165,79,.6); animation: pu-pulse 1.6s ease-out infinite;
}
.pu-maker[data-state="ok"]   .pu-maker-dot { background: #2E9E5B; animation: none; }
.pu-maker[data-state="fail"] .pu-maker-dot { background: #C96A0E; animation: none; }
@keyframes pu-pulse { 70% { box-shadow: 0 0 0 7px rgba(245,165,79,0); } 100% { box-shadow: 0 0 0 0 rgba(245,165,79,0); } }
.pu-maker-clear {
  margin-left: auto; border: 0; background: none; cursor: pointer;
  font-size: 12px; font-weight: 600; color: #7C8CA0; text-decoration: underline;
}
.pu-maker-clear:hover { color: #C96A0E; }
.pu-maker-strip { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.pu-maker-strip:empty { margin-top: 0; }
.pu-maker-thumb {
  position: relative; width: 62px; height: 80px; border-radius: 7px; overflow: hidden;
  border: 1px solid #DDE5EC; background: #fff; animation: pu-pop .3s cubic-bezier(.22,.61,.36,1) both;
}
.pu-maker-thumb > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pu-maker-thumb > span {
  position: absolute; top: 3px; left: 3px; min-width: 15px; height: 15px; padding: 0 4px;
  display: grid; place-items: center; border-radius: 4px;
  background: rgba(14,53,87,.8); color: #fff; font-size: 9px; font-weight: 700;
}
@keyframes pu-pop { from { opacity: 0; transform: scale(.9); } }

.dark .pu-prev-old-img { border-color: #24384B; background: #0F1C27; }
.dark .pu-prev-old-rm { color: #7E97AF; }
.dark .pu-maker { background: #0F1C27; border-color: #24384B; }
.dark .pu-maker[data-state="ok"] { background: rgba(46,158,91,.08); border-color: #2E9E5B; }
.dark .pu-maker[data-state="fail"] { background: rgba(235,128,24,.08); border-color: #6E3907; }
.dark .pu-maker-head { color: #E7EEF5; }
.dark .pu-maker-thumb { background: #12212E; border-color: #24384B; }

/* --- 20h. Сумісність із woocommerce-layout.css -----------------------------
   WooCommerce досі розкладає картку товару float-ами:
     .woocommerce div.product div.images  { float: left;  width: 48% }
     .woocommerce div.product div.summary { float: right; width: 48% }
   Галерея отримує клас `images`, панель купівлі — `summary`, тож ці правила
   діють і тут, хоча колонки будує CSS Grid (.prourok-single-grid).

   Наслідки, які це давало:
   1) Звичайні блоки обтікають float непомітно, але .pu-previews-head і
      .pu-previews-grid — flex/grid-контейнери. Вони створюють власний контекст
      форматування й не мають права накладатися на float: Chrome/Brave тиснуть
      їх до нульової ширини праворуч від галереї (блок прев'ю «наїжджав» на
      праву колонку), Firefox переносить під неї — тому баг був лише в Chrome.
   2) .summary через width:48% займала половину своєї грид-клітинки в усіх
      браузерах — права колонка була невиправдано вузькою.

   Float у грид-розкладці не потрібен взагалі, тому знімаємо його.
   --------------------------------------------------------------------------- */
.prourok-single-gallery .woocommerce-product-gallery,
.woocommerce div.product .prourok-single-gallery .woocommerce-product-gallery {
  float: none !important;
  /* рамка 1px + width:100% давали 2px виносу за колонку (Tailwind preflight
     тут вимкнено, тож box-sizing за замовчуванням content-box) */
  box-sizing: border-box;
}
.prourok-single-summary,
.woocommerce div.product div.summary.prourok-single-summary {
  float: none !important;
  width: 100% !important;
}

/* Підстраховка: навіть якщо десь лишиться чужий float, блок прев'ю
   починається з нового рядка й не звужується. */
.pu-previews {
  clear: both;
  float: none;
  width: 100%;
  max-width: 100%;
}
.pu-previews-head,
.pu-previews-grid,
.pu-previews-note {
  min-width: 0;   /* grid/flex-нащадки не мають розпирати колонку */
}
/* ============================================================
   39. Умови завантаження (кабінет + сторінка товару)
   ============================================================ */

.prourok-page.pu-dl-notice {
	margin: 0 0 1.5rem;
	padding: 1rem 1.25rem;
	background: #f4f7fb;
	border-left: 4px solid #1b4f82;
	border-radius: 4px;
}

.prourok-page .pu-dl-notice__main {
	margin: 0 0 .5rem;
	font-size: .95rem;
	line-height: 1.5;
}

.prourok-page .pu-dl-notice__warn {
	margin: 0;
	font-size: .875rem;
	line-height: 1.5;
	color: #8a4b00;
}

.prourok-page.pu-dl-terms {
	margin: 1rem 0 0;
	padding: .625rem .875rem;
	font-size: .9rem;
	line-height: 1.4;
	color: #444;
	background: #fbfbfc;
	border: 1px solid #e3e6ea;
	border-radius: 4px;
}

.prourok-page .pu-dl-terms__icon {
	color: #e07b1f;
	font-weight: 700;
	margin-right: .35rem;
}


/* ============================================================
   21. Тип матеріалу — комбобокс із пошуком (форма подачі)
   Прогресивне покращення: без JS лишається список чекбоксів
   (.pu-mt__native), з JS він ховається й працює .pu-mt__control.
   ============================================================ */

.pu-mt { margin-top: 4px; }

/* --- 21a. Fallback: список чекбоксів без JS --- */
.pu-mt__group {
  font-size: 12px; font-weight: 700; color: #8A99A8; text-transform: uppercase;
  letter-spacing: .03em; margin: 14px 0 6px; padding: 0 2px;
}
.pu-mt__group:first-child { margin-top: 0; }
.pu-mt__opts { display: flex; flex-wrap: wrap; gap: 6px; }

.pu-mt__native-opt { position: relative; margin: 0; }
.pu-mt__native-opt input { position: absolute; opacity: 0; width: 0; height: 0; }
.pu-mt__native-opt > span {
  display: inline-flex; align-items: center; min-height: 36px; padding: 6px 14px;
  border: 1.5px dashed #DDE5EC; border-radius: 99px;
  font-size: 13.5px; font-weight: 500; color: #566A7E; cursor: pointer;
  transition: border-color .16s, background-color .16s, color .16s;
}
.pu-mt__native-opt > span:hover { border-color: #12436C; }
.pu-mt__native-opt input:checked + span {
  background: #12436C; border-color: #12436C; border-style: solid; color: #fff;
}
.pu-mt__native-opt input:focus-visible + span { box-shadow: 0 0 0 3px rgba(235,128,24,.4); }

/* З JS нативний список ховаємо, але лишаємо доступним для форми */
.pu-mt--enhanced .pu-mt__native {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.pu-mt--enhanced .pu-mt__summary--nojs { display: none; }

/* --- 21b. Поле комбобокса --- */
.pu-mt__control { position: relative; }

.pu-mt__field {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  min-height: 48px; padding: 6px 6px 6px 12px; cursor: text;
  background: #fff; border: 1px solid #DDE5EC; border-radius: 12px;
  transition: border-color .16s, box-shadow .16s;
}
.pu-mt__field:hover { border-color: #B9C7D4; }
.pu-mt__control.is-open .pu-mt__field,
.pu-mt__field:focus-within {
  border-color: #12436C; box-shadow: 0 0 0 3px rgba(18,67,108,.10);
}

.pu-mt__chips { display: contents; }

.pu-mt__chip {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 32px; padding: 4px 8px 4px 12px; margin: 0;
  font-family: inherit; font-size: 13px; font-weight: 500; line-height: 1;
  color: #fff; background: #12436C; border: none; border-radius: 99px;
  cursor: pointer; transition: background-color .16s;
}
.pu-mt__chip:hover { background: #0E3457; }
.pu-mt__chip:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(235,128,24,.45); }
.pu-mt__chip > i {
  display: inline-block; position: relative; width: 16px; height: 16px;
  border-radius: 50%; background: rgba(255,255,255,.18); flex: none;
}
.pu-mt__chip > i::before,
.pu-mt__chip > i::after {
  content: ''; position: absolute; left: 4px; top: 7.25px;
  width: 8px; height: 1.5px; background: #fff; border-radius: 1px;
}
.pu-mt__chip > i::before { transform: rotate(45deg); }
.pu-mt__chip > i::after  { transform: rotate(-45deg); }

.pu-mt__search {
  flex: 1 1 140px; min-width: 140px; height: 34px; padding: 0 2px; margin: 0;
  font-family: inherit; font-size: 14px; color: #12436C;
  background: none; border: none; outline: none; box-shadow: none;
}
.pu-mt__search::placeholder { color: #9AA9B7; }

.pu-mt__caret {
  flex: none; width: 34px; height: 34px; margin-left: auto; padding: 0;
  background: none; border: none; border-radius: 8px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background-color .16s;
}
.pu-mt__caret:hover { background: #F2F6FA; }
.pu-mt__caret:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(235,128,24,.45); }
.pu-mt__caret > span {
  width: 9px; height: 9px; border-right: 2px solid #7A8B9B; border-bottom: 2px solid #7A8B9B;
  transform: rotate(45deg) translate(-2px, -2px); transition: transform .18s ease;
}
.pu-mt__control.is-open .pu-mt__caret > span {
  transform: rotate(-135deg) translate(-3px, -3px);
}

/* --- 21c. Панель зі списком --- */
.pu-mt__panel {
  position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 6px);
  max-height: 288px; overflow-y: auto; padding: 10px 12px 12px;
  background: #fff; border: 1px solid #DDE5EC; border-radius: 12px;
  box-shadow: 0 12px 28px rgba(18,67,108,.12);
}
.pu-mt__panel[hidden] { display: none; }

.pu-mt__opt {
  display: inline-flex; align-items: center; min-height: 36px; padding: 6px 14px;
  font-family: inherit; font-size: 13.5px; font-weight: 500; color: #566A7E;
  background: none; border: 1.5px dashed #DDE5EC; border-radius: 99px;
  cursor: pointer; transition: border-color .16s, background-color .16s, color .16s;
}
.pu-mt__opt:hover,
.pu-mt__opt.is-active { border-color: #12436C; background: #F2F6FA; color: #12436C; }
.pu-mt__opt[aria-selected="true"] {
  background: #12436C; border-color: #12436C; border-style: solid; color: #fff;
}
.pu-mt__opt[aria-selected="true"]:hover { background: #0E3457; }
.pu-mt__opt.is-active { box-shadow: 0 0 0 3px rgba(235,128,24,.35); }

.pu-mt__empty { font-size: 13px; color: #8A99A8; margin: 6px 2px; }

/* --- 21d. Підсумок під полем --- */
.pu-mt__summary {
  font-size: 12.5px; line-height: 1.5; color: #8A99A8; margin: 8px 2px 0;
}
.pu-mt__summary.is-bundle { color: #C2650C; font-weight: 500; }

/* --- 21e. Темна тема --- */
.dark .pu-mt__group { color: #7E97AF; }
.dark .pu-mt__native-opt > span { border-color: #24384B; color: #A9BED2; }
.dark .pu-mt__native-opt > span:hover { border-color: #3E6E9E; }
.dark .pu-mt__native-opt input:checked + span { background: #1E5285; border-color: #1E5285; }
.dark .pu-mt__field { background: #0B1620; border-color: #24384B; }
.dark .pu-mt__field:hover { border-color: #35506B; }
.dark .pu-mt__control.is-open .pu-mt__field,
.dark .pu-mt__field:focus-within {
  border-color: #3E6E9E; box-shadow: 0 0 0 3px rgba(62,110,158,.22);
}
.dark .pu-mt__chip { background: #1E5285; }
.dark .pu-mt__chip:hover { background: #2A659E; }
.dark .pu-mt__search { color: #EAF1F8; }
.dark .pu-mt__search::placeholder { color: #64809B; }
.dark .pu-mt__caret:hover { background: #17293A; }
.dark .pu-mt__caret > span { border-color: #7E97AF; }
.dark .pu-mt__panel {
  background: #12212E; border-color: #24384B; box-shadow: 0 12px 28px rgba(0,0,0,.45);
}
.dark .pu-mt__opt { border-color: #24384B; color: #A9BED2; }
.dark .pu-mt__opt:hover,
.dark .pu-mt__opt.is-active { border-color: #3E6E9E; background: #17293A; color: #EAF1F8; }
.dark .pu-mt__opt[aria-selected="true"] { background: #1E5285; border-color: #1E5285; color: #fff; }
.dark .pu-mt__opt[aria-selected="true"]:hover { background: #2A659E; }
.dark .pu-mt__empty { color: #7E97AF; }
.dark .pu-mt__summary { color: #7E97AF; }
.dark .pu-mt__summary.is-bundle { color: #F0A552; }

/* --- 21f. Мобільні: більші цілі дотику --- */
@media (max-width: 640px) {
  .pu-mt__opt,
  .pu-mt__native-opt > span { min-height: 44px; padding: 10px 16px; }
  .pu-mt__chip { min-height: 36px; }
  .pu-mt__panel { max-height: 60vh; }
}

@media (prefers-reduced-motion: reduce) {
  .pu-mt__caret > span,
  .pu-mt__chip,
  .pu-mt__opt,
  .pu-mt__field { transition: none; }
}

/* ---------------------------------------------------------------------------
 * 22. Головна навігація (шапка сайту)
 *
 * До 1.12.0 меню в шапці не існувало взагалі: позиція 'primary' була
 * зареєстрована, але wp_nav_menu() для неї не викликався ніде.
 *
 * Стилі свідомо тут, а не в Tailwind-утилітах: шапка є на КОЖНІЙ сторінці,
 * а утиліта, дописана після останнього `npm run build`, у зібраний main.css
 * не потрапляє. Навігація — не те, що має право зникнути через несвіжий білд.
 *
 * Фірмова деталь: помаранчева лінія, що виростає зліва направо під пунктом
 * при наведенні, і лишається під активним розділом. Це відлуння стрілки
 * в логотипі — тому й напрямок руху саме такий.
 * ------------------------------------------------------------------------- */

.prourok-nav { display: none; }

@media (min-width: 1024px) {
  .prourok-nav { display: block; margin-left: 26px; }
}

.prourok-nav-list {
  display: flex;
  align-items: center;
  gap: 2px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.prourok-nav-list li { margin: 0; padding: 0; list-style: none; }

.prourok-nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding: 0 13px;
  border-radius: 10px;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 14.5px;
  font-weight: 600;
  letter-spacing: -0.005em;
  line-height: 1;
  white-space: nowrap;
  color: #3E5266;
  text-decoration: none;
  transition: color .18s ease, background-color .18s ease;
}

/* Лінія-підкреслення. Малюється завжди, але стиснута в нуль — так перехід
 * анімується в обидва боки, а не з'являється ривком. */
.prourok-nav-link::after {
  content: '';
  position: absolute;
  left: 13px;
  right: 13px;
  bottom: 7px;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, #EB8018 0%, #F5A54F 100%);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .28s cubic-bezier(.4, 0, .2, 1);
}

.prourok-nav-link:hover {
  color: #0E3557;
  background: #F6F9FC;
}
.prourok-nav-link:hover::after { transform: scaleX(1); }

.prourok-nav-link:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}

/* Активний розділ. Дублюємо селектор для меню з адмінки: там клас поточного
 * пункту WordPress ставить на <li>, а не на посилання. */
.prourok-nav-link.is-current,
.prourok-nav-list .current-menu-item > .prourok-nav-link,
.prourok-nav-list .current_page_item > .prourok-nav-link,
.prourok-nav-list .current-menu-ancestor > .prourok-nav-link {
  color: #12436C;
  font-weight: 700;
}
.prourok-nav-link.is-current::after,
.prourok-nav-list .current-menu-item > .prourok-nav-link::after,
.prourok-nav-list .current_page_item > .prourok-nav-link::after,
.prourok-nav-list .current-menu-ancestor > .prourok-nav-link::after {
  transform: scaleX(1);
}

/* --- 22a. Темна тема --- */
.dark .prourok-nav-link { color: #A9BED2; }
.dark .prourok-nav-link:hover { color: #ffffff; background: #17293A; }
.dark .prourok-nav-link.is-current,
.dark .prourok-nav-list .current-menu-item > .prourok-nav-link,
.dark .prourok-nav-list .current_page_item > .prourok-nav-link,
.dark .prourok-nav-list .current-menu-ancestor > .prourok-nav-link { color: #ffffff; }

/* --- 22b. Кнопка-бургер --- */
.prourok-nav-toggle { display: flex; }

@media (min-width: 1024px) {
  .prourok-nav-toggle { display: none !important; }
}

.prourok-burger {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  width: 18px;
  height: 14px;
}
.prourok-burger > span {
  display: block;
  height: 2px;
  width: 100%;
  border-radius: 2px;
  background: currentColor;
  transition: transform .26s cubic-bezier(.4, 0, .2, 1), opacity .18s ease;
}

/* Стан «відкрито»: верхня і нижня смуги сходяться в хрест, середня зникає. */
/* Селектор скоуплено на саму кнопку: атрибут aria-expanded є ще й у
 * комбобоксі типів матеріалу, і глобальний селектор одного дня зачепив би
 * чужу розмітку. */
.prourok-nav-toggle[aria-expanded="true"] .prourok-burger > span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.prourok-nav-toggle[aria-expanded="true"] .prourok-burger > span:nth-child(2) { opacity: 0; }
.prourok-nav-toggle[aria-expanded="true"] .prourok-burger > span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* --- 22c. Мобільна панель --- */
.prourok-nav-panel {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 29;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid #E2E8F0;
  box-shadow: 0 16px 32px rgba(15, 30, 46, .10);
  /* Закрита панель: стиснута по висоті й піднята вгору — виглядає так,
   * ніби вона висувається з-під самої шапки. */
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transform: translateY(-8px);
  transition: max-height .3s cubic-bezier(.4, 0, .2, 1), opacity .22s ease, transform .3s cubic-bezier(.4, 0, .2, 1);
}
.prourok-nav-panel[hidden] { display: none; }
.prourok-nav-panel.is-open {
  max-height: 78vh;
  overflow-y: auto;
  opacity: 1;
  transform: translateY(0);
}

.prourok-nav-panel__inner { padding: 10px 16px 16px; }

.prourok-nav-list--mobile { flex-direction: column; align-items: stretch; gap: 2px; }

.prourok-nav-list--mobile .prourok-nav-link {
  height: 48px;
  padding: 0 14px;
  font-size: 16px;
  border-radius: 12px;
}
/* На вузьких екранах підкреслення замінюємо вертикальною міткою зліва:
 * у списку рядків вона читається як «ви тут» краще, ніж лінія знизу. */
.prourok-nav-list--mobile .prourok-nav-link::after {
  left: 0;
  right: auto;
  top: 10px;
  bottom: 10px;
  width: 3px;
  height: auto;
  border-radius: 0 3px 3px 0;
  transform: scaleY(0);
  transform-origin: center top;
  transition: transform .24s cubic-bezier(.4, 0, .2, 1);
}
.prourok-nav-list--mobile .prourok-nav-link:hover::after,
.prourok-nav-list--mobile .prourok-nav-link.is-current::after,
.prourok-nav-list--mobile .current-menu-item > .prourok-nav-link::after,
.prourok-nav-list--mobile .current_page_item > .prourok-nav-link::after {
  transform: scaleY(1);
}

/* Поява рядків каскадом. Затримка рахується з --i, який проставляє PHP. */
.prourok-nav-panel.is-open .prourok-nav-list--mobile .prourok-nav-item {
  animation: prourokNavIn .34s cubic-bezier(.2, .7, .3, 1) both;
  animation-delay: calc(var(--i, 0) * 45ms);
}

@keyframes prourokNavIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Дії акаунта, приховані у вузькій шапці */
.prourok-nav-panel__actions {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid #E2E8F0;
}

.prourok-nav-action {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 46px;
  padding: 0 14px;
  border-radius: 12px;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 600;
  color: #3E5266;
  text-decoration: none;
  transition: background-color .18s ease, color .18s ease;
}
.prourok-nav-action:hover { background: #F6F9FC; color: #0E3557; }
/* Розмір задано явно, а не класами w-4 h-4: якщо білд Tailwind колись
 * відстане, іконка не має схлопнутися в нуль. */
.prourok-nav-action svg { flex-shrink: 0; width: 18px; height: 18px; color: #7E97AF; }

.dark .prourok-nav-panel {
  background: rgba(11, 22, 32, .97);
  border-bottom-color: #24384B;
  box-shadow: 0 16px 32px rgba(0, 0, 0, .45);
}
.dark .prourok-nav-panel__actions { border-top-color: #24384B; }
.dark .prourok-nav-action { color: #A9BED2; }
.dark .prourok-nav-action:hover { background: #17293A; color: #ffffff; }

/* --- 22d. Друк: навігація в PDF не потрібна --- */
@media print {
  .prourok-nav, .prourok-nav-toggle, .prourok-nav-panel { display: none !important; }
}

@media (prefers-reduced-motion: reduce) {
  .prourok-nav-link,
  .prourok-nav-link::after,
  .prourok-burger > span,
  .prourok-nav-panel,
  .prourok-nav-action { transition: none; }
  .prourok-nav-panel.is-open .prourok-nav-list--mobile .prourok-nav-item { animation: none; }
}

/* ---------------------------------------------------------------------------
 * 23. Компоненти замість крихких Tailwind-утиліт
 *
 * Кожен блок нижче раніше був набором утиліт прямо в шаблоні. Проблема не в
 * утилітах як таких, а в тому, що `npm run build` вирізає з main.css класи,
 * яких не було в шаблонах НА МОМЕНТ ЗБІРКИ. Клас, дописаний пізніше, мовчки
 * не застосовується: помилки немає, просто блок виглядає голим.
 *
 * Саме так у 1.11.0 попередження в кабінеті автора лишилося без фону й рамки
 * (bg-amber-50, border-amber-200 та ще шість класів були відсутні у білді від
 * 12.07, тоді як шаблони правились до 28.07).
 *
 * Тут ці блоки описані звичайним CSS у завжди підключеному файлі — їхній
 * вигляд більше не залежить від того, коли востаннє збирали Tailwind.
 * ------------------------------------------------------------------------- */

/* --- 23a. Плашка попередження (кабінет автора: файли не завантажились) --- */
.pu-alert {
  margin-bottom: 32px;
  padding: 18px 20px;
  border: 1px solid #E2E8F0;
  border-radius: 16px;
  background: #F8FAFC;
}
.pu-alert__title {
  margin: 0;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
  color: #0F1E2E;
}
.pu-alert__list {
  margin: 6px 0 0;
  padding-left: 20px;
  list-style: disc;
  font-size: 14px;
  line-height: 1.6;
}
.pu-alert__list li { margin: 0 0 2px; }
.pu-alert__note {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.5;
}

/* Попереджувальний варіант. Бурштиновий свідомо відрізняється від фірмового
 * помаранчевого: помаранчевий у цій темі означає «дія», а не «увага». */
.pu-alert--warn {
  border-color: #FDE68A;
  background: #FFFBEB;
}
.pu-alert--warn .pu-alert__title { color: #92400E; }
.pu-alert--warn .pu-alert__list,
.pu-alert--warn .pu-alert__note { color: #B45309; }

.dark .pu-alert { border-color: #24384B; background: #12212E; }
.dark .pu-alert__title { color: #ffffff; }
.dark .pu-alert--warn { border-color: #78350F; background: rgba(120, 53, 15, .24); }
.dark .pu-alert--warn .pu-alert__title { color: #FCD34D; }
.dark .pu-alert--warn .pu-alert__list,
.dark .pu-alert--warn .pu-alert__note { color: #FBBF24; }

/* Успішний варіант — для підтверджень у гаманці автора (розділ 34). */
.pu-alert--ok {
  border-color: #A7F3D0;
  background: #ECFDF5;
}
.pu-alert--ok .pu-alert__title { color: #065F46; }
.pu-alert--ok .pu-alert__list,
.pu-alert--ok .pu-alert__note { color: #047857; }

.dark .pu-alert--ok { border-color: #065F46; background: rgba(6, 95, 70, .24); }
.dark .pu-alert--ok .pu-alert__title { color: #6EE7B7; }
.dark .pu-alert--ok .pu-alert__list,
.dark .pu-alert--ok .pu-alert__note { color: #34D399; }

/* --- 23b. Заголовок поля з підказкою-пігулкою («можна обрати кілька») --- */
.pu-field-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 12px;
  margin-bottom: 6px;
}
.pu-field-head--tight { margin-bottom: 4px; }
.pu-field-head > label,
.pu-field-head > h2 {
  display: block;
  margin: 0;
}

/* --- 23c. Склад комплекту на сторінці товару --- */
.pu-bundle-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.pu-bundle-list li {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 6px;
  font-size: 13.5px;
  line-height: 1.5;
  color: #475569;
}
.pu-bundle-list li:last-child { margin-bottom: 0; }
.pu-bundle-list li > span:first-child { flex-shrink: 0; color: #1E5285; }

/* Формати згрупованого файла: «КТП геометрія  DOCX, PDF».
 * <em> без курсиву — тег обраний за семантику, вигляд задаємо тут. */
.pu-bundle-fmt {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 6px;
  background: #EAF1F8;
  color: #12436C;
  font-style: normal;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  white-space: nowrap;
  vertical-align: 1px;
}

.pu-bundle-note {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: #64748B;
}

.dark .pu-bundle-list li { color: #C7D2DE; }
.dark .pu-bundle-list li > span:first-child { color: #9DBBD8; }
.dark .pu-bundle-note { color: #A9BED2; }
.dark .pu-bundle-fmt { background: #1B2E40; color: #9DBBD8; }

/* ---------------------------------------------------------------------------
 * 24. Оформлення замовлення: пояснення про цифрову доставку
 *
 * Знімає головне питання покупця файлу — «коли я його отримаю». Стоїть до
 * форми, бо після неї його вже ніхто не читає.
 * ------------------------------------------------------------------------- */

.pu-checkout-note {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  max-width: 1120px;
  margin: 0 auto 22px;
  padding: 16px 20px;
  border: 1px solid #CBDCEC;
  border-left: 3px solid #EB8018;
  border-radius: 0 14px 14px 0;
  background: #F4F8FB;
}
.pu-checkout-note__icon {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: #ffffff;
  color: #C96A0E;
  box-shadow: 0 1px 3px rgba(15, 30, 46, .08);
}
.pu-checkout-note__main {
  margin: 0 0 2px;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.35;
  color: #12436C;
}
.pu-checkout-note__sub {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: #5A6675;
}

.dark .pu-checkout-note { background: #12212E; border-color: #24384B; border-left-color: #EB8018; }
.dark .pu-checkout-note__icon { background: #0B1620; color: #F5A54F; }
.dark .pu-checkout-note__main { color: #ffffff; }
.dark .pu-checkout-note__sub { color: #A9BED2; }

@media (max-width: 640px) {
  .pu-checkout-note { padding: 14px 16px; gap: 12px; }
  .pu-checkout-note__icon { width: 32px; height: 32px; }
}

/* Залишки блоку доставки, які WooCommerce інколи виводить попри порожню
 * групу полів (напр. заголовок «Адреса доставки» в темах-нащадках Storefront). */
.woocommerce-checkout .woocommerce-shipping-fields:empty,
.woocommerce-checkout .woocommerce-additional-fields:empty { display: none; }

/* ---------------------------------------------------------------------------
 * 25. Страхувальна сітка для поодиноких Tailwind-утиліт
 *
 * Тут лежать утиліти, які використані в шаблонах у ЄДИНОМУ місці кожна —
 * заводити під них окремий компонент було б надмірно, але й лишати їх
 * залежними від свіжості білду не варто.
 *
 * Значення точно збігаються з тим, що генерує Tailwind. Після `npm run build`
 * правила просто продублюються (у main.css вони йдуть з !important через
 * important: true в конфізі й виграють) — конфлікту не виникає, бо результат
 * той самий. Якщо колись цей список почне рости — це сигнал зробити з блоку
 * повноцінний компонент у розділі 23.
 * ------------------------------------------------------------------------- */

.font-normal { font-weight: 400; }
.mt-1\.5 { margin-top: 0.375rem; }

/* Іконка «видалити» в кабінеті автора, коли продаж призупинено: у світлій темі
 * вона .text-slate-300, у темній має бути .dark:text-navy-500. Утиліту додали в
 * шаблон уже після `npm run build`, тож у main.css її немає — і в темній темі
 * заблокована кнопка світилась тим самим сірим, що й активні. Формат селектора
 * (:is(.dark *)) точно такий, який генерує Tailwind при darkMode: 'class'. */
.dark\:text-navy-500:is(.dark *) { color: #1E5285; }

/* ---------------------------------------------------------------------------
 * 26. Компактна шапка (1.12.1)
 *
 * ПРОБЛЕМА, ЯКУ ЦЕ ЛАГОДИТЬ
 * До 1.12.1 у шапці було ДВІ різні точки перемикання: дії акаунта ховались
 * Tailwind-класом `hidden sm:inline-flex` (640px), а навігація з'являлась із
 * 1024px. Наслідки:
 *   — між 640 і 1024px пункти дублювались у шапці й у панелі одночасно;
 *   — на телефоні аватар і «Вихід» не ховались узагалі, тож у рядку стояло
 *     шість елементів: логотип, тема, кошик, аватар, «Вихід», бургер —
 *     і вони не вміщались у 344px.
 *
 * Тепер точка одна — 1024px — і живе вона тут, поруч зі стилями навігації,
 * а не в класах окремих елементів. Розсинхронізувати їх випадково більше не
 * вийде: щоб зсунути межу, треба змінити одне число в одному місці.
 *
 * У компактному режимі в рядку лишаються ЛИШЕ логотип, кошик і бургер.
 * Кошик лишається навмисно: це єдиний елемент, стан якого (лічильник) має
 * бути видимим завжди, без зайвого дотику.
 * ------------------------------------------------------------------------- */

.prourok-wide-only { display: none !important; }

@media (min-width: 1024px) {
  /* inline-flex, бо серед прихованих елементів є і кнопки-іконки, і текстові
   * посилання з іконкою — усім потрібне горизонтальне вирівнювання. */
  .prourok-wide-only { display: inline-flex !important; }
}

/* --- 26a. Логотип на дуже вузьких екранах ---
 * Нижче 380px (iPhone SE, старі Android) навіть три елементи стоять впритул.
 * Зменшуємо логотип на пару пікселів — цього достатньо, щоб з'явилось повітря,
 * і при цьому напис лишається читабельним. */
@media (max-width: 380px) {
  .prourok-header .prourok-logo { gap: 8px; }
  .prourok-header .prourok-logo__mark { width: 36px !important; height: 36px !important; }
  .prourok-header .prourok-logo__mark img { width: 24px !important; height: 24px !important; }
  .prourok-header .prourok-logo__text { font-size: 19px !important; }
}

/* ---------------------------------------------------------------------------
 * 27. Блок акаунта в панелі меню
 *
 * Усе, що пішло з компактної шапки, має знайтися тут — інакше з телефона
 * «Вихід» і «Реєстрація» стають недосяжними взагалі.
 * ------------------------------------------------------------------------- */

/* --- 27a. Картка користувача --- */
.pu-nav-user {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  margin-bottom: 2px;
  border-radius: 14px;
  background: #F4F8FB;
  text-decoration: none;
  transition: background-color .18s ease;
}
.pu-nav-user:hover { background: #E9F1F8; }

.pu-nav-user__avatar {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #12436C;
  color: #ffffff;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .01em;
}

.pu-nav-user__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }

.pu-nav-user__name {
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.25;
  color: #0F1E2E;
  /* Довге ім'я не має ламати картку */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pu-nav-user__sub { font-size: 13px; line-height: 1.3; color: #7E97AF; }

.pu-nav-user__go { margin-left: auto; flex-shrink: 0; color: #9DB2C6; }
.pu-nav-user__go svg { width: 16px; height: 16px; }

.dark .pu-nav-user { background: #12212E; }
.dark .pu-nav-user:hover { background: #17293A; }
.dark .pu-nav-user__avatar { background: #1E5285; }
.dark .pu-nav-user__name { color: #ffffff; }
.dark .pu-nav-user__sub { color: #7E97AF; }

/* --- 27b. «Вихід»: тихіший за решту рядків --- */
.prourok-nav-action--muted { color: #7E97AF; }
.prourok-nav-action--muted:hover { color: #C0442E; background: #FDF2F0; }
.dark .prourok-nav-action--muted { color: #7E97AF; }
.dark .prourok-nav-action--muted:hover { color: #F5836B; background: rgba(120, 34, 22, .28); }

/* --- 27c. Заклик до дії для гостя ---
 * Повторює помаранчеву кнопку з широкої шапки, але на всю ширину панелі:
 * на телефоні це єдина точка входу в реєстрацію. */
/* Селектор із .prourok-header навмисно: у розділі 1 стоїть скидання
 * `.prourok-header a { box-shadow: none }` для іконкових посилань шапки.
 * Воно специфічніше за одиночний клас і зняло б із кнопки тінь. */
.prourok-header .prourok-nav-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 48px;
  margin-top: 6px;
  border-radius: 12px;
  background: #EB8018;
  color: #ffffff;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 0 1px 2px rgba(15, 30, 46, .10);
  transition: background-color .18s ease, transform .12s ease;
}
.prourok-header .prourok-nav-cta:hover { background: #C96A0E; color: #ffffff; }
.prourok-header .prourok-nav-cta:active { transform: translateY(1px); }

/* Без власного правила фокуса теж потрапляла б у квадратний контур
 * браузера — див. розділ 7b. Тінь для :focus-visible додається до вже
 * наявної (0 1px 2px), а не замінює її: обидві в одному значенні. */
.prourok-header .prourok-nav-cta:focus {
  outline: none;
}
.prourok-header .prourok-nav-cta:focus-visible {
  outline: none;
  box-shadow: 0 1px 2px rgba(15, 30, 46, .10), 0 0 0 3px rgba(235, 128, 24, .45);
}

/* --- 27d. Рядок перемикання теми --- */
.prourok-nav-panel__theme {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid #E2E8F0;
}
.dark .prourok-nav-panel__theme { border-top-color: #24384B; }

/* Те саме, що й для кнопки вище, але причина інша: розділ 1 скидає
 * `.prourok-header button { color: inherit; background: transparent }`.
 * Селектор із двох класів переважує клас+елемент, тож колір і фон при
 * наведенні лишаються нашими — без жодного !important. */
.prourok-header .pu-theme-row {
  display: flex !important;
  align-items: center;
  gap: 10px;
  width: 100%;
  height: 46px;
  padding: 0 14px !important;
  border: 0;
  border-radius: 12px;
  background: transparent;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 15px;
  font-weight: 600;
  color: #3E5266;
  text-align: left;
  cursor: pointer;
  transition: background-color .18s ease;
}
.prourok-header .pu-theme-row:hover { background: #F6F9FC; }
.dark .prourok-header .pu-theme-row { color: #A9BED2; }
.dark .prourok-header .pu-theme-row:hover { background: #17293A; }

.pu-theme-row__icon { display: flex; flex-shrink: 0; color: #7E97AF; }
.pu-theme-row__icon svg { width: 18px; height: 18px; }
.pu-theme-row__label { flex: 1; }

/* Перемикач. Стан бере з aria-pressed, який ставить JS — тобто розмітка
 * лишається чесною для скрінрідера, а не «намальованою». */
.pu-theme-row__switch {
  position: relative;
  flex-shrink: 0;
  width: 42px;
  height: 24px;
  border-radius: 999px;
  background: #CBD5E1;
  transition: background-color .22s ease;
}
.pu-theme-row__switch > i {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 1px 3px rgba(15, 30, 46, .28);
  transition: transform .22s cubic-bezier(.4, 0, .2, 1);
}
.pu-theme-row[aria-pressed="true"] .pu-theme-row__switch { background: #EB8018; }
.pu-theme-row[aria-pressed="true"] .pu-theme-row__switch > i { transform: translateX(18px); }
.dark .pu-theme-row__switch { background: #35506B; }

@media (prefers-reduced-motion: reduce) {
  .pu-nav-user,
  .prourok-nav-cta,
  .pu-theme-row,
  .pu-theme-row__switch,
  .pu-theme-row__switch > i { transition: none; }
}

/* ---------------------------------------------------------------------------
 * 28. Сторінка «Контакти»
 *
 * ІСТОРІЯ РІШЕННЯ: ЧОМУ ТЕПЕР Є ФОРМА
 * До 1.29 тут свідомо НЕ було форми: класична контактна форма на WordPress
 * без плагіна ненадійно доходить через SMTP, а причин заводити плагін
 * заради однієї сторінки не було. Замість форми працювала маршрутизація —
 * кожен сценарій звернення вів на mailto: з готовою темою листа.
 *
 * Відтоді на сервері налаштований FluentSMTP (SPF/DKIM/DMARC валідні), тож
 * головна причина відпала — і форма дає те, чого mailto не міг у принципі:
 * реальні обов'язкові поля замість сподівання, що людина сама впише тему й
 * номер замовлення в тіло листа. Маршрутизація (28b) нікуди не зникла —
 * вона тепер підставляє тему у форму (28c), а не відкриває поштову
 * програму. Деталі та захист від спаму — inc/contact-form.php.
 *
 * Пряма адреса пошти не ховається: вона й далі в «Реквізитах» (28d) і в
 * примітці під формою — саме та прозорість, заради якої раніше уникали
 * форми, тут збережена.
 * ------------------------------------------------------------------------- */

/* --- 28a. Сітка каналів: пошта домінує --- */
/* Сітка каналів: ОДИН рівень, без вкладених контейнерів.
 *
 * Головна картка займає ліву колонку й обидва рядки, дві другорядні —
 * праву колонку по рядку кожна. Рядки рівні (1fr 1fr), тож картки телефону
 * й замовлень мають однакову висоту, а головна дорівнює їхній сумі плюс
 * проміжок.
 *
 * Чому не вкладена колонка, як було до 1.13.5: вкладений контейнер мусив
 * знати висоту зовнішнього рядка, а той — висоту вкладеного. Кругова
 * залежність, яку браузери розв'язують по-різному (див. коментар нижче про
 * grid-template-rows: auto 1fr). Плоска сітка цю неоднозначність знімає:
 * усі чотири краї рахуються в одному контексті.
 */
.prourok-page .pu-channels {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 20px;
  align-items: stretch;
}
.prourok-page .pu-channels > * { align-self: stretch; }

.prourok-page .pu-channel--primary {
  grid-column: 1;
  grid-row: 1 / 3;
}

/* Сумісність зі старою розміткою.
 *
 * До 1.13.5 у HTML була проміжна обгортка <div class="pu-channels__side">.
 * display: contents прибирає її з дерева розкладки, і її діти стають
 * елементами зовнішньої сітки — тобто сторінка виглядає правильно навіть
 * тоді, коли вміст у базі ще не оновлено. Оновити його все одно варто:
 * зайвий рівень нічого не дає. */
.prourok-page .pu-channels__side { display: contents; }
/* ⚠️ ІСТОРІЯ, ЩОБ НЕ ПОВТОРИТИ
 *
 * До 1.13.4 бічна колонка мала grid-template-rows: auto 1fr — «друга картка
 * займає решту місця». «Решта» рахувалась від висоти зовнішнього рядка, а та
 * визначалась найвищим елементом рядка, тобто в тому числі цією ж колонкою.
 * Кругова залежність, яку специфікація дозволяє розв'язувати по-різному —
 * звідси й розбіжності Chrome/Firefox і прев'ю/сайт без видимої причини.
 *
 * У 1.13.5 вкладеної колонки немає взагалі: сітка стала плоскою (див. вище).
 */
.prourok-page .pu-channel {
  display: flex;
  flex-direction: column;
  /* stretch, а не flex-start: інакше кожен рядок стає блоком по ширині
   * власного тексту, і довгий опис виглядає як рвана колонка. */
  align-items: stretch;
  text-align: left;
  padding: 28px;
  border: 1px solid #E2E8F0;
  border-radius: 20px;
  background: #ffffff;
  text-decoration: none;
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.prourok-page a.pu-channel:hover {
  border-color: #CBDCEC;
  box-shadow: 0 14px 30px rgba(15, 30, 46, .09);
  transform: translateY(-2px);
}

/* Основна картка — темна, щоб пошта читалась як головна дія без жодного
 * підпису «основний спосіб». Колір робить це переконливіше за текст. */
/* ⚠️ ВІДСТУП ТУТ НЕ ПЕРЕВИЗНАЧАЄМО.
 *
 * У 1.13.2 тут стояло padding: 34px проти 28px у сусідніх карток — щоб
 * головна картка «важила» більше. Наслідок: іконка, підпис і адреса в ній
 * опинялись на 6 px нижче за ті самі елементи в картці телефону поруч.
 * Зсув замалий, щоб виглядати як задум, і завеликий, щоб його не помітити:
 * саме він читався як «вирівнювання не збігається».
 *
 * Домінування картки тримається на ширшій колонці (1.15fr), темному фоні
 * й помаранчевій іконці — цього досить. Відступи в сітці однакових карток
 * мають бути однакові, інакше горизонтальні лінії розсипаються.
 */
.prourok-page .pu-channel--primary {
  border-color: transparent;
  background: linear-gradient(150deg, #12436C 0%, #0E3557 100%);
}
.prourok-page a.pu-channel--primary:hover {
  border-color: transparent;
  box-shadow: 0 18px 38px rgba(14, 53, 87, .30);
}

/* Третій блок — не посилання (працює цілодобово, писати нікуди не треба),
 * тому й вигляд у нього спокійніший: без тіні й підйому при наведенні. */
.prourok-page .pu-channel--flat { background: #F6F9FC; border-style: dashed; }

/* ⚠️ ЦЕНТРУВАННЯ ІКОНКИ — ТОЧНО ТАК САМО, ЯК У .pu-icon (рядок ~1815)
 *
 * У 1.13.3 тут стояло display:grid + place-items:center. У Firefox і в
 * локальному прев'ю це працювало, у Chrome на сайті — ні: гліф з'їжджав
 * у нижній кут. Точну зовнішню причину відтворити не вдалося, і саме тому
 * тут більше немає власного рішення.
 *
 * .pu-icon — та сама задача (кольоровий квадрат 46px з іконкою всередині),
 * і вона працює на «Про нас», «Стати автором» і «Довідці» в усіх браузерах
 * уже давно. Тому техніка скопійована звідти дослівно:
 *   — flex + align-items/justify-content замість grid + place-items;
 *   — розмір задано і для svg, І для path;
 *   — stroke/fill проставлені напряму з !important.
 *
 * Останнє не примха: коментар у секції 1 (рядок ~81) фіксує, що зовнішні
 * правила вже одного разу перебивали успадкування кольору в svg. Для іконки,
 * яка є на кожній картці, надійність важить більше за чистоту селектора.
 *
 * Додатково у розмітці svg отримали атрибути width/height — щоб мати власний
 * розмір навіть тоді, коли CSS до них чомусь не дійшов.
 */
.prourok-page .pu-channel__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  align-self: flex-start; /* щоб не розтягувався на всю ширину картки */
  width: 46px;
  height: 46px;
  min-width: 46px;
  margin-bottom: 18px;
  border-radius: 14px;
  background: #EB8018;
  color: #ffffff;
  line-height: 0; /* прибирає «підвал» рядка навколо inline-svg */
  flex-shrink: 0;
}
/* Розмір — тільки самому <svg>. У 1.13.5 width/height помилково стояли ще й
 * на path/circle, а наступним правилом поверталися в auto: результат був
 * правильний, але сама конструкція — пастка. SVG2 визначає width/height як
 * геометричні властивості для частини фігур (rect, image, use), тож така
 * заготовка одного дня могла б спрацювати не так, як задумано. */
.prourok-page .pu-channel__icon svg {
  display: block;
  width: 22px !important;
  height: 22px !important;
  flex: 0 0 auto;
}
/* Колір і товщина — фігурам. currentColor бере колір із самої іконки, тож
 * світлий і темний варіанти відрізняються лише властивістю color. */
.prourok-page .pu-channel__icon svg path,
.prourok-page .pu-channel__icon svg circle,
.prourok-page .pu-channel__icon svg line,
.prourok-page .pu-channel__icon svg polyline {
  stroke: currentColor !important;
  fill: none !important;
  stroke-width: 1.8;
}
.prourok-page .pu-channel__icon--ghost { background: #E9F1F8; color: #12436C; }
.dark .prourok-page .pu-channel--primary .pu-channel__icon { color: #ffffff; }

.prourok-page .pu-channel__label {
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #7E97AF;
  margin-bottom: 8px;
}
.prourok-page .pu-channel--primary .pu-channel__label { color: rgba(255, 255, 255, .62); }

.prourok-page .pu-channel__value {
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: clamp(20px, 2.2vw, 26px);
  font-weight: 800;
  letter-spacing: -.02em;
  line-height: 1.2;
  color: #0F1E2E;
  /* Довга адреса на вузькому екрані має переноситись, а не вилазити за край. */
  word-break: break-word;
}
.prourok-page .pu-channel__value--sm { font-size: 19px; }
.prourok-page .pu-channel--primary .pu-channel__value { color: #ffffff; }
.prourok-page a.pu-channel:hover .pu-channel__value { color: #C96A0E; }
.prourok-page a.pu-channel--primary:hover .pu-channel__value { color: #F5A54F; }

.prourok-page .pu-channel__meta {
  margin-top: 12px;
  font-size: 14.5px;
  line-height: 1.6;
  color: #5A6675;
}
.prourok-page .pu-channel--primary .pu-channel__meta { color: rgba(255, 255, 255, .74); }

/* Рядок із поштою внизу головної картки.
 *
 * Пошта тут — НЕ <a>: уся картка вже є посиланням на форму, а вкладене
 * посилання у посиланні — невалідний HTML, який парсер браузера розриває
 * (та сама пастка, через яку в 1.13.0 розсипалась секція маршрутизації,
 * див. коментар до .pu-route). Клікабельний mailto лишається в «Реквізитах»
 * нижче на сторінці й у примітці під самою формою — тут адреса потрібна
 * як довідка «куди писати з вкладенням», а не як друга дія в картці.
 *
 * margin-top: auto притискає рядок до низу: головна картка вища за сусідні
 * (займає обидва рядки сітки), і без цього під текстом лишалася б порожнеча
 * на пів картки. Специфічність у три класи навмисно — інакше програє
 * скидачу відступів `.prourok-page .pu-channel > *` із секції 28f. */
.prourok-page .pu-channel .pu-channel__mail {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: auto;
  padding-top: 20px;
  border-top: 1px solid rgba(255, 255, 255, .16);
}
.prourok-page .pu-channel__mail-ic {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: rgba(255, 255, 255, .10);
  color: #F5A54F;
  line-height: 0;
}
.prourok-page .pu-channel__mail-ic svg {
  display: block;
  width: 18px !important;
  height: 18px !important;
}
.prourok-page .pu-channel__mail-ic svg path {
  stroke: currentColor !important;
  fill: none !important;
}
.prourok-page .pu-channel__mail-text {
  display: block;
  min-width: 0;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
  color: #ffffff;
  word-break: break-word;
}
.prourok-page .pu-channel__mail-text em {
  display: block;
  font-style: normal;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.4;
  margin-bottom: 2px;
  color: rgba(255, 255, 255, .6);
}

.dark .prourok-page .pu-channel { background: #12212E; border-color: #24384B; }
.dark .prourok-page .pu-channel--flat { background: #0E1A25; }
.dark .prourok-page .pu-channel__value { color: #ffffff; }
.dark .prourok-page .pu-channel__meta { color: #A9BED2; }
.dark .prourok-page .pu-channel__icon--ghost { background: #17293A; color: #9DBBD8; }

@media (max-width: 900px) {
  .prourok-page .pu-channels {
    grid-template-columns: 1fr;
    grid-template-rows: none; /* інакше три картки тиснуться у два рядки */
  }
  .prourok-page .pu-channel--primary { grid-column: auto; grid-row: auto; }
}

/* --- 28b. Маршрутизація звернень --- */
.prourok-page .pu-routes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

/* ⚠️ ЧОМУ ТУТ SUBGRID
 *
 * До 1.13.3 кожна колонка була самостійним стосом: заголовки стояли рівно
 * (усі в першому рядку), а далі рядки розповзались — опис у «Покупцям»
 * займав два рядки, у «Авторам» один, і третій пункт у сусідніх колонках
 * опинявся на різній висоті. З трьох колонок це читається як хаос.
 *
 * subgrid змушує всі колонки ділити СПІЛЬНІ рядки: висоту кожного рядка
 * задає найвищий пункт у ньому, тож «Повернення коштів» і «Питання щодо
 * виплат» стоять на одній лінії незалежно від довжини описів.
 *
 * Без subgrid цього не зробити взагалі: висота рядка в одній колонці
 * не може впливати на іншу колонку — вони різні контексти форматування.
 *
 * @supports обов'язковий: у браузерах без subgrid (Chrome < 117, Safari < 16)
 * grid-row: 1 / -1 наклав би всі три колонки одна на одну.
 * Медіазапит теж: у мобільній розкладці колонка одна, і розтягування на всі
 * рядки дало б те саме накладання.
 */
@supports (grid-template-rows: subgrid) {
  @media (min-width: 981px) {
    .prourok-page .pu-routes {
      /* заголовок + 4 рядки — найдовша колонка */
      grid-template-rows: auto repeat(4, auto);
      column-gap: 28px;
      row-gap: 2px;
      /* align-items лишаємо stretch (за замовчуванням): елемент subgrid
       * мусить заповнювати свою область, інакше рядки не збігатимуться. */
    }
    .prourok-page .pu-route-group {
      display: grid;
      grid-row: 1 / -1;
      grid-template-rows: subgrid;
    }
    /* Відстань між рядками тепер тримає row-gap сітки. */
    .prourok-page .pu-route + .pu-route { margin-top: 0; }
  }
}

/* Група — просто контейнер колонки; власних рулів майже не потребує, але
 * без min-width:0 довгий текст усередині розпирає колонку грида. */
.prourok-page .pu-route-group { min-width: 0; }

.prourok-page .pu-route-title {
  margin: 0 0 12px !important;
  padding-bottom: 10px;
  border-bottom: 2px solid #EB8018;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 13px !important;
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: #12436C;
}
.dark .prourok-page .pu-route-title { color: #9DBBD8; }

/* ⚠️ ЧОМУ РЯДОК — <div>, А НЕ <a>
 *
 * У версії 1.13.0 тут стояло посилання, а всередині опису — ще одне
 * («у кабінеті», «політиці повернень»). Вкладене <a> у <a> — невалідний HTML:
 * парсер браузера ЗАКРИВАЄ зовнішнє посилання в момент, коли зустрічає
 * внутрішнє, і весь подальший вміст випадає з картки назовні як сусідній
 * елемент. Саме це ламало секцію: текст вивалювався за межі колонки,
 * підкреслювався й розсовував сусідів на пів екрана.
 *
 * Рішення — «розтягнуте посилання»: рядок є звичайним <div>, клікабельність
 * усієї площі дає псевдоелемент заголовка, а посилання в описі піднімаються
 * над ним через z-index і лишаються самостійними. Розмітка валідна, вся
 * площа клікабельна, вкладених <a> немає.
 */
.prourok-page .pu-route {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 14px 14px 16px;
  border-radius: 14px;
  transition: background-color .18s ease;
}
.prourok-page .pu-route + .pu-route { margin-top: 2px; }
.prourok-page .pu-route:hover { background: #ffffff; }
.dark .prourok-page .pu-route:hover { background: #12212E; }

.prourok-page .pu-route__text {
  display: block;
  flex: 1;
  /* Без min-width:0 довге слово в описі розпирає колонку грида. */
  min-width: 0;
}

.prourok-page .pu-route__link {
  display: block;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 15.5px;
  font-weight: 700;
  line-height: 1.35;
  color: #0F1E2E;
  text-decoration: none;
}
/* Псевдоелемент накриває весь рядок — саме він робить площу клікабельною. */
.prourok-page .pu-route__link::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 14px;
}
.prourok-page .pu-route:hover .pu-route__link { color: #12436C; }
.prourok-page .pu-route__link:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(235, 128, 24, .45); }
.prourok-page .pu-route__text em {
  display: block;
  margin-top: 3px;
  font-style: normal;
  font-size: 13.5px;
  line-height: 1.55;
  color: #64748B;
}
/* Посилання в описі — над розтягнутим шаром, інакше клік по них ловив би
 * заголовок рядка й вів не туди. */
.prourok-page .pu-route__text em a {
  position: relative;
  z-index: 1;
  color: #12436C;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.prourok-page .pu-route__text em a:hover { color: #C96A0E; }

.dark .prourok-page .pu-route__link { color: #ffffff; }
.dark .prourok-page .pu-route:hover .pu-route__link { color: #9DBBD8; }
.dark .prourok-page .pu-route__text em { color: #A9BED2; }
.dark .prourok-page .pu-route__text em a { color: #9DBBD8; }

/* Стрілка з'їжджає праворуч при наведенні — той самий рух, що в лінії під
 * пунктами меню: зліва направо, як стрілка в логотипі. */
.prourok-page .pu-route__go {
  margin-left: auto;
  flex-shrink: 0;
  padding-top: 2px;
  font-size: 17px;
  color: #C3D2E0;
  transform: translateX(-4px);
  opacity: 0;
  transition: transform .22s cubic-bezier(.4, 0, .2, 1), opacity .18s ease;
}
.prourok-page .pu-route:hover .pu-route__go { color: #EB8018; transform: translateX(0); opacity: 1; }

@media (max-width: 980px) {
  .prourok-page .pu-routes { grid-template-columns: 1fr; gap: 22px; }
  /* На дотику ховати стрілку немає сенсу: наведення там не існує. */
  .prourok-page .pu-route__go { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------------------
 * 28c. Форма зв'язку
 *
 * Заміна секції «Що вказати в листі» (до 1.29): та сама інформація —
 * номер замовлення, пошта покупки, опис проблеми — тепер не інструкція, що
 * дописати руками в лист, а реальні поля форми. Логіка підстановки теми з
 * плиток маршрутизації — assets/js/contact-form.js.
 *
 * Storefront стилізує <input>/<select>/<textarea> по-своєму (див. 28f) —
 * тут задаємо форму з нуля через клас-обгортку .pu-form, а не через тег.
 * ------------------------------------------------------------------------- */
.prourok-page .pu-form {
  max-width: 820px;
  margin: 0 auto;
  padding: 38px 40px;
  border: 1px solid #E2E8F0;
  border-radius: 22px;
  background: #ffffff;
}

.prourok-page .pu-form__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.prourok-page .pu-form__field { display: flex; flex-direction: column; }
.prourok-page .pu-form__field--full { margin-top: 20px; }

.prourok-page .pu-form label {
  margin-bottom: 8px;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  font-size: 13.5px;
  font-weight: 600;
  color: #3E5266;
}
.prourok-page .pu-form__optional { font-weight: 400; color: #94A3B8; }

.prourok-page .pu-form input[type="text"],
.prourok-page .pu-form input[type="email"],
.prourok-page .pu-form select,
.prourok-page .pu-form textarea {
  width: 100%;
  padding: 13px 16px !important;
  border: 1px solid #D8E2EC !important;
  border-radius: 12px !important;
  background: #F8FAFC !important;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif !important;
  font-size: 15.5px !important;
  line-height: 1.4 !important;
  color: #0F1E2E !important;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.prourok-page .pu-form textarea { resize: vertical; min-height: 120px; }

.prourok-page .pu-form input:focus,
.prourok-page .pu-form select:focus,
.prourok-page .pu-form textarea:focus {
  outline: none !important;
  border-color: #EB8018 !important;
  background: #ffffff !important;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .15);
}

/* Спалах навколо теми при кліку по плитці маршрутизації — секундний
 * зв'язок між кліком і появою теми у формі, той самий помаранчевий, що й
 * фокус-кільце вище, лише яскравіший і на мить. */
.prourok-page .pu-form select.pu-topic-pulse {
  animation: puTopicPulse 1.1s ease;
}
@keyframes puTopicPulse {
  0%   { box-shadow: 0 0 0 0 rgba(235, 128, 24, .45); border-color: #EB8018; }
  55%  { box-shadow: 0 0 0 9px rgba(235, 128, 24, 0); border-color: #EB8018; }
  100% { box-shadow: 0 0 0 0 rgba(235, 128, 24, 0); }
}

/* Пастка для ботів: приховано технікою clip, не display:none — прості
 * скрапери й боти саме display:none навчились розпізнавати й пропускати. */
.prourok-page .pu-form__trap {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

.prourok-page .pu-form__footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 20px;
  margin-top: 26px;
}
.prourok-page .pu-form__footer .pu-btn { margin: 0; }
.prourok-page .pu-form__hint {
  flex: 1;
  min-width: 220px;
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: #7E97AF;
}
.prourok-page .pu-form__hint a { color: #12436C; text-decoration: underline; text-underline-offset: 2px; }
.prourok-page .pu-form__hint a:hover { color: #C96A0E; }

.prourok-page .pu-form__status {
  margin-top: 20px;
  padding: 14px 18px;
  border: 1px solid transparent;
  border-radius: 12px;
  font-size: 14.5px;
  line-height: 1.5;
}
.prourok-page .pu-form__status--ok  { background: #F3FAF5; border-color: #9DCFA8; color: #1E6B3C; }
.prourok-page .pu-form__status--err { background: #FDECEC; border-color: #C0392B; color: #8C2318; }

.dark .prourok-page .pu-form { background: #12212E; border-color: #24384B; }
.dark .prourok-page .pu-form label { color: #C7D2DE; }
.dark .prourok-page .pu-form__optional { color: #64748B; }
.dark .prourok-page .pu-form input[type="text"],
.dark .prourok-page .pu-form input[type="email"],
.dark .prourok-page .pu-form select,
.dark .prourok-page .pu-form textarea {
  background: #0E1A25 !important;
  border-color: #24384B !important;
  color: #ffffff !important;
}
.dark .prourok-page .pu-form input:focus,
.dark .prourok-page .pu-form select:focus,
.dark .prourok-page .pu-form textarea:focus { background: #17293A !important; }
.dark .prourok-page .pu-form__hint { color: #8FA8C0; }
.dark .prourok-page .pu-form__hint a { color: #9DBBD8; }
.dark .prourok-page .pu-form__status--ok  { background: #12291C; border-color: #2E6B45; color: #8FDBA8; }
.dark .prourok-page .pu-form__status--err { background: #2B1414; border-color: #7A2E24; color: #F0A69C; }

@media (max-width: 640px) {
  .prourok-page .pu-form { padding: 26px 22px; border-radius: 18px; }
  .prourok-page .pu-form__grid { grid-template-columns: 1fr; gap: 16px; }
}

/* --- 28d. Реквізити --- */
.prourok-page .pu-requisites {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 24px;
  align-items: start;
}

.prourok-page .pu-requisites__list {
  margin: 0;
  padding: 26px 28px;
  border: 1px solid #E2E8F0;
  border-radius: 20px;
  background: #ffffff;
}
.prourok-page .pu-requisites__list > div {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 8px 20px;
  padding: 13px 0;
  border-bottom: 1px solid #EEF3F8;
}
.prourok-page .pu-requisites__list > div:first-child { padding-top: 0; }
.prourok-page .pu-requisites__list > div:last-child { padding-bottom: 0; border-bottom: 0; }

.prourok-page .pu-requisites__list dt {
  margin: 0;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.5;
  color: #7E97AF;
}
.prourok-page .pu-requisites__list dd {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: #0F1E2E;
}
.prourok-page .pu-requisites__list dd a { color: #12436C; text-decoration: underline; text-underline-offset: 2px; }
.prourok-page .pu-requisites__list dd a:hover { color: #C96A0E; }

.prourok-page .pu-requisites__docs {
  padding: 26px 28px;
  border: 1px solid #CBDCEC;
  border-radius: 20px;
  background: #F4F8FB;
}
.prourok-page .pu-requisites__docs h3 { margin: 0 0 8px !important; font-size: 17px !important; }
.prourok-page .pu-requisites__docs p { margin: 0 0 14px; font-size: 14px; line-height: 1.6; color: #5A6675; }
.prourok-page .pu-requisites__docs ul { margin: 0; padding: 0; list-style: none; }
.prourok-page .pu-requisites__docs li { margin: 0 0 8px; }
.prourok-page .pu-requisites__docs li:last-child { margin-bottom: 0; }
.prourok-page .pu-requisites__docs a {
  font-size: 14.5px;
  font-weight: 600;
  color: #12436C;
  text-decoration: none;
  border-bottom: 1px solid rgba(18, 67, 108, .28);
  transition: color .18s ease, border-color .18s ease;
}
.prourok-page .pu-requisites__docs a:hover { color: #C96A0E; border-bottom-color: #EB8018; }

.dark .prourok-page .pu-requisites__list { background: #12212E; border-color: #24384B; }
.dark .prourok-page .pu-requisites__list > div { border-bottom-color: #1C2C3C; }
.dark .prourok-page .pu-requisites__list dd { color: #ffffff; }
.dark .prourok-page .pu-requisites__list dd a { color: #9DBBD8; }
.dark .prourok-page .pu-requisites__docs { background: #0E1A25; border-color: #24384B; }
.dark .prourok-page .pu-requisites__docs p { color: #A9BED2; }
.dark .prourok-page .pu-requisites__docs a { color: #9DBBD8; border-bottom-color: rgba(157, 187, 216, .3); }

@media (max-width: 900px) {
  .prourok-page .pu-requisites { grid-template-columns: 1fr; }
  .prourok-page .pu-requisites__list > div { grid-template-columns: 1fr; gap: 2px; }
}

/* --- 28e. Дві кнопки у фінальному блоці --- */
.prourok-page .pu-final-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-bottom: 0 !important;
}

@media (prefers-reduced-motion: reduce) {
  .prourok-page .pu-channel,
  .prourok-page .pu-route,
  .prourok-page .pu-route__go { transition: none; }
  .prourok-page a.pu-channel:hover { transform: none; }
}

/* ---------------------------------------------------------------------------
 * 28f. Захист компонентів «Контактів» від батьківської теми
 *
 * ЧОМУ ЦЕ ПОТРІБНО
 * Прев'ю показувало акуратні картки, а на сайті ті самі блоки виглядали
 * інакше: посилання підкреслені, рядки вищі, відступи всередині більші.
 * Причина не в помилці розмітки, а в тому, що на сайті поверх theme.css
 * лежить Storefront, який задає власні підкреслення й відступи для <a>,
 * <p>, <em> та інших елементів. Прев'ю Storefront не завантажує — тому
 * різниця й не була видна.
 *
 * Тема вже стикалась із цим раніше: .pu-link і .pu-btn (рядки ~1840 і ~1906)
 * гасять підкреслення саме через !important. Тут той самий підхід, але
 * щільно обмежений двома компонентами — глобальних скидачів не додаємо.
 *
 * Порядок правил має значення: цей блок іде ПІСЛЯ основних стилів секції 28,
 * інакше не переб'є власні ж декларації.
 * ------------------------------------------------------------------------- */

/* --- Підкреслення --- */
.prourok-page .pu-channel,
.prourok-page .pu-channel *,
.prourok-page .pu-route__link {
  text-decoration: none !important;
}

/* Виняток: описові посилання всередині рядків маршрутизації підкреслення
 * якраз потребують — інакше в суцільному тексті їх не видно. */
.prourok-page .pu-route__text em a {
  text-decoration: underline !important;
  text-underline-offset: 2px;
}

/* --- Відступи ---
 * Storefront додає нижні поля майже всім блоковим елементам. Усередині цих
 * компонентів усі відстані задані навмисно, тож чужі поля тут лише розсовують
 * картку. Обнуляємо все й повертаємо лише свої. */
.prourok-page .pu-channel > *,
.prourok-page .pu-route > *,
.prourok-page .pu-route__text > * {
  margin: 0;
  padding: 0;
}

.prourok-page .pu-channel__icon { margin-bottom: 18px; }
.prourok-page .pu-channel__label { margin-bottom: 8px; }
.prourok-page .pu-channel__meta { margin-top: 12px; }
.prourok-page .pu-route__text em { margin-top: 3px; }

/* --- Міжрядковий інтервал ---
 * Storefront тримає глобальний line-height 1.618. Для абзацу це добре, для
 * заголовка картки — задає зайву висоту рядка й «роздуває» блок. */
.prourok-page .pu-channel__label { line-height: 1.4; }
.prourok-page .pu-channel__value { line-height: 1.2; }
.prourok-page .pu-channel__meta { line-height: 1.6; }
.prourok-page .pu-route__link { line-height: 1.35; }
.prourok-page .pu-route__text em { line-height: 1.55; }

/* --- Списки в реквізитах ---
 * Storefront ставить list-style і padding-left кожному <ul>. */
.prourok-page .pu-requisites__docs ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.prourok-page .pu-requisites__list dt,
.prourok-page .pu-requisites__list dd { margin: 0; }

/* ============================================================
   40. Джерела прев'ю — вибір файлів для автозбірки
   ============================================================ */

.pu-src {
  margin: 14px 0 0; padding: 14px 16px;
  background: #F7FAFC; border: 1px solid #E3EAF1; border-radius: 12px;
}
.pu-src[hidden] { display: none; }

.pu-src-title {
  font-size: 13px; font-weight: 700; color: #12436C; margin: 0 0 10px;
}

.pu-src-list { display: flex; flex-direction: column; gap: 2px; }

.pu-src-row {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 7px 0; border-bottom: 1px solid #EAF0F5;
}
.pu-src-row:last-child { border-bottom: none; }

/* Кнопка «прибрати файл». Притиснута до правого краю рядка: список
   файлів росте накопичувально, і без неї помилковий вибір не скасувати. */
.pu-src-rm {
  flex: none;
  margin-left: auto;
  width: 26px; height: 26px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid transparent; border-radius: 7px;
  background: none; cursor: pointer;
  color: #94A3B8; font-size: 18px; line-height: 1;
  transition: color .15s, background-color .15s, border-color .15s;
}
.pu-src-rm:hover,
.pu-src-rm:focus-visible { color: #DC2626; background: #FEF2F2; border-color: #FECACA; }
.dark .pu-src-rm { color: #7C93A8; }
.dark .pu-src-rm:hover,
.dark .pu-src-rm:focus-visible { color: #FCA5A5; background: #3A1D1D; border-color: #6B2B2B; }

/* Компактний список обраних зображень прев'ю (поле preview_images). */
.pu-fchips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.pu-fchips:empty { margin-top: 0; }
.pu-fchip {
  display: inline-flex; align-items: center; gap: 4px;
  max-width: 100%; padding: 3px 4px 3px 10px;
  border: 1px solid #DCE6EF; border-radius: 999px;
  background: #F5F9FC; color: #475569;
  font-size: 12.5px; line-height: 1.4;
  overflow-wrap: anywhere;
}
.pu-fchip-x {
  flex: none; width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; border-radius: 50%;
  background: none; cursor: pointer;
  color: #94A3B8; font-size: 15px; line-height: 1;
}
.pu-fchip-x:hover,
.pu-fchip-x:focus-visible { color: #DC2626; background: #FEE2E2; }
.dark .pu-fchip { background: #14232F; border-color: #24384B; color: #C7D2DE; }
.dark .pu-fchip-x { color: #7C93A8; }
.dark .pu-fchip-x:hover,
.dark .pu-fchip-x:focus-visible { color: #FCA5A5; background: #3A1D1D; }

.pu-src-pick {
  position: relative; flex: none; display: inline-flex;
  align-items: center; justify-content: center;
  width: 24px; height: 24px; margin-top: 1px; cursor: pointer;
}
.pu-src-pick input { position: absolute; opacity: 0; width: 0; height: 0; }
.pu-src-box {
  width: 18px; height: 18px; border: 1.5px solid #B9C7D4; border-radius: 5px;
  background: #fff; transition: background-color .15s, border-color .15s;
}
.pu-src-pick input:checked + .pu-src-box {
  background: #12436C; border-color: #12436C;
}
.pu-src-pick input:checked + .pu-src-box::after {
  content: ''; display: block; width: 5px; height: 9px; margin: 1px auto 0;
  border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
}
.pu-src-pick input:focus-visible + .pu-src-box {
  box-shadow: 0 0 0 3px rgba(235,128,24,.45);
}
.pu-src-pick.is-disabled { cursor: not-allowed; }
.pu-src-pick.is-disabled .pu-src-box { background: #EDF2F6; border-color: #DDE5EC; }

.pu-src-meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.pu-src-name {
  font-size: 13.5px; font-weight: 500; color: #23415C;
  overflow-wrap: anywhere;
}
.pu-src-sub { font-size: 12px; color: #8A99A8; }

.pu-src-summary {
  font-size: 12.5px; color: #566A7E; margin: 10px 0 0;
  padding-top: 10px; border-top: 1px dashed #DDE5EC;
}





/* Темна тема */
.dark .pu-src { background: #0E1C27; border-color: #24384B; }
.dark .pu-src-title { color: #9FC2E2; }
.dark .pu-src-row { border-bottom-color: #1B2C3C; }
.dark .pu-src-box { background: #0B1620; border-color: #35506B; }
.dark .pu-src-pick input:checked + .pu-src-box { background: #1E5285; border-color: #1E5285; }
.dark .pu-src-pick.is-disabled .pu-src-box { background: #17293A; border-color: #24384B; }
.dark .pu-src-name { color: #DCE8F3; }
.dark .pu-src-sub { color: #7E97AF; }
.dark .pu-src-summary { color: #A9BED2; border-top-color: #24384B; }

/* Хвіст розділу 22 був пошкоджений: селектор «.dark .dark .dark …» без блоку
   з'їдав наступний @media, а правило reduced-motion лишалося без властивостей.
   Обидва блоки браузер відкидав цілком, тож збільшені чекбокси на телефоні
   ніколи не працювали. Відновлено у 1.21.0. */
@media (max-width: 640px) {
  .pu-src-pick { width: 32px; height: 32px; }
  .pu-src-row  { padding: 9px 0; }
}

@media (prefers-reduced-motion: reduce) {
  .pu-src-box { transition: none; }
}


/* ============================================================
   29. Джерела і прозорість — власна вкладка товару

   Історія блоку. Спершу він жив у правій колонці купівлі: колонка
   липка й вузька (~420px), а бібліографічний запис підручника
   займає 3–4 рядки — сім джерел відсовували кнопку «Додати в
   кошик» за межі екрана. Далі його перенесли в хвіст вкладки
   «Опис», але там довідковий перелік гортали повз, не доходячи
   до нього. З 1.22.0 у нього власна вкладка між «Опис» і
   «Додаткова інформація», а в колонці купівлі лишився чип
   (.pu-chip), який цю вкладку відкриває.
   ============================================================ */

/* Панель вкладки ядром обмежена 760px — для суцільного тексту опису це
   правильна міра рядка, але довідковий перелік із номерами й мітками типу
   в ній тісниться. Даємо саме цій вкладці більше повітря. */
#tab-prourok_sources { max-width: 920px; }

.pu-ref--tab { margin: 0; }
.pu-ref--bare { margin: 10px 0 0; }

.pu-ref__lead {
  margin: 0 0 20px;
  max-width: 620px;
  font-size: 14.5px;
  line-height: 1.6;
  color: #5D7085;
}

/* --- Смужка фактів --- */

.pu-ref__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0 0 22px;
}

.pu-ref__fact {
  display: flex;
  align-items: center;
  gap: 11px;
  flex: 1 1 260px;
  min-width: 0;
  padding: 13px 16px;
  border: 1px solid #E3EAF1;
  border-radius: 12px;
  background: #FAFCFE;
}

.pu-ref__fact > b {
  flex: none;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  font-size: 26px;
  line-height: 1;
  color: #12436C;
}

.pu-ref__fact > span {
  font-size: 13px;
  line-height: 1.45;
  color: #5D7085;
}

.pu-ref__fact--clean > b { color: #B3C3D2; }
.pu-ref__fact--ai { border-color: #F3CFA8; background: #FEF8F1; }
.pu-ref__fact--ai > span { color: #8A4A08; }

/* --- Список --- */

.pu-ref__list {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: none;
  border-top: 1px solid #EDF2F6;
}

.pu-ref__item {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 14px;
  margin: 0;
  padding: 14px 0;
  border-bottom: 1px solid #EDF2F6;
}

.pu-ref__num {
  display: block;
  padding-top: 1px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  font-size: 15px;
  line-height: 1.5;
  color: #B3C3D2;
  text-align: right;
}

.pu-ref__content { min-width: 0; }

.pu-ref__kind {
  display: inline-block;
  margin: 0 0 5px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: #7C8FA3;
}

/* Кольорова мітка типу: короткий кант зліва від підпису.
   Тримаємо на ::before, щоб не додавати ще один елемент у розмітку. */
.pu-ref__kind::before {
  content: '';
  display: inline-block;
  width: 14px;
  height: 2px;
  margin: 0 7px 3px 0;
  background: #B3C3D2;
  vertical-align: middle;
}

.pu-ref__item--book    .pu-ref__kind::before { background: #12436C; }
.pu-ref__item--video   .pu-ref__kind::before { background: #C0392B; }
.pu-ref__item--service .pu-ref__kind::before { background: #EB8018; }
.pu-ref__item--web     .pu-ref__kind::before { background: #2F7FB5; }
.pu-ref__item--own     .pu-ref__kind::before { background: #0F9D6E; }

.pu-ref__item--book    .pu-ref__kind { color: #12436C; }
.pu-ref__item--own     .pu-ref__kind { color: #0B7A56; }

.pu-ref__text {
  margin: 0;
  font-size: 14.5px;
  line-height: 1.62;
  color: #24405A;
  overflow-wrap: anywhere;
}

.pu-ref__link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  margin: 7px 0 0;
  padding: 4px 10px;
  border: 1px solid #DDE7EF;
  border-radius: 999px;
  background: #F6F9FC;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.3;
  color: #1E5285;
  text-decoration: none;
  overflow-wrap: anywhere;
  transition: border-color .15s, background-color .15s, color .15s;
}

.pu-ref__link:hover,
.pu-ref__link:focus-visible {
  border-color: #EB8018;
  background: #FEF6EE;
  color: #9E520B;
  text-decoration: none;
}

.pu-ref__link-go { font-size: 11px; opacity: .65; }

/* --- Застереження --- */

.pu-ref__disclaimer {
  margin: 20px 0 0;
  padding-top: 14px;
  border-top: 1px dashed #DDE5EC;
  font-size: 12.5px;
  line-height: 1.55;
  color: #7C8FA3;
}

.pu-ref__disclaimer a { color: #1E5285; }

/* --- Чип у колонці купівлі --- */

.pu-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 22px;
  padding-top: 20px;
  border-top: 1px solid #E2E8F0;
}

.pu-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 32px;
  padding: 0 12px;
  border: 1px solid #DDE7EF;
  border-radius: 999px;
  background: #F6F9FC;
  font-size: 12.5px;
  font-weight: 600;
  color: #24405A;
  text-decoration: none;
  transition: border-color .15s, background-color .15s;
}

.pu-chip b {
  min-width: 19px;
  margin-left: 5px;
  padding: 1px 6px;
  border-radius: 999px;
  background: #12436C;
  font-variant-numeric: tabular-nums;
  font-size: 11.5px;
  color: #fff;
  text-align: center;
}

.pu-chip--link:hover,
.pu-chip--link:focus-visible {
  border-color: #12436C;
  background: #EEF4F9;
  text-decoration: none;
}

.pu-chip--ai { border-color: #F3CFA8; background: #FEF6EE; color: #8A4A08; }

.pu-chip--ai > i {
  display: grid;
  place-items: center;
  width: 18px;
  height: 18px;
  border-radius: 5px;
  background: #EB8018;
  font-style: normal;
  font-size: 9.5px;
  font-weight: 800;
  color: #fff;
}

/* --- Адаптив --- */

@media (max-width: 560px) {
  .pu-ref__fact { flex: 1 1 100%; }
  .pu-ref__item { grid-template-columns: 26px minmax(0, 1fr); gap: 10px; }
  .pu-ref__num { font-size: 13px; }
}

/* --- Темна тема --- */

.dark .pu-ref__lead { color: #9DB4C8; }
.dark .pu-ref__fact { background: #0F1C27; border-color: #24384B; }
.dark .pu-ref__fact > b { color: #fff; }
.dark .pu-ref__fact > span { color: #9DB4C8; }
.dark .pu-ref__fact--clean > b { color: #4C687F; }
.dark .pu-ref__fact--ai { background: #1C1710; border-color: #6E3907; }
.dark .pu-ref__fact--ai > span { color: #F9C489; }
.dark .pu-ref__list,
.dark .pu-ref__item { border-color: #1E3346; }
.dark .pu-ref__num { color: #4C687F; }
.dark .pu-ref__text { color: #DCE8F3; }
.dark .pu-ref__kind { color: #8AA3BA; }
.dark .pu-ref__item--book .pu-ref__kind { color: #9FC2E2; }
.dark .pu-ref__item--own  .pu-ref__kind { color: #6FD3AE; }
.dark .pu-ref__link { background: #0F1C27; border-color: #24384B; color: #9FC2E2; }
.dark .pu-ref__link:hover { background: #1A2B3A; border-color: #EB8018; color: #F5A54F; }
.dark .pu-ref__disclaimer { color: #7E97AF; border-top-color: #24384B; }
.dark .pu-ref__disclaimer a { color: #9FC2E2; }
.dark .pu-chip-row { border-top-color: #24384B; }
.dark .pu-chip { background: #12212E; border-color: #24384B; color: #DCE8F3; }
.dark .pu-chip b { background: #1E5285; }
.dark .pu-chip--link:hover { background: #17293A; border-color: #3E6E9E; }
.dark .pu-chip--ai { background: #1C1710; border-color: #6E3907; color: #F9C489; }


/* ============================================================
   30. Модерація матеріалів (page-templates/moderation.php)

   Окрема візуальна мова: це інструмент, а не вітрина. Щільні
   відступи, табличні цифри, темна командна смуга зверху, три
   різнокольорові дії замість одного помаранчевого CTA. Жодних
   Tailwind-утиліт: сторінка з'явилася після останнього білду
   main.css, тож утиліти в ньому просто відсутні.
   ============================================================ */

.pu-mod {
  --pu-mod-line: #E2E9F0;
  --pu-mod-bg:   #F4F7FA;
  --pu-mod-card: #FFFFFF;
  --pu-mod-ink:  #16324B;
  --pu-mod-mute: #6C819A;
  background: var(--pu-mod-bg);
  color: var(--pu-mod-ink);
  font-family: Inter, ui-sans-serif, system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
}

.pu-mod *,
.pu-mod *::before,
.pu-mod *::after { box-sizing: border-box; }

.pu-mod-wrap {
  max-width: 1240px;
  margin: 0 auto;
  padding: 22px 20px 64px;
}

/* --- 30a. Командна смуга --- */

.pu-mod-bar {
  background: #0C2032;
  border-bottom: 1px solid #16324B;
}

.pu-mod-bar__inner {
  display: flex;
  align-items: center;
  gap: 20px;
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 20px;
  height: 54px;
}

.pu-mod-bar__brand {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: .02em;
  color: #fff;
  text-decoration: none;
  white-space: nowrap;
}

.pu-mod-bar__brand:hover { color: #F5A54F; text-decoration: none; }

.pu-mod-bar__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #EB8018;
  box-shadow: 0 0 0 4px rgba(235, 128, 24, .22);
}

.pu-mod-bar__stats {
  display: flex;
  gap: 18px;
  margin-left: auto;
  overflow-x: auto;
  scrollbar-width: none;
}

.pu-mod-bar__stats::-webkit-scrollbar { display: none; }

.pu-mod-bar__stat {
  font-size: 12.5px;
  color: #8FA8C0;
  white-space: nowrap;
}

.pu-mod-bar__stat b {
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  color: #DCE8F3;
}

.pu-mod-bar__stat.is-hot b { color: #F5A54F; }

.pu-mod-bar__me {
  padding-left: 18px;
  border-left: 1px solid #1E3A54;
  font-size: 12.5px;
  color: #8FA8C0;
  white-space: nowrap;
}

/* Кнопка скидання кешу: службова дія, тому вигляд «тихий привид» —
   вона не має конкурувати з рішеннями модератора, але має бути під рукою
   в той момент, коли людина дивиться на несвіжу сторінку. */
/* margin-left: auto тут НЕ ставимо: він уже є в .pu-mod-bar__stats, і два
   авто-відступи поспіль розкидали б лічильники й кнопку по різних кутах
   замість того, щоб тримати їх поруч. */
.pu-mod-purge { margin: 0; }

.pu-mod-purge__btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 30px;
  padding: 0 11px;
  border: 1px solid #1E3A54;
  border-radius: 8px;
  background: transparent;
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  color: #8FA8C0;
  white-space: nowrap;
  cursor: pointer;
  transition: border-color .15s, color .15s, background-color .15s;
}

.pu-mod-purge__btn:hover { border-color: #2F587C; background: #12293F; color: #C6DBEE; }
.pu-mod-purge__btn svg { flex: none; }

/* Версія теми — довідкова, не змістовна: тримаємо тихою, щоб вона не
   конкурувала з лічильниками черги, але лишалася читабельною. */
.pu-mod-bar__ver {
  margin-left: 8px;
  padding: 1px 7px;
  border-radius: 999px;
  background: #16324B;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  color: #6E8AA6;
}

/* --- 30b. Повідомлення --- */

.pu-mod-toast {
  width: calc(100% - 40px);
  max-width: 1200px;
  margin: 16px auto -6px;
  padding: 12px 16px;
  border-radius: 10px;
  border-left: 3px solid;
  font-size: 13.5px;
  font-weight: 500;
}

.pu-mod-toast--ok  { background: #E9F7F1; border-color: #0F9D6E; color: #0A5F44; }
.pu-mod-toast--err { background: #FDECEC; border-color: #C0392B; color: #8C2318; }

/* --- 30c. Загальні блоки --- */

.pu-mod-card {
  margin: 0 0 16px;
  padding: 20px 22px;
  background: var(--pu-mod-card);
  border: 1px solid var(--pu-mod-line);
  border-radius: 14px;
}

.pu-mod-h {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0 0 4px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 12px;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: #7C93AB;
}

.pu-mod-count {
  min-width: 20px;
  padding: 1px 7px;
  border-radius: 999px;
  background: #EDF2F7;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
  color: #4C687F;
  text-align: center;
}

.pu-mod-sub {
  margin: 0 0 14px;
  font-size: 12.8px;
  line-height: 1.5;
  color: var(--pu-mod-mute);
}

.pu-mod-empty {
  margin: 8px 0 0;
  padding: 14px 16px;
  border: 1px dashed #D6E0E9;
  border-radius: 10px;
  font-size: 13.5px;
  color: var(--pu-mod-mute);
}

.pu-mod-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 38px;
  padding: 0 15px;
  border: 1px solid var(--pu-mod-line);
  border-radius: 10px;
  background: #fff;
  font-size: 13px;
  font-weight: 600;
  color: var(--pu-mod-ink);
  text-decoration: none;
  cursor: pointer;
  transition: border-color .15s, background-color .15s, color .15s;
}

.pu-mod-btn:hover { border-color: #12436C; text-decoration: none; }
.pu-mod-btn--ghost { background: #F7FAFC; }
.pu-mod-btn--primary { background: #12436C; border-color: #12436C; color: #fff; }
.pu-mod-btn--primary:hover { background: #0E3557; border-color: #0E3557; color: #fff; }

/* --- 30d. Гейт доступу --- */

.pu-mod-gate {
  max-width: 460px;
  margin: 60px auto;
  padding: 34px 30px;
  text-align: center;
  background: #fff;
  border: 1px solid var(--pu-mod-line);
  border-radius: 16px;
}

.pu-mod-gate__icon {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  margin: 0 auto 16px;
  border-radius: 14px;
  background: #EEF3F8;
  color: #12436C;
}

.pu-mod-gate h1 {
  margin: 0 0 8px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 20px;
  color: #12436C;
}

.pu-mod-gate p { margin: 0 0 20px; font-size: 14px; color: var(--pu-mod-mute); }

/* --- 30e. Вкладки черги --- */

.pu-mod-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 18px;
}

.pu-mod-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 38px;
  padding: 0 14px;
  border: 1px solid transparent;
  border-radius: 10px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--pu-mod-mute);
  text-decoration: none;
  transition: background-color .15s, color .15s, border-color .15s;
}

.pu-mod-tab:hover { background: #EAF0F6; color: var(--pu-mod-ink); text-decoration: none; }

.pu-mod-tab.is-active {
  background: #fff;
  border-color: var(--pu-mod-line);
  color: #12436C;
  box-shadow: 0 1px 2px rgba(15, 30, 46, .05);
}

.pu-mod-tab b {
  padding: 1px 7px;
  border-radius: 999px;
  background: #E4EBF2;
  font-size: 11.5px;
  font-variant-numeric: tabular-nums;
  color: #4C687F;
}

.pu-mod-tab.is-active b { background: #12436C; color: #fff; }

/* --- 30f. Рядок черги --- */

.pu-mod-queue { margin: 0; padding: 0; list-style: none; }

.pu-mod-row {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  margin: 0 0 10px;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid var(--pu-mod-line);
  border-radius: 12px;
  transition: border-color .15s, box-shadow .15s;
}

.pu-mod-row:hover {
  border-color: #B9CCDD;
  box-shadow: 0 2px 10px rgba(15, 30, 46, .06);
}

.pu-mod-row__cover {
  display: block;
  overflow: hidden;
  width: 64px;
  height: 48px;
  border-radius: 8px;
  background: #E9EFF5;
}

.pu-mod-row__cover img { width: 100%; height: 100%; object-fit: cover; display: block; }

.pu-mod-row__nocover {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-weight: 700;
  color: #A9BCCD;
}

.pu-mod-row__body { min-width: 0; }

.pu-mod-row__title {
  display: block;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 700;
  font-size: 14.5px;
  line-height: 1.35;
  color: #12436C;
  text-decoration: none;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.pu-mod-row__title:hover { color: #C96A0E; text-decoration: none; }

.pu-mod-row__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  margin: 5px 0 0;
  font-size: 12.5px;
  color: var(--pu-mod-mute);
}

.pu-mod-row__meta .amount,
.pu-mod-row__meta ins { font-weight: 600; color: var(--pu-mod-ink); text-decoration: none; }
.pu-mod-row__meta del { display: none; }

.pu-mod-row__wait { font-variant-numeric: tabular-nums; }

.pu-mod-row__warn {
  margin: 6px 0 0;
  font-size: 12px;
  font-weight: 600;
  color: #B45309;
}

.pu-mod-row__warn::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  margin: 0 7px 1px 0;
  border-radius: 50%;
  background: #EB8018;
}

/* Посилання «Відкрити» в рядку черги.
 *
 * ВИПРАВЛЕНО 1.50.9, дві окремі вади в одному правилі.
 *
 * 1. РОЗКЛАДКА. Було задано лише white-space: nowrap, тобто елемент
 *    лишався звичайним інлайновим посиланням. Текст і піктограма-стрілка
 *    всередині розкладалися на два рядки: nowrap забороняє перенос МІЖ
 *    словами, але SVG — окремий інлайновий блок, і перед ним рядок
 *    розривався вільно.
 *
 *    Що показово: мобільне правило нижче задає цьому елементу
 *    justify-content: center — властивість, яка без display:flex не робить
 *    нічого. Тобто елемент замислювався флексом від початку, і рядок із
 *    display просто загубився.
 *
 * 2. КОЛІР. Кольору тут не було оголошено взагалі, тож браузер малював
 *    посилання типовим фіолетовим для :visited.
 *
 *    Це вже четвертий випадок тієї самої причини (розділ 0c, кошик і
 *    сторінка подяки в 1.50.3, заголовок рядка в 1.50.7). Спільний
 *    знаменник щоразу один: <a> без явної декларації кольору НА САМОМУ
 *    посиланні. Успадкування від батька не рятує — у браузера власне
 *    правило для :visited, і воно б'є успадковане значення.
 *
 *    Дублювання явними hex — бо Firefox відкидає inherit і currentColor
 *    саме в правилах для відвіданих посилань. */
.pu-mod-row__go {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
  font-weight: 600;
  text-decoration: none;
  color: #12436C;
}

.pu-mod-row__go:visited { color: #12436C; }

.pu-mod-row__go:hover,
.pu-mod-row__go:hover:visited { color: #C96A0E; }

.dark .pu-mod-row__go,
.dark .pu-mod-row__go:visited { color: #9DBBD8; }

.dark .pu-mod-row__go:hover,
.dark .pu-mod-row__go:hover:visited { color: #F5A54F; }

/* --- 30f-bis. «Перевірити» як кнопка (1.54.3) ------------------------
 *
 * СИМПТОМ 1: текст кнопки невидимий, з'являється лише при наведенні.
 *
 * ПРИЧИНА. Правила .pu-mod-row__go вище писалися, коли елемент був
 * текстовим посиланням. Потім у розмітку додали .pu-mod-btn--primary
 * (темно-синій фон), а колір тексту так і лишився від посилання:
 *
 *   .pu-mod-btn--primary { color: #fff }     — рядок ~5409
 *   .pu-mod-row__go      { color: #12436C }  — рядок ~5607, той самий
 *                                               вага (один клас), пізніше
 *                                               у файлі → перемагає.
 *
 * Результат — #12436C на #12436C. При наведенні спрацьовувало вже
 * правило :hover посилання (помаранчевий) — звідси «світиться лише під
 * курсором».
 *
 * ЧОМУ НЕ ПРОСТО ВИДАЛИТИ КОЛЬОРИ .pu-mod-row__go. Той самий клас може
 * стояти на текстовому посиланні без .pu-mod-btn (так елемент задумувався
 * й описаний у коментарі вище). Тому кнопковий варіант перебиваємо
 * подвійним класом — вага (0,2,0) і вище — і не ламаємо текстовий.
 *
 * Кольори — явні hex для кожного стану разом із :visited: див. розділ
 * 0c і learnings — Firefox ігнорує inherit/currentColor у :visited.
 *
 * СИМПТОМ 2: при натисканні зникає скруглення.
 *
 * У самій темі правила, що скидає border-radius, немає (перевірено
 * theme.css і main.css). Прямокутник, який з'являється в момент
 * кліку, малює не рамка кнопки, а один із механізмів браузера/батьківської
 * теми для a:focus / a:active: outline (Storefront фарбує його для a:focus),
 * тінь або підсвітка дотику (-webkit-tap-highlight на ноутбуках із
 * сенсорним екраном). Глобальне скидання в розділі 0b їх прибирає, але
 * лише селектором a:active (0,1,1) — Storefront для a:focus має не
 * слабший. Тому на самій кнопці фіксуємо всі три механізми й радіус
 * явно, а для клавіатури малюємо власне кільце тінню — вона, на відміну
 * від outline у старих браузерах, завжди йде по скругленню. */
.pu-mod-btn.pu-mod-row__go,
.pu-mod-btn.pu-mod-row__go:visited,
.pu-mod-btn.pu-mod-row__go:focus,
.pu-mod-btn.pu-mod-row__go:active {
  border-radius: 10px;
  outline: none;
  -webkit-tap-highlight-color: transparent;
}

.pu-mod-btn--primary.pu-mod-row__go,
.pu-mod-btn--primary.pu-mod-row__go:visited,
.pu-mod-btn--primary.pu-mod-row__go:focus {
  background: #12436C;
  border-color: #12436C;
  color: #FFFFFF;
  box-shadow: none;
}

.pu-mod-btn--primary.pu-mod-row__go:hover,
.pu-mod-btn--primary.pu-mod-row__go:hover:visited {
  background: #0E3557;
  border-color: #0E3557;
  color: #FFFFFF;
}

/* Натискання — трохи темніше й на піксель нижче: відгук на клік без
 * будь-яких рамок. */
.pu-mod-btn--primary.pu-mod-row__go:active,
.pu-mod-btn--primary.pu-mod-row__go:active:visited {
  background: #0A2A45;
  border-color: #0A2A45;
  color: #FFFFFF;
  box-shadow: none;
  transform: translateY(1px);
}

.pu-mod-btn.pu-mod-row__go:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}

.dark .pu-mod-btn--primary.pu-mod-row__go,
.dark .pu-mod-btn--primary.pu-mod-row__go:visited,
.dark .pu-mod-btn--primary.pu-mod-row__go:focus {
  background: #1E5285;
  border-color: #1E5285;
  color: #FFFFFF;
}

.dark .pu-mod-btn--primary.pu-mod-row__go:hover,
.dark .pu-mod-btn--primary.pu-mod-row__go:hover:visited {
  background: #24629E;
  border-color: #24629E;
  color: #FFFFFF;
}

.dark .pu-mod-btn--primary.pu-mod-row__go:active,
.dark .pu-mod-btn--primary.pu-mod-row__go:active:visited {
  background: #184470;
  border-color: #184470;
  color: #FFFFFF;
}

/* --- 30g. Порожня черга --- */

.pu-mod-zero { padding: 46px 24px; text-align: center; }

.pu-mod-zero > span {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  margin: 0 auto 14px;
  border-radius: 50%;
  background: #E9F7F1;
  color: #0F9D6E;
}

.pu-mod-zero h2 {
  margin: 0 0 6px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 18px;
  color: #12436C;
}

.pu-mod-zero p { margin: 0; font-size: 13.5px; color: var(--pu-mod-mute); }

/* --- 30h. Екран перевірки: каркас --- */

.pu-mod-crumbs {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 16px;
}

.pu-mod-crumbs > a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  font-weight: 600;
  color: var(--pu-mod-mute);
  text-decoration: none;
}

.pu-mod-crumbs > a:hover { color: #12436C; text-decoration: none; }

.pu-mod-crumbs__id {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  color: #A0B3C6;
}

.pu-mod-status {
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  background: #EDF2F7;
  color: #4C687F;
}

.pu-mod-status--pending  { background: #FEF1E3; color: #9E520B; }
.pu-mod-status--publish  { background: #E9F7F1; color: #0A5F44; }
.pu-mod-status--revision { background: #FDF3D7; color: #8A6100; }
.pu-mod-status--rejected { background: #FDECEC; color: #8C2318; }

/* Призупинено (1.27.0). Свідомо холодний сіро-синій, а не третій відтінок
   помаранчевого чи червоного: це не помилка автора й не відмова, а
   вимкнений тумблер — стан, з якого є дорога назад. */
.pu-mod-status--suspended { background: #DFE8F1; color: #23415E; }

.pu-mod-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 356px;
  gap: 20px;
  align-items: start;
}

.pu-mod-main { min-width: 0; }

.pu-mod-side {
  position: sticky;
  top: 16px;
  min-width: 0;
}

/* --- 30i. Картка матеріалу --- */

.pu-mod-hero {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 22px;
}

.pu-mod-hero__cover {
  overflow: hidden;
  border-radius: 10px;
  background: #E9EFF5;
  aspect-ratio: 4 / 3;
}

.pu-mod-hero__cover img { width: 100%; height: 100%; object-fit: cover; display: block; }

.pu-mod-hero__nocover {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-size: 12.5px;
  color: #A0B3C6;
}

.pu-mod-hero__body { min-width: 0; }

.pu-mod-hero__title {
  margin: 0 0 16px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 20px;
  line-height: 1.3;
  color: #12436C;
}

.pu-mod-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px 18px;
  margin: 0 0 18px;
  padding: 14px 0 0;
  border-top: 1px solid #EDF2F6;
}

.pu-mod-meta > div { min-width: 0; }

.pu-mod-meta dt {
  margin: 0 0 2px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: #93A9BF;
}

.pu-mod-meta dd {
  margin: 0;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--pu-mod-ink);
  overflow-wrap: anywhere;
}

.pu-mod-meta dd .amount { font-weight: 700; }
.pu-mod-meta dd del { opacity: .5; font-weight: 500; }

.pu-mod-hero__links { display: flex; flex-wrap: wrap; gap: 8px; }

/* --- 30j. Автоперевірка --- */

.pu-mod-flags ul { margin: 6px 0 0; padding: 0; list-style: none; }

.pu-mod-flagline {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px solid #F0F4F8;
  font-size: 13.5px;
  line-height: 1.5;
}

.pu-mod-flagline:last-child { border-bottom: none; }

.pu-mod-flagline > span {
  flex: none;
  width: 7px;
  height: 7px;
  margin-top: 7px;
  border-radius: 50%;
  background: #B9CCDD;
}

.pu-mod-flagline--warn > span { background: #EB8018; }
.pu-mod-flagline--info > span { background: #3E6E9E; }
.pu-mod-flagline--warn { color: #8A4A08; }

/* --- 30k. Опис --- */

.pu-mod-desc {
  max-height: 460px;
  overflow-y: auto;
  padding: 4px 4px 4px 0;
  font-size: 14.5px;
  line-height: 1.65;
  color: #2B4964;
}

.pu-mod-desc p  { margin: 0 0 12px; }
.pu-mod-desc ul,
.pu-mod-desc ol { margin: 0 0 12px; padding-left: 22px; }
.pu-mod-desc li { margin: 0 0 4px; }
.pu-mod-desc strong { color: #12436C; }

/* --- 30l. Файли --- */

.pu-mod-files { margin: 0; padding: 0; list-style: none; }

.pu-mod-files li {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid #F0F4F8;
}

.pu-mod-files li:last-child { border-bottom: none; }

.pu-mod-files__ext {
  display: grid;
  place-items: center;
  height: 30px;
  border-radius: 7px;
  background: #EEF3F8;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .04em;
  color: #4C687F;
}

.pu-mod-files__name { font-size: 13.5px; overflow-wrap: anywhere; }

.pu-mod-files__get {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 600;
  color: #1E5285;
  text-decoration: none;
  white-space: nowrap;
}

.pu-mod-files__get:hover { color: #C96A0E; text-decoration: none; }

/* --- 30m. Прев'ю --- */

.pu-mod-prevs {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 10px;
}

.pu-mod-prev {
  position: relative;
  display: block;
  overflow: hidden;
  border: 1px solid var(--pu-mod-line);
  border-radius: 8px;
  background: #F7FAFC;
  aspect-ratio: 3 / 4;
}

.pu-mod-prev img { width: 100%; height: 100%; object-fit: cover; display: block; }

.pu-mod-prev > span {
  position: absolute;
  left: 6px;
  bottom: 6px;
  min-width: 20px;
  padding: 1px 6px;
  border-radius: 5px;
  background: rgba(12, 32, 50, .82);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  color: #fff;
  text-align: center;
}

.pu-mod-prev:hover { border-color: #12436C; }

/* --- 30n. Журнал --- */

.pu-mod-log { margin: 8px 0 0; padding: 0; list-style: none; }

.pu-mod-log__item {
  padding: 12px 0 12px 14px;
  border-left: 2px solid #E2E9F0;
}

.pu-mod-log__item--ok    { border-left-color: #0F9D6E; }
.pu-mod-log__item--warn  { border-left-color: #EB8018; }
.pu-mod-log__item--stop  { border-left-color: #C0392B; }
.pu-mod-log__item--muted { border-left-color: #B9CCDD; }

.pu-mod-log__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
  font-size: 12.5px;
  color: var(--pu-mod-mute);
}

.pu-mod-log__head b { font-size: 13px; color: var(--pu-mod-ink); }

.pu-mod-log__head em {
  padding: 1px 7px;
  border-radius: 999px;
  background: #EDF2F7;
  font-size: 10.5px;
  font-style: normal;
  font-weight: 600;
  color: #6C819A;
}

.pu-mod-log__item p {
  margin: 6px 0 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: #2B4964;
  white-space: pre-line;
}

/* --- 30o. Автор --- */

.pu-mod-author__row { display: flex; align-items: center; gap: 12px; margin-top: 10px; }

.pu-mod-author__ava {
  display: grid;
  place-items: center;
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #12436C;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 15px;
  color: #fff;
}

.pu-mod-author__meta { display: flex; flex-direction: column; min-width: 0; }
.pu-mod-author__meta b { font-size: 14px; color: var(--pu-mod-ink); }

.pu-mod-author__meta a {
  font-size: 12.5px;
  color: #1E5285;
  text-decoration: none;
  overflow-wrap: anywhere;
}

.pu-mod-author__stat { margin: 12px 0 0; font-size: 12.5px; color: var(--pu-mod-mute); }

/* --- 30p. Панель рішення --- */

.pu-mod-decide { padding-bottom: 18px; }

.pu-mod-checklist {
  margin: 12px 0 16px;
  border: 1px solid var(--pu-mod-line);
  border-radius: 10px;
  background: #F9FBFD;
}

.pu-mod-checklist > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--pu-mod-ink);
  cursor: pointer;
  list-style: none;
}

.pu-mod-checklist > summary::-webkit-details-marker { display: none; }

.pu-mod-checklist__done {
  margin-left: auto;
  padding: 1px 8px;
  border-radius: 999px;
  background: #E4EBF2;
  font-size: 11.5px;
  font-variant-numeric: tabular-nums;
  color: #4C687F;
}

.pu-mod-checklist__done.is-full { background: #0F9D6E; color: #fff; }

.pu-mod-checklist ul {
  margin: 0;
  padding: 0 14px 12px;
  list-style: none;
}

.pu-mod-checklist li { margin: 0 0 2px; }

.pu-mod-checklist label {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 5px 0;
  font-size: 13px;
  line-height: 1.45;
  color: #3D5872;
  cursor: pointer;
}

.pu-mod-checklist input { margin-top: 3px; accent-color: #0F9D6E; }
.pu-mod-checklist input:checked + span { color: #9AAFC3; text-decoration: line-through; }

.pu-mod-label {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 8px;
  font-size: 12.5px;
  font-weight: 700;
  color: #4C687F;
}

.pu-mod-label em {
  font-size: 11.5px;
  font-style: normal;
  font-weight: 600;
  color: #C0392B;
}

.pu-mod-phrases { display: flex; flex-wrap: wrap; gap: 5px; margin: 0 0 10px; }

.pu-mod-phrase {
  padding: 4px 10px;
  border: 1px dashed #C7D6E3;
  border-radius: 999px;
  background: #fff;
  font-family: inherit;
  font-size: 11.5px;
  font-weight: 600;
  color: #4C687F;
  cursor: pointer;
  transition: border-color .15s, background-color .15s, color .15s;
}

.pu-mod-phrase:hover { border-color: #12436C; color: #12436C; }
.pu-mod-phrase.is-used { border-style: solid; background: #EEF3F8; color: #A0B3C6; }

.pu-mod-form textarea {
  width: 100%;
  min-height: 118px;
  padding: 12px 14px;
  border: 1px solid #CFDCE7;
  border-radius: 10px;
  background: #fff;
  font-family: inherit;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--pu-mod-ink);
  resize: vertical;
  transition: border-color .15s, box-shadow .15s;
}

.pu-mod-form textarea:focus {
  outline: none;
  border-color: #3E6E9E;
  box-shadow: 0 0 0 3px rgba(62, 110, 158, .16);
}

.pu-mod-form textarea.is-missing {
  border-color: #C0392B;
  box-shadow: 0 0 0 3px rgba(192, 57, 43, .14);
}

.pu-mod-acts { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }

.pu-mod-act {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  padding: 11px 14px;
  border: 1px solid transparent;
  border-radius: 10px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-size: 13.5px;
  font-weight: 700;
  text-align: left;
  cursor: pointer;
  transition: filter .15s, background-color .15s, border-color .15s;
}

.pu-mod-act > span { flex: 1; }
.pu-mod-act:hover { filter: brightness(.96); }

.pu-mod-act--ok    { background: #0F9D6E; color: #fff; }
.pu-mod-act--warn  { background: #FEF1E3; border-color: #F3CFA8; color: #9E520B; }
.pu-mod-act--stop  { background: #FDECEC; border-color: #F2C7C2; color: #8C2318; }
.pu-mod-act--pause { background: #E8EEF5; border-color: #C0D2E3; color: #23415E; }

.pu-mod-act--muted {
  background: #fff;
  border-color: var(--pu-mod-line);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--pu-mod-mute);
}

/* Блок джерел усередині картки модерації: відступ згори дає сама картка. */
.pu-mod-card .pu-ref--bare { margin-top: 12px; }
.pu-mod-card .pu-ref__facts { margin-bottom: 16px; }

/* --- 30q. Адаптив --- */

@media (max-width: 1080px) {
  .pu-mod-layout { grid-template-columns: minmax(0, 1fr); }
  .pu-mod-side { position: static; }
}

@media (max-width: 720px) {
  .pu-mod-wrap { padding: 16px 14px 56px; }
  .pu-mod-card { padding: 16px; border-radius: 12px; }
  .pu-mod-hero { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .pu-mod-hero__cover { max-width: 220px; }
  .pu-mod-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pu-mod-row { grid-template-columns: 52px minmax(0, 1fr); }
  /* Звернення й на вузькому екрані лишається без обкладинки: інакше
     заголовок знову опиниться в колонці 52px. */
  .pu-sup-row { grid-template-columns: minmax(0, 1fr); }
  .pu-sup-row__side { grid-column: 1 / -1; }
  .pu-mod-row__cover { width: 52px; height: 40px; }
  .pu-mod-row__go { grid-column: 1 / -1; justify-content: center; }
  .pu-mod-bar__inner { gap: 12px; }
  .pu-mod-bar__me { display: none; }
  .pu-mod-purge__btn > span { display: none; }
  .pu-mod-purge__btn { padding: 0 9px; }
}

/* --- 30r. Темна тема --- */

.dark .pu-mod {
  --pu-mod-line: #24384B;
  --pu-mod-bg:   #0B1620;
  --pu-mod-card: #12212E;
  --pu-mod-ink:  #E7EEF5;
  --pu-mod-mute: #8FA8C0;
}

.dark .pu-mod-bar { background: #08131F; border-bottom-color: #1A2C3D; }
.dark .pu-mod-toast--ok  { background: #0C2A22; color: #6FD3AE; }
.dark .pu-mod-toast--err { background: #2C1416; color: #F0A9A0; }
.dark .pu-mod-h { color: #7E97AF; }
.dark .pu-mod-count,
.dark .pu-mod-tab b { background: #17293A; color: #9DB4C8; }
.dark .pu-mod-btn { background: #17293A; color: #E7EEF5; }
.dark .pu-mod-btn--ghost { background: #0F1C27; }
.dark .pu-mod-btn--primary { background: #1E5285; border-color: #1E5285; }
.dark .pu-mod-gate { background: #12212E; }
.dark .pu-mod-gate h1 { color: #fff; }
.dark .pu-mod-gate__icon { background: #17293A; color: #9FC2E2; }
.dark .pu-mod-tab:hover { background: #17293A; }
.dark .pu-mod-tab.is-active { background: #12212E; color: #fff; box-shadow: none; }
.dark .pu-mod-tab.is-active b { background: #1E5285; color: #fff; }
.dark .pu-mod-row { background: #12212E; }
.dark .pu-mod-row:hover { border-color: #35506B; box-shadow: none; }
.dark .pu-mod-row__cover,
.dark .pu-mod-hero__cover { background: #17293A; }
.dark .pu-mod-row__title { color: #fff; }
.dark .pu-mod-row__meta .amount { color: #E7EEF5; }
.dark .pu-mod-zero h2,
.dark .pu-mod-hero__title { color: #fff; }
.dark .pu-mod-zero > span { background: #0C2A22; color: #6FD3AE; }
.dark .pu-mod-meta { border-top-color: #1E3346; }
.dark .pu-mod-meta dt { color: #7E97AF; }
.dark .pu-mod-flagline { border-bottom-color: #1A2C3D; }
.dark .pu-mod-flagline--warn { color: #F5A54F; }
.dark .pu-mod-desc { color: #C7D8E7; }
.dark .pu-mod-desc strong { color: #fff; }
.dark .pu-mod-empty { border-color: #2B4359; }
.dark .pu-mod-files li { border-bottom-color: #1A2C3D; }
.dark .pu-mod-files__ext { background: #17293A; color: #9DB4C8; }
.dark .pu-mod-files__get { color: #9FC2E2; }
.dark .pu-mod-prev { background: #0F1C27; }
.dark .pu-mod-log__item { border-left-color: #24384B; }
.dark .pu-mod-log__item p { color: #C7D8E7; }
.dark .pu-mod-log__head em { background: #17293A; color: #9DB4C8; }
.dark .pu-mod-status { background: #17293A; color: #9DB4C8; }
.dark .pu-mod-status--pending  { background: #2A1C0C; color: #F5A54F; }
.dark .pu-mod-status--publish  { background: #0C2A22; color: #6FD3AE; }
.dark .pu-mod-status--revision  { background: #2A2409; color: #E5C453; }
.dark .pu-mod-status--rejected  { background: #2C1416; color: #F0A9A0; }
.dark .pu-mod-status--suspended { background: #17293A; color: #A9C4DC; }
.dark .pu-mod-checklist { background: #0F1C27; }
.dark .pu-mod-checklist > summary { color: #E7EEF5; }
.dark .pu-mod-checklist__done { background: #17293A; color: #9DB4C8; }
.dark .pu-mod-checklist label { color: #B7CBDD; }
.dark .pu-mod-phrase { background: #0F1C27; border-color: #2B4359; color: #9DB4C8; }
.dark .pu-mod-phrase:hover { border-color: #3E6E9E; color: #DCE8F3; }
.dark .pu-mod-phrase.is-used { background: #17293A; color: #6C819A; }
.dark .pu-mod-form textarea { background: #0B1620; border-color: #2B4359; color: #E7EEF5; }
.dark .pu-mod-act--warn { background: #2A1C0C; border-color: #6E3907; color: #F5A54F; }
.dark .pu-mod-act--stop { background: #2C1416; border-color: #5C2320; color: #F0A9A0; }
.dark .pu-mod-act--pause { background: #17293A; border-color: #2C4459; color: #A9C4DC; }
.dark .pu-mod-act--muted { background: #17293A; color: #9DB4C8; }


/* --- 30s. Бейджі статусів модерації в кабінеті автора ------------------
   Свідомо не Tailwind: статуси додано у 1.21.0, тобто після останнього
   білду main.css, і утиліт bg-amber-100 / bg-red-100 там немає. --------- */

.pu-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  white-space: nowrap;
}

.pu-badge--revision  { background: #FDF3D7; color: #8A6100; }
.pu-badge--rejected  { background: #FDECEC; color: #8C2318; }
.pu-badge--suspended { background: #DFE8F1; color: #23415E; }

.dark .pu-badge--revision  { background: #2A2409; color: #E5C453; }
.dark .pu-badge--rejected  { background: #2C1416; color: #F0A9A0; }
.dark .pu-badge--suspended { background: #17293A; color: #A9C4DC; }

/* «Знято з продажу» (1.44.0) — дія самого автора, а не санкція. Тому
   нейтральний бурштиновий, помітно відмінний і від сірого «Призупинено»
   (адміністрація), і від зеленого «Опубліковано». */
.pu-badge--withdrawn       { background: #F4E7D3; color: #6B4A16; }
.dark .pu-badge--withdrawn { background: #2C2312; color: #E0BE84; }


/* ============================================================
   31. Кабінет автора: відповідь модератора

   Матеріал, повернутий на доопрацювання, у довгому списку
   губиться — а саме він вимагає дії. Тому окремий блок нагорі
   з текстом зауваження і прямою кнопкою «виправити».
   ============================================================ */

.pu-fb {
  margin: 0 0 28px;
  padding: 20px 22px;
  border: 1px solid #F3D9A8;
  border-left: 4px solid #EB8018;
  border-radius: 14px;
  background: #FFFBF5;
}

.pu-fb__title {
  margin: 0 0 14px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 15px;
  color: #8A4A08;
}

.pu-fb__item {
  padding: 14px 0;
  border-top: 1px solid #F5E3C6;
}

.pu-fb__item:first-of-type { padding-top: 0; border-top: none; }
.pu-fb__item:last-child    { padding-bottom: 0; }

.pu-fb__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 0 0 10px;
}

.pu-fb__head h3 {
  margin: 0;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  line-height: 1.35;
  color: #12436C;
}

.pu-fb__msg {
  margin: 0;
  padding: 12px 14px;
  border-radius: 10px;
  background: #fff;
  border: 1px solid #F0E0C4;
  font-size: 14px;
  line-height: 1.6;
  color: #3D5872;
  white-space: pre-line;
}

.pu-fb__msg--empty { color: #8A99A8; font-style: italic; }

.pu-fb__when {
  margin: 6px 0 0;
  font-size: 12px;
  color: #A08661;
}

.pu-fb__go {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 40px;
  margin: 12px 0 0;
  padding: 0 16px;
  border-radius: 10px;
  background: #EB8018;
  font-size: 13.5px;
  font-weight: 700;
  color: #fff;
  text-decoration: none;
  transition: background-color .15s;
}

.pu-fb__go:hover { background: #C96A0E; color: #fff; text-decoration: none; }

/* Відхилений матеріал не повертають у роботу — акцент нейтральніший. */
.pu-fb__item--rejected .pu-fb__head h3 { color: #8C2318; }

/* --- 31a. Призупинений продаж (1.27.0) --- */

/* Пояснення платформи, а не цитата модератора: тому не blockquote-картка,
   а рядок із бічною смугою. Автор має спершу зрозуміти, що матеріал не
   видалено й покупці не постраждали, і лише потім читати причину. */
.pu-fb__note {
  margin: 0 0 10px;
  padding: 10px 14px;
  border-left: 3px solid #7E9CB8;
  border-radius: 0 8px 8px 0;
  background: #EEF3F8;
  font-size: 13.5px;
  line-height: 1.6;
  color: #2F4C68;
}

.pu-fb__item--suspended .pu-fb__head h3 { color: #23415E; }

.pu-stat-attention { color: #C96A0E; }

.dark .pu-fb__note { background: #12212E; border-left-color: #3A5872; color: #A9C4DC; }
.dark .pu-fb__item--suspended .pu-fb__head h3 { color: #C6DBEE; }

.dark .pu-fb { background: #1B1508; border-color: #6E3907; border-left-color: #EB8018; }
.dark .pu-fb__title { color: #F5A54F; }
.dark .pu-fb__item { border-top-color: #33260F; }
.dark .pu-fb__head h3 { color: #fff; }
.dark .pu-fb__msg { background: #12212E; border-color: #24384B; color: #C7D8E7; }
.dark .pu-fb__when { color: #9A8763; }
.dark .pu-fb__item--rejected .pu-fb__head h3 { color: #F0A9A0; }
.dark .pu-stat-attention { color: #F5A54F; }


/* --- 31b. Кнопка «Модерація» в шапці ----------------------------------- */

.pu-modlink {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 40px;
  padding: 0 12px;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 600;
  color: #12436C;
  text-decoration: none;
  transition: background-color .15s, color .15s;
}

.pu-modlink:hover { background: #F1F5F9; color: #12436C; text-decoration: none; }

.pu-modlink b,
.pu-modlink__n {
  min-width: 20px;
  padding: 1px 6px;
  border-radius: 999px;
  background: #EB8018;
  font-size: 11.5px;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  color: #fff;
  text-align: center;
}

.pu-modlink__n { margin-left: auto; }

.dark .pu-modlink { color: #fff; }
.dark .pu-modlink:hover { background: #17293A; color: #fff; }


/* ============================================================
   32. Шапка: дії акаунта в один рядок

   Проблема з'явилася разом із лічильником черги біля «Модерації»:
   зайві ~28px переповнили рядок, і flex почав стискати сусідні
   кнопки — «Кабінет автора» ламався на два рядки всередині
   40-піксельної кнопки.

   Дві правки: заборона стискання й переносу — і згортання
   підписів до самих іконок на проміжних ширинах (1024–1279px),
   де підписи все одно не вміщаються всі разом.
   ============================================================ */

.prourok-wide-only { flex: 0 0 auto; white-space: nowrap; }

.pu-hdr-btn { position: relative; }
.pu-hdr-label { white-space: nowrap; }

@media (min-width: 1024px) and (max-width: 1279px) {

  /* Підпис ховаємо доступно: скрінрідер його читає, назву дублює title. */
  .pu-hdr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
  }

  .pu-hdr-btn {
    width: 40px;
    padding-left: 0 !important;
    padding-right: 0 !important;
    justify-content: center;
    gap: 0 !important;
  }

  /* Лічильник у згорнутому стані — кутовим бейджем, як у кошика. */
  .pu-modlink.pu-hdr-btn b {
    position: absolute;
    top: -2px;
    right: -2px;
    min-width: 17px;
    padding: 0 4px;
    font-size: 10.5px;
    line-height: 17px;
  }
}

/* ============================================================
   33. Редактор опису матеріалу (сторінка подачі)

   Панель і поле малює assets/js/description-editor.js; до його
   запуску видно звичайну <textarea> — саме тому .pu-ed__bar
   стоїть із [hidden], а не ховається стилями.
   ============================================================ */

.pu-ed { position: relative; }

/* --- Панель --- */

.pu-ed__bar {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 6px 8px;
  border: 1px solid #CBD5E1;
  border-bottom: none;
  border-radius: 12px 12px 0 0;
  background: #F8FAFC;
}

.pu-ed__bar[hidden] { display: none; }

.pu-ed__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: #475569;
  cursor: pointer;
  transition: background-color .12s, color .12s;
}

.pu-ed__btn:hover { background: #E7EDF4; color: #12436C; }
.pu-ed__btn.is-on { background: #12436C; color: #fff; }

.pu-ed__btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}

.pu-ed__sep {
  width: 1px;
  height: 20px;
  margin: 0 5px;
  background: #DDE5EC;
}

/* --- Поле введення --- */

.pu-ed__area {
  min-height: 190px;
  max-height: 460px;
  overflow-y: auto;
  padding: 14px 16px;
  border: 1px solid #CBD5E1;
  border-radius: 0 0 12px 12px;
  background: #fff;
  font-size: 15px;
  line-height: 1.65;
  color: #1F2937;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
}

.pu-ed__area:focus {
  border-color: #FB923C;
  box-shadow: 0 0 0 2px rgba(251, 146, 60, .35);
}

/* Плейсхолдер: у contenteditable власного немає, малюємо через ::before.
   Клас is-empty ставить скрипт, бо порожнє поле все одно містить <br>. */
.pu-ed__area.is-empty::before {
  content: attr(data-placeholder);
  display: block;
  color: #94A3B8;
  pointer-events: none;
}

.pu-ed__area > *:first-child { margin-top: 0; }
.pu-ed__area > *:last-child  { margin-bottom: 0; }
.pu-ed__area p  { margin: 0 0 10px; }
.pu-ed__area ul,
.pu-ed__area ol { margin: 0 0 10px; padding-left: 24px; }
.pu-ed__area li { margin: 0 0 4px; }
.pu-ed__area a  { color: #1E5285; text-decoration: underline; }
.pu-ed__area strong,
.pu-ed__area b  { font-weight: 700; color: #12436C; }

/* Приховане справжнє поле форми. Не display:none — у деяких браузерах
   це заважає відновленню значення при поверненні «назад». */
.pu-ed__source {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  border: 0;
  opacity: 0;
  pointer-events: none;
}

.pu-ed__hint {
  margin: 8px 0 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: #64748B;
}

@media (max-width: 480px) {
  .pu-ed__bar { flex-wrap: wrap; gap: 1px; }
  .pu-ed__sep { margin: 0 2px; }
  .pu-ed__area { min-height: 160px; font-size: 16px; } /* 16px — щоб iOS не зумив поле */
}

/* --- Темна тема --- */

.dark .pu-ed__bar { background: #12212E; border-color: #24384B; }
.dark .pu-ed__btn { color: #94A3B8; }
.dark .pu-ed__btn:hover { background: #17293A; color: #fff; }
.dark .pu-ed__btn.is-on { background: #1E5285; color: #fff; }
.dark .pu-ed__sep { background: #24384B; }
.dark .pu-ed__area { background: #0B1620; border-color: #24384B; color: #E7EEF5; }
.dark .pu-ed__area.is-empty::before { color: #5A7186; }
.dark .pu-ed__area strong,
.dark .pu-ed__area b { color: #fff; }
.dark .pu-ed__area a { color: #9FC2E2; }
.dark .pu-ed__hint { color: #8FA8C0; }

/* Стрілки «попередній / наступний товар» Storefront — страховка на випадок,
   якщо розмітку виведе плагін Storefront Product Pagination (див. коментар
   у functions.php). */
.storefront-product-pagination { display: none !important; }

/* ============================================================
   34. Розрахунки автора (кабінет) — 1.52.0

   Замінює «Гаманець». Розподіл на рівні еквайра (1.51.0) означає,
   що частка автора не проходить через рахунок платформи: балансу,
   порога й кнопки «Замовити виплату» більше не існує. Тому й
   класи інші (.pu-wallet__cta, .pu-ledger__* видалені разом із
   розміткою) — щоб у файлі не лишалося стилів для дій, яких
   система вже не вміє виконувати.

   Три нові вузли:
     .pu-flow   — маршрут коштів (покупець → розподіл → ви + комісія).
                  Стоїть там, де раніше була кнопка: на місці питання
                  «як мені отримати гроші» тепер відповідь «вони вже
                  йдуть, ось як саме».
     .pu-state  — стан підключення розподілу з кроками: автор бачить,
                  чиєї дії чекають — його чи платформи.
     .pu-report — звіт комісіонера: ціна, комісія, чиста сума.
                  Табличні цифри (tabular-nums) — щоб колонки сум
                  читалися як звіт, а не як текст.

   Написано на власних класах, а не на Tailwind-утилітах: блок
   з'явився після останньої збірки main.css, тому нові утиліти у
   білд не потрапили б (та сама причина, що й у .pu-alert).
   ============================================================ */

.pu-earn { margin: 0 0 32px; }

/* Розміри іконок задані тут, а не Tailwind-утилітами в prourok_icon():
   утиліти на кшталт w-3.5 у зібраний main.css можуть не потрапити, і тоді
   svg без width/height розтягується на всю ширину контейнера. */
.pu-flow__ico svg     { width: 16px; height: 16px; }
.pu-earn__delta svg   { width: 16px; height: 16px; }
.pu-state__mark svg   { width: 13px; height: 13px; }
.pu-report__empty svg { width: 22px; height: 22px; }

.pu-earn__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.pu-earn__title {
  font-family: var(--pu-font-display, inherit);
  font-weight: 800;
  font-size: 20px;
  line-height: 1.2;
  color: #12436C;
  margin: 0;
}

.pu-earn__terms {
  font-size: 13px;
  color: #64748B;
  margin: 0;
}

/* --- Головна панель --- */

.pu-earn__panel {
  position: relative;
  overflow: hidden;
  border-radius: 20px;
  padding: 26px 28px;
  background: linear-gradient(135deg, #0F3A5F 0%, #12436C 55%, #1A5488 100%);
  color: #fff;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 26px;
}

.pu-earn__panel::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .14;
  background-image: radial-gradient(circle at 1px 1px, #fff 1px, transparent 0);
  background-size: 22px 22px;
  pointer-events: none;
}

.pu-earn__panel > * { position: relative; }

.pu-earn__panel--plain {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: flex-end;
}

.pu-earn__label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #9FC2E2;
  margin-bottom: 6px;
}

.pu-earn__sum {
  font-family: var(--pu-font-display, inherit);
  font-weight: 800;
  font-size: 40px;
  line-height: 1.05;
  letter-spacing: -.02em;
  margin: 0;
  font-variant-numeric: tabular-nums;
}

.pu-earn__hint {
  margin: 12px 0 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: #C6DBEE;
  max-width: 46ch;
}

.pu-earn__delta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 14px 0 0;
  padding: 7px 13px 7px 11px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .10);
  border: 1px solid rgba(255, 255, 255, .16);
  font-size: 13px;
  color: #E7EEF5;
}

.pu-earn__delta svg { flex: none; color: #F5A54F; }
.pu-earn__delta b   { font-weight: 700; white-space: nowrap; }

.pu-earn__aside { text-align: right; }

@media (max-width: 900px) {
  .pu-earn__panel,
  .pu-earn__panel--plain {
    grid-template-columns: 1fr;
    padding: 22px 20px;
    align-items: stretch;
  }
  .pu-earn__aside { text-align: left; }
  .pu-earn__sum { font-size: 34px; }
}

/* --- Маршрут коштів --- */

.pu-flow {
  display: flex;
  align-items: center;
  gap: 10px;
}

.pu-flow__step {
  display: grid;
  gap: 2px;
  min-width: 132px;
  padding: 12px 14px;
  border-radius: 14px;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .16);
}

.pu-flow__ico {
  display: block;
  color: #9FC2E2;
  margin-bottom: 4px;
}

.pu-flow__step b {
  font-size: 13px;
  font-weight: 700;
  line-height: 1.25;
  color: #fff;
}

.pu-flow__step i {
  font-style: normal;
  font-size: 12px;
  color: #9FC2E2;
}

.pu-flow__step--split {
  background: rgba(255, 255, 255, .14);
  border-color: rgba(255, 255, 255, .28);
}

.pu-flow__pair { display: grid; gap: 8px; }

.pu-flow__pair .pu-flow__step {
  min-width: 156px;
  padding: 10px 14px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.pu-flow__pair .pu-flow__step i {
  font-weight: 800;
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}

.pu-flow__step--you {
  background: rgba(245, 165, 79, .18);
  border-color: rgba(245, 165, 79, .45);
}

.pu-flow__step--you i { color: #FFC98A; }

/* Стрілка-конектор. Малюється рамками, а не символом: гліф → у різних
   шрифтах має різну ширину й вертикальне вирівнювання, і схема «пливе». */
.pu-flow__arrow {
  position: relative;
  flex: none;
  width: 26px;
  height: 2px;
  background: rgba(255, 255, 255, .28);
}

.pu-flow__arrow::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 2px solid rgba(255, 255, 255, .45);
  border-right: 2px solid rgba(255, 255, 255, .45);
  transform: translateY(-50%) rotate(45deg);
}

/* Розгалуження: та сама стрілка плюс вертикальна дужка до двох чипів. */
.pu-flow__arrow--fork::before {
  content: "";
  position: absolute;
  right: -1px;
  top: 50%;
  width: 2px;
  height: 62px;
  background: rgba(255, 255, 255, .28);
  transform: translateY(-50%);
}

@media (max-width: 900px) {
  .pu-flow {
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }
  .pu-flow__step { min-width: 0; }
  .pu-flow__arrow {
    width: 2px;
    height: 20px;
    margin: 0 auto;
  }
  .pu-flow__arrow::after {
    right: 50%;
    top: auto;
    bottom: 0;
    transform: translateX(50%) rotate(135deg);
  }
  .pu-flow__arrow--fork::before {
    right: 50%;
    top: auto;
    bottom: -1px;
    width: 60%;
    height: 2px;
    transform: translateX(50%);
  }
  .pu-flow__pair { grid-template-columns: 1fr 1fr; }
  .pu-flow__pair .pu-flow__step { min-width: 0; }
}

@media (max-width: 520px) {
  .pu-flow__pair { grid-template-columns: 1fr; }
}

/* --- Стан підключення розподілу --- */

.pu-state {
  margin-top: 14px;
  border: 1px solid #E2E8F0;
  border-left: 4px solid #94A3B8;
  border-radius: 16px;
  background: #fff;
  padding: 18px 20px;
}

.pu-state__head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

.pu-state__badge {
  flex: none;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  background: #F1F5F9;
  color: #475569;
}

.pu-state__note {
  margin: 0;
  flex: 1 1 260px;
  font-size: 13.5px;
  line-height: 1.55;
  color: #475569;
}

.pu-state--ok   { border-left-color: #059669; }
.pu-state--wait { border-left-color: #C96A0E; }
.pu-state--todo { border-left-color: #C96A0E; }
.pu-state--off  { border-left-color: #64748B; }

.pu-state--ok   .pu-state__badge { background: #ECFDF5; color: #047857; }
.pu-state--wait .pu-state__badge { background: #FFF7ED; color: #C2410C; }
.pu-state--todo .pu-state__badge { background: #FFF7ED; color: #C2410C; }

.pu-state__steps {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  counter-reset: none;
}

.pu-state__steps li {
  position: relative;
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: start;
  column-gap: 10px;
  row-gap: 2px;
  padding: 12px 14px;
  border-radius: 12px;
  background: #F8FAFC;
  border: 1px solid #E2E8F0;
}

.pu-state__mark {
  grid-row: 1 / 3;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 700;
  background: #E2E8F0;
  color: #64748B;
}

.pu-state__steps li b {
  font-size: 13px;
  font-weight: 700;
  color: #12436C;
  line-height: 1.3;
}

.pu-state__steps li i {
  font-style: normal;
  font-size: 12px;
  color: #64748B;
}

.pu-state__steps li.is-done {
  background: #ECFDF5;
  border-color: #A7F3D0;
}

.pu-state__steps li.is-done .pu-state__mark {
  background: #059669;
  color: #fff;
}

.pu-state__steps li.is-done b { color: #065F46; }
.pu-state__steps li.is-done i { color: #047857; }

@media (max-width: 780px) {
  .pu-state__steps { grid-template-columns: 1fr; }
}

/* --- Плитки підсумків --- */

.pu-earn__stats {
  margin-top: 14px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

@media (max-width: 900px) { .pu-earn__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 480px) { .pu-earn__stats { grid-template-columns: 1fr; } }

.pu-earn__stat {
  border: 1px solid #E2E8F0;
  border-radius: 14px;
  background: #fff;
  padding: 14px 16px;
}

.pu-earn__stat span {
  display: block;
  font-size: 12.5px;
  color: #64748B;
  margin-bottom: 4px;
}

.pu-earn__stat b {
  font-family: var(--pu-font-display, inherit);
  font-weight: 800;
  font-size: 19px;
  color: #12436C;
  font-variant-numeric: tabular-nums;
}

.pu-earn__stat--minus b { color: #B91C1C; }

/* --- Звіт про продажі --- */

.pu-report {
  margin-top: 14px;
  border: 1px solid #E2E8F0;
  border-radius: 16px;
  background: #fff;
  overflow: hidden;
}

.pu-report__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 16px 18px;
  border-bottom: 1px solid #E2E8F0;
}

.pu-report__title {
  margin: 0;
  font-family: var(--pu-font-display, inherit);
  font-weight: 800;
  font-size: 15px;
  color: #12436C;
}

.pu-report__note {
  font-size: 12.5px;
  color: #94A3B8;
}

.pu-report__cols,
.pu-report__row {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) 108px 108px 118px;
  align-items: center;
  gap: 10px;
  padding: 11px 18px;
}

.pu-report__cols {
  padding-top: 9px;
  padding-bottom: 9px;
  background: #F8FAFC;
  border-bottom: 1px solid #E2E8F0;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: #94A3B8;
}

.pu-report__cols span:nth-child(n+3),
.pu-report__num { text-align: right; }

.pu-report__row + .pu-report__row { border-top: 1px solid #F1F5F9; }

.pu-report__when {
  font-size: 12.5px;
  color: #64748B;
  font-variant-numeric: tabular-nums;
}

.pu-report__what {
  min-width: 0;
  font-size: 13.5px;
  font-weight: 600;
  color: #1F2937;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pu-report__what em {
  display: block;
  font-style: normal;
  font-size: 12px;
  font-weight: 500;
  color: #B91C1C;
}

.pu-report__num {
  font-size: 13.5px;
  font-variant-numeric: tabular-nums;
  color: #475569;
  white-space: nowrap;
}

.pu-report__num--fee { color: #94A3B8; }

.pu-report__num--net {
  font-weight: 700;
  color: #12436C;
}

.pu-report__row--refund { background: #FFFBFA; }
.pu-report__row--refund .pu-report__num--net { color: #B91C1C; }

.pu-report__foot {
  margin: 0;
  padding: 12px 18px 14px;
  border-top: 1px solid #F1F5F9;
  font-size: 12.5px;
  line-height: 1.55;
  color: #64748B;
}

.pu-report__empty {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 22px 18px;
  color: #64748B;
}

.pu-report__empty svg { flex: none; color: #94A3B8; margin-top: 2px; }
.pu-report__empty p   { margin: 0; font-size: 13.5px; line-height: 1.55; max-width: 62ch; }

/* Мобільна розкладка звіту: рядок стає карткою, а підписи колонок
   переїжджають у самі числа з data-l — інакше три суми поспіль
   неможливо розрізнити без заголовка таблиці. */
@media (max-width: 720px) {
  .pu-report__cols { display: none; }

  .pu-report__row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    row-gap: 8px;
    padding: 14px 16px;
  }

  .pu-report__what {
    grid-column: 1 / -1;
    order: 1;
    white-space: normal;
  }

  .pu-report__when { grid-column: 1 / -1; order: 2; }

  .pu-report__num { order: 3; text-align: left; }
  .pu-report__num--net { text-align: right; }

  .pu-report__num::before {
    content: attr(data-l);
    display: block;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .03em;
    text-transform: uppercase;
    color: #94A3B8;
  }
}

/* --- Дані ФОП --- */

.pu-fop {
  margin-top: 14px;
  border: 1px solid #E2E8F0;
  border-radius: 16px;
  background: #fff;
  overflow: hidden;
}

.pu-fop > summary {
  cursor: pointer;
  list-style: none;
  padding: 15px 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-family: var(--pu-font-display, inherit);
  font-weight: 700;
  font-size: 15px;
  color: #12436C;
}

.pu-fop > summary::-webkit-details-marker { display: none; }
.pu-fop[open] > summary { border-bottom: 1px solid #E2E8F0; }

.pu-fop__flag {
  padding: 3px 11px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
}

.pu-fop__flag--ok   { background: #ECFDF5; color: #047857; }
.pu-fop__flag--miss { background: #FFF7ED; color: #C2410C; }

.pu-fop__form { padding: 18px; }

.pu-fop__lead {
  margin: 0 0 16px;
  font-size: 13px;
  line-height: 1.6;
  color: #475569;
  max-width: 72ch;
}

.pu-fop__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

@media (max-width: 640px) { .pu-fop__grid { grid-template-columns: 1fr; } }

.pu-fop__wide { grid-column: 1 / -1; }

.pu-fop__grid label {
  display: block;
  font-size: 12.5px;
  font-weight: 600;
  color: #475569;
  margin-bottom: 6px;
}

.pu-fop__grid input,
.pu-fop__grid select {
  width: 100%;
  height: 46px;
  padding: 0 14px;
  border: 1px solid #CBD5E1;
  border-radius: 12px;
  background: #fff;
  color: #0F172A;
  font-size: 14px;
}

.pu-fop__grid input:focus,
.pu-fop__grid select:focus {
  outline: none;
  border-color: #C96A0E;
  box-shadow: 0 0 0 3px rgba(201, 106, 14, .15);
}

.pu-fop__save {
  margin-top: 16px;
  height: 46px;
  padding: 0 22px;
  border: 0;
  border-radius: 12px;
  background: #12436C;
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  transition: background .15s ease;
}

.pu-fop__save:hover { background: #0F3A5F; }

.pu-fop__tip {
  margin: 12px 0 0;
  font-size: 12.5px;
  line-height: 1.6;
  color: #64748B;
  max-width: 78ch;
}

/* --- Темна тема --- */

.dark .pu-earn__title { color: #fff; }
.dark .pu-earn__terms { color: #8FA8C0; }
.dark .pu-earn__panel { background: linear-gradient(135deg, #08131F 0%, #0F2A40 55%, #16405F 100%); }

.dark .pu-state { background: #12212E; border-color: #24384B; }
.dark .pu-state__badge { background: #17293A; color: #C6DBEE; }
.dark .pu-state__note { color: #8FA8C0; }
.dark .pu-state--ok   .pu-state__badge { background: rgba(5, 150, 105, .18); color: #6EE7B7; }
.dark .pu-state--wait .pu-state__badge,
.dark .pu-state--todo .pu-state__badge { background: rgba(201, 106, 14, .20); color: #F5A54F; }
.dark .pu-state__steps li { background: #0B1620; border-color: #24384B; }
.dark .pu-state__steps li b { color: #fff; }
.dark .pu-state__steps li i { color: #8FA8C0; }
.dark .pu-state__mark { background: #24384B; color: #C6DBEE; }
.dark .pu-state__steps li.is-done { background: rgba(5, 150, 105, .12); border-color: rgba(5, 150, 105, .35); }
.dark .pu-state__steps li.is-done b { color: #A7F3D0; }
.dark .pu-state__steps li.is-done i { color: #6EE7B7; }

.dark .pu-earn__stat { background: #12212E; border-color: #24384B; }
.dark .pu-earn__stat span { color: #8FA8C0; }
.dark .pu-earn__stat b { color: #fff; }
.dark .pu-earn__stat--minus b { color: #FCA5A5; }

.dark .pu-report { background: #12212E; border-color: #24384B; }
.dark .pu-report__head { border-color: #24384B; }
.dark .pu-report__title { color: #fff; }
.dark .pu-report__cols { background: #0B1620; border-color: #24384B; color: #64748B; }
.dark .pu-report__row + .pu-report__row { border-color: #1B2E3F; }
.dark .pu-report__when { color: #8FA8C0; }
.dark .pu-report__what { color: #E7EEF5; }
.dark .pu-report__num { color: #C6DBEE; }
.dark .pu-report__num--fee { color: #64748B; }
.dark .pu-report__num--net { color: #fff; }
.dark .pu-report__row--refund { background: rgba(185, 28, 28, .10); }
.dark .pu-report__row--refund .pu-report__num--net { color: #FCA5A5; }
.dark .pu-report__foot { border-color: #1B2E3F; color: #8FA8C0; }
.dark .pu-report__empty { color: #8FA8C0; }

.dark .pu-fop { background: #12212E; border-color: #24384B; }
.dark .pu-fop > summary { color: #fff; }
.dark .pu-fop[open] > summary { border-color: #24384B; }
.dark .pu-fop__lead { color: #C6DBEE; }
.dark .pu-fop__grid label { color: #C6DBEE; }
.dark .pu-fop__grid input,
.dark .pu-fop__grid select { background: #0B1620; border-color: #24384B; color: #E7EEF5; }
.dark .pu-fop__tip { color: #8FA8C0; }

/* ============================================================
   35. Модерація: фільтр авторів і призупинення продажу
       (1.27.0 — inc/moderation.php, page-templates/moderation.php)

   Продовження візуальної мови розділу 30: інструмент, не
   вітрина. Дія «призупинити» — сіро-синя, не червона: це
   вимкнений тумблер, а не покарання, і дорога назад є завжди.
   Знову без Tailwind-утиліт — блок з'явився після останнього
   `npm run build`.
   ============================================================ */

/* --- 35a. Фільтр «Матеріали автора» --- */

.pu-mod-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 0 0 14px;
  padding: 12px 14px;
  background: #fff;
  border: 1px solid var(--pu-mod-line);
  border-radius: 12px;
}

.pu-mod-filter__label {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--pu-mod-mute);
}

.pu-mod-filter__select {
  min-width: 240px;
  max-width: 100%;
  height: 38px;
  padding: 0 34px 0 12px;
  border: 1px solid var(--pu-mod-line);
  border-radius: 10px;
  background: #F7FAFC;
  font-family: inherit;
  font-size: 13.5px;
  color: var(--pu-mod-ink);
  cursor: pointer;
  /* Власна стрілка: рідний select у Storefront успадковує стилі форм
     каталогу й у цій щільній смузі виглядає на два розміри більшим. */
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236C819A' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 11px center;
  background-size: 15px 15px;
}

.pu-mod-filter__select:focus {
  outline: none;
  border-color: #12436C;
  box-shadow: 0 0 0 3px rgba(18, 67, 108, .12);
}

.pu-mod-filter__reset {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-left: auto;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--pu-mod-mute);
  text-decoration: none;
}

.pu-mod-filter__reset:hover { color: #C0392B; text-decoration: none; }

/* --- 35b. Колонка дій у рядку черги --- */

.pu-mod-row__acts {
  display: flex;
  align-items: center;
  gap: 8px;
  justify-self: end;
}

.pu-mod-row__reason {
  margin: 6px 0 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: #4C687F;
}

.pu-mod-row__reason::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  margin: 0 7px 1px 0;
  border-radius: 50%;
  background: #7E9CB8;
}

/* --- 35c. Швидке призупинення просто з рядка --- */

/* <details> замість модалки й замість переходу на екран матеріалу:
   призупинення — реакція на скаргу, її роблять швидко й пачками.
   Причина при цьому обов'язкова (required + перевірка на сервері):
   п. 6.3 Політики ІВ вимагає повідомити автора з обґрунтуванням. */

.pu-mod-quick { position: relative; }

.pu-mod-quick__toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 38px;
  padding: 0 13px;
  border: 1px solid #C0D2E3;
  border-radius: 10px;
  background: #E8EEF5;
  font-size: 12.5px;
  font-weight: 700;
  color: #23415E;
  white-space: nowrap;
  cursor: pointer;
  list-style: none;
  transition: background-color .15s, border-color .15s;
}

.pu-mod-quick__toggle::-webkit-details-marker { display: none; }
.pu-mod-quick__toggle:hover { background: #DBE6F0; border-color: #9FB8CE; }
.pu-mod-quick[open] .pu-mod-quick__toggle { background: #23415E; border-color: #23415E; color: #fff; }

.pu-mod-quick__panel {
  position: absolute;
  right: 0;
  z-index: 30;
  width: 340px;
  max-width: calc(100vw - 48px);
  margin-top: 8px;
  padding: 14px 15px 15px;
  background: #fff;
  border: 1px solid #C0D2E3;
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(15, 30, 46, .16);
  text-align: left;
  white-space: normal;
}

.pu-mod-quick__title {
  margin: 0 0 6px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 14px;
  color: #12436C;
}

.pu-mod-quick__hint {
  margin: 0 0 10px;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--pu-mod-mute);
}

.pu-mod-quick__panel textarea {
  width: 100%;
  margin: 0 0 10px;
  padding: 9px 11px;
  border: 1px solid var(--pu-mod-line);
  border-radius: 9px;
  background: #F7FAFC;
  font-family: inherit;
  font-size: 13px;
  line-height: 1.55;
  color: var(--pu-mod-ink);
  resize: vertical;
}

.pu-mod-quick__panel textarea:focus {
  outline: none;
  background: #fff;
  border-color: #12436C;
  box-shadow: 0 0 0 3px rgba(18, 67, 108, .12);
}

.pu-mod-quick__confirm {
  width: 100%;
  justify-content: center;
  background: #23415E;
  border-color: #23415E;
  color: #fff;
}

.pu-mod-quick__confirm:hover { background: #16324B; border-color: #16324B; color: #fff; }

.pu-mod-quick-resume { margin: 0; }

.pu-mod-quick__resume {
  border-color: #A9DCC6;
  background: #E9F7F1;
  color: #0A5F44;
  white-space: nowrap;
}

.pu-mod-quick__resume:hover { border-color: #0F9D6E; background: #DBF1E7; color: #0A5F44; }

/* --- 35c-bis. Масова дія над каталогом автора --- */

/* Панель показується лише при обраному авторі. Помаранчева смуга зліва —
   той самий сигнал «увага, це не рутина», що й у блоці зауважень кабінету:
   одним кліком вимикається весь каталог людини. */

.pu-mod-bulk {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 18px;
  margin: 0 0 14px;
  padding: 13px 16px;
  background: linear-gradient(180deg, #FFFDF9 0%, #FFF8EF 100%);
  border: 1px solid #F3DDBE;
  border-left: 3px solid #EB8018;
  border-radius: 12px;
}

.pu-mod-bulk__lead {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0;
  min-width: 0;
}

.pu-mod-bulk__lead b {
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 14px;
  color: #12436C;
}

.pu-mod-bulk__lead span {
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
  color: #9A7340;
}

.pu-mod-bulk__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.pu-mod-bulk__note {
  margin: 0;
  font-size: 12.5px;
  color: #9A7340;
}

/* Панель ширша за рядкову: тут довше пояснення й вищі ставки. */
.pu-mod-bulk__panel { width: 400px; }

.pu-mod-bulk__panel .pu-mod-quick__hint b { color: #12436C; font-weight: 700; }

/* --- 35d. Адаптив --- */

@media (max-width: 860px) {
  .pu-mod-row__acts {
    grid-column: 1 / -1;
    justify-self: stretch;
    flex-wrap: wrap;
  }

  .pu-mod-quick__panel {
    right: auto;
    left: 0;
    width: 100%;
  }

  .pu-mod-filter__select { min-width: 0; flex: 1 1 100%; }
  .pu-mod-filter__reset  { margin-left: 0; }

  .pu-mod-bulk__row   { margin-left: 0; width: 100%; }
  .pu-mod-bulk__panel { width: 100%; }
}

/* --- 35e. Темна тема --- */

.dark .pu-mod-filter { background: #12212E; border-color: #24384B; }
.dark .pu-mod-filter__label { color: #8FA8C0; }
.dark .pu-mod-filter__select { background: #0B1620; border-color: #24384B; color: #E7EEF5; }
.dark .pu-mod-filter__reset { color: #8FA8C0; }
.dark .pu-mod-row__reason { color: #9DB4C8; }
.dark .pu-mod-quick__toggle { background: #17293A; border-color: #2C4459; color: #A9C4DC; }
.dark .pu-mod-quick__toggle:hover { background: #1E3448; }
.dark .pu-mod-quick[open] .pu-mod-quick__toggle { background: #2C4459; border-color: #3A5872; color: #fff; }
.dark .pu-mod-quick__panel { background: #12212E; border-color: #24384B; box-shadow: 0 12px 30px rgba(0, 0, 0, .45); }
.dark .pu-mod-quick__title { color: #fff; }
.dark .pu-mod-quick__hint { color: #8FA8C0; }
.dark .pu-mod-quick__panel textarea { background: #0B1620; border-color: #24384B; color: #E7EEF5; }
.dark .pu-mod-quick__confirm { background: #2C4459; border-color: #3A5872; }
.dark .pu-mod-quick__confirm:hover { background: #3A5872; border-color: #4C6B88; }
.dark .pu-mod-quick__resume { background: #0C2A22; border-color: #1D5A45; color: #6FD3AE; }
.dark .pu-mod-quick__resume:hover { background: #113A2E; border-color: #0F9D6E; color: #6FD3AE; }

.dark .pu-mod-bulk { background: #1B1508; border-color: #6E3907; border-left-color: #EB8018; }
.dark .pu-mod-bulk__lead b { color: #fff; }
.dark .pu-mod-bulk__lead span,
.dark .pu-mod-bulk__note { color: #C9A671; }
.dark .pu-mod-bulk__panel .pu-mod-quick__hint b { color: #C6DBEE; }


/* ============================================================
   36. Коментар автора при повторній подачі (1.28.0)

   Двосторонній діалог модерації: зауваження модератора й
   відповідь автора стоять поруч, у формі й у робочому місці
   модератора. Тон нейтрально-синій, а не помаранчевий: це не
   попередження, а репліка в розмові.

   Без Tailwind-утиліт — блок з'явився після останнього
   `npm run build`.
   ============================================================ */

/* --- 36a. Форма подачі: цитата модератора + поле відповіді --- */

.pu-anote {
  margin: 0 0 4px;
  padding: 18px 19px 19px;
  background: #F7FAFC;
  border: 1px solid #DDE5EC;
  border-radius: 14px;
}

/* Зауваження модератора — цитата, тому інший фон і бічна смуга:
   око має одразу відрізняти чужий текст від власного поля вводу. */
.pu-anote__quote {
  margin: 0 0 16px;
  padding: 12px 14px;
  background: #fff;
  border: 1px solid #E4EBF2;
  border-left: 3px solid #7E9CB8;
  border-radius: 0 10px 10px 0;
}

.pu-anote__quote-head {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0 0 7px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #4C687F;
}

.pu-anote__quote-head svg { flex: none; color: #7E9CB8; }

.pu-anote__quote-head time {
  margin-left: auto;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  font-variant-numeric: tabular-nums;
  color: #8FA3B7;
}

.pu-anote__quote blockquote {
  margin: 0;
  padding: 0;
  border: none;
  font-size: 14px;
  line-height: 1.6;
  color: #2F4C68;
  white-space: pre-line;
}

.pu-anote__field {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid #DDE5EC;
  border-radius: 11px;
  background: #fff;
  font-family: inherit;
  font-size: 14px;
  line-height: 1.6;
  color: #16324B;
  resize: vertical;
}

.pu-anote__field:focus {
  outline: none;
  border-color: #EB8018;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .18);
}

.pu-anote__hint {
  margin: 8px 0 0;
  font-size: 12.5px;
  line-height: 1.55;
  color: #7C8CA0;
}

/* --- 36b. Робоче місце модератора: «що виправив автор» --- */

.pu-mod-anote {
  border-left: 3px solid #7E9CB8;
  border-top-left-radius: 4px;
  border-bottom-left-radius: 4px;
}

.pu-mod-anote blockquote {
  margin: 12px 0 0;
  padding: 12px 14px;
  background: #F4F7FA;
  border: 1px solid var(--pu-mod-line);
  border-radius: 10px;
  font-size: 14px;
  line-height: 1.6;
  color: #2F4C68;
  white-space: pre-line;
}

.pu-mod-anote__when {
  margin: 7px 0 0;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--pu-mod-mute);
}

/* Запис автора в журналі — та сама синя смуга, що й у картці вище,
   щоб репліки однієї сторони читалися як один голос. */
.pu-mod-log__item--author { border-left-color: #7E9CB8; }

/* --- 36c. Позначка в рядку черги --- */

.pu-mod-row__anote {
  margin: 6px 0 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: #4C687F;
}

.pu-mod-row__anote::before {
  content: 'Автор: ';
  font-weight: 700;
  color: #2F4C68;
}

/* --- 36d. Темна тема --- */

.dark .pu-anote { background: #12212E; border-color: #24384B; }
.dark .pu-anote__quote { background: #0B1620; border-color: #24384B; border-left-color: #3A5872; }
.dark .pu-anote__quote-head { color: #9DB4C8; }
.dark .pu-anote__quote blockquote { color: #C7D8E7; }
.dark .pu-anote__field { background: #0B1620; border-color: #24384B; color: #E7EEF5; }
.dark .pu-anote__hint { color: #8FA8C0; }
.dark .pu-mod-anote blockquote { background: #0B1620; border-color: #24384B; color: #C7D8E7; }
.dark .pu-mod-row__anote { color: #9DB4C8; }
.dark .pu-mod-row__anote::before { color: #C6DBEE; }

/* =========================================================================
 * 37. Штатні автори та власні матеріали Платформи (1.33.0)
 * ====================================================================== */

/* --- 37a. Позначка виду матеріалу (оферта, п. 3.4) --- */

.pu-own-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 8px;
  background: #EFF5FB;
  border: 1px solid #D3E3F1;
  color: #12436C;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
}

.pu-own-badge::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #C96A0E;
  flex: none;
}

.pu-own-badge--sm {
  padding: 2px 7px;
  font-size: 11px;
  border-radius: 6px;
}

.pu-own-badge--sm::before { width: 5px; height: 5px; }

.dark .pu-own-badge {
  background: #17293A;
  border-color: #24384B;
  color: #C6DBEE;
}

/* --- 37b. Кабінет штатного автора: продажі замість гаманця --- */

/* Друга колонка панелі притискається праворуч і не розтягується:
   число продажів коротке, і без цього воно повисає посередині.
   1.52.0: клас перейменовано з .pu-wallet__sales на .pu-earn__aside
   разом із розміткою — гаманця більше немає. */
.pu-earn__aside { min-width: 150px; }

@media (max-width: 900px) {
  .pu-earn__aside { min-width: 0; }
}

/* --- 37c. «Деталі облікового запису»: закрите відображуване ім'я --- */

.pu-locked-name {
  margin: 0 0 22px;
  padding: 14px 16px;
  border: 1px solid #D3E3F1;
  border-left: 3px solid #C96A0E;
  border-radius: 12px;
  background: #F6FAFD;
}

.pu-locked-name__title {
  margin: 0 0 4px;
  font-size: 14.5px;
  font-weight: 600;
  color: #12436C;
}

.pu-locked-name__title b { font-weight: 800; }

.pu-locked-name__note {
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
  color: #4C687F;
}

.dark .pu-locked-name { background: #12212E; border-color: #24384B; border-left-color: #C96A0E; }
.dark .pu-locked-name__title { color: #E7EEF5; }
.dark .pu-locked-name__note  { color: #9DB4C8; }

/* Рядок поля, прихований скриптом: саме поле лишається у формі,
   бо WooCommerce вважає display name обов'язковим. */
.pu-hidden-row { display: none !important; }


/* ============================================================
   41. Кнопка «нагору»

   Розмітка — footer.php (поза <footer>, щоб жоден transform на
   предку не зламав position:fixed), логіка — catalog.js.

   Показ керується атрибутом hidden із JS, а не класом: hidden —
   це семантика «елемента зараз немає», тож його разом із нами
   ігнорують і скрінрідери. Але CSS-фреймворки часто переписують
   display для кнопок, і тоді hidden перестає ховати — звідси
   явне правило [hidden] нижче.
   ============================================================ */
.prourok-to-top {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 90;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 14px;
  background: #12436C;
  color: #ffffff;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(6, 20, 35, .28);
  transition: background .18s ease, transform .18s ease, box-shadow .18s ease;
}
.prourok-to-top[hidden] { display: none !important; }

.prourok-to-top:hover {
  background: #EB8018;
  transform: translateY(-2px);
  box-shadow: 0 14px 28px rgba(6, 20, 35, .34);
}
.prourok-to-top:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(245, 165, 79, .55);
}
.prourok-to-top svg { display: block; }

.dark .prourok-to-top {
  background: #1E5285;
  border-color: rgba(255, 255, 255, .14);
}
.dark .prourok-to-top:hover { background: #EB8018; }

/* На вузькому екрані посуваємо вище: там знизу часто висить
 * панель дій WooCommerce або системна панель браузера. */
@media (max-width: 782px) {
  .prourok-to-top {
    right: 14px;
    bottom: 76px;
    width: 42px;
    height: 42px;
    border-radius: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .prourok-to-top { transition: none; }
  .prourok-to-top:hover { transform: none; }
}

/* ============================================================
   42. Головна сторінка кабінету покупця (myaccount/dashboard.php)

   Замінює рідний текст WooCommerce, який був написаний для
   магазину фізичних товарів і посилався на приховану вкладку
   «Адреси» (inc/account-customer.php).

   Усе на власних класах, а не на Tailwind-утилітах: шаблон
   з'явився після останнього `npm run build`, тож нова утиліта
   тут мовчки не застосувалася б.
   ============================================================ */

.pu-acc__tiles {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin: 0 0 22px;
}

.pu-acc__tile {
  display: block;
  padding: 18px 18px 16px;
  border: 1px solid #E2E8F0;
  border-radius: 16px;
  background: #fff;
  text-decoration: none !important;
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.pu-acc__tile:hover {
  border-color: #F08F2E;
  box-shadow: 0 4px 12px rgba(15, 30, 46, .08);
  transform: translateY(-2px);
}

.pu-acc__tile-ic {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 12px;
  background: #EAF1F8;
  color: #12436C;
  margin-bottom: 12px;
}

.pu-acc__tile-num {
  display: block;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-size: 28px;
  font-weight: 800;
  line-height: 1.1;
  color: #0E3557;
  font-variant-numeric: tabular-nums;
}

.pu-acc__tile-label {
  display: block;
  margin-top: 2px;
  font-weight: 700;
  font-size: 15px;
  color: #0E3557;
}

.pu-acc__tile-hint {
  display: block;
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.45;
  color: #64748B;
}

.pu-acc__note {
  margin: 0 0 18px;
  padding: 12px 14px;
  border-left: 3px solid #EB8018;
  border-radius: 0 10px 10px 0;
  background: #FFF7EF;
  font-size: 14px;
  line-height: 1.55;
  color: #334155;
}

.pu-acc__cta { margin: 0 0 18px; }

.pu-acc__btn {
  display: inline-flex;
  align-items: center;
  height: 44px;
  padding: 0 22px;
  border-radius: 14px;
  background: #EB8018;
  color: #fff !important;
  font-weight: 700;
  font-size: 15px;
  text-decoration: none !important;
  transition: background-color .18s ease;
}

.pu-acc__btn:hover { background: #C96A0E; }

.pu-acc__foot {
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: #64748B;
}

/* --- 42a. Адаптив --- */
@media (max-width: 720px) {
  .pu-acc__tiles { grid-template-columns: 1fr; gap: 10px; }
  .pu-acc__tile  { padding: 14px 16px; }
  .pu-acc__tile-ic { width: 34px; height: 34px; margin-bottom: 10px; }
  .pu-acc__tile-num { font-size: 24px; }
}

/* --- 42b. Темна тема --- */
.dark .pu-acc__tile {
  background: #12212E;
  border-color: #24384B;
}
.dark .pu-acc__tile:hover { border-color: #EB8018; }
.dark .pu-acc__tile-ic    { background: #17293A; color: #9DBBD8; }
.dark .pu-acc__tile-num,
.dark .pu-acc__tile-label { color: #fff; }
.dark .pu-acc__tile-hint,
.dark .pu-acc__foot       { color: #6994BE; }
.dark .pu-acc__note {
  background: rgba(235, 128, 24, .10);
  color: #CBDCEC;
}

@media (prefers-reduced-motion: reduce) {
  .pu-acc__tile:hover { transform: none; }
}


/* ============================================================
   43. Стіл підтримки (page-templates/support.php)

   Свідомо БЕЗ власної візуальної мови: сторінка загорнута в
   .pu-mod і бере від столу модерації смугу, картки, вкладки,
   рядки черги, журнал і панель дій. Це той самий тип
   інструмента, і людина цілком може працювати на обох столах —
   вчити два інтерфейси заради однакових за суттю списків
   немає підстав.

   Тут описано лише те, чого в модерації немає: строк, стан
   звернення, зведення по покупцю, рядок дозволу на
   завантаження, пошук.

   Tailwind-утиліт немає з тієї ж причини, що й у розділі 30:
   сторінка з'явилася після останнього `npm run build`.
   ============================================================ */

/* Обгортка стоїть поруч із .pu-mod і сама майже нічого не робить: вона
   потрібна як точка чіпляння, щоб правила нижче не протікали на стіл
   модерації, і як єдине місце, де стіл підтримки можна відрізнити
   селектором, якщо колись знадобиться. */
.pu-sup { --pu-sup-late: #B3261E; }

.pu-sup-bar__late b { color: #F87171; }

/* Рядок черги звернень.
 *
 * ВИПРАВЛЕНО 1.50.7. Базовий .pu-mod-row — сітка на ТРИ колонки
 * (64px minmax(0,1fr) auto), де перша розрахована на обкладинку матеріалу
 * у черзі модерації. Звернення обкладинки не має: у нього лише два дочірні
 * елементи — __body і __side.
 *
 * Через це __body потрапляв у колонку шириною 64px і ламався по символах
 * («№10427 / 8 — …», ім'я і дата стовпчиком), а бейджі стану опинялися в
 * середній колонці замість правої.
 *
 * Коментар тут раніше стверджував, що «додається права колонка», але
 * правило задавало лише align-items — самі колонки ніхто не перевизначав.
 * Класичний випадок, коли коментар описує намір, а не те, що робить код. */
.pu-sup-row {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}

/* Заголовок звернення — посилання всередині <p>, а не сам <p>.
 *
 * У черзі модерації .pu-mod-row__title стоїть на самому <a>, тож колір із
 * цього класу застосовується до посилання напряму. У підтримці клас на
 * <p>, а <a> всередині лишається без жодного авторського правила — і
 * браузер малює його типовим фіолетовим для :visited.
 *
 * Дублювання для :visited явними hex — з тієї самої причини, що в розділі
 * 0c: Firefox відкидає inherit і currentColor саме в правилах для
 * відвіданих посилань. */
.pu-mod-row__title a { color: #12436C; text-decoration: none; }
.pu-mod-row__title a:visited { color: #12436C; }
.pu-mod-row__title a:hover,
.pu-mod-row__title a:hover:visited { color: #C96A0E; }

.dark .pu-mod-row__title a,
.dark .pu-mod-row__title a:visited { color: #fff; }
.dark .pu-mod-row__title a:hover,
.dark .pu-mod-row__title a:hover:visited { color: #F5A54F; }

.pu-sup-search { margin-bottom: 18px; }

/* --- 43a. Стан звернення і строк --- */

.pu-sup-state,
.pu-sup-due {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .01em;
  white-space: nowrap;
}

.pu-sup-state--hot   { background: #FEF0E4; color: #9E520B; }
.pu-sup-state--warn  { background: #FFF6E5; color: #92600A; }
.pu-sup-state--info  { background: #E9F1FA; color: #12436C; }
.pu-sup-state--ok    { background: #E9F7F1; color: #0A5F44; }
.pu-sup-state--muted { background: #EDF2F7; color: #4C687F; }

.pu-sup-due--ok    { background: #F1F5F9; color: #4C687F; }
.pu-sup-due--warn  { background: #FFF6E5; color: #92600A; }
.pu-sup-due--stop  { background: #FDECEC; color: #8C2318; }
.pu-sup-due--muted { background: #F1F5F9; color: #7C93AB; }
.pu-sup-due svg    { flex: none; }

/* --- 43b. Тема й текст звернення --- */

.pu-sup-topic {
  margin: 0 0 4px;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 17px;
  line-height: 1.3;
  color: var(--pu-mod-ink);
}

.pu-sup-quote {
  margin: 14px 0 0;
  padding: 12px 16px;
  border-left: 3px solid #C8D8E6;
  border-radius: 0 10px 10px 0;
  background: #F7FAFC;
  font-size: 14px;
  line-height: 1.6;
  color: #22405C;
}

/* --- 43c. Покупець --- */

.pu-sup-who {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 14px;
}

.pu-sup-who__ava {
  flex: none;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #E9F1FA;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
  font-weight: 800;
  font-size: 15px;
  color: #12436C;
}

.pu-sup-who__name { margin: 0; font-weight: 700; font-size: 15px; }
.pu-sup-who__meta { margin: 0; font-size: 12.8px; color: var(--pu-mod-mute); }

.pu-sup-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
  gap: 10px;
}

.pu-sup-metrics > div {
  padding: 10px 12px;
  border-radius: 10px;
  background: #F4F7FA;
}

.pu-sup-metrics span {
  display: block;
  font-size: 12px;
  color: var(--pu-mod-mute);
}

.pu-sup-metrics b {
  font-size: 19px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--pu-mod-ink);
}

/* --- 43d. Замовлення й дозволи --- */

.pu-sup-order {
  margin: 12px 0 0;
  padding: 14px 16px;
  border: 1px solid var(--pu-mod-line);
  border-radius: 12px;
}

.pu-sup-order__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 12px;
  font-size: 12.8px;
  color: var(--pu-mod-mute);
}

.pu-sup-order__head b {
  font-size: 14px;
  font-variant-numeric: tabular-nums;
  color: var(--pu-mod-ink);
}

.pu-sup-order__status {
  padding: 1px 8px;
  border-radius: 999px;
  background: #EDF2F7;
  font-size: 11.5px;
  font-weight: 700;
  color: #4C687F;
}

.pu-sup-none {
  margin: 10px 0 0;
  padding: 10px 12px;
  border: 1px dashed #D6E0E9;
  border-radius: 10px;
  font-size: 13px;
  color: var(--pu-mod-mute);
}

.pu-sup-perm {
  margin: 12px 0 0;
  padding: 12px 0 0;
  border-top: 1px solid #EDF2F7;
}

.pu-sup-perm__title {
  margin: 0 0 6px;
  font-size: 13.8px;
  font-weight: 600;
  line-height: 1.4;
}

.pu-sup-perm__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 10px;
}

.pu-sup-tag {
  padding: 2px 9px;
  border-radius: 999px;
  background: #F1F5F9;
  font-size: 11.5px;
  font-weight: 600;
  color: #4C687F;
  white-space: nowrap;
}

.pu-sup-tag--ok   { background: #E9F7F1; color: #0A5F44; }
.pu-sup-tag--warn { background: #FFF6E5; color: #92600A; }
.pu-sup-tag--stop { background: #FDECEC; color: #8C2318; }

.pu-sup-perm__acts,
.pu-sup-order__acts {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 8px;
}

.pu-sup-order__acts { margin-top: 14px; }
.pu-sup-perm__acts form,
.pu-sup-order__acts form { margin: 0; }

/* Небезпечна дія лишається кнопкою того самого розміру, але червоною:
   візуально збільшувати її означало б зробити повернення коштів
   найпомітнішою дією на екрані, хоча воно найрідше правильне. */
.pu-sup-danger { color: #B3261E; }

/* --- 43e. Пошук покупця --- */

.pu-sup-search__form {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
}

.pu-sup-search__form input[type="search"] {
  flex: 1 1 260px;
  height: 38px;
  padding: 0 13px;
  border: 1px solid var(--pu-mod-line);
  border-radius: 10px;
  background: #fff;
  font-family: inherit;
  font-size: 13.5px;
  color: var(--pu-mod-ink);
}

.pu-sup-search__form input[type="search"]:focus {
  outline: none;
  border-color: #12436C;
}

.pu-sup-found {
  list-style: none;
  margin: 14px 0 0;
  padding: 0;
}

.pu-sup-found > li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 0;
  border-top: 1px solid #EDF2F7;
}

.pu-sup-found b { font-size: 14px; }

.pu-sup-found span {
  display: block;
  font-size: 12.5px;
  color: var(--pu-mod-mute);
}

.pu-sup-found select,
.pu-sup-found textarea {
  width: 100%;
  margin: 0 0 8px;
  padding: 8px 11px;
  border: 1px solid var(--pu-mod-line);
  border-radius: 9px;
  font-family: inherit;
  font-size: 13px;
  color: var(--pu-mod-ink);
}

/* --- 43f. Черга і дрібниці --- */

.pu-sup-row__side {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.pu-sup-take { margin: 0 0 14px; }
.pu-sup-hint { margin: 12px 0 0; }

.pu-sup-links {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* --- 43g. Адаптив --- */

@media (max-width: 640px) {
  .pu-sup-order__head { font-size: 12px; }
  .pu-sup-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pu-sup-found > li { flex-direction: column; align-items: flex-start; }
}

/* --- 43h. Темна тема --- */

.dark .pu-sup-topic { color: #E7F0F8; }

.dark .pu-sup-quote {
  border-left-color: #24384B;
  background: #12212E;
  color: #C6DBEE;
}

.dark .pu-sup-who__ava { background: #17293A; color: #9DBBD8; }
.dark .pu-sup-metrics > div { background: #12212E; }
.dark .pu-sup-metrics b { color: #E7F0F8; }
.dark .pu-sup-order { border-color: #24384B; }
.dark .pu-sup-order__head b { color: #E7F0F8; }
.dark .pu-sup-order__status { background: #17293A; color: #9DBBD8; }
.dark .pu-sup-none { border-color: #24384B; }
.dark .pu-sup-perm { border-top-color: #1C2E3F; }
.dark .pu-sup-tag { background: #17293A; color: #9DBBD8; }
.dark .pu-sup-tag--ok   { background: #0E241C; color: #6FD6AE; }
.dark .pu-sup-tag--warn { background: #241C0E; color: #F5C06B; }
.dark .pu-sup-tag--stop { background: #2A1414; color: #F0A0A0; }
.dark .pu-sup-state--hot   { background: #2A1B0C; color: #F5A54F; }
.dark .pu-sup-state--warn  { background: #241C0E; color: #F5C06B; }
.dark .pu-sup-state--info  { background: #12293F; color: #9DBBD8; }
.dark .pu-sup-state--ok    { background: #0E241C; color: #6FD6AE; }
.dark .pu-sup-state--muted { background: #17293A; color: #9DBBD8; }
.dark .pu-sup-due--ok    { background: #17293A; color: #9DBBD8; }
.dark .pu-sup-due--warn  { background: #241C0E; color: #F5C06B; }
.dark .pu-sup-due--stop  { background: #2A1414; color: #F0A0A0; }
.dark .pu-sup-due--muted { background: #17293A; color: #8FA8C0; }

.dark .pu-sup-search__form input[type="search"],
.dark .pu-sup-found select,
.dark .pu-sup-found textarea {
  background: #12212E;
  border-color: #24384B;
  color: #DCE8F3;
}

.dark .pu-sup-found > li { border-top-color: #1C2E3F; }

/* =========================================================================
 * 44. Згоди при реєстрації та в кабінеті (inc/consent.php, 1.49.0)
 *
 * Tailwind-утиліт тут немає з тієї ж причини, що й у розділах 30 і 43:
 * блок з'явився після останнього `npm run build`, і будь-який доданий
 * утилітарний клас мовчки не потрапив би в main.css.
 * ====================================================================== */

.pu-consent {
  margin: 4px 0 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.pu-consent--checkout { margin: 10px 0 0; }
.pu-consent--account  { margin: 8px 0 20px; }

.pu-consent-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: #4A5A6B;
  cursor: pointer;
}

/* Прапорець не має «плисти» відносно першого рядка тексту при переносі. */
.pu-consent-row input[type="checkbox"] {
  flex: 0 0 auto;
  width: 17px;
  height: 17px;
  margin: 1px 0 0;
  accent-color: #EB8018;
  cursor: pointer;
}

.pu-consent-row a {
  color: #12436C;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.pu-consent-row a:hover { color: #C96A0E; }

/* Необов'язкова згода свідомо тихіша за обов'язкову: різна вага полів має
 * читатися до того, як людина почне розбирати текст. */
.pu-consent-row--optional {
  font-size: 13px;
  color: #6B7A8B;
}

.pu-consent-req { color: #C96A0E; font-weight: 700; }

.pu-consent-note {
  margin: 2px 0 0 27px;
  font-size: 12.5px;
  color: #8695A5;
}

/* --- Темна тема --- */
.dark .pu-consent-row          { color: #B9CBE0; }
.dark .pu-consent-row--optional{ color: #91A6BC; }
.dark .pu-consent-row a        { color: #CBDCEC; }
.dark .pu-consent-row a:hover  { color: #F5A54F; }
.dark .pu-consent-note         { color: #6E8299; }

/* Поле згоди на оформленні стоїть у блоці умов WooCommerce, який має власні
 * відступи — прибираємо подвійний. */
.woocommerce-terms-and-conditions-wrapper .pu-consent { margin-bottom: 0; }

/* =========================================================================
 * 45. Поле пароля: власний перемикач видимості (1.49.2)
 *
 * Замінює `.show-password-input` WooCommerce: той малює іконку шрифтом
 * Dashicons, який гостю не віддається, і спирається на скрипт, що на
 * сторінці входу не підключається.
 * ====================================================================== */

.pu-pw {
  position: relative;
  display: block;
}

/* Місце під кнопку відрізає padding самого поля, а не абсолютне позиціювання
 * кнопки «поверх». Інакше довгий пароль підповзав би під іконку. */
.pu-pw .input-text {
  width: 100%;
  padding-right: 46px;
}

.pu-pw-toggle {
  position: absolute;
  top: 50%;
  right: 6px;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: #8695A5;
  cursor: pointer;
  transition: color .15s ease, background-color .15s ease;
}

.pu-pw-toggle:hover  { color: #12436C; background: rgba(18,67,108,.06); }
.pu-pw-toggle:active { background: rgba(18,67,108,.12); }

/* Обведення фокуса власне, бо кнопка «сидить» усередині поля: стандартне
 * системне кільце тут наклалося б на рамку інпута. */
.pu-pw-toggle:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
  color: #12436C;
}

.pu-pw-toggle svg { width: 19px; height: 19px; display: block; }

/* Стан визначає одна з двох іконок: підміняти шляхи всередині SVG складніше
 * й дає стрибок при перемальовуванні. */
.pu-pw-toggle__hide { display: none; }
.pu-pw-toggle.is-on .pu-pw-toggle__show { display: none; }
.pu-pw-toggle.is-on .pu-pw-toggle__hide { display: inline-flex; }
.pu-pw-toggle.is-on { color: #12436C; }

.dark .pu-pw-toggle              { color: #7E93AA; }
.dark .pu-pw-toggle:hover        { color: #EAF1F8; background: rgba(234,241,248,.08); }
.dark .pu-pw-toggle.is-on        { color: #EAF1F8; }
.dark .pu-pw-toggle:focus-visible{ color: #EAF1F8; }

/* --- Рідна кнопка браузера ------------------------------------------
 * Edge і Chromium під Windows домальовують у поле пароля власний
 * псевдоелемент ::-ms-reveal — те саме око, тільки системне. Поруч із
 * нашим виходить дві однакові кнопки, і вгадати, яка з них спрацює,
 * неможливо.
 *
 * Ховаємо системну, а не свою: наша працює в усіх браузерах однаково
 * (::-ms-reveal немає ні в Firefox, ні в Safari), має фірмовий вигляд,
 * видимий фокус із клавіатури й aria-label для читачів екрана.
 *
 * ::-ms-clear — хрестик «очистити поле» з тієї ж родини; він теж
 * накладається на нашу кнопку, а функцію дублює звичайним Ctrl+A.
 *
 * Кнопку менеджера паролів Safari (::-webkit-credentials-auto-fill-button)
 * НЕ чіпаємо: вона не дублює наш перемикач, а виконує іншу дію, і
 * прибирати її означало б забрати в людини доступ до збережених паролів. */
.pu-pw .input-text::-ms-reveal,
.pu-pw .input-text::-ms-clear {
  display: none;
  width: 0;
  height: 0;
}

/* --- Друге око від WooCommerce (1.54.1) ------------------------------
 * ПРИЧИНА. Коментар 1.49.2 у form-login.php спирався на те, що скрипт
 * `woocommerce` на сторінці входу не підключається. Це вже не так
 * (оновлення WooCommerce / об'єднання скриптів LiteSpeed), а цей скрипт
 * при завантаженні сам «доробляє» поля пароля:
 *
 *   1) обгортає `.woocommerce form .woocommerce-Input[type=password]`
 *      у <span class="password-input">;
 *   2) додає клас password-input будь-якому <span>, що є батьком поля
 *      пароля, — тобто й нашому .pu-pw;
 *   3) у кожен .password-input дописує <button class="show-password-input">.
 *
 * Звідси два ока в одному полі: наше (.pu-pw-toggle) і дописане
 * WooCommerce, яке ще й фарбується загальними стилями кнопок у сірий
 * квадрат.
 *
 * ЧОМУ CSS, А НЕ JS-ПРИБИРАННЯ. Кнопка з'являється після DOMContentLoaded
 * у скрипті, порядок виконання якого ми не контролюємо (відкладене
 * завантаження, комбінування LiteSpeed). JS-чистка мала б гонку з ним;
 * правило в CSS спрацьовує незалежно від того, коли й скільки разів
 * кнопку вставлять.
 *
 * ЧОМУ НЕ ЗМІНЮЄМО РОЗМІТКУ (div замість span, інший клас поля). Пункт 2
 * ловить span-батька будь-якого поля пароля, пункт 1 — клас, на який
 * спираються стилі форм WooCommerce. Переписувати розмітку під
 * внутрішні селектори чужого скрипта — крихкіше, ніж сховати його кнопку.
 *
 * !important виправданий: стилі WooCommerce для .show-password-input
 * задають display з вищою специфічністю в різних версіях плагіна. */
.pu-pw .show-password-input {
  display: none !important;
}

/* Обгортка, яку вставляє WooCommerce, — flex-колонка зі своїм
 * позиціюванням. Зводимо її до прозорого блока, щоб поле займало всю
 * ширину, а наша кнопка позиціонувалася від .pu-pw, як і раніше. */
.pu-pw .password-input {
  display: block;
  position: static;
  width: 100%;
}

/* --- Абзац про мету обробки над чекбоксом згоди -----------------------
 * Він інформує, а не переконує: за візуальною вагою має стояти нижче за
 * поля форми й вище за необов'язкову згоду. Стандартний <p> від wpautop
 * дає тут завеликий відступ і базовий кегль. */
.prourok-auth .woocommerce-privacy-policy-text {
  margin: 2px 0 14px;
}

.prourok-auth .woocommerce-privacy-policy-text p {
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
  color: #6B7A8B;
}

.dark .prourok-auth .woocommerce-privacy-policy-text p { color: #91A6BC; }

/* --- Автозаповнення --------------------------------------------------
 * Chrome заливає автозаповнені поля власним блакитним (#E8F0FE) і
 * перебиває будь-який background: правило автозаповнення має вищий
 * пріоритет за звичайні стилі. Обійти це можна лише товстою внутрішньою
 * тінню — вона малюється поверх службової заливки. Затримка переходу в
 * 100000s не дає браузеру відмалювати блакитний навіть на мить.            */
.prourok-auth input:-webkit-autofill,
.prourok-auth input:-webkit-autofill:hover,
.prourok-auth input:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 60px #fff inset;
  box-shadow: 0 0 0 60px #fff inset;
  -webkit-text-fill-color: #0F1E2E;
  transition: background-color 100000s ease-in-out 0s;
}

.dark .prourok-auth input:-webkit-autofill,
.dark .prourok-auth input:-webkit-autofill:hover,
.dark .prourok-auth input:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 60px #17293A inset;
  box-shadow: 0 0 0 60px #17293A inset;
  -webkit-text-fill-color: #EAF1F8;
}

/* =========================================================================
 * 46. Код товару (inc/product-code.php, 1.49.4)
 * ---------------------------------------------------------------------
 * Реквізит, а не елемент продажу: він мусить бути знайденим, коли його
 * шукають, і не забирати уваги, коли не шукають. Звідси приглушений колір
 * і розмір нижче за основний текст — але саме значення набране моноширинним
 * накресленням і темнішим кольором, бо його переписують у форму звернення
 * від руки, і сплутати O з 0 тут коштує дорого.
 * ====================================================================== */

.pu-code {
  margin: 18px 0 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: #8296AA;
}

.pu-code span {
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: .01em;
  color: #3D5A76;
  /* Виділення подвійним кліком не повинно чіплятися за підпис зліва. */
  -webkit-user-select: all;
  user-select: all;
}

/* --- Код у списку завантажень кабінету ------------------------------- */

.pu-dl-code {
  display: block;
  margin-top: 3px;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: 11.5px;
  font-weight: 600;
  color: #8296AA;
}

/* --- Темна тема --- */

.dark .pu-code { color: #7D93AB; }
.dark .pu-code span { color: #B9CEE2; }
.dark .pu-dl-code { color: #7D93AB; }


/* =========================================================================
 * 47. Платежі та фіскалізація (inc/payments/, 1.50.0)
 *
 * Стилів тут навмисно мало. Платіжний контур майже не має власного
 * інтерфейсу: стан замовлення показує WooCommerce, а єдине місце, де тема
 * говорить із покупцем напряму — повідомлення про недоступний до купівлі
 * матеріал.
 * ====================================================================== */

/* Пояснення замість кнопки «У кошик» на картці заблокованого матеріалу.
 *
 * Роль тут та сама, що в порожнього стану списку: людина має зрозуміти, що
 * сталося, і що це тимчасово. Тон нейтральний — це не помилка покупця. */
.pu-item-blocked {
    margin: 1rem 0 0;
    padding: .75rem 1rem;
    border: 1px solid #FCE0C2;
    border-left: 3px solid #EB8018;
    border-radius: 12px;
    background: #FEF3E7;
    color: #6E3907;
    font-size: 14px;
    line-height: 1.5;
}

/* Бейдж статусу «Фіскалізація» у списку замовлень кабінету.
 *
 * WooCommerce фарбує невідомі йому статуси сірим — тим самим, що й
 * «Скасовано». Для покупця, у якого щойно списали кошти, сірий бейдж
 * поруч зі словом, якого він не знає, читається як «щось пішло не так».
 * Помаранчевий читається як «у процесі» — те, чим воно і є. */
.woocommerce-orders-table__cell-order-status .order-status--pu-fiscalizing,
.order-status.status-pu-fiscalizing {
    background: #FEF3E7;
    color: #9E520B;
}

/* Той самий статус в адмінці WooCommerce. */
.wc-order-status.status-pu-fiscalizing,
mark.order-status.status-pu-fiscalizing {
    background: #FEF3E7;
    color: #9E520B;
}


/* =========================================================================
 * 48. Видача матеріалів: сторінка подяки та кнопки завантаження (1.50.3)
 *
 * Три місця показують одне й те саме — придбаний файл: сторінка «Замовлення
 * отримано», перегляд замовлення й розділ «Завантаження». До цієї версії всі
 * три виглядали по-різному, бо кожне збирала сама WooCommerce зі стандартних
 * .button. Тут вони отримують один компонент .pu-dl.
 * ====================================================================== */

/* --- 48.1. Посилання в кошику, на оформленні та сторінці подяки ---------
 *
 * Ці сторінки не потрапляють ні під .prourok-page, ні під
 * .woocommerce-account, тож єдиними правилами для них лишалися стилі
 * Storefront — а там для :visited стоїть типовий браузерний фіолетовий.
 * Симптом: назва матеріалу в кошику й у підсумку замовлення після першого ж
 * кліку ставала бузковою, тоді як усюди поруч посилання сині.
 *
 * Логіка та сама, що в розділі 0c: спершу явна декларація на самому <a>
 * (авторський стиль б'є стиль браузера незалежно від специфічності), потім
 * дублі для :visited явними hex — бо Firefox відкидає inherit і currentColor
 * саме в правилах для :visited. */
.woocommerce-cart .woocommerce a,
.woocommerce-checkout .woocommerce a,
.woocommerce-order-received .woocommerce a { color: #12436C; }

.woocommerce-cart .woocommerce a:visited,
.woocommerce-checkout .woocommerce a:visited,
.woocommerce-order-received .woocommerce a:visited { color: #12436C; }

.dark .woocommerce-cart .woocommerce a,
.dark .woocommerce-checkout .woocommerce a,
.dark .woocommerce-order-received .woocommerce a,
.dark .woocommerce-cart .woocommerce a:visited,
.dark .woocommerce-checkout .woocommerce a:visited,
.dark .woocommerce-order-received .woocommerce a:visited { color: #9DBBD8; }

.woocommerce-cart .woocommerce a:hover,
.woocommerce-checkout .woocommerce a:hover,
.woocommerce-order-received .woocommerce a:hover,
.woocommerce-cart .woocommerce a:hover:visited,
.woocommerce-checkout .woocommerce a:hover:visited,
.woocommerce-order-received .woocommerce a:hover:visited { color: #C96A0E; }

/* Кнопки всередині цих сторінок мають власні кольори — повертаємо їх,
 * бо правило вище зачепило б і .button, і .pu-dl. */
.woocommerce-cart .woocommerce a.button,
.woocommerce-checkout .woocommerce a.button,
.woocommerce-order-received .woocommerce a.button,
.woocommerce-cart .woocommerce a.pu-dl,
.woocommerce-checkout .woocommerce a.pu-dl,
.woocommerce-order-received .woocommerce a.pu-dl { color: inherit; }

/* --- 48.2. Кнопка файлу ------------------------------------------------
 *
 * Стала ширина — головне рішення тут. Раніше підписом кнопки була сама
 * назва файлу, тож ширина стрибала від «ktp.pdf» до
 * «navchalna-programa-informatyka-9.pdf», і стовпчик розсипався. Тепер
 * ширина фіксована, а назва обрізається — вирівняний стовпчик читається
 * як полиця, а не як список різнокаліберних плашок.
 *
 * Чип із розширенням стоїть першим навмисно: питання «що це за файл»
 * виникає раніше за «як він називається», і відповідь на нього має бути
 * в постійному місці, а не десь усередині рядка тексту. */
.pu-dl {
    display: inline-flex;
    align-items: center;
    gap: .625rem;
    width: 100%;
    max-width: 20rem;
    padding: .5rem .75rem;
    border: 1px solid #E2E8F0;
    border-radius: 14px;
    background: #fff;
    color: #0F1E2E;
    font-size: 13px;
    line-height: 1.3;
    text-decoration: none;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.pu-dl:hover {
    border-color: #F5A54F;
    box-shadow: 0 4px 12px rgba(15, 30, 46, .08), 0 12px 28px rgba(18, 67, 108, .10);
    transform: translateY(-1px);
    color: #0F1E2E;
}

.pu-dl:active { transform: translateY(0); }

.pu-dl:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(235, 128, 24, .45);
}

/* Чип розширення. Стала ширина, щоб назви починалися по одній лінії
 * незалежно від того, три там літери чи чотири. */
.pu-dl__ext {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.75rem;
    height: 1.75rem;
    padding: 0 .375rem;
    border-radius: 8px;
    background: #EAF1F8;
    color: #12436C;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .04em;
}

/* Типи файлів розрізняються відтінком, а не кольором з іншої палітри:
 * строкатість тут була б шумом, а не інформацією. Помаранчевий лишаємо
 * для найчастішого формату — PDF. */
.pu-dl__ext[data-ext="pdf"]  { background: #FEF3E7; color: #9E520B; }
.pu-dl__ext[data-ext="doc"],
.pu-dl__ext[data-ext="docx"] { background: #EAF1F8; color: #12436C; }
.pu-dl__ext[data-ext="ppt"],
.pu-dl__ext[data-ext="pptx"] { background: #FCE0C2; color: #6E3907; }
.pu-dl__ext[data-ext="xls"],
.pu-dl__ext[data-ext="xlsx"] { background: #E6F4EA; color: #1B5E20; }
.pu-dl__ext[data-ext="zip"],
.pu-dl__ext[data-ext="rar"]  { background: #F1F5F9; color: #475569; }

.pu-dl__name {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 500;
}

.pu-dl__go {
    flex: 0 0 auto;
    display: inline-flex;
    color: #94A3B8;
    transition: color .18s ease, transform .18s ease;
}

.pu-dl:hover .pu-dl__go {
    color: #EB8018;
    transform: translateY(1px);
}

.dark .pu-dl {
    border-color: #1E3A5F;
    background: #0A2841;
    color: #E2E8F0;
}
.dark .pu-dl:hover { border-color: #F5A54F; color: #fff; }
.dark .pu-dl__ext  { background: #12436C; color: #CBDCEC; }
.dark .pu-dl__ext[data-ext="pdf"] { background: #6E3907; color: #F9C489; }

/* --- 48.3. Назва матеріалу в таблиці завантажень ------------------------
 *
 * Повтор назви для кожного файлу одного матеріалу прибрано в PHP; тут
 * лишається порожня комірка. На вузьких екранах WooCommerce перемикає
 * таблицю в режим карток і підставляє підпис колонки через data-title —
 * там порожня комірка виглядала б як загублений рядок, тож ховаємо її
 * цілком. */
.pu-dl-prod { display: inline-flex; flex-direction: column; gap: .125rem; }

/* Код товару під назвою малює .pu-dl-code (розділ 46, з 1.49.4) — у нього
 * вже є display:block і потрібні відступи, тож дублювати їх тут не треба. */

@media (max-width: 768px) {
    .woocommerce-table--order-downloads td.download-product:has(.pu-dl-prod--repeat) {
        display: none;
    }
}

/* --- 48.3a. Картки матеріалів у «Завантаженнях» (1.50.6) ---------------
 *
 * Таблиця тут програла не через підбір ширин, а через модель: один рядок =
 * один файл, тоді як купує людина матеріал цілком. Чотири файли одного КТП
 * давали чотири рядки з однаковими числом і датою, а назва матеріалу
 * змагалася за ширину з двосимвольним «19».
 *
 * Картка знімає обидві проблеми одразу: файли одного матеріалу лежать
 * разом, а ліміт зі строком згадуються один раз замість повторення в
 * кожному рядку.
 * ====================================================================== */

.pu-dl-cards {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin: 1.25rem 0 0;
}

/* Картка навмисно спокійна: це не рекламний блок, а полиця з уже
 * купленим. Уся акцентність віддана кнопкам файлів — саме по них клікають,
 * і саме вони мають вести око. */
.pu-dlcard {
    position: relative;
    padding: 1.125rem 1.25rem 1rem;
    border: 1px solid #E2E8F0;
    border-radius: 20px;
    background: #fff;
    overflow: hidden;
    transition: border-color .2s ease, box-shadow .2s ease;
}

/* Вертикальний акцент замість суцільної рамки кольором: дає картці явний
 * початок, з якого око читає заголовок, і не перетворює список на
 * різнобарвну стрічку. Градієнт — від фірмового помаранчевого до
 * прозорого, тож акцент «згасає» донизу й не сперечається з підсумком. */
.pu-dlcard::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 3px;
    background: linear-gradient(180deg, #EB8018 0%, #F5A54F 45%, rgba(245,165,79,0) 100%);
}

.pu-dlcard:hover {
    border-color: #CBDCEC;
    box-shadow: 0 1px 3px rgba(15, 30, 46, .06), 0 8px 24px rgba(15, 30, 46, .07);
}

.pu-dlcard__head { margin-bottom: .875rem; }

.pu-dlcard__title {
    margin: 0 0 .25rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.35;
    color: #0E3557;
}

.pu-dlcard__title a { color: inherit; text-decoration: none; }
.pu-dlcard__title a:hover { color: #C96A0E; text-decoration: underline; text-underline-offset: 2px; }

/* Код і кількість файлів — один рядок дрібним кеглем. Крапка-роздільник
 * малюється псевдоелементом, щоб не жити в розмітці й не читатися вголос
 * програмами екранного доступу. */
.pu-dlcard__sub {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    font-size: 11.5px;
    color: #8296AA;
}

.pu-dlcard__code {
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
    font-weight: 600;
    letter-spacing: .02em;
}

.pu-dlcard__count { position: relative; padding-left: .75rem; }

.pu-dlcard__count::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    width: 3px;
    height: 3px;
    margin-top: -1.5px;
    border-radius: 50%;
    background: currentColor;
    opacity: .55;
}

/* Коли коду немає, крапка перед кількістю висіла б без пари. */
.pu-dlcard__sub > .pu-dlcard__count:first-child { padding-left: 0; }
.pu-dlcard__sub > .pu-dlcard__count:first-child::before { display: none; }

/* Сітка файлів. auto-fill замість фіксованих колонок: у картці з одним
 * файлом кнопка не розтягується на всю ширину, а в картці з чотирма вони
 * лягають у два стовпці — без жодної медіазапитної арифметики. */
.pu-dlcard__files {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(15.5rem, 1fr));
    gap: .5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pu-dlcard__files li { margin: 0; }
.pu-dlcard__files .pu-dl { max-width: none; }

/* Підсумок картки. Пунктирна лінія, а не суцільна: суцільна читалася б як
 * межа між двома блоками, а це продовження того самого. */
.pu-dlcard__foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .5rem 1rem;
    margin-top: 1rem;
    padding-top: .875rem;
    border-top: 1px dashed #E2E8F0;
    font-size: 12px;
    color: #8296AA;
}

.pu-dlcard__quota {
    display: flex;
    align-items: center;
    gap: .625rem;
    min-width: 0;
}

/* Смужка витрачених завантажень.
 *
 * Це єдине справді нове тут порівняно з таблицею: «19» не відповідало на
 * питання «19 із скількох?», а без цього число нічого не означає. Смужка
 * відповідає на нього до того, як його встигнуть поставити. */
.pu-dlcard__bar {
    flex: 0 0 auto;
    position: relative;
    width: 3.5rem;
    height: 4px;
    border-radius: 999px;
    background: #EAF1F8;
    overflow: hidden;
}

.pu-dlcard__bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: #EB8018;
    transition: width .3s ease;
}

.pu-dlcard__quota-text b { color: #0E3557; font-weight: 700; }

.pu-dlcard__expires { white-space: nowrap; }

/* --- Порожній стан ---------------------------------------------------- */

.pu-dl-empty {
    margin: 1.25rem 0 0;
    padding: 2rem 1.5rem;
    border: 1px dashed #CBDCEC;
    border-radius: 20px;
    background: #F8FAFC;
    text-align: center;
}

.pu-dl-empty__title {
    margin: 0 0 .375rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #0E3557;
}

.pu-dl-empty__text {
    margin: 0 auto;
    max-width: 34rem;
    font-size: 14px;
    line-height: 1.55;
    color: #64748B;
}

.pu-dl-empty__btn {
    display: inline-flex;
    align-items: center;
    height: 2.5rem;
    margin-top: 1.125rem;
    padding: 0 1.125rem;
    border-radius: 14px;
    background: #EB8018;
    color: #fff !important;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: background-color .18s ease;
}

.pu-dl-empty__btn:hover { background: #C96A0E; color: #fff !important; }

/* --- Заголовок блоку на сторінці замовлення --------------------------- */

.pu-dl-section { margin-top: 2rem; }

.pu-dl-section__title {
    margin: 0;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 20px;
    font-weight: 700;
    color: #0E3557;
}

/* --- Темна тема ------------------------------------------------------- */

.dark .pu-dlcard { border-color: #1E3A5F; background: #0A2841; }
.dark .pu-dlcard:hover { border-color: #12436C; }
.dark .pu-dlcard__title { color: #CBDCEC; }
.dark .pu-dlcard__title a:hover { color: #F5A54F; }
.dark .pu-dlcard__sub,
.dark .pu-dlcard__foot { color: #7D93AB; }
.dark .pu-dlcard__foot { border-top-color: #1E3A5F; }
.dark .pu-dlcard__bar { background: #12436C; }
.dark .pu-dlcard__quota-text b { color: #E2E8F0; }
.dark .pu-dl-empty { border-color: #1E3A5F; background: #071B2C; }
.dark .pu-dl-empty__title { color: #CBDCEC; }
.dark .pu-dl-empty__text { color: #9DBBD8; }
.dark .pu-dl-section__title { color: #CBDCEC; }

@media (max-width: 560px) {
    .pu-dlcard { padding: 1rem 1rem .875rem; border-radius: 16px; }
    .pu-dlcard__files { grid-template-columns: 1fr; }
    .pu-dlcard__foot { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
    .pu-dlcard,
    .pu-dlcard__bar span { transition: none; }
}

/* --- 48.4. Блок видачі на сторінці подяки ------------------------------ */

.pu-delivery {
    margin: 1.5rem 0 2rem;
    padding: 1.25rem 1.375rem;
    border: 1px solid #E2E8F0;
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 1px 3px rgba(15, 30, 46, .06), 0 6px 20px rgba(15, 30, 46, .06);
}

.pu-delivery--ready   { border-color: #CBDCEC; }
.pu-delivery--wait    { border-color: #FCE0C2; background: #FFFDFA; }
.pu-delivery--problem { border-color: #FCA5A5; background: #FEF6F6; }

.pu-delivery__head {
    display: flex;
    align-items: flex-start;
    gap: .875rem;
}

.pu-delivery__badge {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    font-weight: 700;
}

.pu-delivery__badge--ok      { background: #E6F4EA; color: #1B5E20; }
.pu-delivery__badge--wait    { background: #FEF3E7; color: #9E520B; }
.pu-delivery__badge--problem { background: #FEE2E2; color: #B91C1C; }

/* Спінер лишається спокійним навмисно: різкий швидкий оберт у момент, коли
 * людина щойно заплатила й ще не отримала файл, читається як тривога.
 * Півтори секунди на оберт — темп «усе йде своєю чергою». */
.pu-delivery__spinner {
    width: 1rem;
    height: 1rem;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: pu-delivery-spin 1.5s linear infinite;
}

@keyframes pu-delivery-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
    .pu-delivery__spinner { animation-duration: 4s; }
    .pu-dl { transition: none; }
    .pu-dl:hover { transform: none; }
}

.pu-delivery__title {
    margin: 0 0 .25rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 17px;
    font-weight: 700;
    color: #0E3557;
    line-height: 1.25;
}

.pu-delivery__sub {
    margin: 0;
    font-size: 14px;
    line-height: 1.5;
    color: #475569;
}

.pu-delivery__files {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    margin: 1.125rem 0 0;
    padding: 0;
    list-style: none;
}

.pu-delivery__files li { margin: 0; }

.pu-delivery__files .pu-dl { max-width: 24rem; }

.pu-delivery__note,
.pu-delivery__timer {
    margin: 1rem 0 0;
    font-size: 13px;
    line-height: 1.55;
    color: #64748B;
}

.pu-delivery__timer { color: #9E520B; }
.pu-delivery__timer b { font-variant-numeric: tabular-nums; }

.pu-delivery__link {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    margin-top: 1rem;
    font-size: 14px;
    font-weight: 600;
    color: #C96A0E;
    text-decoration: none;
}

.pu-delivery__link:hover { color: #12436C; }

.dark .pu-delivery          { border-color: #1E3A5F; background: #0A2841; }
.dark .pu-delivery--wait    { background: #0A2841; border-color: #6E3907; }
.dark .pu-delivery__title   { color: #CBDCEC; }
.dark .pu-delivery__sub     { color: #9DBBD8; }
.dark .pu-delivery__note,
.dark .pu-delivery__timer   { color: #9DBBD8; }
.dark .pu-delivery__link    { color: #F5A54F; }
.dark .pu-delivery__link:hover { color: #fff; }


/* =========================================================================
 * 49. Панель повернення коштів і повернені позиції (1.50.8)
 * ====================================================================== */

/* Підпис поля в панелі повернення.
 *
 * З'явився тому, що дві сусідні панелі — «Повернути кошти» і «Запросити
 * повернення» — виглядали однаково, а поводилися протилежно: у першій
 * текст лишався внутрішнім, у другій ішов листом. Агент не мав жодного
 * способу про це дізнатися, крім як помилитися.
 *
 * Підпис тут важливіший за плейсхолдер: плейсхолдер зникає, щойно людина
 * починає друкувати, тобто саме тоді, коли попередження потрібне найбільше. */
.pu-sup-flabel {
    display: block;
    margin: 10px 0 4px;
    font-size: 12px;
    line-height: 1.4;
    color: var(--pu-mod-mute, #6B8199);
}

.pu-sup-flabel:first-child { margin-top: 0; }
.pu-sup-flabel b { color: var(--pu-mod-ink, #12436C); font-weight: 700; }

.dark .pu-sup-flabel b { color: #E7EEF5; }

/* --- Кількість повернених позицій у деталях замовлення -----------------
 *
 * WooCommerce показує повернену позицію як <del>1</del> <ins>0</ins> —
 * тобто «було 1, лишилось 0». Без стилів це зливається в «× 1 0», де
 * закреслена одиниця виглядає радше як друкарський брак, ніж як
 * закреслення. */
.woocommerce-table--order-details .product-quantity del,
.woocommerce-table--order-details .product-quantity ins {
    text-decoration: none;
}

.woocommerce-table--order-details .product-quantity del {
    position: relative;
    margin-right: .35rem;
    color: #94A3B8;
    text-decoration: line-through;
    text-decoration-thickness: 1px;
}

.woocommerce-table--order-details .product-quantity ins {
    font-weight: 700;
    color: #0F1E2E;
    background: none;
}

.dark .woocommerce-table--order-details .product-quantity del { color: #7D93AB; }
.dark .woocommerce-table--order-details .product-quantity ins { color: #E2E8F0; }

/* --- 49a. Посилання без класу в робочих місцях (1.50.9) ----------------
 *
 * У шаблонах підтримки й модерації лишалися посилання без власного класу:
 * пошта покупця та посилання на матеріал усередині .pu-mod-sub. Кольору їм
 * ніхто не оголошував, тож після першого відвідування вони ставали
 * фіолетовими.
 *
 * Це п'ятий і шостий випадки тієї самої причини. Щоб не повертатися сюди
 * всьоме, правило накриває будь-яке посилання в цьому контексті, а не
 * конкретні класи: у робочих місцях палітра контрольована, і синій тут —
 * правильний типовий колір для посилання без окремого задуму. */
.pu-mod-sub a,
.pu-mod-sub a:visited { color: #12436C; }

.pu-mod-sub a:hover,
.pu-mod-sub a:hover:visited { color: #C96A0E; }

.dark .pu-mod-sub a,
.dark .pu-mod-sub a:visited { color: #9DBBD8; }

.dark .pu-mod-sub a:hover,
.dark .pu-mod-sub a:hover:visited { color: #F5A54F; }

/* --- 48.5. Кнопка «Перегляд» у таблиці замовлень кабінету (1.50.12) -----
 *
 * Ця кнопка — стандартний .button WooCommerce, тема її ніколи не
 * стилізувала, тож вигляд повністю з Storefront: широкий padding, а
 * всередині — текст і піктограма ока одна над одною, бо для двох інлайнових
 * елементів без flex немає причини лишатися в одному рядку.
 *
 * Рішення — не вибір між іконкою й текстом (іконка сама по собі не всім
 * очевидна: не кожен зчитає в оці саме «переглянути замовлення»), а
 * компактна кнопка, де обидва елементи стоять поруч в один рядок. */
.woocommerce-MyAccount-orders .woocommerce-button.view {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    width: auto;
    padding: .5rem .875rem;
    white-space: nowrap;
}

/* Іконка ока — dashicon через ::before від батьківської теми Storefront.
 * Сама по собі вона інлайнова; ламало рядок саме те, що батьківський
 * .button у таблиці замовлень йшов на всю ширину (display:block/100%), а
 * при такій ширині браузер переносить вміст, щойно він не влазить в один
 * рядок разом із широким padding. flex-рядок і auto-ширина вище знімають
 * обидві причини одразу. */
.woocommerce-MyAccount-orders .woocommerce-button.view::before {
    position: static;
    margin: 0;
}

@media (max-width: 480px) {
    /* На вузьких екранах Storefront іноді примусово розтягує кнопки в
       таблиці-картках на всю ширину — тут це особливо помітно, бо кнопка
       одна в рядку дій. Залишаємо компактною і тут. */
    .woocommerce-MyAccount-orders .woocommerce-button.view {
        width: auto;
    }
}

/* =========================================================================
 * 48.6. Таблиця «Подробиці замовлення» (1.50.13)
 *
 * Ця таблиця — чистий вивід ядра WooCommerce, тема її ніколи не чіпала:
 * стандартна сітка Storefront з тонкими лініями між рядками. Поруч на тій
 * самій сторінці — блок видачі (розділ 48.4) і картки завантажень
 * (розділ 48.3a) уже в фірмовому стилі: заокруглені кути, м'які тіні,
 * Manrope в заголовках. Різниця впадала в очі саме через сусідство.
 *
 * Тут не форкається шаблон (order-details.php — чистий вивід ядра, форк
 * коштував би так само дорого, як для завантажень, заради значно меншого
 * виграшу) — досить візуально узгодити те, що вже є, з рештою сторінки.
 * ====================================================================== */

.woocommerce-order-details__title {
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-weight: 700;
    color: #0E3557;
}

.woocommerce-table--order-details {
    margin: 0 0 1.5rem;
    border: 1px solid #E2E8F0;
    border-radius: 16px;
    overflow: hidden;
    border-collapse: separate;
    border-spacing: 0;
}

.woocommerce-table--order-details thead th {
    padding: .875rem 1.125rem;
    background: #F8FAFC;
    border-bottom: 1px solid #E2E8F0;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 12.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: #64748B;
}

.woocommerce-table--order-details tbody td,
.woocommerce-table--order-details tfoot td,
.woocommerce-table--order-details tfoot th {
    padding: .875rem 1.125rem;
    border-bottom: 1px solid #EEF2F6;
    font-size: 14px;
    color: #0F1E2E;
}

.woocommerce-table--order-details tbody tr:last-child td { border-bottom: none; }

/* Підсумковий блок (Разом / Знижка / Всього) — той самий приглушений фон,
 * що й шапка, аби відділити суми від переліку позицій без зайвої лінії. */
.woocommerce-table--order-details tfoot tr:not(:last-child) td,
.woocommerce-table--order-details tfoot tr:not(:last-child) th {
    background: #FAFBFC;
}

.woocommerce-table--order-details tfoot tr:last-child td,
.woocommerce-table--order-details tfoot tr:last-child th {
    background: #F8FAFC;
    border-bottom: none;
    font-weight: 700;
    color: #0E3557;
}

.woocommerce-table--order-details .product-name a {
    color: #12436C;
    font-weight: 600;
    text-decoration: none;
}
.woocommerce-table--order-details .product-name a:visited { color: #12436C; }
.woocommerce-table--order-details .product-name a:hover,
.woocommerce-table--order-details .product-name a:hover:visited { color: #C96A0E; }

.dark .woocommerce-order-details__title { color: #CBDCEC; }

.dark .woocommerce-table--order-details {
    border-color: #1E3A5F;
}
.dark .woocommerce-table--order-details thead th {
    background: #0A2841;
    border-bottom-color: #1E3A5F;
    color: #9DBBD8;
}
.dark .woocommerce-table--order-details tbody td,
.dark .woocommerce-table--order-details tfoot td,
.dark .woocommerce-table--order-details tfoot th {
    border-bottom-color: #12212E;
    color: #E2E8F0;
}
.dark .woocommerce-table--order-details tfoot tr:not(:last-child) td,
.dark .woocommerce-table--order-details tfoot tr:not(:last-child) th {
    background: #0D2438;
}
.dark .woocommerce-table--order-details tfoot tr:last-child td,
.dark .woocommerce-table--order-details tfoot tr:last-child th {
    background: #0A2841;
    color: #fff;
}
.dark .woocommerce-table--order-details .product-name a,
.dark .woocommerce-table--order-details .product-name a:visited { color: #9DBBD8; }
.dark .woocommerce-table--order-details .product-name a:hover,
.dark .woocommerce-table--order-details .product-name a:hover:visited { color: #F5A54F; }

@media (max-width: 480px) {
    .woocommerce-table--order-details thead th,
    .woocommerce-table--order-details tbody td,
    .woocommerce-table--order-details tfoot td,
    .woocommerce-table--order-details tfoot th {
        padding: .625rem .75rem;
    }
}

/* =========================================================================
 * 50. Кошик і оформлення: таблиця, купон, підсумок, спосіб оплати (1.50.14)
 *
 * АУДИТ. Проглянуто всі wc-класи, використані темою, проти повного набору
 * стандартних шаблонів WooCommerce. Стилізовано вже: сторінка товару й
 * вкладки (розд. 15–17), відгуки й рейтинг, супутні товари, форми (поля
 * вводу, повідомлення), посилання й кнопка на кошику/оформленні/подяці
 * (розд. 48.1), таблиці замовлень і завантажень (48.3–48.6).
 *
 * НЕ БУЛО СТИЛІЗОВАНО: сама таблиця товарів кошика, форма купона, підсумок
 * (cart_totals), і на оформленні — огляд замовлення (#order_review) та
 * блок способу оплати. Це найпомітніша прогалина з усіх: кошик — сторінка
 * з найвищим трафіком у шляху покупки, а спосіб оплати — останнє, що бачить
 * людина перед платежем. Дизайн раптово «падав» назад до стандартного
 * Storefront рівно в двох точках із найвищою ціною першого враження.
 *
 * Шаблони не форкаються — той самий принцип, що й для товару та вкладок:
 * розмітка ядра лишається контрактом, змінюється тільки вигляд.
 *
 * ⚠️ УТОЧНЕНО 1.50.16. Для кошика цей принцип виявився хибним: там міняти
 * треба було не вигляд, а склад колонок, а склад колонок задає шаблон.
 * Кошик форкнуто (див. розд. 52). Для оформлення й підсумку принцип
 * лишається чинним — розмітка ядра там відповідає змісту, тож нижче саме
 * рескін.
 * ====================================================================== */

/* --- Таблиця товарів у кошику: перенесено ---------------------------------
 *
 * Правила цієї підсекції видалено в 1.50.16. Таблиці в кошику більше немає:
 * шаблон woocommerce/cart/cart.php форкнуто й перебудовано на картки —
 * див. розділ 52. Причина в самому шаблоні описана докладно; тут коротко:
 * підганяти оформлення таблиці було марно, бо три з п'яти її колонок для
 * цифрового матеріалу порожні за змістом.
 *
 * Селектори лишати було не просто зайво, а шкідливо: .woocommerce-cart
 * table.shop_table після форку збігався вже тільки з таблицею підсумку
 * (.cart_totals), і мобільне правило `td { display: block }` розсипало б
 * її в стовпчик на вузьких екранах.
 *
 * Оформлення купона й кнопки «Оформити замовлення» — також у розділі 52.
 * ---------------------------------------------------------------------- */

/* --- Підсумок (cart_totals) ---------------------------------------------- */

.cart_totals,
.woocommerce-checkout-review-order {
    padding: 1.25rem 1.375rem;
    border: 1px solid #E2E8F0;
    border-radius: 20px;
    background: #fff;
}

.cart_totals > h2,
#order_review_heading {
    margin: 0 0 1rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 17px;
    font-weight: 700;
    color: #0E3557;
}

.cart_totals table.shop_table {
    border: none;
    background: none;
}

.cart_totals table.shop_table th,
.cart_totals table.shop_table td {
    padding: .625rem 0;
    /* background прибираємо явно: Storefront дає комірці-підпису сіру
       підкладку, через що рядок «Проміжний підсумок» виглядав як напівзалита
       смуга — сіре ліворуч, біле праворуч. */
    background: none;
    border: none;
    border-bottom: 1px dashed #E2E8F0;
    font-size: 14px;
    text-align: left;
}

.cart_totals table.shop_table td { text-align: right; }

.cart_totals table.shop_table tr:last-child th,
.cart_totals table.shop_table tr:last-child td { border-bottom: none; }

.cart_totals table.shop_table .order-total th,
.cart_totals table.shop_table .order-total td {
    padding-top: .875rem;
    font-size: 16px;
    font-weight: 700;
    color: #0E3557;
    border-top: 1px solid #E2E8F0;
    border-bottom: none;
}

/* --- Оформлення: огляд замовлення й спосіб оплати ------------------------- */

#order_review table.shop_table {
    border: none;
    background: none;
}

#order_review table.shop_table thead th {
    padding: .5rem 0;
    background: none;
    border: none;
    border-bottom: 1px solid #E2E8F0;
    font-size: 12px;
    text-transform: none;
    letter-spacing: 0;
}

#order_review table.shop_table td,
#order_review table.shop_table th {
    padding: .625rem 0;
    border: none;
    border-bottom: 1px dashed #E2E8F0;
}

#payment {
    margin-top: 1.25rem;
    padding: 1.125rem;
    border: 1px solid #E2E8F0;
    border-radius: 16px;
    background: #F8FAFC;
}

#payment ul.wc_payment_methods {
    margin: 0;
    padding: 0;
    list-style: none;
}

#payment ul.wc_payment_methods li.wc_payment_method {
    padding: .75rem 0;
    border-bottom: 1px solid #E2E8F0;
}
#payment ul.wc_payment_methods li.wc_payment_method:last-of-type {
    border-bottom: none;
}

#payment ul.wc_payment_methods li.wc_payment_method label {
    font-weight: 600;
    color: #0F1E2E;
}

#payment .payment_box {
    margin-top: .625rem;
    padding: .875rem 1rem;
    border-radius: 12px;
    background: #fff;
    border: 1px solid #E2E8F0;
    font-size: 13.5px;
    color: #475569;
}

#payment .payment_box::before { display: none; }

#place_order {
    width: 100%;
    height: 3rem;
    border-radius: 14px;
    background: #EB8018 !important;
    color: #fff !important;
    font-weight: 700;
    font-size: 15px;
}
#place_order:hover { background: #C96A0E !important; }

/* --- Темна тема ----------------------------------------------------------- */

.dark .woocommerce-cart table.shop_table,
.dark .woocommerce-checkout table.shop_table {
    border-color: #1E3A5F;
}
.dark .woocommerce-cart table.shop_table thead th {
    background: #0A2841;
    border-bottom-color: #1E3A5F;
    color: #9DBBD8;
}
.dark .woocommerce-cart table.shop_table td { border-bottom-color: #12212E; color: #E2E8F0; }
.dark .woocommerce-cart table.shop_table td.product-name a,
.dark .woocommerce-cart table.shop_table td.product-name a:visited { color: #9DBBD8; }
.dark .woocommerce-cart table.shop_table td.product-name a:hover,
.dark .woocommerce-cart table.shop_table td.product-name a:hover:visited { color: #F5A54F; }
.dark .woocommerce-cart table.shop_table td.product-price,
.dark .woocommerce-cart table.shop_table td.product-subtotal { color: #E2E8F0; }

.dark .cart_totals,
.dark .woocommerce-checkout-review-order { border-color: #1E3A5F; background: #0A2841; }
.dark .cart_totals > h2,
.dark #order_review_heading { color: #CBDCEC; }
.dark .cart_totals table.shop_table th,
.dark .cart_totals table.shop_table td { border-bottom-color: #1E3A5F; color: #E2E8F0; }
.dark .cart_totals table.shop_table .order-total th,
.dark .cart_totals table.shop_table .order-total td { color: #fff; border-top-color: #1E3A5F; }

.dark #order_review table.shop_table thead th,
.dark #order_review table.shop_table td,
.dark #order_review table.shop_table th { border-color: #1E3A5F; color: #E2E8F0; }

.dark #payment { background: #0D2438; border-color: #1E3A5F; }
.dark #payment ul.wc_payment_methods li.wc_payment_method { border-bottom-color: #1E3A5F; }
.dark #payment ul.wc_payment_methods li.wc_payment_method label { color: #E2E8F0; }
.dark #payment .payment_box { background: #0A2841; border-color: #1E3A5F; color: #9DBBD8; }


/* =========================================================================
 * 51. Особисті дані (edit-account) — форма ядра, чистий CSS (1.50.14)
 *
 * Єдина активна сторінка кабінету без жодного власного стилю: адреси
 * прибрано з меню (inc/account-customer.php), а form-edit-account.php
 * лишається чистим виводом ядра. Поля вводу вже стилізовані глобально
 * (.woocommerce form .form-row), тут — лише структура форми навколо них.
 * ====================================================================== */

.woocommerce-EditAccountForm {
    max-width: 32rem;
}

.woocommerce-EditAccountForm fieldset {
    margin: 1.5rem 0 0;
    padding: 1.125rem 1.25rem;
    border: 1px solid #E2E8F0;
    border-radius: 16px;
}

.woocommerce-EditAccountForm fieldset legend {
    padding: 0 .5rem;
    margin-left: -.5rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 14px;
    font-weight: 700;
    color: #0E3557;
}

.woocommerce-EditAccountForm .button {
    margin-top: 1.25rem;
    height: 2.75rem;
    padding: 0 1.5rem;
    border-radius: 14px;
    background: #EB8018 !important;
    color: #fff !important;
    font-weight: 700;
}
.woocommerce-EditAccountForm .button:hover { background: #C96A0E !important; }

.dark .woocommerce-EditAccountForm fieldset { border-color: #1E3A5F; }
.dark .woocommerce-EditAccountForm fieldset legend { color: #CBDCEC; }

/* =========================================================================
 * 52. Кошик: картки матеріалів, купон, підсумок (1.50.16)
 *
 * ЧОМУ РОЗДІЛ З'ЯВИВСЯ ОКРЕМО ВІД 50-ГО
 * Розділ 50 намагався виправити кошик оформленням таблиці ядра — і не міг
 * цього зробити: проблема була в самій таблиці. Шаблон форкнуто
 * (woocommerce/cart/cart.php), розмітка тепер власна, тож і стилі мають
 * жити окремо, а не домішуватись у рескін чужої.
 *
 * ⚠️ ПЕРЕДУМОВА. Усе нижче працює лише тому, що theme.css тепер друкується
 * ПІСЛЯ woocommerce.css Storefront — див. prourok_enqueue_theme_css() у
 * functions.php. До 1.50.16 Storefront вигравав у всіх одноклясових
 * зіткненнях (.cart-collaterals, .woocommerce-message, .remove), і жодні
 * правила тут не дали б результату без !important на кожному рядку.
 * ====================================================================== */

/* --- 52a. Каркас сторінки ------------------------------------------------
 *
 * Storefront розкладає кошик двома float'ами всередині .cart-collaterals:
 * супутні товари ліворуч (48%), підсумок праворуч (48%). Супутніх товарів
 * на платформі немає (inc/cart.php знімає хук), тож ліва половина завжди
 * порожня — підсумок висів праворуч, а під ним залишалася біла пляма
 * завширшки в пів-сторінки. Саме це й читалося як «кошик виглядає не так».
 *
 * Замість float'ів — грід на рівні всієї сторінки: список ліворуч, підсумок
 * праворуч і липкий при прокрутці. Ширина колонки підсумку фіксована в rem,
 * а не у відсотках: у ній завжди дві-три суми, і на широкому екрані
 * відсоток розтягував би її до порожнечі.
 * ---------------------------------------------------------------------- */

.pu-cart {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 21rem;
    gap: 1.75rem;
    align-items: start;
    margin-top: 1.25rem;
}

.pu-cart__main { min-width: 0; }

/* Знімаємо float-макет Storefront. Без !important: після виправлення
 * порядку підключення достатньо однакової специфічності й пізнішого
 * оголошення. */
.pu-cart .cart-collaterals,
.pu-cart .cart_totals,
.pu-cart .cross-sells {
    float: none;
    width: auto;
    margin: 0;
}

.pu-cart__aside {
    position: sticky;
    top: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: .875rem;
}

/* --- 52b. Картка матеріалу ------------------------------------------------
 *
 * Той самий візерунок, що в «Завантаженнях» (розд. 48.3a): світла картка з
 * вертикальним помаранчевим акцентом. Кошик і «Завантаження» — дві половини
 * одного шляху («хочу» → «маю»), і людина має впізнавати їх як одну систему.
 * ---------------------------------------------------------------------- */

.pu-cart-list {
    display: flex;
    flex-direction: column;
    gap: .875rem;
}

.pu-cartcard {
    position: relative;
    display: grid;
    grid-template-columns: 5.5rem minmax(0, 1fr) auto;
    gap: 1rem;
    align-items: center;
    padding: 1rem 1.125rem 1rem 1.25rem;
    border: 1px solid #E2E8F0;
    border-radius: 20px;
    background: #fff;
    overflow: hidden;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.pu-cartcard::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 3px;
    background: linear-gradient(180deg, #EB8018 0%, #F5A54F 45%, rgba(245, 165, 79, 0) 100%);
}

.pu-cartcard:hover {
    border-color: #CBDCEC;
    box-shadow: 0 1px 3px rgba(15, 30, 46, .06), 0 8px 24px rgba(15, 30, 46, .07);
}

/* Обкладинка. Співвідношення 4:3 — те саме, що в каталозі, тож матеріал
 * упізнається за тією ж картинкою, яку людина щойно бачила в сітці. */
.pu-cartcard__thumb {
    position: relative;
    aspect-ratio: 4 / 3;
    border-radius: 12px;
    overflow: hidden;
    background: #EAF1F8;
}

.pu-cartcard__thumb a { display: block; height: 100%; }

.pu-cartcard__thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    margin: 0;
}

.pu-cartcard__body { min-width: 0; }

.pu-cartcard__title {
    margin: 0;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 15.5px;
    font-weight: 700;
    line-height: 1.35;
    color: #0E3557;
}

/* ⚠️ !important тут — свідомо (1.50.17).
 *
 * Підкреслення на посиланнях кошика приходить не з цієї теми: у theme.css
 * стоїть глобальне `a { text-decoration: none }` (розд. 0a), а свій колір
 * посилання кошика отримують у розд. 48.1 без жодного decoration. Джерело
 * — зовнішнє: або `a` Storefront, або інлайнові global styles WordPress
 * (`:root :where(a:where(:not(.wp-element-button)))`), які ядро друкує
 * окремим тегом і які підвищення специфічності класами не завжди перебиває.
 *
 * Точний селектор-суперник на живій сторінці не встановлено, тож замість
 * гри в «додам ще один клас» ставимо крапку: три конкретні посилання, а не
 * загальне правило. Якщо винуватця колись буде названо — це місце можна
 * буде спокійно повернути до звичайного оголошення. */
.pu-cartcard__title a { color: inherit; text-decoration: none !important; }
.pu-cartcard__title a:hover { color: #C96A0E; text-decoration: underline !important; text-underline-offset: 2px; }

/* Предмет, клас, тип — пігулки, а не суцільний рядок: три різні факти,
 * і поділ між ними має бути видно без коми, яку легко прочитати як
 * продовження назви. */
.pu-cartcard__tags {
    display: flex;
    flex-wrap: wrap;
    gap: .375rem;
    margin: .5rem 0 0;
}

.pu-cartcard__tags span {
    padding: .125rem .5rem;
    border-radius: 6px;
    background: #F1F5F9;
    font-size: 11.5px;
    font-weight: 500;
    color: #475569;
}

.pu-cartcard__meta {
    margin: .5rem 0 0;
    font-size: 12.5px;
    color: #64748B;
}
.pu-cartcard__meta p { margin: 0; }

.pu-cartcard__code {
    margin: .4375rem 0 0;
    font-size: 11.5px;
    color: #8296AA;
}

.pu-cartcard__code span {
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
    font-weight: 600;
    letter-spacing: .02em;
}

/* Права колонка: ціна зверху, «Прибрати» знизу. Вирівнювання по правому
 * краю — щоб суми в списку з кількох матеріалів читалися стовпчиком. */
.pu-cartcard__side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .5rem;
    text-align: right;
}

.pu-cartcard__price {
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 17px;
    font-weight: 800;
    line-height: 1.2;
    color: #0E3557;
    white-space: nowrap;
}

.pu-cartcard__qty {
    font-size: 12px;
    font-weight: 600;
    color: #64748B;
}

/* «Прибрати» — текст плюс іконка, а не самотній хрестик.
 *
 * Хрестик у кружечку зліва (як у Storefront) сусідить із назвою й
 * прочитується як «закрити рядок», а не «видалити покупку»; при цьому це
 * незворотна дія. Тому: підпис словами, приглушений колір за замовчуванням
 * і червоний при наведенні — помітно рівно настільки, щоб знайти, і не
 * настільки, щоб натиснути випадково.
 *
 * ⚠️ СПЕЦИФІЧНІСТЬ ТУТ КРИТИЧНА (виправлено 1.50.17)
 * Storefront оголошує `.woocommerce a.remove` — це (0,2,1). Селектор
 * `.pu-cartcard__remove.remove` дає (0,2,0) і програє, тож у 1.50.16 з
 * правил нижче застосувались лише ті, яких у Storefront немає, а решта
 * лишилася його: `font-size: 1.5em`, `width: 1em`, `height: 1em`,
 * `line-height: 1`, `border-radius: 100%`. Підпис «Прибрати» кеглем 24px
 * стискався у квадрат 1em і наїжджав на іконку — саме та кулька під ціною.
 *
 * `.woocommerce .pu-cart a.remove.pu-cartcard__remove` — це (0,4,1), тобто виграє за
 * кількістю класів. Усі перебиті властивості перелічені явно: покладатися
 * на те, що чужа декларація «просто не завадить», і було помилкою. */
.woocommerce .pu-cart a.remove.pu-cartcard__remove {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: .375rem;
    width: auto;
    height: auto;
    min-width: 0;
    padding: .25rem .125rem;
    border-radius: 8px;
    background: none;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.2;
    text-indent: 0;
    text-align: left;
    color: #8296AA;
    text-decoration: none;
    transition: color .15s ease;
}

.woocommerce .pu-cart a.remove.pu-cartcard__remove:hover { color: #B91C1C; background: none; }

/* Псевдоелементи глушимо окремо (1.50.18).
 *
 * Після виправлення специфічності в 1.50.17 підпис «Прибрати» набув
 * нормального кегля — але поверх нього лишилася сіра кулька. Розмітку її
 * породжує не наш шаблон: усередині посилання в ньому лише SVG і <span>.
 * Отже, це вміст, доданий чужим правилом через ::before/::after — типовий
 * прийом для хрестика видалення. Закриваємо обидва псевдоелементи разом,
 * бо WooCommerce, Storefront і теми блоків роблять це по-різному.
 *
 * Самого `content: none` не завжди досить: якщо суперник задає ще й
 * розміри з фоном, лишається видимий порожній кружечок. Тому й display. */
.woocommerce .pu-cart a.remove.pu-cartcard__remove::before,
.woocommerce .pu-cart a.remove.pu-cartcard__remove::after {
    content: none !important;
    display: none !important;
}

/* Іконка не має успадковувати кегль посилання: у Storefront `a.remove` це
 * 1.5em, а SVG без явних розмірів поводиться як текст. */
.woocommerce .pu-cart a.remove.pu-cartcard__remove svg {
    flex: 0 0 auto;
    width: 14px;
    height: 14px;
}

.pu-cartcard__remove-icon { width: 14px; height: 14px; flex: 0 0 auto; }

.pu-cartcard__side .quantity { margin: 0; }

/* --- 52c. Рядок дій: купон -----------------------------------------------
 *
 * Купон переїхав із підвалу таблиці в окрему картку під списком. У підвалі
 * він ділив рядок із кнопкою «Оновити кошик» і виглядав як пара однакових
 * за вагою дій, хоча застосувати купон хоче меншість, а оновлювати кошик
 * без поля кількості не треба взагалі (кнопки більше немає — див. шаблон).
 * ---------------------------------------------------------------------- */

.pu-cart-actions {
    margin-top: 1rem;
    padding: 1rem 1.125rem;
    border: 1px dashed #CBDCEC;
    border-radius: 16px;
    background: #F8FAFC;
}

.pu-cart-coupon__label {
    display: block;
    margin-bottom: .5rem;
    font-size: 12.5px;
    font-weight: 600;
    color: #64748B;
}

.pu-cart-coupon__row {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.pu-cart-coupon__row .input-text {
    flex: 1 1 12rem;
    max-width: 18rem;
    min-width: 0;
    margin: 0;
}

/* ⚠️ ЧОМУ СЕЛЕКТОРИ КНОПОК ТАКІ ДОВГІ (1.50.18)
 *
 * Розділ 4 фарбує геть усі кнопки WooCommerce у помаранчевий і робить це
 * через `!important`: `.woocommerce button.button` — це (0,2,1). Коли обидві
 * сторони мають `!important`, вирішує специфічність, тож `.pu-cart-coupon__btn
 * .button` (0,2,0) програвав, і «Застосувати» лишалася помаранчевою нарівні
 * з «Перейти до оформлення».
 *
 * Для вторинних кнопок є ще й окреме правило `.woocommerce .button
 * .wc-backward` (0,3,0) — саме воно фарбувало «Перейти до каталогу» на
 * порожньому кошику в темно-синій.
 *
 * Тому тут (0,4,1): контейнер + тип елемента + два класи. Це не запас на
 * майбутнє, а мінімум, який виграє в обох суперників.
 *
 * Помаранчева кнопка на сторінці кошика має бути одна — «Перейти до
 * оформлення». Купон і оновлення — службові дії, і рівна з нею яскравість
 * змушувала б щоразу перечитувати всі три підписи. */
.woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button {
    flex: 0 0 auto;
    height: 2.75rem;
    padding: 0 1.125rem;
    border-radius: 12px;
    background: #EAF1F8 !important;
    color: #12436C !important;
    font-size: 14px;
    font-weight: 600;
}
.woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button:hover { background: #CBDCEC !important; color: #0E3557 !important; }

.woocommerce .pu-cart-actions button.pu-cart-update.button {
    margin-top: .75rem;
    height: 2.75rem;
    padding: 0 1.125rem;
    border-radius: 12px;
    background: #EAF1F8 !important;
    color: #12436C !important;
    font-weight: 600;
}
.woocommerce .pu-cart-actions button.pu-cart-update.button:hover { background: #CBDCEC !important; }

/* --- 52d. Підсумок і головна кнопка --------------------------------------
 *
 * Каркас картки підсумку описано в розділі 50 (.cart_totals) — він не
 * змінився. Тут лише те, що стосується нового розташування: заголовок і
 * кнопка на всю ширину вузької колонки.
 * ---------------------------------------------------------------------- */

.pu-cart .cart_totals > h2 { font-size: 16px; }

.pu-cart .wc-proceed-to-checkout { padding: 0; margin-top: 1rem; }

.woocommerce .pu-cart .wc-proceed-to-checkout a.checkout-button.button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 3rem;
    margin: 0;
    border-radius: 14px;
    background: #EB8018 !important;
    color: #fff !important;
    font-size: 15px;
    font-weight: 700;
}
.woocommerce .pu-cart .wc-proceed-to-checkout a.checkout-button.button:hover { background: #C96A0E !important; }

.pu-cart__continue {
    margin: 0;
    text-align: center;
    font-size: 13.5px;
}

.pu-cart__continue a {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    color: #64748B;
    font-weight: 600;
    text-decoration: none !important;
}
.pu-cart__continue a:hover { color: #12436C; text-decoration: underline !important; text-underline-offset: 2px; }

.pu-cart__continue-icon { width: 14px; height: 14px; }

/* --- 52e. Повідомлення «додано до кошика» --------------------------------
 *
 * Розмітку скорочено в inc/cart.php (замість повної назви матеріалу в
 * лапках — «1 матеріал додано до кошика»). Тут лишається лише притиснути
 * кнопку до правого краю: базове оформлення смуги — у розділі 12.
 * ---------------------------------------------------------------------- */

.pu-cartmsg__text { flex: 1 1 auto; min-width: 0; }
.pu-cartmsg__link.button { margin-left: auto; }

/* Кнопка «Переглянути кошик» на самій сторінці кошика веде на цю ж
 * сторінку. У inc/cart.php стоїть перевірка is_cart(), і вона не рятує з
 * принципової причини: фільтр wc_add_to_cart_message_html спрацьовує в
 * момент ДОДАВАННЯ товару — тобто на сторінці каталогу чи матеріалу, де
 * is_cart() ще false. Готова розмітка лягає в сесію, і на кошик приїжджає
 * вже зібраною.
 *
 * Ховати треба саме при виводі — а єдине місце, яке знає про виведення, це
 * сторінка. Тому CSS, а не PHP. Перевірку в inc/cart.php лишено як
 * страховку для випадку, коли повідомлення все ж породжується вже на
 * кошику (напр. повторне надсилання форми). */
.woocommerce-cart .pu-cartmsg__link { display: none; }

/* --- 52e-bis. Лічильник кошика в шапці ------------------------------------
 *
 * Порожній кошик показував нуль у помаранчевому кружечку — тобто позначку
 * про відсутність чогось малював тим самим елементом, яким позначає
 * наявність. Ховаємо, але сам вузол лишається в розмітці: фрагменти
 * WooCommerce підміняють знайдений за селектором елемент, і без нього
 * додавання першого товару вже нічого не оновило б (див. inc/cart.php).
 * ---------------------------------------------------------------------- */

.prourok-cart-count.pu-cart-count--empty {
    display: none;
}

/* --- 52f. Порожній кошик -------------------------------------------------- */

.pu-cart-empty {
    max-width: 34rem;
    margin: 1.5rem auto;
    padding: 2.5rem 1.75rem;
    border: 1px dashed #CBDCEC;
    border-radius: 20px;
    background: #F8FAFC;
    text-align: center;
}

.pu-cart-empty__icon {
    display: inline-grid;
    place-items: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    background: #EAF1F8;
    color: #12436C;
}

.pu-cart-empty__svg { width: 24px; height: 24px; }

.pu-cart-empty__title {
    margin: .875rem 0 .5rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 19px;
    font-weight: 700;
    color: #0E3557;
}

.pu-cart-empty__text {
    margin: 0 auto;
    max-width: 27rem;
    font-size: 14px;
    line-height: 1.6;
    color: #64748B;
}

.pu-cart-empty__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: .75rem 1.25rem;
    margin: 1.375rem 0 0;
}

.woocommerce .pu-cart-empty a.pu-cart-empty__primary.button {
    display: inline-flex;
    align-items: center;
    height: 2.875rem;
    padding: 0 1.5rem;
    border-radius: 14px;
    background: #EB8018 !important;
    color: #fff !important;
    font-weight: 700;
}
.woocommerce .pu-cart-empty a.pu-cart-empty__primary.button:hover { background: #C96A0E !important; }

.pu-cart-empty__secondary {
    font-size: 13.5px;
    font-weight: 600;
    color: #12436C;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.pu-cart-empty__secondary:hover { color: #C96A0E; }

/* --- 52g. Темна тема ------------------------------------------------------ */

.dark .pu-cartcard { background: #12212E; border-color: #24384B; }
.dark .pu-cartcard:hover { border-color: #2F4A63; box-shadow: none; }
.dark .pu-cartcard__thumb { background: #17293A; }
.dark .pu-cartcard__title { color: #fff; }
.dark .pu-cartcard__title a:hover { color: #F5A54F; }
.dark .pu-cartcard__tags span { background: #17293A; color: #9DBBD8; }
.dark .pu-cartcard__meta,
.dark .pu-cartcard__code { color: #7E96AE; }
.dark .pu-cartcard__price { color: #fff; }
.dark .woocommerce .pu-cart a.remove.pu-cartcard__remove { color: #7E96AE; }
.dark .woocommerce .pu-cart a.remove.pu-cartcard__remove:hover { color: #FCA5A5; }

.dark .pu-cart-actions { background: #0D2438; border-color: #24384B; }
.dark .pu-cart-coupon__label { color: #9DBBD8; }
.dark .woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button,
.dark .woocommerce .pu-cart-actions button.pu-cart-update.button { background: #17293A !important; color: #CBDCEC !important; }
.dark .woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button:hover,
.dark .woocommerce .pu-cart-actions button.pu-cart-update.button:hover { background: #1F3549 !important; color: #fff !important; }

.dark .pu-cart__continue a { color: #7E96AE; }
.dark .pu-cart__continue a:hover { color: #CBDCEC; }

.dark .pu-cart-empty { background: #0D2438; border-color: #24384B; }
.dark .pu-cart-empty__icon { background: #17293A; color: #9DBBD8; }
.dark .pu-cart-empty__title { color: #fff; }
.dark .pu-cart-empty__text { color: #9DBBD8; }
.dark .pu-cart-empty__secondary { color: #9DBBD8; }
.dark .pu-cart-empty__secondary:hover { color: #F5A54F; }

/* --- 52h. Адаптив ---------------------------------------------------------
 *
 * 1024px, а не 900: підсумок вимагає 21rem, і при вужчому вікні на список
 * лишається менше половини ширини — назва матеріалу починає ламатися на
 * чотири рядки раніше, ніж колонки встигають зійтися.
 * ---------------------------------------------------------------------- */

@media (max-width: 1024px) {
    .pu-cart { grid-template-columns: 1fr; gap: 1.25rem; }
    .pu-cart__aside { position: static; }
}

/* На телефоні картка складається у два рядки: обкладинка з назвою зверху,
 * ціна й «Прибрати» — окремим рядком під ними. Тримати ціну праворуч від
 * назви при ширині 360px означало б віддати назві близько 40% екрана. */
@media (max-width: 560px) {
    .pu-cartcard {
        grid-template-columns: 4.5rem minmax(0, 1fr);
        gap: .75rem .875rem;
        padding: .875rem 1rem .875rem 1.125rem;
    }
    .pu-cartcard__side {
        grid-column: 1 / -1;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        width: 100%;
        padding-top: .75rem;
        border-top: 1px dashed #E2E8F0;
    }
    .pu-cartcard__title { font-size: 14.5px; }
    .pu-cart-coupon__row .input-text { max-width: none; }
    .pu-cart-empty { padding: 2rem 1.25rem; }

    /* Усередині медіазапиту, бо й сама рамка існує лише тут. */
    .dark .pu-cartcard__side { border-top-color: #24384B; }
}

/* =========================================================================
 * 53. Залишки Storefront: 404, подяка, відновлення пароля, купон (1.50.16)
 *
 * АУДИТ 1.50.16. Проглянуто кожен шаблон WooCommerce і кожну сторінку сайту
 * на предмет «хто це малює — ми чи батьківська тема». Знайдено п'ять
 * поверхонь, які лишалися повністю на Storefront. Об'єднує їх те, що всі
 * вони — не в основному шляху покупки, і саме тому жодного разу не
 * потрапили в попередні розділи:
 *
 *   1. 404 — форкнуто в 404.php, оформлення тут (53a);
 *   2. зведення замовлення на сторінці подяки (.woocommerce-order-overview);
 *   3. реквізити покупця там же й у перегляді замовлення
 *      (.woocommerce-customer-details);
 *   4. відновлення й зміна пароля (.woocommerce-ResetPassword);
 *   5. форма купона на оформленні (.checkout_coupon).
 *
 * Пункти 2–5 форку не потребують: розмітка ядра там відповідає змісту, тож
 * нижче саме рескін — на відміну від кошика (розд. 52), де міняти треба
 * було склад колонок.
 * ====================================================================== */

/* --- 53a. Сторінка 404 ---------------------------------------------------- */

.pu-404 {
    max-width: 40rem;
    margin: 3rem auto 4rem;
    padding: 0 1.25rem;
    text-align: center;
}

/* Число як фон, а не як заголовок: «404» нічого не пояснює людині, яка
 * прийшла за конспектом, тож воно має бути позначкою сторінки, а не її
 * головним повідомленням. Головне — рядок нижче. */
.pu-404__code {
    margin: 0;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: clamp(4.5rem, 14vw, 7rem);
    font-weight: 800;
    line-height: .9;
    letter-spacing: -.02em;
    color: #EAF1F8;
    user-select: none;
}

.pu-404__title {
    margin: -.5rem 0 .75rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: clamp(1.375rem, 4vw, 1.75rem);
    font-weight: 800;
    color: #0E3557;
}

.pu-404__text {
    margin: 0 auto;
    max-width: 30rem;
    font-size: 15px;
    line-height: 1.65;
    color: #64748B;
}

.pu-404__search {
    display: flex;
    gap: .5rem;
    max-width: 30rem;
    margin: 1.75rem auto 0;
}

.pu-404__search input[type="search"] {
    flex: 1 1 auto;
    min-width: 0;
    height: 3rem;
    margin: 0;
    padding: 0 1rem;
    border: 1px solid #CBDCEC;
    border-radius: 14px;
    background: #fff;
    font-size: 15px;
    color: #0F1E2E;
}

.pu-404__search input[type="search"]:focus {
    outline: none;
    border-color: #3E6E9E;
    box-shadow: 0 0 0 3px rgba(30, 82, 133, .12);
}

.pu-404__submit {
    flex: 0 0 auto;
    height: 3rem;
    padding: 0 1.375rem;
    border: 0;
    border-radius: 14px;
    background: #EB8018;
    color: #fff;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background .2s ease;
}
.pu-404__submit:hover { background: #C96A0E; }

.pu-404__links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .5rem 1.5rem;
    margin: 1.5rem 0 0;
    font-size: 14px;
}

.pu-404__links a {
    color: #12436C;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.pu-404__links a:hover { color: #C96A0E; }

/* --- 53b. Зведення замовлення на сторінці подяки --------------------------
 *
 * Ядро віддає це списком <ul> з чотирьох пунктів (номер, дата, сума, спосіб
 * оплати), Storefront малює їх горизонтальною смугою з рамками між
 * комірками. Проблема не в рамках: у нас над цим списком уже стоїть власний
 * блок стану видачі (.pu-thanks, розд. 48.4), і два різних оформлення
 * підряд читаються як дві сторінки, склеєні одна з одною.
 *
 * Тут — та сама картка, що й у блоці видачі, тільки тихіша: номер і сума
 * важливі, але людина прийшла по файли, а не по реквізити.
 * ---------------------------------------------------------------------- */

.woocommerce-order-overview {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 2rem;
    margin: 1.25rem 0;
    padding: 1rem 1.25rem;
    border: 1px solid #E2E8F0;
    border-radius: 16px;
    background: #F8FAFC;
    list-style: none;
}

.woocommerce-order-overview li {
    margin: 0;
    padding: .375rem 0;
    border: 0;
    font-size: 11.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: #8296AA;
}

.woocommerce-order-overview li strong {
    display: block;
    margin-top: .1875rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 15px;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
    color: #0E3557;
}

/* --- 53c. Реквізити покупця ----------------------------------------------
 *
 * Після inc/checkout.php тут лишаються ім'я, e-mail і телефон — три рядки.
 * Storefront відводив під них двоколонковий блок із заголовком «Платіжна
 * адреса», розрахований на повну поштову адресу; половина ширини стояла
 * порожньою, а слово «адреса» суперечило тому, що адреси ми не збираємо.
 * ---------------------------------------------------------------------- */

.woocommerce-customer-details {
    margin: 1.25rem 0 0;
}

.woocommerce-customer-details .woocommerce-columns,
.woocommerce-customer-details .col2-set {
    display: block;
}

.woocommerce-customer-details .col-1,
.woocommerce-customer-details .col-2 {
    float: none;
    width: auto;
}

.woocommerce-customer-details h2 {
    margin: 0 0 .625rem;
    font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
    font-size: 15px;
    font-weight: 700;
    color: #0E3557;
}

.woocommerce-customer-details address {
    padding: 1rem 1.25rem;
    border: 1px solid #E2E8F0;
    border-radius: 16px;
    background: #fff;
    font-style: normal;
    font-size: 14px;
    line-height: 1.7;
    color: #475569;
}

.woocommerce-customer-details address p { margin: 0; }

/* --- 53d. Відновлення та зміна пароля -------------------------------------
 *
 * Дві форми ядра, які видно лише при втраченому паролі, — і саме тому вони
 * пережили всі попередні розділи. Поля вводу тут уже фірмові (глобальні
 * правила .woocommerce form .form-row), не було структури навколо них:
 * форма розтягувалась на всю ширину картки кабінету, а пояснювальний абзац
 * зливався з нею.
 * ---------------------------------------------------------------------- */

.woocommerce-ResetPassword,
.woocommerce-form-login.woocommerce-form,
.woocommerce-EditAccountForm {
    max-width: 32rem;
}

.woocommerce-ResetPassword > p:first-child {
    margin-bottom: 1.125rem;
    padding: .875rem 1rem;
    border-left: 3px solid #12436C;
    border-radius: 12px;
    background: #EAF1F8;
    font-size: 13.5px;
    line-height: 1.55;
    color: #0E3557;
}

.woocommerce-ResetPassword .form-row-first,
.woocommerce-ResetPassword .form-row-last {
    float: none;
    width: 100%;
}

/* --- 53e. Купон на оформленні --------------------------------------------
 *
 * Смуга «Маєте купон?» оформлена як .woocommerce-info (розд. 12), а от сама
 * форма, що розгортається під нею, лишалася голою: поле й кнопка стояли в
 * два рядки на всю ширину сторінки, хоча код купона — це 6–10 символів.
 * ---------------------------------------------------------------------- */

.checkout_coupon.woocommerce-form-coupon {
    margin: 0 0 1.5rem;
    padding: 1.125rem 1.25rem;
    border: 1px dashed #CBDCEC;
    border-radius: 16px;
    background: #F8FAFC;
}

.checkout_coupon.woocommerce-form-coupon > p:first-child {
    margin: 0 0 .75rem;
    font-size: 13.5px;
    color: #64748B;
}

.checkout_coupon.woocommerce-form-coupon .form-row {
    display: inline-block;
    width: auto;
    margin: 0 .5rem .5rem 0;
    padding: 0;
    float: none;
}

.checkout_coupon.woocommerce-form-coupon .input-text {
    width: 14rem;
    max-width: 100%;
    margin: 0;
}

.checkout_coupon.woocommerce-form-coupon .button {
    height: 2.75rem;
    padding: 0 1.125rem;
    border-radius: 12px;
    background: #EAF1F8 !important;
    color: #12436C !important;
    font-weight: 600;
}
.checkout_coupon.woocommerce-form-coupon .button:hover { background: #CBDCEC !important; }

/* --- 53f. Темна тема ------------------------------------------------------ */

.dark .pu-404__code { color: #17293A; }
.dark .pu-404__title { color: #fff; }
.dark .pu-404__text { color: #9DBBD8; }
.dark .pu-404__search input[type="search"] { background: #12212E; border-color: #24384B; color: #E2E8F0; }
.dark .pu-404__links a { color: #9DBBD8; }
.dark .pu-404__links a:hover { color: #F5A54F; }

.dark .woocommerce-order-overview { background: #0D2438; border-color: #24384B; }
.dark .woocommerce-order-overview li { color: #7E96AE; }
.dark .woocommerce-order-overview li strong { color: #fff; }

.dark .woocommerce-customer-details h2 { color: #fff; }
.dark .woocommerce-customer-details address { background: #12212E; border-color: #24384B; color: #CBDCEC; }

.dark .woocommerce-ResetPassword > p:first-child { background: #0D2438; border-left-color: #9DBBD8; color: #CBDCEC; }

.dark .checkout_coupon.woocommerce-form-coupon { background: #0D2438; border-color: #24384B; }
.dark .checkout_coupon.woocommerce-form-coupon > p:first-child { color: #9DBBD8; }
.dark .checkout_coupon.woocommerce-form-coupon .button { background: #17293A !important; color: #CBDCEC !important; }
.dark .checkout_coupon.woocommerce-form-coupon .button:hover { background: #1F3549 !important; }

/* --- 53g. Адаптив ---------------------------------------------------------- */

@media (max-width: 560px) {
    .pu-404__search { flex-direction: column; }
    .pu-404__submit { width: 100%; }
    .woocommerce-order-overview { gap: .25rem 1.25rem; }
    .checkout_coupon.woocommerce-form-coupon .input-text { width: 100%; }
    .checkout_coupon.woocommerce-form-coupon .form-row { display: block; width: 100%; }
}


/* ============================================================
   44. Розкриття інформації про розподіл платежу (1.53.0)
       (inc/split-disclosure.php — сторінка матеріалу і checkout)

   Свідомо в тій самій візуальній мові, що й .pu-checkout-note:
   для покупця це той самий жанр — службове пояснення про угоду,
   а не попередження й не реклама. Інший вигляд читався б як
   «увага, щось не так», якого тут немає.
   ============================================================ */

.pu-split-note {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin: 18px 0;
  padding: 14px 18px;
  border: 1px solid #CBDCEC;
  border-left: 3px solid #12436C;
  border-radius: 0 14px 14px 0;
  background: #F4F8FB;
}

.pu-split-note--checkout {
  max-width: 1120px;
  margin: 0 auto 22px;
  padding: 16px 20px;
}

.pu-split-note__icon {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: #ffffff;
  color: #12436C;
  box-shadow: 0 1px 3px rgba(15, 30, 46, .08);
}

.pu-split-note__title {
  margin: 0 0 3px;
  font-family: 'Manrope', ui-sans-serif, system-ui, sans-serif;
  font-size: 14.5px;
  font-weight: 700;
  line-height: 1.35;
  color: #12436C;
}

.pu-split-note__text {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.6;
  color: #5A6675;
}

.dark .pu-split-note { background: #12212E; border-color: #24384B; border-left-color: #9FC2E2; }
.dark .pu-split-note__icon { background: #0B1620; color: #9FC2E2; }
.dark .pu-split-note__title { color: #ffffff; }
.dark .pu-split-note__text { color: #A9BED2; }

@media (max-width: 640px) {
  .pu-split-note { padding: 13px 15px; gap: 12px; }
  .pu-split-note__icon { width: 30px; height: 30px; }
}

/* --- 44b. Футер: адреса і логотипи платіжних систем --- */

/* Адреса — єдиний реквізит, який не вміщується в рядок на вузьких
   екранах, тому для нього знято заборону переносу. */
.prourok-footer .prourok-footer-contacts .prourok-footer-address {
  white-space: normal;
  line-height: 1.5;
}

/* Офіційний логотип, якщо файл покладено в assets/img/payments/.
   Висота фіксована, ширина вільна: у Visa, Mastercard і ПРОСТІР різні
   пропорції, і спільна ширина спотворила б принаймні два з трьох. */
.prourok-footer .prourok-footer-badges .prourok-footer-badge-img {
  display: block;
  width: auto;
  height: 20px;
  padding: 4px 8px;
  border: 1px solid #E2E8F0;
  border-radius: 6px;
  background: #ffffff;
  box-sizing: content-box;
}

.dark .prourok-footer .prourok-footer-badges .prourok-footer-badge-img {
  background: #F8FAFC;
  border-color: #24384B;
}


/* =========================================================================
 * 60. Скруглення клікабельних елементів — захист від стороннього скидання
 *     (1.54.8)
 * =========================================================================
 *
 * ЯК ЗНАЙДЕНО. Після 1.54.7 (підсвітка дотику) частина кнопок при
 * натисканні все ще ставала прямокутною — «Модерація», пункти головного
 * меню, «Перейти до каталогу». А сусідня кнопка «Кабінет автора» в тій
 * самій шапці — ні. Єдина різниця між ними:
 *
 *   «Кабінет автора» — скруглення з Tailwind: .rounded-xl{border-radius:16px!important}
 *   «Модерація»      — скруглення з theme.css: .pu-modlink{border-radius:12px}
 *
 * Отже, на натисканні (:active/:focus) спрацьовує чуже правило, яке
 * змінює border-radius. Воно слабше за !important — тому Tailwind-кнопку
 * не зачіпає, а звичайне правило теми перебиває завдяки псевдокласу
 * (вищій специфічності).
 *
 * У файлах самої теми такого правила немає: theme.css, main.css і
 * style.css перевірено на всі форми скидання (0, inherit, initial, unset,
 * revert, all:). Джерело — батьківська Storefront або плагін; конкретний
 * файл можна знайти в DevTools (див. README 1.54.8). Але чекати на
 * діагностику немає потреби: захист нижче працює незалежно від того,
 * звідки прийде скидання.
 *
 * ЩО ТУТ. Для кожного клікабельного елемента теми (<a>/<button>/label/
 * summary у PHP-шаблонах і елементи, які створює JS) з власним
 * border-radius — те саме значення для станів :hover/:active/:focus/
 * :focus-visible з !important. Значення скопійовано з базових правил
 * теми, тож вигляд у спокої не змінюється.
 *
 * ЯК СКЛАДЕНО. Список згенеровано скриптом із реальних файлів теми, а не
 * вписано вручну: попередні ручні аудити (1.54.5, 1.54.6) щоразу
 * пропускали частину елементів. Правила з @media сюди не потрапляють —
 * для них окремий блок у кінці, щоб на телефоні не нав'язати десктопне
 * значення.
 *
 * ЯКЩО ДОДАЄТЕ НОВУ КНОПКУ з власним border-radius у theme.css — додайте
 * її сюди теж, або задайте радіус одразу з !important.
 */

.woocommerce a.button:hover,
.woocommerce a.button:active,
.woocommerce a.button:focus,
.woocommerce a.button:focus-visible {
  border-radius: 12px !important;
}

.woocommerce button.button:hover,
.woocommerce button.button:active,
.woocommerce button.button:focus,
.woocommerce button.button:focus-visible {
  border-radius: 12px !important;
}

.woocommerce input.button:hover,
.woocommerce input.button:active,
.woocommerce input.button:focus,
.woocommerce input.button:focus-visible {
  border-radius: 12px !important;
}

.woocommerce .button.alt:hover,
.woocommerce .button.alt:active,
.woocommerce .button.alt:focus,
.woocommerce .button.alt:focus-visible {
  border-radius: 12px !important;
}

.prourok-auth-tab:hover,
.prourok-auth-tab:active,
.prourok-auth-tab:focus,
.prourok-auth-tab:focus-visible {
  border-radius: 10px !important;
}

.woocommerce-message .button:hover,
.woocommerce-message .button:active,
.woocommerce-message .button:focus,
.woocommerce-message .button:focus-visible {
  border-radius: 12px !important;
}

.woocommerce-info .button:hover,
.woocommerce-info .button:active,
.woocommerce-info .button:focus,
.woocommerce-info .button:focus-visible {
  border-radius: 12px !important;
}

.pu-preset:hover,
.pu-preset:active,
.pu-preset:focus,
.pu-preset:focus-visible {
  border-radius: 99px !important;
}

.pu-flag:hover,
.pu-flag:active,
.pu-flag:focus,
.pu-flag:focus-visible {
  border-radius: 10px !important;
}

.pu-preview:hover,
.pu-preview:active,
.pu-preview:focus,
.pu-preview:focus-visible {
  border-radius: 12px !important;
}

.pu-mt__chip:hover,
.pu-mt__chip:active,
.pu-mt__chip:focus,
.pu-mt__chip:focus-visible {
  border-radius: 99px !important;
}

.pu-mt__opt:hover,
.pu-mt__opt:active,
.pu-mt__opt:focus,
.pu-mt__opt:focus-visible {
  border-radius: 99px !important;
}

.prourok-nav-link:hover,
.prourok-nav-link:active,
.prourok-nav-link:focus,
.prourok-nav-link:focus-visible {
  border-radius: 10px !important;
}

.prourok-nav-list--mobile .prourok-nav-link:hover,
.prourok-nav-list--mobile .prourok-nav-link:active,
.prourok-nav-list--mobile .prourok-nav-link:focus,
.prourok-nav-list--mobile .prourok-nav-link:focus-visible {
  border-radius: 12px !important;
}

.prourok-nav-action:hover,
.prourok-nav-action:active,
.prourok-nav-action:focus,
.prourok-nav-action:focus-visible {
  border-radius: 12px !important;
}

.pu-nav-user:hover,
.pu-nav-user:active,
.pu-nav-user:focus,
.pu-nav-user:focus-visible {
  border-radius: 14px !important;
}

.prourok-header .prourok-nav-cta:hover,
.prourok-header .prourok-nav-cta:active,
.prourok-header .prourok-nav-cta:focus,
.prourok-header .prourok-nav-cta:focus-visible {
  border-radius: 12px !important;
}

.prourok-header .pu-theme-row:hover,
.prourok-header .pu-theme-row:active,
.prourok-header .pu-theme-row:focus,
.prourok-header .pu-theme-row:focus-visible {
  border-radius: 12px !important;
}

.prourok-page .pu-form__status:hover,
.prourok-page .pu-form__status:active,
.prourok-page .pu-form__status:focus,
.prourok-page .pu-form__status:focus-visible {
  border-radius: 12px !important;
}

.pu-src-rm:hover,
.pu-src-rm:active,
.pu-src-rm:focus,
.pu-src-rm:focus-visible {
  border-radius: 7px !important;
}

.pu-fchip:hover,
.pu-fchip:active,
.pu-fchip:focus,
.pu-fchip:focus-visible {
  border-radius: 999px !important;
}

.pu-fchip-x:hover,
.pu-fchip-x:active,
.pu-fchip-x:focus,
.pu-fchip-x:focus-visible {
  border-radius: 50% !important;
}

.pu-src-box:hover,
.pu-src-box:active,
.pu-src-box:focus,
.pu-src-box:focus-visible {
  border-radius: 5px !important;
}

.pu-ref__link:hover,
.pu-ref__link:active,
.pu-ref__link:focus,
.pu-ref__link:focus-visible {
  border-radius: 999px !important;
}

.pu-chip:hover,
.pu-chip:active,
.pu-chip:focus,
.pu-chip:focus-visible {
  border-radius: 999px !important;
}

.pu-mod-purge__btn:hover,
.pu-mod-purge__btn:active,
.pu-mod-purge__btn:focus,
.pu-mod-purge__btn:focus-visible {
  border-radius: 8px !important;
}

.pu-mod-btn:hover,
.pu-mod-btn:active,
.pu-mod-btn:focus,
.pu-mod-btn:focus-visible {
  border-radius: 10px !important;
}

.pu-mod-row__cover:hover,
.pu-mod-row__cover:active,
.pu-mod-row__cover:focus,
.pu-mod-row__cover:focus-visible {
  border-radius: 8px !important;
}

.pu-mod-btn.pu-mod-row__go:hover,
.pu-mod-btn.pu-mod-row__go:active,
.pu-mod-btn.pu-mod-row__go:focus,
.pu-mod-btn.pu-mod-row__go:focus-visible {
  border-radius: 10px !important;
}

.pu-mod-prev:hover,
.pu-mod-prev:active,
.pu-mod-prev:focus,
.pu-mod-prev:focus-visible {
  border-radius: 8px !important;
}

.pu-mod-phrase:hover,
.pu-mod-phrase:active,
.pu-mod-phrase:focus,
.pu-mod-phrase:focus-visible {
  border-radius: 999px !important;
}

.pu-mod-act:hover,
.pu-mod-act:active,
.pu-mod-act:focus,
.pu-mod-act:focus-visible {
  border-radius: 10px !important;
}

.pu-fb__go:hover,
.pu-fb__go:active,
.pu-fb__go:focus,
.pu-fb__go:focus-visible {
  border-radius: 10px !important;
}

.pu-modlink:hover,
.pu-modlink:active,
.pu-modlink:focus,
.pu-modlink:focus-visible {
  border-radius: 12px !important;
}

.pu-ed__btn:hover,
.pu-ed__btn:active,
.pu-ed__btn:focus,
.pu-ed__btn:focus-visible {
  border-radius: 8px !important;
}

.pu-ed__area:hover,
.pu-ed__area:active,
.pu-ed__area:focus,
.pu-ed__area:focus-visible {
  border-radius: 0 0 12px 12px !important;
}

.pu-fop__save:hover,
.pu-fop__save:active,
.pu-fop__save:focus,
.pu-fop__save:focus-visible {
  border-radius: 12px !important;
}

.pu-mod-quick__toggle:hover,
.pu-mod-quick__toggle:active,
.pu-mod-quick__toggle:focus,
.pu-mod-quick__toggle:focus-visible {
  border-radius: 10px !important;
}

.prourok-to-top:hover,
.prourok-to-top:active,
.prourok-to-top:focus,
.prourok-to-top:focus-visible {
  border-radius: 14px !important;
}

.pu-acc__tile:hover,
.pu-acc__tile:active,
.pu-acc__tile:focus,
.pu-acc__tile:focus-visible {
  border-radius: 16px !important;
}

.pu-acc__btn:hover,
.pu-acc__btn:active,
.pu-acc__btn:focus,
.pu-acc__btn:focus-visible {
  border-radius: 14px !important;
}

.pu-pw-toggle:hover,
.pu-pw-toggle:active,
.pu-pw-toggle:focus,
.pu-pw-toggle:focus-visible {
  border-radius: 9px !important;
}

.pu-dl:hover,
.pu-dl:active,
.pu-dl:focus,
.pu-dl:focus-visible {
  border-radius: 14px !important;
}

.pu-dl-empty__btn:hover,
.pu-dl-empty__btn:active,
.pu-dl-empty__btn:focus,
.pu-dl-empty__btn:focus-visible {
  border-radius: 14px !important;
}

.woocommerce-EditAccountForm .button:hover,
.woocommerce-EditAccountForm .button:active,
.woocommerce-EditAccountForm .button:focus,
.woocommerce-EditAccountForm .button:focus-visible {
  border-radius: 14px !important;
}

.woocommerce .pu-cart a.remove.pu-cartcard__remove:hover,
.woocommerce .pu-cart a.remove.pu-cartcard__remove:active,
.woocommerce .pu-cart a.remove.pu-cartcard__remove:focus,
.woocommerce .pu-cart a.remove.pu-cartcard__remove:focus-visible {
  border-radius: 8px !important;
}

.woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button:hover,
.woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button:active,
.woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button:focus,
.woocommerce .pu-cart-actions button.pu-cart-coupon__btn.button:focus-visible {
  border-radius: 12px !important;
}

.woocommerce .pu-cart-actions button.pu-cart-update.button:hover,
.woocommerce .pu-cart-actions button.pu-cart-update.button:active,
.woocommerce .pu-cart-actions button.pu-cart-update.button:focus,
.woocommerce .pu-cart-actions button.pu-cart-update.button:focus-visible {
  border-radius: 12px !important;
}

.woocommerce .pu-cart .wc-proceed-to-checkout a.checkout-button.button:hover,
.woocommerce .pu-cart .wc-proceed-to-checkout a.checkout-button.button:active,
.woocommerce .pu-cart .wc-proceed-to-checkout a.checkout-button.button:focus,
.woocommerce .pu-cart .wc-proceed-to-checkout a.checkout-button.button:focus-visible {
  border-radius: 14px !important;
}

.woocommerce .pu-cart-empty a.pu-cart-empty__primary.button:hover,
.woocommerce .pu-cart-empty a.pu-cart-empty__primary.button:active,
.woocommerce .pu-cart-empty a.pu-cart-empty__primary.button:focus,
.woocommerce .pu-cart-empty a.pu-cart-empty__primary.button:focus-visible {
  border-radius: 14px !important;
}

.pu-404__submit:hover,
.pu-404__submit:active,
.pu-404__submit:focus,
.pu-404__submit:focus-visible {
  border-radius: 14px !important;
}

.checkout_coupon.woocommerce-form-coupon .button:hover,
.checkout_coupon.woocommerce-form-coupon .button:active,
.checkout_coupon.woocommerce-form-coupon .button:focus,
.checkout_coupon.woocommerce-form-coupon .button:focus-visible {
  border-radius: 12px !important;
}

/* Варіанти з @media: той самий захист, але з мобільним значенням. */
@media (max-width: 782px) {
  .prourok-to-top:hover,
  .prourok-to-top:active,
  .prourok-to-top:focus,
  .prourok-to-top:focus-visible {
    border-radius: 12px !important;
  }
}
