icons/common/
icon_registry_css.rs1pub static AARROWDOWN_CSS: &str = r#"/* Letter "A" animation - targeting specific paths */
5[data-name="AArrowDownAnimate"]:hover path[d="M3.5 13h6"],
6[data-name="AArrowDownAnimate"]:hover path[d="m2 16 4.5-9 4.5 9"] {
7 animation: letterAnimate 0.3s ease-in-out;
8}
9
10/* Arrow animation - targeting specific paths with delay */
11[data-name="AArrowDownAnimate"]:hover path[d="M18 7v9"],
12[data-name="AArrowDownAnimate"]:hover path[d="m14 12 4 4 4-4"] {
13 animation: arrowAnimate 0.3s ease-in-out 0.2s both;
14}
15
16@keyframes letterAnimate {
17 0% { opacity: 0; transform: scale(0.8); }
18 100% { opacity: 1; transform: scale(1); }
19}
20
21@keyframes arrowAnimate {
22 0% { opacity: 0; transform: translateY(-10px); }
23 100% { opacity: 1; transform: translateY(0); }
24}"#;
25
26pub static AIRVENT_CSS: &str = r#"/* Air vent wind animation - first wind path (immediate) */
28[data-name="AirVentAnimate"]:hover path[d="M18 17.5a2.5 2.5 0 1 1-4 2.03V12"] {
29 animation: windAnimate1 0.5s ease-in-out;
30}
31
32/* Air vent wind animation - second wind path (delayed) */
33[data-name="AirVentAnimate"]:hover path[d="M6.6 15.572A2 2 0 1 0 10 17v-5"] {
34 animation: windAnimate2 0.5s ease-in-out 0.2s both;
35}
36
37@keyframes windAnimate1 {
38 0% { opacity: 0; transform: scale(0.8); }
39 100% { opacity: 1; transform: scale(1); }
40}
41
42@keyframes windAnimate2 {
43 0% { opacity: 0; transform: scale(0.8); }
44 100% { opacity: 1; transform: scale(1); }
45}"#;
46
47pub static ALARMCLOCK_CSS: &str = r#"/* Primary alarm clock elements - clock face circle, hands, and bottom legs */
49[data-name="AlarmClockAnimate"]:hover circle[cx="12"],
50[data-name="AlarmClockAnimate"]:hover path[d="M12 9v4l2 2"],
51[data-name="AlarmClockAnimate"]:hover path[d="M6.38 18.7 4 21"],
52[data-name="AlarmClockAnimate"]:hover path[d="M17.64 18.67 20 21"] {
53 animation: primaryAlarmShake 0.3s linear infinite;
54}
55
56/* Secondary alarm clock elements - top alarm bells with more intense movement */
57[data-name="AlarmClockAnimate"]:hover path[d="M5 3 2 6"],
58[data-name="AlarmClockAnimate"]:hover path[d="m22 6-3-3"] {
59 animation: secondaryAlarmShake 0.3s linear infinite;
60}
61
62@keyframes primaryAlarmShake {
63 0% { transform: translateX(-1px) translateY(-1.5px); }
64 16.67% { transform: translateX(1px) translateY(-1.5px); }
65 33.33% { transform: translateX(-1px) translateY(-1.5px); }
66 50% { transform: translateX(1px) translateY(-1.5px); }
67 66.67% { transform: translateX(-1px) translateY(-1.5px); }
68 83.33% { transform: translateX(0) translateY(-1.5px); }
69 100% { transform: translateX(-1px) translateY(-1.5px); }
70}
71
72@keyframes secondaryAlarmShake {
73 0% { transform: translateX(-2px) translateY(-2.5px); }
74 16.67% { transform: translateX(2px) translateY(-2.5px); }
75 33.33% { transform: translateX(-2px) translateY(-2.5px); }
76 50% { transform: translateX(2px) translateY(-2.5px); }
77 66.67% { transform: translateX(-2px) translateY(-2.5px); }
78 83.33% { transform: translateX(0) translateY(-2.5px); }
79 100% { transform: translateX(-2px) translateY(-2.5px); }
80}"#;
81
82pub static ALIGNCENTER_CSS: &str = r#"/* Align center animation - only the middle line wiggles to simulate alignment adjustment */
84[data-name="AlignCenterAnimate"]:hover path[d="M17 12H7"] {
85 animation: alignCenterWiggle 1s linear;
86}
87
88@keyframes alignCenterWiggle {
89 0% { transform: translateX(0); }
90 20% { transform: translateX(3px); }
91 40% { transform: translateX(-3px); }
92 60% { transform: translateX(2px); }
93 80% { transform: translateX(-2px); }
94 100% { transform: translateX(0); }
95}"#;
96
97pub static ANGRY_CSS: &str = r#"[data-name="AngryAnimate"]:hover {
99 animation: wiggleZoom 0.8s ease-in-out forwards;
100 transform-origin: center;
101}
102
103@keyframes wiggleZoom {
104 0% { transform: scale(1) rotate(0deg); }
105 15% { transform: scale(1.1) rotate(-8deg); }
106 30% { transform: scale(1.1) rotate(8deg); }
107 45% { transform: scale(1.1) rotate(-6deg); }
108 60% { transform: scale(1.1) rotate(6deg); }
109 75% { transform: scale(1.1) rotate(-3deg); }
110 90% { transform: scale(1.1) rotate(3deg); }
111 100% { transform: scale(1.1) rotate(0deg); }
112}"#;
113
114pub static ANNOYED_CSS: &str = r#"/* Face animation - scales the entire SVG */
116[data-name="AnnoyedAnimate"] {
117 transition: transform 0.2s ease-out;
118}
119
120[data-name="AnnoyedAnimate"]:hover {
121 transform: scale(1.05);
122}
123
124/* Mouth animation - horizontal scale and slight vertical movement */
125[data-name="AnnoyedAnimate"] path[d="M8 15h8"] {
126 transition: transform 0.2s ease-out;
127}
128
129[data-name="AnnoyedAnimate"]:hover path[d="M8 15h8"] {
130 transform: scaleX(0.8) translateY(1px);
131}
132
133/* Left eyebrow animation - rotation and translation */
134[data-name="AnnoyedAnimate"] path[d="M8 9h2"] {
135 transition: transform 0.25s ease-out;
136 transform-origin: center;
137}
138
139[data-name="AnnoyedAnimate"]:hover path[d="M8 9h2"] {
140 transform: rotate(15deg) translate(-0.5px, -1px);
141}
142
143/* Right eyebrow animation - rotation and translation */
144[data-name="AnnoyedAnimate"] path[d="M14 9h2"] {
145 transition: transform 0.25s ease-out 0.05s;
146 transform-origin: center;
147}
148
149[data-name="AnnoyedAnimate"]:hover path[d="M14 9h2"] {
150 transform: rotate(15deg) translate(0.5px, -1px);
151}"#;
152
153pub static ARCHIVE_CSS: &str = r#"/* Archive lid lifting animation - smooth transition */
155[data-name="ArchiveAnimate"] rect[width="20"][height="5"][x="2"][y="3"][rx="1"] {
156 transition: transform 0.2s ease-out;
157}
158
159[data-name="ArchiveAnimate"]:hover rect[width="20"][height="5"][x="2"][y="3"][rx="1"] {
160 transform: translateY(-1.5px);
161}
162
163/* Archive body opening animation - path morphing with reverse */
164[data-name="ArchiveAnimate"] path[d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"] {
165 animation-duration: 0.2s;
166 animation-timing-function: ease-out;
167 animation-fill-mode: both;
168}
169
170[data-name="ArchiveAnimate"]:hover path[d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"] {
171 animation-name: archiveBodyOpen;
172}
173
174[data-name="ArchiveAnimate"]:not(:hover) path[d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"] {
175 animation-name: archiveBodyClose;
176}
177
178/* Archive handle moving animation - path morphing with reverse */
179[data-name="ArchiveAnimate"] path[d="M10 12h4"] {
180 animation-duration: 0.2s;
181 animation-timing-function: ease-out;
182 animation-fill-mode: both;
183}
184
185[data-name="ArchiveAnimate"]:hover path[d="M10 12h4"] {
186 animation-name: archiveHandleMove;
187}
188
189[data-name="ArchiveAnimate"]:not(:hover) path[d="M10 12h4"] {
190 animation-name: archiveHandleReturn;
191}
192
193
194@keyframes archiveBodyOpen {
195 0% { d: path('M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8'); }
196 100% { d: path('M4 11v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V11'); }
197}
198
199@keyframes archiveBodyClose {
200 0% { d: path('M4 11v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V11'); }
201 100% { d: path('M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8'); }
202}
203
204@keyframes archiveHandleMove {
205 0% { d: path('M10 12h4'); }
206 100% { d: path('M10 15h4'); }
207}
208
209@keyframes archiveHandleReturn {
210 0% { d: path('M10 15h4'); }
211 100% { d: path('M10 12h4'); }
212}"#;
213
214pub static ARROWBIGDOWN_CSS: &str = r#"[data-name="ArrowBigDownAnimate"]:hover path[d="M15 11a1 1 0 0 0 1 1h2.939a1 1 0 0 1 .75 1.811l-6.835 6.836a1.207 1.207 0 0 1-1.707 0L4.31 13.81a1 1 0 0 1 .75-1.811H8a1 1 0 0 0 1-1V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1z"] {
216 animation: arrowBigDownAnimate 0.4s ease-in-out;
217}
218
219@keyframes arrowBigDownAnimate {
220 0% { transform: translateY(0); }
221 50% { transform: translateY(2px); }
222 100% { transform: translateY(0); }
223}"#;
224
225pub static ARROWBIGDOWNDASH_CSS: &str = r#"/* Arrow body animation - targeting main path */
227[data-name="ArrowBigDownDashAnimate"]:hover path[d="M15 11a1 1 0 0 0 1 1h2.939a1 1 0 0 1 .75 1.811l-6.835 6.836a1.207 1.207 0 0 1-1.707 0L4.31 13.81a1 1 0 0 1 .75-1.811H8a1 1 0 0 0 1-1V9a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1z"] {
228 animation: arrowAnimate 0.4s ease-in-out;
229}
230
231/* Dash animation - targeting dash path */
232[data-name="ArrowBigDownDashAnimate"]:hover path[d="M9 4h6"] {
233 animation: dashAnimate 0.4s ease-in-out;
234}
235
236@keyframes arrowAnimate {
237 0% { transform: translateY(0); }
238 50% { transform: translateY(3px); }
239 100% { transform: translateY(0); }
240}
241
242@keyframes dashAnimate {
243 0% { transform: translateY(0); }
244 50% { transform: translateY(1px); }
245 100% { transform: translateY(0); }
246}"#;
247
248pub static ARROWBIGLEFT_CSS: &str = r#"[data-name="ArrowBigLeftAnimate"]:hover path[d="M13 9a1 1 0 0 1-1-1V5.061a1 1 0 0 0-1.811-.75l-6.835 6.836a1.207 1.207 0 0 0 0 1.707l6.835 6.835a1 1 0 0 0 1.811-.75V16a1 1 0 0 1 1-1h6a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1z"] {
250 animation: arrowBigLeftAnimate 0.4s ease-in-out;
251}
252
253@keyframes arrowBigLeftAnimate {
254 0% { transform: translateX(0); }
255 50% { transform: translateX(-2px); }
256 100% { transform: translateX(0); }
257}"#;
258
259pub static ARROWBIGLEFTDASH_CSS: &str = r#"/* Arrow body animation - targeting main path */
261[data-name="ArrowBigLeftDashAnimate"]:hover path[d="M13 9a1 1 0 0 1-1-1V5.061a1 1 0 0 0-1.811-.75l-6.835 6.836a1.207 1.207 0 0 0 0 1.707l6.835 6.835a1 1 0 0 0 1.811-.75V16a1 1 0 0 1 1-1h2a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1z"] {
262 animation: arrowAnimate 0.4s ease-in-out;
263}
264
265/* Dash animation - targeting dash path */
266[data-name="ArrowBigLeftDashAnimate"]:hover path[d="M20 9v6"] {
267 animation: dashAnimate 0.4s ease-in-out;
268}
269
270@keyframes arrowAnimate {
271 0% { transform: translateX(0); }
272 50% { transform: translateX(-3px); }
273 100% { transform: translateX(0); }
274}
275
276@keyframes dashAnimate {
277 0% { transform: translateX(0); }
278 50% { transform: translateX(-1px); }
279 100% { transform: translateX(0); }
280}"#;
281
282pub static BLOCKS_CSS: &str = r#"/* Blocks Animation - Animated block moves diagonally up-left and down-right */
284
285/* Initial state - smooth bounce back when not hovered */
286[data-name="BlocksAnimate"] rect[x="14"][y="2"][width="8"][height="8"] {
287 animation: blockRevert 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
288}
289
290/* On hover - move to new position */
291[data-name="BlocksAnimate"]:hover rect[x="14"][y="2"][width="8"][height="8"] {
292 animation: blockMove 0.3s ease-in-out forwards;
293}
294
295@keyframes blockMove {
296 0% {
297 transform: translateX(0) translateY(0);
298 }
299 100% {
300 transform: translateX(-4px) translateY(4px);
301 }
302}
303
304@keyframes blockRevert {
305 0% {
306 transform: translateX(-4px) translateY(4px);
307 }
308 100% {
309 transform: translateX(0) translateY(0);
310 }
311}"#;
312
313pub static CALENDARDAYS_CSS: &str = r#"/* Calendar Days Animation - Sequential opacity pulse for calendar day dots */
315
316/* First row dots with staggered delays */
317[data-name="CalendarDaysAnimate"]:hover path[d="M8 14h.01"] {
318 animation: dotPulse 0.4s ease-in-out 0s;
319}
320
321[data-name="CalendarDaysAnimate"]:hover path[d="M12 14h.01"] {
322 animation: dotPulse 0.4s ease-in-out 0.1s;
323}
324
325[data-name="CalendarDaysAnimate"]:hover path[d="M16 14h.01"] {
326 animation: dotPulse 0.4s ease-in-out 0.2s;
327}
328
329/* Second row dots with continued staggered delays */
330[data-name="CalendarDaysAnimate"]:hover path[d="M8 18h.01"] {
331 animation: dotPulse 0.4s ease-in-out 0.3s;
332}
333
334[data-name="CalendarDaysAnimate"]:hover path[d="M12 18h.01"] {
335 animation: dotPulse 0.4s ease-in-out 0.4s;
336}
337
338[data-name="CalendarDaysAnimate"]:hover path[d="M16 18h.01"] {
339 animation: dotPulse 0.4s ease-in-out 0.5s;
340}
341
342@keyframes dotPulse {
343 0% { opacity: 1; }
344 50% { opacity: 0.3; }
345 100% { opacity: 1; }
346}"#;
347
348pub static COMPASS_CSS: &str = r#"/* Compass Animation - Needle Rotation Effect */
350
351/* Base state with smooth transition for the compass needle */
352[data-name="CompassAnimate"] path[d="m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z"] {
353 transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
354 transform-origin: center;
355}
356
357/* Hover state with 360 degree rotation for the compass needle */
358[data-name="CompassAnimate"]:hover path[d="m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z"] {
359 transform: rotate(360deg);
360}"#;
361
362pub static EXPAND_CSS: &str = r#"/* Expand icon - Corner arrows move outward on hover with spring-like transition */
364
365/* Base state with spring-like transition for smooth reverse animation */
366[data-name="ExpandAnimate"] path[d="m15 15 6 6"],
367[data-name="ExpandAnimate"] path[d="M21 16v5h-5"] {
368 transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
369}
370
371[data-name="ExpandAnimate"] path[d="m15 9 6-6"],
372[data-name="ExpandAnimate"] path[d="M21 8V3h-5"] {
373 transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
374}
375
376[data-name="ExpandAnimate"] path[d="M3 16v5h5"],
377[data-name="ExpandAnimate"] path[d="m3 21 6-6"] {
378 transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
379}
380
381[data-name="ExpandAnimate"] path[d="M3 8V3h5"],
382[data-name="ExpandAnimate"] path[d="M9 9 3 3"] {
383 transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
384}
385
386/* Hover states - each corner moves in its respective direction */
387/* Bottom-right corner moves down and right */
388[data-name="ExpandAnimate"]:hover path[d="m15 15 6 6"],
389[data-name="ExpandAnimate"]:hover path[d="M21 16v5h-5"] {
390 transform: translate(2px, 2px);
391}
392
393/* Top-right corner moves up and right */
394[data-name="ExpandAnimate"]:hover path[d="m15 9 6-6"],
395[data-name="ExpandAnimate"]:hover path[d="M21 8V3h-5"] {
396 transform: translate(2px, -2px);
397}
398
399/* Bottom-left corner moves down and left */
400[data-name="ExpandAnimate"]:hover path[d="M3 16v5h5"],
401[data-name="ExpandAnimate"]:hover path[d="m3 21 6-6"] {
402 transform: translate(-2px, 2px);
403}
404
405/* Top-left corner moves up and left */
406[data-name="ExpandAnimate"]:hover path[d="M3 8V3h5"],
407[data-name="ExpandAnimate"]:hover path[d="M9 9 3 3"] {
408 transform: translate(-2px, -2px);
409}"#;
410
411pub static FRAME_CSS: &str = r#"/* Base state with transition for smooth animations */
413[data-name="FrameAnimate"] line[y1="6"] {
414 transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
415}
416
417[data-name="FrameAnimate"] line[y1="18"] {
418 transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
419}
420
421[data-name="FrameAnimate"] line[x1="6"] {
422 transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
423}
424
425[data-name="FrameAnimate"] line[x1="18"] {
426 transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
427}
428
429/* Hover state transforms */
430[data-name="FrameAnimate"]:hover line[y1="6"] {
431 transform: translateY(-4px);
432}
433
434[data-name="FrameAnimate"]:hover line[y1="18"] {
435 transform: translateY(4px);
436}
437
438[data-name="FrameAnimate"]:hover line[x1="6"] {
439 transform: translateX(-4px);
440}
441
442[data-name="FrameAnimate"]:hover line[x1="18"] {
443 transform: translateX(4px);
444}"#;
445
446pub static HEART_CSS: &str = r#"[data-name="HeartAnimate"]:hover {
448 animation: HeartAnimation 1.2s ease-in-out;
449}
450
451@keyframes HeartAnimation {
452 0% { transform: scale(1); }
453 14% { transform: scale(1.15); }
454 28% { transform: scale(1); }
455 42% { transform: scale(1.08); }
456 56% { transform: scale(1); }
457 100% { transform: scale(1); }
458}"#;
459
460pub static PANELLEFTOPEN_CSS: &str = r#"/* Panel Left Open Animation - Chevron slide animation */
462[data-name="PanelLeftOpenAnimate"]:hover path[d="m14 9 3 3-3 3"] {
463 animation: chevronSlideRight 0.5s ease-in-out;
464}
465
466@keyframes chevronSlideRight {
467 0% { transform: translateX(0); }
468 40% { transform: translateX(1.5px); }
469 100% { transform: translateX(0); }
470}"#;
471
472pub static PLUS_CSS: &str = r#"[data-name="PlusAnimate"] {
474 transition: transform 0.7s cubic-bezier(0.175, 0.885, 0.32, 1.275);
475}
476
477[data-name="PlusAnimate"]:hover {
478 transform: rotate(180deg);
479}"#;
480
481pub static SEARCH_CSS: &str = r#"/* Base state with smooth transition for search movement */
483[data-name="SearchAnimate"] {
484 transition: transform 1s cubic-bezier(0.68, -0.3, 0.32, 1.3);
485 transform-origin: center;
486}
487
488/* Hover state triggers search scanning animation */
489[data-name="SearchAnimate"]:hover {
490 animation: searchScan 1s cubic-bezier(0.68, -0.3, 0.32, 1.3);
491}
492
493@keyframes searchScan {
494 0% { transform: translateX(0) translateY(0); }
495 25% { transform: translateX(0) translateY(-4px); }
496 50% { transform: translateX(-3px) translateY(0); }
497 100% { transform: translateX(0) translateY(0); }
498}"#;
499
500pub static SQUARECHEVRONRIGHT_CSS: &str = r#"/* Chevron bounce animation */
502[data-name="SquareChevronRightAnimate"]:hover path[d="m10 8 4 4-4 4"] {
503 animation: chevronBounce 0.5s ease-in-out;
504}
505
506@keyframes chevronBounce {
507 0% { transform: translateX(0); }
508 40% { transform: translateX(2px); }
509 100% { transform: translateX(0); }
510}"#;
511
512pub static TORNADO_CSS: &str = r#"/* Tornado lines - sequential horizontal sway animation */
514[data-name="TornadoAnimate"]:hover path[d="M21 4H3"] {
515 animation: tornadoSway1 0.6s ease-in-out 0.1s;
516}
517
518[data-name="TornadoAnimate"]:hover path[d="M18 8H6"] {
519 animation: tornadoSway2 0.6s ease-in-out 0.2s;
520}
521
522[data-name="TornadoAnimate"]:hover path[d="M19 12H9"] {
523 animation: tornadoSway3 0.6s ease-in-out 0.3s;
524}
525
526[data-name="TornadoAnimate"]:hover path[d="M16 16h-6"] {
527 animation: tornadoSway4 0.6s ease-in-out 0.4s;
528}
529
530[data-name="TornadoAnimate"]:hover path[d="M11 20H9"] {
531 animation: tornadoSway5 0.6s ease-in-out 0.5s;
532}
533
534@keyframes tornadoSway1 {
535 0% { transform: translateX(0); }
536 50% { transform: translateX(1px); }
537 100% { transform: translateX(0); }
538}
539
540@keyframes tornadoSway2 {
541 0% { transform: translateX(0); }
542 50% { transform: translateX(2px); }
543 100% { transform: translateX(0); }
544}
545
546@keyframes tornadoSway3 {
547 0% { transform: translateX(0); }
548 50% { transform: translateX(3px); }
549 100% { transform: translateX(0); }
550}
551
552@keyframes tornadoSway4 {
553 0% { transform: translateX(0); }
554 50% { transform: translateX(4px); }
555 100% { transform: translateX(0); }
556}
557
558@keyframes tornadoSway5 {
559 0% { transform: translateX(0); }
560 50% { transform: translateX(5px); }
561 100% { transform: translateX(0); }
562}"#;
563
564pub static WIND_CSS: &str = r#"/* Wind animation - path drawing with different delays */
566
567/* Base state - all wind paths visible */
568[data-name="WindAnimate"] path[d*="M12.8 19.6A2 2 0 1 0 14 16H2"],
569[data-name="WindAnimate"] path[d*="M17.5 8a2.5 2.5 0 1 1 2 4H2"],
570[data-name="WindAnimate"] path[d*="M9.8 4.4A2 2 0 1 1 11 8H2"] {
571 stroke-dasharray: 25;
572 stroke-dashoffset: 0;
573 opacity: 1;
574}
575
576/* Animation on hover - path drawing with staggered delays */
577/* Path 2 (custom: 0) - no delay */
578[data-name="WindAnimate"]:hover path[d*="M17.5 8a2.5 2.5 0 1 1 2 4H2"] {
579 animation: windPathDraw 0.5s ease-in-out both;
580}
581
582/* Path 1 (custom: 0.2) - 0.2s delay */
583[data-name="WindAnimate"]:hover path[d*="M12.8 19.6A2 2 0 1 0 14 16H2"] {
584 animation: windPathDraw 0.5s ease-in-out 0.2s both;
585}
586
587/* Path 3 (custom: 0.4) - 0.4s delay */
588[data-name="WindAnimate"]:hover path[d*="M9.8 4.4A2 2 0 1 1 11 8H2"] {
589 animation: windPathDraw 0.5s ease-in-out 0.4s both;
590}
591
592@keyframes windPathDraw {
593 0% {
594 opacity: 0;
595 stroke-dasharray: 25;
596 stroke-dashoffset: 25;
597 }
598 100% {
599 opacity: 1;
600 stroke-dasharray: 25;
601 stroke-dashoffset: 0;
602 }
603}"#;