{
  "html": "<footer class='footer'><div class='footer__inner'><p class='footer__copy'>© 2026 Алексей Смирнов</p><nav class='footer__nav'><a href='/policy' class='footer__link fx-footer-link'><span class='fx-footer-link-text'>Политика</span></a><a href='/rules' class='footer__link fx-footer-link'><span class='fx-footer-link-text'>Правила</span></a></nav></div><div class='fx-footer-glow' aria-hidden='true'></div></footer>",
  "css": ".footer { position: relative; overflow: hidden; } .footer .fx-footer-glow { position: absolute; inset: -40% -10% auto -10%; height: 220px; background: radial-gradient(ellipse at center, rgba(56, 189, 248, 0.35), rgba(34, 211, 238, 0.12) 45%, transparent 70%); filter: blur(30px); pointer-events: none; animation: fx-footer-pulse 6s ease-in-out infinite; } .footer .footer__copy { transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), filter 0.6s ease, color 0.4s ease; } .footer:hover .footer__copy { transform: scale(1.04); color: #0f2a5c; } .footer .footer__link { position: relative; display: inline-block; padding: 4px 2px; transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1), filter 0.6s ease, color 0.3s ease; } .footer .footer__link .fx-footer-link-text { display: inline-block; transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1); } .footer .footer__link::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: linear-gradient(90deg, #38bdf8, #22d3ee, #0284c7); transform: scaleX(0); transform-origin: left center; transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1); border-radius: 2px; } .footer .footer__link:hover { filter: grayscale(1); transform: scale(1.08); } .footer .footer__link:hover::after { transform: scaleX(1); } .footer .footer__link:hover .fx-footer-link-text { transform: rotate(-8deg); } .footer .footer__nav { transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); } .footer:hover .footer__nav { transform: scale(1.02); } .footer .footer__inner { position: relative; z-index: 1; clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%); transition: clip-path 0.6s cubic-bezier(0.22, 1, 0.36, 1); } .footer:hover .footer__inner { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 0); } @keyframes fx-footer-pulse { 0%, 100% { opacity: 0.55; transform: translateY(0) scale(1); } 50% { opacity: 0.95; transform: translateY(6px) scale(1.05); } }"
}