/* logo-animation.css — 3D tilt + intro spin for a logo.
   Usage: <div class="kw-logo" data-intro="true"><img class="kw-logo__img" src="logo.png" alt="..."></div> */

.kw-logo {
  --kw-width: 320px;         /* logo display width */
  --kw-perspective: 800px;
  --kw-intro-duration: 1.2s;
  display: inline-block;
  width: var(--kw-width);
  perspective: var(--kw-perspective);
}

.kw-logo__inner {
  position: relative;
  transform-style: preserve-3d;
  /* --kw-rx / --kw-ry are set by logo-animation.js */
  transform: rotateX(var(--kw-rx, 0deg)) rotateY(var(--kw-ry, 0deg));
  transition: transform 0.5s cubic-bezier(.2, .8, .2, 1);
  will-change: transform;
}
.kw-logo.is-tilting .kw-logo__inner { transition: transform 0.08s linear; }

.kw-logo__img {
  display: block;
  width: 100%;
  height: auto;
  user-select: none;
  -webkit-user-drag: none;
}

/* Moving light glare (position set by JS) */
.kw-logo__glare {
  position: absolute;
  inset: 0;
  pointer-events: none;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  opacity: 0;
  transition: opacity 0.3s;
  background: radial-gradient(circle at var(--kw-gx, 50%) var(--kw-gy, 50%),
              rgba(255, 255, 255, .55), transparent 60%);
  mix-blend-mode: soft-light;
}
.kw-logo.is-tilting .kw-logo__glare { opacity: 1; }

/* Optional modifiers (not used by default) ------------------------------ */

/* White card behind the logo — for very dark/black backgrounds where the
   dark-gray letters lose contrast. */
.kw-logo--plate .kw-logo__inner {
  background: #fff;
  border-radius: 14px;
  padding: 20px;
  box-sizing: border-box;
  box-shadow: 0 12px 30px rgba(0, 0, 0, .35);
}
.kw-logo--plate .kw-logo__glare { inset: 20px; }

/* Soft light halo that follows the logo's shape — lighter alternative to plate */
.kw-logo--glow .kw-logo__img {
  filter: drop-shadow(0 0 10px rgba(255, 255, 255, .35));
}

/* Intro: one spin on load (enabled with data-intro="true") */
.kw-logo[data-intro="true"] .kw-logo__inner {
  animation: kw-intro var(--kw-intro-duration) cubic-bezier(.2, .8, .2, 1) both;
}
@keyframes kw-intro {
  from { opacity: 0; transform: rotateY(-360deg) scale(.6); }
  to   { opacity: 1; transform: rotateY(0) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .kw-logo[data-intro="true"] .kw-logo__inner { animation: none; }
  .kw-logo__inner { transition: none; }
}
