/* ============================================================
   Datamoll — Единый загрузчик (dm-loader)
   Подключается ОДИН раз глобально, последним (views/client/header.php).
   Тонкое брендовое кольцо вместо разрозненных спиннеров. Drop-in:
   переопределяет существующие лоадеры по их классам, без правок JS.
   ============================================================ */
:root{
  --dm-acc:#8cff3f;
  --dm-acc-deep:#3f9e1d;
  --dm-acc-tint:#eef9e2;
}

/* ---- БЛОЧНЫЙ загрузчик (центр контейнера + текст) ---- */
.dm-loader{
  --dm-size:54px; --dm-w:3.5px;
  display:inline-flex; flex-direction:column; align-items:center; justify-content:center; gap:16px;
}
.dm-loader__ring{
  width:var(--dm-size); height:var(--dm-size); border-radius:50%;
  border:var(--dm-w) solid var(--dm-acc-tint);
  border-top-color:var(--dm-acc-deep);
  animation:dm-spin .7s linear infinite;
}
.dm-loader__text{ font-size:14px; font-weight:700; color:#64748b; letter-spacing:.01em; }

/* ---- ИНЛАЙН кольцо (кнопки, строки, ячейки) ---- */
.dm-spin{
  display:inline-block; vertical-align:-3px;
  width:18px; height:18px; border-radius:50%;
  border:2.5px solid var(--dm-acc-tint);
  border-top-color:var(--dm-acc-deep);
  animation:dm-spin .65s linear infinite;
}
.dm-spin--sm{ width:15px; height:15px; border-width:2px; vertical-align:-2px; }
.dm-spin--lg{ width:24px; height:24px; border-width:3px; }

.btn-primary .dm-spin, .btn-success .dm-spin, .btn-dark .dm-spin,
.pf-btn--primary .dm-spin, .cr-btn--primary .dm-spin,
[class*="btn"][class*="--green"] .dm-spin, .dm-spin--oncolor{
  border-color:rgba(20,33,13,.28);
  border-top-color:#14210d;
}

@keyframes dm-spin{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){
  .dm-loader__ring,.dm-spin{ animation-duration:1.4s; }
}

/* ============================================================
   DROP-IN ПЕРЕОПРЕДЕЛЕНИЯ существующих загрузчиков (без правок JS)
   ============================================================ */

/* 1) Корзина — «Обновляем цену…» (.cart-loading-spinner > i.fa-spinner) */
.cart-loading-spinner{
  width:54px !important; height:54px !important;
  background:none !important; border-radius:50% !important;
  position:relative;
}
.cart-loading-spinner i{ display:none !important; }
.cart-loading-spinner::before{
  content:""; position:absolute; inset:0; border-radius:50%;
  border:3.5px solid var(--dm-acc-tint); border-top-color:var(--dm-acc-deep);
  animation:dm-spin .7s linear infinite;
}

/* 2) Заказы (мобайл) — .mobile-spinner-wrapper > i
   (!important нужен, т.к. инлайн-правило ниже более специфично) */
.mobile-spinner-wrapper i{
  width:40px !important; height:40px !important; border-radius:50%;
  border:3px solid var(--dm-acc-tint) !important; border-top-color:var(--dm-acc-deep) !important;
  border-right-color:var(--dm-acc-tint) !important;
  animation:dm-spin .7s linear infinite;
  font-size:0 !important; color:transparent !important; background:none !important; opacity:1 !important;
}
.mobile-spinner-wrapper i::before{ content:"" !important; }

/* 3) Поиск — .search-autocomplete-loading > i.fa-spinner */
.search-autocomplete-loading i{
  width:22px !important; height:22px !important; border-radius:50%; display:inline-block;
  border:2.5px solid var(--dm-acc-tint) !important; border-top-color:var(--dm-acc-deep) !important;
  border-right-color:var(--dm-acc-tint) !important;
  animation:dm-spin .65s linear infinite;
  font-size:0 !important; color:transparent !important; opacity:1 !important;
}

/* ============================================================
   ИНЛАЙН FA-СПИННЕРЫ → то же кольцо (кнопки, строки) — без правок JS.
   currentColor: кольцо берёт цвет текста контекста, поэтому читается
   на любом фоне (тёмный текст на лайме, белый на тёмно-зелёной кнопке,
   тёмный на белом блоке). Глиф FA скрывается.
   ============================================================ */
i.fa-spinner.fa-spin, i.fa-spin.fa-spinner,
.fa-spinner.fa-spin::before{ /* placeholder for specificity grouping */ }

i.fa-spinner.fa-spin, i.fa-spin.fa-spinner{
  box-sizing:border-box;
  display:inline-block;
  width:1.05em; height:1.05em;
  border:.14em solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  vertical-align:-.16em;
  opacity:.9;
  /* keep FA's own .fa-spin rotation; ensure consistent speed below */
}
i.fa-spinner.fa-spin::before, i.fa-spin.fa-spinner::before{ content:"" !important; }

/* Унификация скорости всех вращающихся иконок */
.fa-spin{ animation-duration:.7s; }
