.flip-card-container{perspective:1000px;position:relative}.flip-card-inner{position:relative;width:100%;height:100%;transition:transform .6s cubic-bezier(.4,0,.2,1);transform-style:preserve-3d}.flip-card-inner.rotate-y-180{transform:rotateY(180deg)}.flip-card-back,.flip-card-front{position:absolute;width:100%;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden}.flip-card-front{z-index:2;transform:rotateY(0deg)}.flip-card-back,.flip-card-hover:hover .flip-card-inner{transform:rotateY(180deg)}@media (hover:none) and (pointer:coarse){.flip-card-inner{transition:transform .4s cubic-bezier(.4,0,.2,1)}}@media (prefers-reduced-motion:reduce){.flip-card-inner{transition:transform .3s ease}}.color-swatch{transition:all .2s ease}.color-swatch:hover:not(.selected){transform:scale(1.1);box-shadow:0 4px 6px -1px rgb(0 0 0/.1),0 2px 4px -2px rgb(0 0 0/.1)}.color-swatch.selected{border-width:3px;box-shadow:0 0 0 4px rgba(59,130,246,.2)}@keyframes shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}.image-loading{animation:shimmer 1.2s ease-in-out infinite;background:linear-gradient(90deg,#f6f7f8 0,#edeef1 20%,#f6f7f8 40%,#f6f7f8);background-size:800px 104px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-in{animation:fadeIn .3s ease-in}.product-card-wrapper{transition:transform .2s ease,box-shadow .2s ease}.product-card-wrapper:hover{transform:translateY(-4px);box-shadow:0 10px 25px -5px rgb(0 0 0/.1),0 8px 10px -6px rgb(0 0 0/.1)}.color-picker-enter{animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.badge-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.variation-option{transition:all .15s ease}.variation-option:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 6px -1px rgb(0 0 0/.1)}.variation-option:active:not(:disabled){transform:translateY(0)}.stock-indicator{animation:slideInRight .3s ease-out}@keyframes slideInRight{0%{opacity:0;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}.price-update{animation:priceChange .3s ease-in-out}@keyframes priceChange{0%{transform:scale(1)}50%{transform:scale(1.05);color:rgb(59,130,246)}to{transform:scale(1)}}