/* Exported Figma keyframes; preview loops intentionally play once for reading. */
.figma-motion-0.motion-entered{animation: figma-motion-0_scale 2.3s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-0_scale { 0% { animation-timing-function: ease-out; scale: 1.015 1.015; } 95.652% { scale: 1 1; } 100% { scale: 1 1; } }
.figma-motion-1.motion-entered{animation: figma-motion-1_opacity 2.3s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-1_opacity { 0% { opacity: 0; } 0.87% { animation-timing-function: ease-out; opacity: 0; } 21.739% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-2.motion-entered{animation: figma-motion-2_opacity 2.3s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-2_opacity { 0% { opacity: 0; } 3.478% { animation-timing-function: ease-out; opacity: 0; } 25.217% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-3.motion-entered{animation: figma-motion-3_opacity 2.3s linear, figma-motion-3_translate 2.3s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-3_opacity { 0% { opacity: 0; } 2.609% { animation-timing-function: ease-out; opacity: 0; } 32.174% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-3_translate { 0% { translate: 0px 16px; } 5.217% { animation-timing-function: ease-out; translate: 0px 16px; } 39.13% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-4.motion-entered{animation: figma-motion-4_opacity 2.3s linear, figma-motion-4_translate 2.3s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-4_opacity { 0% { opacity: 0; } 12.174% { animation-timing-function: ease-out; opacity: 0; } 38.261% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-4_translate { 0% { translate: 0px 10px; } 14.783% { animation-timing-function: ease-out; translate: 0px 10px; } 45.217% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-5.motion-entered{animation: figma-motion-5_opacity 2.3s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-5_opacity { 0% { opacity: 0; } 8.696% { animation-timing-function: ease-out; opacity: 0; } 31.304% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-6.motion-entered{animation: figma-motion-6_opacity 1.6s linear, figma-motion-6_translate 1.6s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-6_opacity { 0% { animation-timing-function: ease-out; opacity: 0; } 38.75% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-6_translate { 0% { translate: 0px 14px; } 3.125% { animation-timing-function: ease-out; translate: 0px 14px; } 48.125% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-7.motion-entered{animation: figma-motion-7_opacity 1.6s linear, figma-motion-7_translate 1.6s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-7_opacity { 0% { opacity: 0; } 11.25% { animation-timing-function: ease-out; opacity: 0; } 47.5% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-7_translate { 0% { translate: 0px 10px; } 15% { animation-timing-function: ease-out; translate: 0px 10px; } 57.5% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-8.motion-entered{animation: figma-motion-8_opacity 1.6s linear, figma-motion-8_translate 1.6s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-8_opacity { 0% { opacity: 0; } 22.5% { animation-timing-function: ease-out; opacity: 0; } 56.25% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-8_translate { 0% { translate: 0px 8px; } 26.25% { animation-timing-function: ease-out; translate: 0px 8px; } 65% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-9.motion-entered{animation: figma-motion-9_opacity 1.6s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-9_opacity { 0% { opacity: 0; } 10% { animation-timing-function: ease-out; opacity: 0; } 43.75% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-10.motion-entered{animation: figma-motion-10_opacity 1.6s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-10_opacity { 0% { opacity: 0; } 42.5% { animation-timing-function: ease-out; opacity: 0; } 66.25% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-11.motion-entered{animation: figma-motion-11_opacity 1.6s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-11_opacity { 0% { opacity: 0; } 38.75% { animation-timing-function: ease-out; opacity: 0; } 65% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-12.motion-entered{animation: figma-motion-12_opacity 2s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-12_opacity { 0% { opacity: 0; } 1% { animation-timing-function: ease-out; opacity: 0; } 25% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-13.motion-entered{animation: figma-motion-13_opacity 2s linear, figma-motion-13_translate 2s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-13_opacity { 0% { opacity: 0; } 5% { animation-timing-function: ease-out; opacity: 0; } 31% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-13_translate { 0% { translate: 0px 8px; } 7% { animation-timing-function: ease-out; translate: 0px 8px; } 38% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-14.motion-entered{animation: figma-motion-14_opacity 2s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-14_opacity { 0% { opacity: 0; } 11% { animation-timing-function: ease-out; opacity: 0; } 35% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-15.motion-entered{animation: figma-motion-15_opacity 2s linear, figma-motion-15_translate 2s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-15_opacity { 0% { opacity: 0; } 12% { animation-timing-function: ease-out; opacity: 0; } 40% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-15_translate { 0% { translate: 0px 8px; } 15% { animation-timing-function: ease-out; translate: 0px 8px; } 48% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-16.motion-entered{animation: figma-motion-16_scale 2s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-16_scale { 0% { animation-timing-function: ease-out; scale: 1.012 1.012; } 100% { scale: 1 1; } }
.figma-motion-17.motion-entered{animation: figma-motion-17_opacity 1.9s linear, figma-motion-17_translate 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-17_opacity { 0% { animation-timing-function: ease-out; opacity: 0; } 29.474% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-17_translate { 0% { translate: 0px 12px; } 2.105% { animation-timing-function: ease-out; translate: 0px 12px; } 37.895% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-18.motion-entered{animation: figma-motion-18_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-18_opacity { 0% { opacity: 0; } 8.421% { animation-timing-function: ease-out; opacity: 0; } 34.737% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-19.motion-entered{animation: figma-motion-19_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-19_opacity { 0% { opacity: 0; } 14.737% { animation-timing-function: ease-out; opacity: 0; } 43.158% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-20.motion-entered{animation: figma-motion-20_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-20_opacity { 0% { opacity: 0; } 32.632% { animation-timing-function: ease-out; opacity: 0; } 60% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-21.motion-entered{animation: figma-motion-21_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-21_opacity { 0% { opacity: 0; } 37.895% { animation-timing-function: ease-out; opacity: 0; } 63.158% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-22.motion-entered{animation: figma-motion-22_opacity 1.9s linear, figma-motion-22_translate 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-22_opacity { 0% { opacity: 0; } 37.895% { animation-timing-function: ease-out; opacity: 0; } 71.579% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-22_translate { 0% { translate: 0px 20px; } 42.105% { animation-timing-function: ease-out; translate: 0px 20px; } 83.158% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-23.motion-entered{animation: figma-motion-23_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-23_opacity { 0% { opacity: 0; } 22.105% { animation-timing-function: ease-out; opacity: 0; } 44.211% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-24.motion-entered{animation: figma-motion-24_scale 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-24_scale { 0% { animation-timing-function: ease-out; scale: 1.013 1.013; } 94.737% { scale: 1 1; } 100% { scale: 1 1; } }
.figma-motion-25.motion-entered{animation: figma-motion-25_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-25_opacity { 0% { opacity: 0; } 17.895% { animation-timing-function: ease-out; opacity: 0; } 43.158% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-26.motion-entered{animation: figma-motion-26_opacity 1.9s linear, figma-motion-26_translate 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-26_opacity { 0% { opacity: 0; } 6.316% { animation-timing-function: ease-out; opacity: 0; } 38.947% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-26_translate { 0% { translate: 0px 12px; } 9.474% { animation-timing-function: ease-out; translate: 0px 12px; } 47.368% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-27.motion-entered{animation: figma-motion-27_opacity 1.9s linear, figma-motion-27_translate 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-27_opacity { 0% { opacity: 0; } 3.158% { animation-timing-function: ease-out; opacity: 0; } 36.842% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-27_translate { 0% { translate: 0px 14px; } 6.316% { animation-timing-function: ease-out; translate: 0px 14px; } 46.316% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-28.motion-entered{animation: figma-motion-28_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-28_opacity { 0% { opacity: 0; } 15.789% { animation-timing-function: ease-out; opacity: 0; } 44.211% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-29.motion-entered{animation: figma-motion-29_opacity 1.9s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-29_opacity { 0% { opacity: 0; } 23.158% { animation-timing-function: ease-out; opacity: 0; } 48.421% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-30.motion-entered{animation: figma-motion-30_opacity 1.8s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-30_opacity { 0% { opacity: 0; } 15.556% { animation-timing-function: ease-out; opacity: 0; } 45.556% { opacity: 1; } 100% { opacity: 1; } }
.figma-motion-31.motion-entered{animation: figma-motion-31_opacity 1.8s linear, figma-motion-31_translate 1.8s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-31_opacity { 0% { opacity: 0; } 1.111% { animation-timing-function: ease-out; opacity: 0; } 37.778% { opacity: 1; } 100% { opacity: 1; } } @keyframes figma-motion-31_translate { 0% { translate: 0px 14px; } 4.444% { animation-timing-function: ease-out; translate: 0px 14px; } 47.778% { translate: 0px 0px; } 100% { translate: 0px 0px; } }
.figma-motion-32.motion-entered{animation: figma-motion-32_opacity 1.8s linear; animation-iteration-count: 1; animation-fill-mode:both;}
@keyframes figma-motion-32_opacity { 0% { opacity: 0; } 23.333% { animation-timing-function: ease-out; opacity: 0; } 50% { opacity: 1; } 100% { opacity: 1; } }
@media(prefers-reduced-motion:reduce){[data-figma-motion]{animation:none!important}}
.project-link{min-height:32px}.project-link:hover,.project-link:focus-visible{text-decoration:underline;text-underline-offset:6px;translate:2px 0}
