/* Presety widgetu E9b (30.10): jezyk ruchu 5 "rozlanie" (superlike) - L5a lokalizacja, Q5 ilosc (rolka), J5 jakosc, B5 przyciski,
   PP-3 "Powieksz pakiet". Spec: design-system/references/presety-spec.md (sekcja 6), generatory plansz
   proces-makiet/scripts/presety/loc/gen_ani.py (L5a), gen_anis.py (Q5, J5), anib/gen_aniB.py (B5), pp/gen_pp.py (PP-3) - wartosci 1:1.
   Ladowany tylko przy mv=5 (CurdeWidgetLook::style_files, na koncu listy), razem z look.js (token "po zmianie" + punkt dotyku).
   Zasady jak mv-2/mv-3: ruch tylko po dzialaniu klienta - atrybut data-vwm na formularzu (look.js vwMvHit: L0/L1, Q0/Q1, J0/J1,
   U0/U1, E0/E1) trwa 700 ms i znika; wejscie, prefill, "Zamow ponownie", powrot z kroku 2 i zmiany z kodu = bez tokenu, bez ruchu;
   parzystosc restartuje @keyframes. prefers-reduced-motion i wylaczniki panelu (vw-no-*) = brak tokenu.
   Punkt dotyku: look.js (vwMvInit) zapamietuje pointerdown (przechwytywanie na formularzu) i po renderze ustawia na wybranym
   --vw-rx/--vw-ry (% elementu) i --vw-rr (promien w px); klawiatura = srodek (50% 50%). Przyciski: --vw-rx/--vw-ry z pointerdown
   na przycisku, Enter / Spacja = srodek.
   Kolo rozlania wyboru = ::before wybranego z clip-path circle() (odstepstwo "clip" z briefu): kolo musi byc przyciete do ksztaltu
   elementu bez overflow:hidden na kaflu (iskry W1 Premium i badge wychodza poza kafel), bez nowego HTML. Przyciski: kolo jako
   transform scale w przycisku z overflow hidden (tylko transform/opacity). Tlo sukcesu zmienia sie skokowo (step-end).
   Adaptacja do stylow sekcji (kazdy styl 1-5):
   - L5a: tint marki (--vw-tint) od punktu dotyku, srednica 240% szerokosci, scale do 55%, potem gasnie (480 ms) - L32 kafel /
     LOC-2 pole w belce / LOC-3 karta / LOC-4 wiersz listy (pole bez ruchu; lista zamyka sie jak w stylu) / LOC-5 duza karta.
     Obwodka wyboru jak w stylu. Pierscien C2, skala flagi, wejscie zdania pod L32 i przenikanie Q-A (ruch 1) wylaczone.
   - Q5 rolka: nazwa/liczba i cena wybranego wjezdzaja w okienku (clip-path inset) z kierunku: wiekszy prog z dolu, mniejszy z gory
     (data-vwd u/d z look.js), krycie .3 -> 1, cena 40 ms pozniej (300 ms) - K2 pole / QTY-2 karta / QTY-3c stepper / QTY-4 kafel /
     QTY-5b wiersz.
   - J5: tlo poziomu (--tint wybranego) rozlewa sie od punktu dotyku (260% szerokosci, co najmniej do najdalszego rogu) i zostaje
     (480 ms) - S6 kafel, QUA-3 przycisk, QUA-4/5 karta; QUA-2 (wybrany = biala pigulka) - kolo gasnie na koncu. Premium:
     iskry W1 (ruch 1, 560 ms) zostaja. A1, H6, badge i kreski (ruch 1) wylaczone.
   - U (PP-3, takze PP-1/2/4/5): tint od punktu dotyku na linii potwierdzenia (kolo 420 px, 460 ms, gasnie) i od rogu z kropka
     (prawy gorny) w wybranym progu (karta / kafel / wiersz / pole; 420 ms, gasnie); wartosc rolka "wiecej" jak Q5.
   - B5: hover i fokus = --vw-ah (styl); wcisniecie = kolo bieli .18 od punktu do scale .35 (300 ms) + scale(.98); ladowanie = kolo
     dorasta do calosci (220%, 450 ms) i zostaje .14, ikona gasnie scale .6 (160 ms), spinner scale .6 -> 1; sukces "Przejdz dalej"
     = drugie kolo bieli .22 (300 ms, krok 2 po 300 ms); sukces "Dodaj" = zielone kolo #E6F4EA od punktu dotyku 380 ms, check
     i "Dodano" od 90 ms, tlo #E6F4EA skokowo po 380 ms; blad = wypelnienie cofa sie do punktu (scale .2 + zanik, 300 ms).
     Przyciski karty, kopie w pasku telefonu (.vw-mbar) i pasek desktop (.vw-dbar__cta). */

/* --- Ruch 1 (polskielajki) wylaczony: C2, Q-A, A1, H6, badge, kreski, wejscie zdania (iskry W1 Premium zostaja - J5) --- */
form#product_widget.vw-p-mv5 .vw-loc .vw-ring {
	display: none;
}
form#product_widget.vw-p-mv5 .vw-loc__tile.is-on:is(.p0, .p1) .vw-flag,
form#product_widget.vw-p-mv5 .vw-loc__txt,
form#product_widget.vw-p-mv5 :is(.vw-qx-enter-active, .vw-qx-leave-active),
form#product_widget.vw-p-mv5 .vw-qt.vw-qt:is(.p0, .p1) .vw-qt__tile.is-on,
form#product_widget.vw-p-mv5 .vw-qt.vw-qt:is(.p0, .p1) .vw-qt__bdg,
form#product_widget.vw-p-mv5 .vw-qt.vw-qt:is(.p0, .p1) .vw-qt__bdg::after,
form#product_widget.vw-p-mv5 .vw-qt.vw-qt:is(.p0, .p1) .vw-qt__b.is-f,
form#product_widget.vw-p-mv5 .vw-qt.vw-qt:is(.p0, .p1) .vw-qt__hs i {
	animation: none;
}
/* Wybrany kafel jakosci bez przejscia tla (na czas tokenu tlo rysuje kolo, po tokenie wlasne - ten sam kolor) */
form#product_widget.vw-p-mv5.vw-p-mv5 .vw-qt__tile.is-on {
	transition: color .2s cubic-bezier(.2, 0, 0, 1), border-color .2s cubic-bezier(.2, 0, 0, 1), box-shadow .2s cubic-bezier(.2, 0, 0, 1);
}

/* --- L5a "rozlanie" (480 ms, cubic-bezier(.2,0,0,1)): kolo --vw-tint pod trescia wybranego, gasnie na koncu --- */
form#product_widget.vw-p-mv5:is([data-vwm~="L0"], [data-vwm~="L1"]) .vw-loc :is(.vw-loc__tile, .vw-lr, .vw-lo).is-on {
	position: relative;
	isolation: isolate;
}
form#product_widget.vw-p-mv5:is([data-vwm~="L0"], [data-vwm~="L1"]) .vw-loc :is(.vw-loc__tile, .vw-lr, .vw-lo).is-on::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: inherit;
	background: var(--vw-tint);
	clip-path: circle(0 at var(--vw-rx, 50%) var(--vw-ry, 50%));
	pointer-events: none;
}
form#product_widget.vw-p-mv5[data-vwm~="L0"] .vw-loc :is(.vw-loc__tile, .vw-lr, .vw-lo).is-on::before {
	animation: vw-m5l0 .48s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="L1"] .vw-loc :is(.vw-loc__tile, .vw-lr, .vw-lo).is-on::before {
	animation: vw-m5l1 .48s cubic-bezier(.2, 0, 0, 1) both;
}

/* --- J5 "rozlanie" (480 ms): tlo poziomu od punktu dotyku, zostaje (na czas tokenu wlasne tlo przezroczyste) --- */
form#product_widget.vw-p-mv5:is([data-vwm~="J0"], [data-vwm~="J1"]) .vw-qa .vw-qt__tile.is-on {
	isolation: isolate;
	background: transparent;
}
form#product_widget.vw-p-mv5.vw-p-js2:is([data-vwm~="J0"], [data-vwm~="J1"]) .vw-qa .vw-qt__tile.is-on {
	background: #FFFFFF;
}
form#product_widget.vw-p-mv5:is([data-vwm~="J0"], [data-vwm~="J1"]) .vw-qa .vw-qt__tile.is-on::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: inherit;
	background: var(--tint);
	clip-path: circle(0 at var(--vw-rx, 50%) var(--vw-ry, 50%));
	pointer-events: none;
}
form#product_widget.vw-p-mv5[data-vwm~="J0"] .vw-qa .vw-qt__tile.is-on::before {
	animation: vw-m5j0 .48s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="J1"] .vw-qa .vw-qt__tile.is-on::before {
	animation: vw-m5j1 .48s cubic-bezier(.2, 0, 0, 1) both;
}
/* QUA-2: wybrany = biala pigulka - kolo gasnie na koncu (po tokenie biala pigulka bez skoku) */
form#product_widget.vw-p-mv5.vw-p-js2[data-vwm~="J0"] .vw-qa .vw-qt__tile.is-on::before {
	animation-name: vw-m5l0;
}
form#product_widget.vw-p-mv5.vw-p-js2[data-vwm~="J1"] .vw-qa .vw-qt__tile.is-on::before {
	animation-name: vw-m5l1;
}

/* --- Q5 "rolka" (300 ms, cubic-bezier(.2,0,0,1)): wartosc wybranego w okienku z kierunku, cena 40 ms pozniej --- */
form#product_widget.vw-p-mv5[data-vwm~="Q0"][data-vwd="u"] :is(.vw-qf__nm, .vw-qf__pr, .vw-qy__nm, .vw-qy__pr, .vw-qk.is-on .vw-qk__n, .vw-qk.is-on .vw-qk__p, .vw-qm__t.is-on .vw-qm__n, .vw-qm__t.is-on .vw-qm__p, .vw-qz__r.is-on .vw-qz__nm, .vw-qz__r.is-on .vw-qz__pr) {
	animation: vw-m5u0 .3s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="Q1"][data-vwd="u"] :is(.vw-qf__nm, .vw-qf__pr, .vw-qy__nm, .vw-qy__pr, .vw-qk.is-on .vw-qk__n, .vw-qk.is-on .vw-qk__p, .vw-qm__t.is-on .vw-qm__n, .vw-qm__t.is-on .vw-qm__p, .vw-qz__r.is-on .vw-qz__nm, .vw-qz__r.is-on .vw-qz__pr) {
	animation: vw-m5u1 .3s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="Q0"][data-vwd="d"] :is(.vw-qf__nm, .vw-qf__pr, .vw-qy__nm, .vw-qy__pr, .vw-qk.is-on .vw-qk__n, .vw-qk.is-on .vw-qk__p, .vw-qm__t.is-on .vw-qm__n, .vw-qm__t.is-on .vw-qm__p, .vw-qz__r.is-on .vw-qz__nm, .vw-qz__r.is-on .vw-qz__pr) {
	animation: vw-m5d0 .3s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="Q1"][data-vwd="d"] :is(.vw-qf__nm, .vw-qf__pr, .vw-qy__nm, .vw-qy__pr, .vw-qk.is-on .vw-qk__n, .vw-qk.is-on .vw-qk__p, .vw-qm__t.is-on .vw-qm__n, .vw-qm__t.is-on .vw-qm__p, .vw-qz__r.is-on .vw-qz__nm, .vw-qz__r.is-on .vw-qz__pr) {
	animation: vw-m5d1 .3s cubic-bezier(.2, 0, 0, 1) both;
}
/* cena 40 ms pozniej (ta sama specyficznosc co reguly wyzej, pozniej w pliku) */
form#product_widget.vw-p-mv5:is([data-vwm~="Q0"], [data-vwm~="Q1"])[data-vwd] :is(.vw-qf__pr, .vw-qy__pr, .vw-qk.is-on .vw-qk__p, .vw-qm__t.is-on .vw-qm__p, .vw-qz__r.is-on .vw-qz__pr) {
	animation-delay: .04s;
}

/* --- PP-3 "rozlanie": kolo --vw-tint od punktu dotyku na linii (420 px, 460 ms) i od rogu z kropka w wybranym progu (420 ms) --- */
form#product_widget.vw-p-mv5:is([data-vwm~="U0"], [data-vwm~="U1"]) .vw-up__ok,
form#product_widget.vw-p-mv5:is([data-vwm~="U0"], [data-vwm~="U1"]) :is(.vw-qf, .vw-qy__v, .vw-qk.is-on, .vw-qm__t.is-on, .vw-qz__r.is-on) {
	position: relative;
	isolation: isolate;
}
form#product_widget.vw-p-mv5:is([data-vwm~="U0"], [data-vwm~="U1"]) .vw-up__ok::before,
form#product_widget.vw-p-mv5:is([data-vwm~="U0"], [data-vwm~="U1"]) :is(.vw-qf, .vw-qy__v, .vw-qk.is-on, .vw-qm__t.is-on, .vw-qz__r.is-on)::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: inherit;
	background: var(--vw-tint);
	pointer-events: none;
}
form#product_widget.vw-p-mv5[data-vwm~="U0"] .vw-up__ok::before {
	animation: vw-m5p0 .46s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="U1"] .vw-up__ok::before {
	animation: vw-m5p1 .46s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="U0"] :is(.vw-qf, .vw-qy__v, .vw-qk.is-on, .vw-qm__t.is-on, .vw-qz__r.is-on)::before {
	animation: vw-m5k0 .42s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5[data-vwm~="U1"] :is(.vw-qf, .vw-qy__v, .vw-qk.is-on, .vw-qm__t.is-on, .vw-qz__r.is-on)::before {
	animation: vw-m5k1 .42s cubic-bezier(.2, 0, 0, 1) both;
}

/* --- B5 przyciski "Przejdz dalej" (.vw-cta, karta i pasek telefonu), "Dodaj do koszyka" (.vw-add2, karta i pasek telefonu),
   pasek desktop (.vw-dbar__cta): ::before = kolo bieli (wcisniecie, ladowanie, blad), ::after = drugie kolo (sukces) --- */
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-cta, .vw-2 .vw-add2, .vw-dbar .vw-dbar__cta) {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-cta, .vw-2 .vw-add2, .vw-dbar .vw-dbar__cta)::before,
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-cta, .vw-2 .vw-add2, .vw-dbar .vw-dbar__cta)::after {
	content: "";
	position: absolute;
	left: var(--vw-rx, 50%);
	top: var(--vw-ry, 50%);
	z-index: -1;
	width: 220%;
	aspect-ratio: 1;
	border-radius: 50%;
	background: #FFFFFF;
	opacity: 0;
	transform: translate(-50%, -50%) scale(0);
	pointer-events: none;
}
/* Wcisniecie: kolo bieli .18 od punktu do scale .35 (300 ms) + scale(.98) */
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-cta:not(:disabled, [aria-disabled="true"]):not(.is-go):active::before,
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-2 .vw-add2:not(.is-off):not(.is-ok):not(.is-busy):active::before,
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-dbar .vw-dbar__cta:not(.is-done):not(.is-busy):active::before {
	opacity: .18;
	transform: translate(-50%, -50%) scale(.35);
	transition: transform .3s cubic-bezier(.2, 0, 0, 1), opacity .1s;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-2 .vw-add2:not(.is-off):not(.is-ok):active,
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-dbar .vw-dbar__cta:not(.is-done):active {
	transform: scale(.98);
}
/* "Przejdz dalej" (goStep2, krok 2 po 300 ms): kolo dorasta do calosci (.14), drugie kolo bieli .22 rozlewa sie 300 ms,
   strzalka gasnie scale .6 (160 ms), spinner od 120 ms scale .6 -> 1 */
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-cta.is-go::before,
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-2 .vw-add2, .vw-dbar .vw-dbar__cta).is-busy::before {
	opacity: .14;
	transform: translate(-50%, -50%) scale(1);
	animation: vw-m5rip .45s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-cta.is-go::after {
	opacity: .22;
	transform: translate(-50%, -50%) scale(1);
	animation: vw-m5sp .3s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-cta.is-go .vw-cta__ar,
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-add2__cart, .vw-dbar__ic).is-go {
	animation: vw-m5fo .16s cubic-bezier(.4, 0, 1, 1) both;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-cta.is-go .vw-cta__sp {
	animation: vw-m5fi .3s both;
}
/* Ladowanie "Dodaj": spinner wchodzi scale .6 -> 1 (180 ms; wlasciwosc scale - transform zajmuje obrot) */
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-add2, .vw-dbar__t.is-on) .vw-spin {
	animation: vw-spin .7s linear infinite, vw-m5sc .18s cubic-bezier(.2, 0, 0, 1) both;
}
/* Sukces "Dodaj": zielone kolo od punktu dotyku 380 ms, check i "Dodano" od 90 ms, tlo #E6F4EA skokowo po 380 ms */
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-2 .vw-add2.is-ok, .vw-dbar .vw-dbar__cta.is-done) {
	animation: vw-m5bg .38s step-end both;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-2 .vw-add2.is-ok, .vw-dbar .vw-dbar__cta.is-done)::after {
	background: #E6F4EA;
	opacity: 1;
	transform: translate(-50%, -50%) scale(1);
	animation: vw-m5sp .38s cubic-bezier(.2, 0, 0, 1) both;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta) :is(.vw-add2.is-ok :is(.vw-add2__ok, .vw-add2__tx), .vw-dbar__cta.is-done .vw-dbar__t.is-on) {
	animation: vw-m5ok .34s both;
}
/* Blad: wypelnienie cofa sie do punktu (scale 1 -> .2 + zanik, 300 ms) (krok 1: .vw-buy.has-err z ctaError; krok 2: token E) */
form#product_widget.vw-p-mv5:not(.vw-no-cta) .vw-buy.has-err .vw-cta::before,
form#product_widget.vw-p-mv5:not(.vw-no-cta)[data-vwm~="E0"] :is(.vw-2 .vw-add2, .vw-dbar .vw-dbar__cta)::before {
	animation: vw-m5bk0 .3s cubic-bezier(.4, 0, 1, 1) backwards;
}
form#product_widget.vw-p-mv5:not(.vw-no-cta)[data-vwm~="E1"] :is(.vw-2 .vw-add2, .vw-dbar .vw-dbar__cta)::before {
	animation: vw-m5bk1 .3s cubic-bezier(.4, 0, 1, 1) backwards;
}

@keyframes vw-m5l0 { 0% { clip-path: circle(0 at var(--vw-rx, 50%) var(--vw-ry, 50%)); opacity: 1; } 55% { clip-path: circle(var(--vw-rr, 120%) at var(--vw-rx, 50%) var(--vw-ry, 50%)); opacity: 1; } 100% { clip-path: circle(var(--vw-rr, 120%) at var(--vw-rx, 50%) var(--vw-ry, 50%)); opacity: 0; } }
@keyframes vw-m5l1 { 0% { clip-path: circle(0 at var(--vw-rx, 50%) var(--vw-ry, 50%)); opacity: 1; } 55% { clip-path: circle(var(--vw-rr, 120%) at var(--vw-rx, 50%) var(--vw-ry, 50%)); opacity: 1; } 100% { clip-path: circle(var(--vw-rr, 120%) at var(--vw-rx, 50%) var(--vw-ry, 50%)); opacity: 0; } }
@keyframes vw-m5j0 { from { clip-path: circle(0 at var(--vw-rx, 50%) var(--vw-ry, 50%)); } to { clip-path: circle(var(--vw-rr, 150%) at var(--vw-rx, 50%) var(--vw-ry, 50%)); } }
@keyframes vw-m5j1 { from { clip-path: circle(0 at var(--vw-rx, 50%) var(--vw-ry, 50%)); } to { clip-path: circle(var(--vw-rr, 150%) at var(--vw-rx, 50%) var(--vw-ry, 50%)); } }
@keyframes vw-m5u0 { from { opacity: .3; transform: translateY(100%); clip-path: inset(0 0 100% 0); } to { opacity: 1; transform: none; clip-path: inset(0); } }
@keyframes vw-m5u1 { from { opacity: .3; transform: translateY(100%); clip-path: inset(0 0 100% 0); } to { opacity: 1; transform: none; clip-path: inset(0); } }
@keyframes vw-m5d0 { from { opacity: .3; transform: translateY(-100%); clip-path: inset(100% 0 0 0); } to { opacity: 1; transform: none; clip-path: inset(0); } }
@keyframes vw-m5d1 { from { opacity: .3; transform: translateY(-100%); clip-path: inset(100% 0 0 0); } to { opacity: 1; transform: none; clip-path: inset(0); } }
@keyframes vw-m5p0 { 0% { clip-path: circle(0 at var(--vw-rx, 50%) 50%); opacity: 1; } 65% { clip-path: circle(210px at var(--vw-rx, 50%) 50%); opacity: .85; } 100% { clip-path: circle(210px at var(--vw-rx, 50%) 50%); opacity: 0; } }
@keyframes vw-m5p1 { 0% { clip-path: circle(0 at var(--vw-rx, 50%) 50%); opacity: 1; } 65% { clip-path: circle(210px at var(--vw-rx, 50%) 50%); opacity: .85; } 100% { clip-path: circle(210px at var(--vw-rx, 50%) 50%); opacity: 0; } }
@keyframes vw-m5k0 { 0% { clip-path: circle(0 at calc(100% - 6px) 6px); opacity: .95; } 70% { clip-path: circle(66px at calc(100% - 6px) 6px); opacity: .8; } 100% { clip-path: circle(66px at calc(100% - 6px) 6px); opacity: 0; } }
@keyframes vw-m5k1 { 0% { clip-path: circle(0 at calc(100% - 6px) 6px); opacity: .95; } 70% { clip-path: circle(66px at calc(100% - 6px) 6px); opacity: .8; } 100% { clip-path: circle(66px at calc(100% - 6px) 6px); opacity: 0; } }
@keyframes vw-m5rip { from { opacity: .24; transform: translate(-50%, -50%) scale(.1); } to { opacity: .14; transform: translate(-50%, -50%) scale(1); } }
@keyframes vw-m5sp { from { transform: translate(-50%, -50%) scale(0); } to { transform: translate(-50%, -50%) scale(1); } }
@keyframes vw-m5fo { from { opacity: 1; transform: none; } to { opacity: 0; transform: scale(.6); } }
@keyframes vw-m5fi { 0%, 40% { opacity: 0; transform: scale(.6); animation-timing-function: cubic-bezier(.2, 0, 0, 1); } 100% { opacity: 1; transform: none; } }
@keyframes vw-m5sc { from { opacity: 0; scale: .6; } to { opacity: 1; scale: 1; } }
@keyframes vw-m5bg { from { background-color: var(--vw-brand); } to { background-color: #E6F4EA; } }
@keyframes vw-m5ok { 0%, 26% { opacity: 0; animation-timing-function: linear; } 100% { opacity: 1; } }
@keyframes vw-m5bk0 { from { opacity: .14; transform: translate(-50%, -50%) scale(1); } to { opacity: 0; transform: translate(-50%, -50%) scale(.2); } }
@keyframes vw-m5bk1 { from { opacity: .14; transform: translate(-50%, -50%) scale(1); } to { opacity: 0; transform: translate(-50%, -50%) scale(.2); } }

/* Ruch ograniczony: stan koncowy od razu (look.js nie ustawia tokenu); ladowanie = statyczne "..." (presety-spec, B wspolne) */
@media (prefers-reduced-motion: reduce) {
	form#product_widget.vw-p-mv5 :is(.vw-loc__tile, .vw-lr, .vw-lo, .vw-qt__tile, .vw-qf, .vw-qy__v, .vw-qk, .vw-qm__t, .vw-qz__r, .vw-up__ok, .vw-cta, .vw-add2, .vw-dbar__cta)::before,
	form#product_widget.vw-p-mv5 :is(.vw-cta, .vw-add2, .vw-dbar__cta)::after,
	form#product_widget.vw-p-mv5 :is(.vw-qf__nm, .vw-qf__pr, .vw-qy__nm, .vw-qy__pr, .vw-qk__n, .vw-qk__p, .vw-qm__n, .vw-qm__p, .vw-qz__nm, .vw-qz__pr),
	form#product_widget.vw-p-mv5 :is(.vw-cta, .vw-add2, .vw-dbar__cta, .vw-cta__ar, .vw-cta__sp, .vw-add2__cart, .vw-add2__ok, .vw-add2__tx, .vw-dbar__ic, .vw-dbar__t) {
		animation: none !important;
		transition: none !important;
	}
	form#product_widget.vw-p-mv5 :is(.vw-cta, .vw-add2, .vw-dbar__cta)::before {
		opacity: 0 !important;
	}
	form#product_widget.vw-p-mv5 .vw-cta:active,
	form#product_widget.vw-p-mv5 .vw-2 .vw-add2:active,
	form#product_widget.vw-p-mv5 .vw-dbar .vw-dbar__cta:active {
		transform: none;
	}
	form#product_widget.vw-p-mv5 .vw-cta.is-go .vw-cta__ar,
	form#product_widget.vw-p-mv5 .vw-cta.is-go .vw-cta__sp,
	form#product_widget.vw-p-mv5 .vw-add2 .vw-spin {
		display: none;
	}
	form#product_widget.vw-p-mv5 .vw-cta.is-go .vw-cta__ic::after,
	form#product_widget.vw-p-mv5 .vw-add2.is-busy .vw-add2__ico::after {
		content: "\2026";
		font-size: 16px;
		line-height: 16px;
		text-align: center;
	}
	form#product_widget.vw-p-mv5 .vw-cta.is-go .vw-cta__ic::after {
		position: absolute;
		inset: 0;
	}
}
