{
  "html": "<footer class='footer'><div class='footer__particles' aria-hidden='true'><span class='footer__particle footer__particle--1'></span><span class='footer__particle footer__particle--2'></span><span class='footer__particle footer__particle--3'></span><span class='footer__particle footer__particle--4'></span><span class='footer__particle footer__particle--5'></span><span class='footer__particle footer__particle--6'></span></div><div class='footer__inner'><p class='footer__copy'>© 2026 Студия танцев «Ритм»<span class='footer__dots' aria-hidden='true'><span class='footer__dot footer__dot--1'></span><span class='footer__dot footer__dot--2'></span><span class='footer__dot footer__dot--3'></span></span></p><nav class='footer__nav'><a href='/policy' class='footer__link'>Политика</a><a href='/rules' class='footer__link'>Правила</a></nav></div></footer>",
  "css": ".footer { position: relative; overflow: hidden; } .footer .footer__particles { position: absolute; inset: 0; pointer-events: none; z-index: 0; } .footer .footer__particle { position: absolute; width: 6px; height: 6px; border-radius: 50%; background: #8b7cf0; opacity: 0.55; animation: footer-float-fast 3.2s ease-out infinite; } .footer .footer__particle--1 { left: 8%; bottom: 12%; animation-delay: 0s; } .footer .footer__particle--2 { left: 22%; bottom: 30%; width: 4px; height: 4px; background: #b3a8f5; animation: footer-float-spring 3.6s cubic-bezier(0.34, 1.56, 0.64, 1) infinite; animation-delay: 0.3s; } .footer .footer__particle--3 { left: 41%; bottom: 8%; animation-delay: 0.6s; } .footer .footer__particle--4 { left: 58%; bottom: 26%; width: 5px; height: 5px; background: #a99cf2; animation: footer-float-spring 4s cubic-bezier(0.34, 1.56, 0.64, 1) infinite; animation-delay: 0.9s; } .footer .footer__particle--5 { left: 74%; bottom: 14%; animation-delay: 1.2s; } .footer .footer__particle--6 { left: 90%; bottom: 32%; width: 4px; height: 4px; background: #c4bbf7; animation: footer-float-spring 3.4s cubic-bezier(0.34, 1.56, 0.64, 1) infinite; animation-delay: 1.5s; } .footer .footer__inner { position: relative; z-index: 1; } .footer .footer__copy { display: inline-flex; align-items: center; gap: 10px; } .footer .footer__dots { display: inline-flex; align-items: center; gap: 5px; } .footer .footer__dot { width: 6px; height: 6px; border-radius: 50%; background: #8b7cf0; animation: footer-pulse-dot 1.8s ease-in-out infinite; } .footer .footer__dot--2 { animation-delay: 0.25s; background: #a99cf2; } .footer .footer__dot--3 { animation-delay: 0.5s; background: #c4bbf7; } .footer .footer__link { position: relative; } .footer .footer__link::after { content: ''; position: absolute; left: 0; right: 0; bottom: -4px; height: 2px; border-radius: 2px; background: linear-gradient(90deg, #8b7cf0, #b3a8f5); transform: scaleX(0); transform-origin: left center; transition: transform 0.25s ease; animation: footer-wave-line 2.4s ease-in-out infinite; animation-delay: 0.2s; } .footer .footer__link:hover::after { transform: scaleX(1); animation-play-state: paused; } @keyframes footer-float-fast { 0% { transform: translateY(0) translateX(0); opacity: 0.55; } 50% { transform: translateY(-14px) translateX(4px); opacity: 0.9; } 100% { transform: translateY(-28px) translateX(-2px); opacity: 0; } } @keyframes footer-float-spring { 0% { transform: translateY(0) translateX(0) scale(1); opacity: 0.5; } 40% { transform: translateY(-10px) translateX(-5px) scale(1.25); opacity: 0.95; } 70% { transform: translateY(-20px) translateX(3px) scale(0.9); opacity: 0.7; } 100% { transform: translateY(-30px) translateX(0) scale(1); opacity: 0; } } @keyframes footer-pulse-dot { 0%, 100% { transform: scale(1); opacity: 0.6; } 50% { transform: scale(1.5); opacity: 1; } } @keyframes footer-wave-line { 0%, 100% { transform: scaleX(0.2); opacity: 0.4; } 50% { transform: scaleX(1); opacity: 1; } }"
}