Загрузка данных
.hero,
.map-popup,
.icon-circle,
.social-nav .dot,
.footer-links a,
.menu-tabs a,
.hero-cta,
.menu-banner .cta {
position: relative;
}
.hero::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(
120deg,
rgba(239, 197, 139, 0.12),
rgba(255, 255, 255, 0.03),
rgba(39, 39, 39, 0.1)
);
background-size: 220% 220%;
pointer-events: none;
z-index: 0;
animation: heroGradientShift 10s linear infinite;
}
.hero > * {
position: relative;
z-index: 1;
}
.footer-links a::after {
content: '';
position: absolute;
left: 0;
bottom: -4px;
width: 0;
height: 1px;
background: #efc58b;
transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.map-popup::before {
content: '';
position: absolute;
left: 14px;
top: 100%;
width: 10px;
height: 10px;
background: rgba(103, 103, 103, 0.58);
transform: translateY(-4px) rotate(45deg);
}
.icon-circle::before {
content: '';
position: absolute;
inset: -2px;
border-radius: 50%;
border: 1px solid rgba(226, 182, 122, 0.25);
pointer-events: none;
animation: iconBorderPulse 2.9s ease-in-out infinite;
}
.social-nav .dot.active::before {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 9px;
height: 9px;
border-radius: 50%;
background: #fff;
transform: translate(-50%, -50%);
animation: activeDotPulse 2.8s cubic-bezier(0.23, 1, 0.32, 1) infinite;
}
.hero-title {
text-shadow:
0 0 5px rgba(226, 182, 122, 0.55),
0 0 16px rgba(226, 182, 122, 0.42),
0 0 28px rgba(226, 182, 122, 0.3);
will-change: text-shadow;
animation: heroTextShadowGlow 4.8s ease-in-out infinite;
}
.split-banner .title {
animation: splitTitleLetterPulse 4.4s ease-in-out infinite;
}
.hero-cta,
.menu-banner .cta,
.menu-close,
.icon-circle,
.icon-circle svg,
.grid-card img,
.footer-links a,
.menu-tabs a,
.social-nav .dot {
transition:
transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
opacity 0.45s cubic-bezier(0.22, 1, 0.36, 1),
color 0.35s ease,
background-color 0.45s ease,
filter 0.45s ease,
box-shadow 0.5s ease;
}
.hero-cta:hover {
transform: translateX(6px);
color: #8f6025;
}
.menu-banner .cta:hover {
transform: translateX(6px);
color: #efc58b;
}
.hero-cta:active,
.menu-banner .cta:active {
transform: translateX(3px) scale(0.98);
opacity: 0.88;
}
.menu-tabs a:hover {
color: #efc58b;
}
.menu-tabs a:focus-visible {
outline: 1px solid #efc58b;
outline-offset: 4px;
}
.footer-links a:visited {
color: #d8d8d8;
}
.footer-links a:hover {
color: #efc58b;
}
.footer-links a:hover::after {
width: 100%;
}
.footer-links a:first-child,
.footer-links a:last-child {
letter-spacing: 0.1em;
}
.menu-columns li:nth-child(odd) {
color: #ffffff;
}
.menu-columns li:nth-child(even) {
color: #d4d4d4;
}
.icons .bag-count {
animation: bagCounterFlash 1.9s steps(2, end) infinite;
}
.icon-circle:hover {
transform: translateY(-2px) scale(1.03);
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.2);
}
.icon-circle:hover svg {
transform: rotate(8deg);
}
.grid-card:hover img {
transform: scale(1.03);
}
.social-nav .dot:not(.active):hover {
transform: scale(1.2);
background: #9a9a9a;
}
.menu-close:hover {
transform: rotate(8deg);
color: #efc58b;
}
.menu-close:active {
transform: scale(0.95);
}
.product-feature {
animation: featureOpacityCycle 7s ease-in-out infinite;
}
.hero-ring {
animation: ringMotion 6s ease-in-out infinite;
transform-origin: center center;
}
.marker-2 {
animation: mainMarkerScale 4.2s ease-in-out infinite;
transform-origin: center center;
}
.marker-1,
.marker-3,
.marker-4,
.marker-5 {
animation: auxMarkersFloat 4.8s ease-in-out infinite;
}
.marker-3 {
animation-delay: 0.7s;
}
.marker-4 {
animation-delay: 1.4s;
}
.marker-5 {
animation-delay: 2.1s;
}
.hero-line {
position: relative;
height: 1px;
border-top: 0;
background: transparent;
overflow: visible;
}
.hero-line::after {
content: '';
position: absolute;
left: 0;
top: 50%;
width: 100%;
height: 1px;
background: #272727;
transform: translateY(-50%) scaleY(1);
transform-origin: center center;
animation: heroLinePulse 4.8s ease-in-out infinite;
}
.split-banner .line {
position: relative;
height: 1px;
border-top: 0;
overflow: hidden;
}
.split-banner .line::after {
content: '';
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 1px;
background: #fff;
transform-origin: left center;
animation: splitLineScaleBezier 4.6s cubic-bezier(0.42, 0, 0.28, 1) infinite;
}
.menu-banner .overlay {
animation: menuOverlayFadeInOut 5.2s ease-in-out infinite alternate;
}
.menu-banner img {
animation: bannerFilterSpectrum 8.4s linear infinite;
will-change: filter;
}
.map-popup {
border: 1px solid rgba(255, 255, 255, 0.34);
animation: mapPopupMotion 5.2s ease-in-out infinite;
will-change: transform, border-radius, border-color, opacity;
}
.contact-block.input .value,
.footer-meta.news .value,
.menu-side .input {
background: rgba(239, 197, 139, 0);
animation: inputBackgroundEase 6.6s ease-in-out infinite;
}
.footer-logo {
animation: footerLogoFloat 5.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
.menu-store-badge {
animation: badgeLift 4.2s ease-in-out infinite;
}
.grid-card {
animation: cardShadowEase 5.4s ease-in-out infinite alternate;
}
.social-strip img {
animation: socialSaturateBezier 6.4s cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
will-change: filter, transform, clip-path;
}
.social-strip img:nth-child(3n) {
animation: socialSaturateBlur 6.4s ease-in-out infinite;
}
.social-strip img:nth-child(4n + 1) {
animation: socialSaturateClip 5.6s ease-in-out infinite;
}
.social-strip img:nth-child(even) {
animation-delay: 1.2s;
}
.menu-close {
animation: menuCloseSkewPulse 3.8s ease-in-out infinite;
}
.social-nav {
transform-style: preserve-3d;
animation: socialNavTilt3d 7.6s ease-in-out infinite;
}
/* KEYFRAMES */
@keyframes heroGradientShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
@keyframes heroTextShadowGlow {
0% {
text-shadow:
0 0 5px rgba(226, 182, 122, 0.55),
0 0 16px rgba(226, 182, 122, 0.42),
0 0 28px rgba(226, 182, 122, 0.3);
}
50% {
text-shadow:
0 0 3px rgba(255, 255, 255, 0.75),
0 0 12px rgba(255, 232, 196, 0.95),
0 0 28px rgba(226, 182, 122, 1),
0 0 52px rgba(226, 182, 122, 0.92),
0 0 84px rgba(226, 182, 122, 0.72);
}
100% {
text-shadow:
0 0 5px rgba(226, 182, 122, 0.55),
0 0 16px rgba(226, 182, 122, 0.42),
0 0 28px rgba(226, 182, 122, 0.3);
}
}
@keyframes splitTitleLetterPulse {
0% { letter-spacing: 0.03em; }
50% { letter-spacing: 0.065em; }
100% { letter-spacing: 0.03em; }
}
@keyframes featureOpacityCycle {
0% { opacity: 1; }
50% { opacity: 0.42; }
100% { opacity: 1; }
}
@keyframes ringMotion {
0% {
transform: translateX(0) rotate(-3deg);
}
50% {
transform: translateX(22px) rotate(4deg);
}
100% {
transform: translateX(0) rotate(-3deg);
}
}
@keyframes mainMarkerScale {
0% { transform: scale(1); }
50% { transform: scale(1.26); }
100% { transform: scale(1); }
}
@keyframes auxMarkersFloat {
0% { transform: translateY(0); }
50% { transform: translateY(-12px); }
100% { transform: translateY(0); }
}
@keyframes heroLinePulse {
0% {
transform: translateY(-50%) scaleY(1);
opacity: 0.7;
}
50% {
transform: translateY(-50%) scaleY(6);
opacity: 1;
}
100% {
transform: translateY(-50%) scaleY(1);
opacity: 0.7;
}
}
@keyframes splitLineScaleBezier {
0% { transform: scaleX(1); }
50% { transform: scaleX(0.45); }
100% { transform: scaleX(1); }
}
@keyframes menuOverlayFadeInOut {
0% { opacity: 0.52; }
100% { opacity: 1; }
}
@keyframes bannerFilterSpectrum {
0% { filter: brightness(1) hue-rotate(0deg); }
50% { filter: brightness(1.22) hue-rotate(38deg); }
100% { filter: brightness(1) hue-rotate(0deg); }
}
@keyframes mapPopupMotion {
0% {
transform: translateY(0);
opacity: 1;
border-color: rgba(255, 255, 255, 0.28);
border-radius: 2px;
}
50% {
transform: translateY(16px);
opacity: 0.7;
border-color: rgba(239, 197, 139, 1);
border-radius: 16px;
}
100% {
transform: translateY(0);
opacity: 1;
border-color: rgba(255, 255, 255, 0.28);
border-radius: 2px;
}
}
@keyframes inputBackgroundEase {
0% { background-color: rgba(239, 197, 139, 0); }
50% { background-color: rgba(239, 197, 139, 0.22); }
100% { background-color: rgba(239, 197, 139, 0); }
}
@keyframes activeDotPulse {
0% {
transform: translate(-50%, -50%) scale(1);
opacity: 1;
}
50% {
transform: translate(-50%, -50%) scale(1.7);
opacity: 0.45;
}
100% {
transform: translate(-50%, -50%) scale(1);
opacity: 1;
}
}
@keyframes footerLogoFloat {
0% {
transform: translateY(0);
opacity: 0.93;
}
50% {
transform: translateY(-12px);
opacity: 1;
}
100% {
transform: translateY(0);
opacity: 0.93;
}
}
@keyframes badgeLift {
0% { transform: translateY(0); }
50% { transform: translateY(-8px); }
100% { transform: translateY(0); }
}
@keyframes cardShadowEase {
0% {
box-shadow: 0 2px 9px rgba(39, 39, 39, 0.05);
}
100% {
box-shadow: 0 20px 38px rgba(39, 39, 39, 0.28);
}
}
@keyframes socialSaturateBezier {
0% { filter: saturate(1); }
50% { filter: saturate(1.65); }
100% { filter: saturate(1); }
}
@keyframes socialSaturateBlur {
0% {
filter: saturate(1) blur(0);
}
50% {
filter: saturate(1.65) blur(2.2px);
}
100% {
filter: saturate(1) blur(0);
}
}
@keyframes socialSaturateClip {
0% {
filter: saturate(1);
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
}
50% {
filter: saturate(1.65);
-webkit-clip-path: inset(0 12% 0 0);
clip-path: inset(0 12% 0 0);
}
100% {
filter: saturate(1);
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
}
}
@keyframes menuCloseSkewPulse {
0% { transform: skewX(0deg); }
50% { transform: skewX(-16deg); }
100% { transform: skewX(0deg); }
}
@keyframes iconBorderPulse {
0% {
transform: scale(1);
opacity: 0.6;
}
50% {
transform: scale(1.08);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0.6;
}
}
@keyframes bagCounterFlash {
0% { opacity: 1; }
50% { opacity: 0.2; }
100% { opacity: 1; }
}
@keyframes socialNavTilt3d {
0% {
transform: perspective(700px) rotateY(0deg);
}
50% {
transform: perspective(700px) rotateY(14deg);
}
100% {
transform: perspective(700px) rotateY(0deg);
}
}