/* ==========================================================
   DI įkėlimo animacijos: perkelta iš prototipes/ai-paieska (assets/css/loader.css + loader-ai.css).
   Spalvos kaip DI ikonos gradientas, todėl hex reikšmės palikti kaip originale.
   Kandidatas į shared/components, jei naudos ir kiti prototipai.
   ========================================================== */
/* ==========================================================
   Abstraktus įkėlimas „Ieškoma rezultatų…“: 7 taškai sukasi ratu
   ir susidėlioja į S (Sufleris). Kai atsiranda DI atsakymas,
   jo vietoje lieka DI ikona. Koordinatės iš scripts/loader-gen.py (git istorijoje).
   ========================================================== */
.ld { display: inline-grid; place-items: center; flex: 0 0 auto; color: var(--ai-accent, #3e9aa2); }
.ld svg { display: block; overflow: visible; }
.ld circle { fill: currentColor; }
.ld-morph g { animation: ld-spin 2.6s cubic-bezier(.65,0,.35,1) infinite; transform-origin: 10px 10px; }
@keyframes ld-spin { 0% { transform: rotate(0deg); } 36% { transform: rotate(360deg); } 100% { transform: rotate(360deg); } }

/* ---- 7 taškai (galai 60°, spindulys 1.75 nustatomas loader.js) ---- */
.ld-morph[data-n="7"] circle:nth-child(1) { animation: ld-m7-0 2.6s cubic-bezier(.65,0,.35,1) infinite; }
@keyframes ld-m7-0 { 0%, 34% { transform: translate(15.37px, 6.90px); } 52%, 84% { transform: translate(12.00px, 2.54px); } 100% { transform: translate(15.37px, 6.90px); } }
.ld-morph[data-n="7"] circle:nth-child(2) { animation: ld-m7-1 2.6s cubic-bezier(.65,0,.35,1) infinite; }
@keyframes ld-m7-1 { 0%, 36% { transform: translate(10.92px, 3.87px); } 54%, 84% { transform: translate(7.42px, 2.94px); } 100% { transform: translate(10.92px, 3.87px); } }
.ld-morph[data-n="7"] circle:nth-child(3) { animation: ld-m7-2 2.6s cubic-bezier(.65,0,.35,1) infinite; }
@keyframes ld-m7-2 { 0%, 38% { transform: translate(5.78px, 5.46px); } 56%, 84% { transform: translate(6.24px, 7.36px); } 100% { transform: translate(5.78px, 5.46px); } }
.ld-morph[data-n="7"] circle:nth-child(4) { animation: ld-m7-3 2.6s cubic-bezier(.65,0,.35,1) infinite; }
@keyframes ld-m7-3 { 0%, 40% { transform: translate(3.82px, 10.46px); } 58%, 84% { transform: translate(10.00px, 10.00px); } 100% { transform: translate(3.82px, 10.46px); } }
.ld-morph[data-n="7"] circle:nth-child(5) { animation: ld-m7-4 2.6s cubic-bezier(.65,0,.35,1) infinite; }
@keyframes ld-m7-4 { 0%, 42% { transform: translate(6.51px, 15.12px); } 60%, 84% { transform: translate(13.76px, 12.64px); } 100% { transform: translate(6.51px, 15.12px); } }
.ld-morph[data-n="7"] circle:nth-child(6) { animation: ld-m7-5 2.6s cubic-bezier(.65,0,.35,1) infinite; }
@keyframes ld-m7-5 { 0%, 43% { transform: translate(11.83px, 15.92px); } 61%, 84% { transform: translate(12.58px, 17.06px); } 100% { transform: translate(11.83px, 15.92px); } }
.ld-morph[data-n="7"] circle:nth-child(7) { animation: ld-m7-6 2.6s cubic-bezier(.65,0,.35,1) infinite; }
@keyframes ld-m7-6 { 0%, 45% { transform: translate(15.77px, 12.27px); } 63%, 84% { transform: translate(8.00px, 17.46px); } 100% { transform: translate(15.77px, 12.27px); } }

@media (prefers-reduced-motion: reduce) {
  .ld * { animation: none !important; opacity: 1 !important; }
  .ld-morph[data-n="7"] circle:nth-child(1) { transform: translate(12.00px, 2.54px); }
  .ld-morph[data-n="7"] circle:nth-child(2) { transform: translate(7.42px, 2.94px); }
  .ld-morph[data-n="7"] circle:nth-child(3) { transform: translate(6.24px, 7.36px); }
  .ld-morph[data-n="7"] circle:nth-child(4) { transform: translate(10.00px, 10.00px); }
  .ld-morph[data-n="7"] circle:nth-child(5) { transform: translate(13.76px, 12.64px); }
  .ld-morph[data-n="7"] circle:nth-child(6) { transform: translate(12.58px, 17.06px); }
  .ld-morph[data-n="7"] circle:nth-child(7) { transform: translate(8.00px, 17.46px); }
}

/* ==========================================================
   Įkėlimo animacijos su DI ikona (assets/img/ai.svg).
   Markup'as: assets/js/loader.js (ai-dots | ai-draw | ai-pulse).
   ========================================================== */
.ld { display: inline-grid; place-items: center; flex: 0 0 auto; }
.ld svg { display: block; overflow: visible; }
.ld-ai svg path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.ld-ai .ld-ai-star { stroke-width: 4.4; }
.ld-ai .ld-ai-line { stroke-width: 3.8; opacity: 0; }   /* kol animacija neprasidėjo, linijų nesimato */

/* 1. Taškai sukasi žiedu, susirenka į žvaigždę, ji trumpam užsidega, ir vėl išsisklaido */
.ld-ai-dots .ld-ai-ring { transform-origin: 20.5px 37px; animation: ldai-ring 2.8s cubic-bezier(.65, 0, .35, 1) infinite; }
.ld-ai-dots circle { transform: translate(var(--ax), var(--ay)); animation: ldai-gather 2.8s cubic-bezier(.65, 0, .35, 1) infinite; }
.ld-ai-dots .ld-ai-star { opacity: 0; animation: ldai-star-on 2.8s ease-in-out infinite; }
.ld-ai-dots .ld-ai-line { stroke-dasharray: 30; stroke-dashoffset: 30; animation: ldai-line-on 2.8s ease-in-out infinite; }
.ld-ai-dots .ld-ai-line.is-b { animation-delay: .08s; }
/* žiedas pasisuka 240° (12 taškų, todėl ciklo pradžia ir pabaiga sutampa) ir sustoja, kai taškai renkasi */
@keyframes ldai-ring { 0% { transform: rotate(-240deg); } 22%, 100% { transform: rotate(0deg); } }
@keyframes ldai-gather {
  0%, 22% { transform: translate(var(--ax), var(--ay)) scale(1); }
  42%, 74% { transform: translate(var(--bx), var(--by)) scale(.75); }
  100% { transform: translate(var(--ax), var(--ay)) scale(1); }
}
@keyframes ldai-star-on { 0%, 44% { opacity: 0; } 52%, 70% { opacity: 1; } 78%, 100% { opacity: 0; } }
@keyframes ldai-line-on { 0%, 46% { stroke-dashoffset: 30; opacity: 0; } 56%, 70% { stroke-dashoffset: 0; opacity: 1; } 80%, 100% { stroke-dashoffset: -30; opacity: 0; } }

/* 2. Žvaigždė nusipiešia viena linija, tada kometos, ir viskas išsitrina ta pačia kryptimi */
.ld-ai-draw .ld-ai-star { stroke-dasharray: 1; stroke-dashoffset: 1; animation: ldai-draw 2.4s cubic-bezier(.65, 0, .35, 1) infinite; }
.ld-ai-draw .ld-ai-line { stroke-dasharray: 1; stroke-dashoffset: 1; animation: ldai-draw-line 2.4s cubic-bezier(.65, 0, .35, 1) infinite; }
.ld-ai-draw .ld-ai-line.is-b { animation-delay: .1s; }
@keyframes ldai-draw { 0% { stroke-dashoffset: 1; opacity: 0; } 4% { opacity: 1; } 45%, 60% { stroke-dashoffset: 0; } 96% { opacity: 1; } 100% { stroke-dashoffset: -1; opacity: 0; } }
@keyframes ldai-draw-line { 0%, 30% { stroke-dashoffset: 1; opacity: 0; } 32% { opacity: 1; } 50%, 62% { stroke-dashoffset: 0; } 88% { opacity: 1; } 90%, 100% { stroke-dashoffset: -1; opacity: 0; } }

/* 3. Žvaigždė ramiai „kvėpuoja“ ir pasisuka, pro šalį praskrieja dvi kometos */
.ld-ai-pulse .ld-ai-star { transform-origin: 20.5px 37px; animation: ldai-breathe 1.8s ease-in-out infinite; }
.ld-ai-pulse .ld-ai-line { stroke-dasharray: .35 1; stroke-dashoffset: 1.35; animation: ldai-comet 1.8s cubic-bezier(.4, 0, .2, 1) infinite; }
.ld-ai-pulse .ld-ai-line.is-b { animation-delay: .9s; }
@keyframes ldai-breathe { 0%, 100% { transform: scale(.82) rotate(0deg); } 50% { transform: scale(1.04) rotate(45deg); } }
@keyframes ldai-comet { 0% { stroke-dashoffset: 1.35; opacity: 0; } 15% { opacity: 1; } 60% { stroke-dashoffset: 0; opacity: 1; } 75%, 100% { stroke-dashoffset: 0; opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
  .ld-ai *, .ld-ai svg { animation: none !important; }
  .ld-ai .ld-ai-star { opacity: 1 !important; stroke-dashoffset: 0 !important; }
  .ld-ai-dots circle { display: none; }
}

/* S iš taškų DI ikonos rėme: kol ieškoma, žvaigždės ir kometų nesimato (jas atskleidžia LOADER_RESOLVE) */
.ld-mo .ld-ai-star { opacity: 0; }
.ld-mo g.ld-morph { transform-origin: 10px 10px; animation: ld-spin 2.6s cubic-bezier(.65,0,.35,1) infinite; }
