/**
 * MotionCraft Hover Effects CSS
 * All CSS-driven hover effects.
 */

/* ── Base ──────────────────────────────────────────────────────────────────── */

.mc-hover {
    transition: all var(--mc-hover-duration, 300ms) var(--mc-hover-easing, ease);
    will-change: transform, filter, box-shadow, background-color, border-color;
}

/* ── Transform effects ─────────────────────────────────────────────────────── */

.mc-hover--scale-up:hover    { transform: scale(calc(1 + var(--mc-hover-intensity, 1) * 0.05)); }
.mc-hover--scale-down:hover  { transform: scale(calc(1 - var(--mc-hover-intensity, 1) * 0.05)); }
.mc-hover--scale-x:hover     { transform: scaleX(calc(1 + var(--mc-hover-intensity, 1) * 0.1)); }
.mc-hover--scale-y:hover     { transform: scaleY(calc(1 + var(--mc-hover-intensity, 1) * 0.1)); }
.mc-hover--float-up:hover    { transform: translateY(calc(var(--mc-hover-intensity, 1) * -10px)); }
.mc-hover--float-down:hover  { transform: translateY(calc(var(--mc-hover-intensity, 1) *  10px)); }
.mc-hover--float-left:hover  { transform: translateX(calc(var(--mc-hover-intensity, 1) * -10px)); }
.mc-hover--float-right:hover { transform: translateX(calc(var(--mc-hover-intensity, 1) *  10px)); }
.mc-hover--rotate-cw:hover   { transform: rotate(calc(var(--mc-hover-intensity, 1) *  8deg)); }
.mc-hover--rotate-ccw:hover  { transform: rotate(calc(var(--mc-hover-intensity, 1) * -8deg)); }
.mc-hover--skew-left:hover   { transform: skewX(calc(var(--mc-hover-intensity, 1) * -8deg)); }
.mc-hover--skew-right:hover  { transform: skewX(calc(var(--mc-hover-intensity, 1) *  8deg)); }

/* ── Filter effects ────────────────────────────────────────────────────────── */

.mc-hover--blur:hover      { filter: blur(4px); }
.mc-hover--brighten:hover  { filter: brightness(1.3); }
.mc-hover--darken:hover    { filter: brightness(0.7); }
.mc-hover--grayscale:hover { filter: grayscale(100%); }
.mc-hover--saturate:hover  { filter: saturate(200%); }

/* ── Shadow effects ────────────────────────────────────────────────────────── */

.mc-hover--shadow-rise:hover  { transform: translateY(-6px); box-shadow: 0 20px 40px rgba(0,0,0,0.2); }
.mc-hover--shadow-spread:hover { box-shadow: 0 0 30px 10px rgba(0,0,0,0.15); }
.mc-hover--glow:hover          { box-shadow: 0 0 20px 6px var(--mc-hover-color, rgba(99,102,241,0.5)); }
.mc-hover--neon-glow:hover     { box-shadow: 0 0 10px var(--mc-hover-color, #6366f1), 0 0 40px var(--mc-hover-color, #6366f1), 0 0 80px var(--mc-hover-color, #6366f1); }

/* ── Background sweep effects ──────────────────────────────────────────────── */

.mc-hover--bg-sweep-left,
.mc-hover--bg-sweep-right,
.mc-hover--bg-sweep-up,
.mc-hover--bg-fade,
.mc-hover--bg-radial { position: relative; overflow: hidden; }

.mc-hover--bg-sweep-left::before,
.mc-hover--bg-sweep-right::before,
.mc-hover--bg-sweep-up::before,
.mc-hover--bg-fade::before,
.mc-hover--bg-radial::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--mc-hover-color, rgba(99,102,241,0.15));
    transition: transform var(--mc-hover-duration, 300ms) var(--mc-hover-easing, ease);
    z-index: 0;
}

.mc-hover--bg-sweep-left::before  { transform: translateX(100%); }
.mc-hover--bg-sweep-right::before { transform: translateX(-100%); }
.mc-hover--bg-sweep-up::before    { transform: translateY(100%); }
.mc-hover--bg-fade::before        { opacity: 0; transition: opacity var(--mc-hover-duration, 300ms) ease; }
.mc-hover--bg-radial::before      { transform: scale(0); border-radius: 50%; transition: transform var(--mc-hover-duration, 300ms) ease; }

.mc-hover--bg-sweep-left:hover::before,
.mc-hover--bg-sweep-right:hover::before,
.mc-hover--bg-sweep-up:hover::before  { transform: translateX(0) translateY(0); }
.mc-hover--bg-fade:hover::before      { opacity: 1; }
.mc-hover--bg-radial:hover::before    { transform: scale(3); }

/* ── Border effects ────────────────────────────────────────────────────────── */

.mc-hover--border-draw { position: relative; }
.mc-hover--border-draw::before, .mc-hover--border-draw::after { content: ''; position: absolute; transition: all var(--mc-hover-duration, 300ms) ease; }
.mc-hover--border-draw::before { top: 0; left: 0; width: 0; height: 2px; background: currentColor; }
.mc-hover--border-draw::after  { bottom: 0; right: 0; width: 0; height: 2px; background: currentColor; }
.mc-hover--border-draw:hover::before,
.mc-hover--border-draw:hover::after { width: 100%; }

.mc-hover--underline-slide { position: relative; }
.mc-hover--underline-slide::after { content: ''; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background: currentColor; transition: width var(--mc-hover-duration, 300ms) ease; }
.mc-hover--underline-slide:hover::after { width: 100%; }

/* ── Animation effects ─────────────────────────────────────────────────────── */

@keyframes mc-shake {
    0%,100% { transform: translateX(0); }
    10%,50%,90% { transform: translateX(-6px); }
    30%,70% { transform: translateX(6px); }
}

@keyframes mc-wobble {
    0%,100% { transform: translateX(0) rotate(0); }
    15% { transform: translateX(-10px) rotate(-5deg); }
    30% { transform: translateX(8px) rotate(3deg); }
    45% { transform: translateX(-6px) rotate(-3deg); }
    60% { transform: translateX(4px) rotate(2deg); }
    75% { transform: translateX(-2px) rotate(-1deg); }
}

@keyframes mc-pulse {
    0%,100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

@keyframes mc-buzz {
    0%,100% { transform: translate(0,0) rotate(0); }
    20% { transform: translate(-2px, 1px) rotate(-0.5deg); }
    40% { transform: translate(2px, -1px) rotate(0.5deg); }
    60% { transform: translate(-1px, 2px) rotate(0); }
    80% { transform: translate(1px, -2px) rotate(-0.5deg); }
}

.mc-hover--shake:hover  { animation: mc-shake  var(--mc-hover-duration, 600ms) ease; }
.mc-hover--wobble:hover { animation: mc-wobble var(--mc-hover-duration, 600ms) ease; }
.mc-hover--pulse:hover  { animation: mc-pulse  var(--mc-hover-duration, 600ms) ease infinite; }
.mc-hover--buzz:hover   { animation: mc-buzz   var(--mc-hover-duration, 200ms) linear infinite; }

/* ── Flip card ─────────────────────────────────────────────────────────────── */

.mc-hover--flip-card { perspective: 1000px; }
.mc-hover--flip-card > * { backface-visibility: hidden; transition: transform var(--mc-hover-duration, 400ms) ease; }
.mc-hover--flip-card:hover > *:first-child { transform: rotateY(180deg); }
.mc-hover--flip-card > *:last-child { transform: rotateY(-180deg); }
.mc-hover--flip-card:hover > *:last-child { transform: rotateY(0); }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .mc-hover, .mc-hover::before, .mc-hover::after,
    .mc-hover > * { transition: none !important; animation: none !important; }
}
