/** Shopify CDN: Minification failed

Line 13:44 Unexpected "*"

**/
/**
 * CurlyCubs motion system.
 *
 * Shared, reusable animation primitives for the CurlyCubs redesign. Sections
 * and blocks opt into these utilities with data attributes/classes instead of
 * each defining their own one-off transitions, so motion stays consistent
 * and easy to tune from one place (see snippets/curlycubs-tokens.liquid for
 * the underlying --cc-duration-*/--cc-ease-* values).
 *
 * Rules of the road:
 * - Only animate transform/opacity (plus stroke-dashoffset for line-draws) —
 *   nothing here triggers layout.
 * - Everything here has a prefers-reduced-motion escape hatch at the bottom.
 * - curlycubs-motion.js is what actually adds/removes .is-revealed; this
 *   file only defines what that state looks like.
 */

/* ---------------------------------------------------------------------
   Scroll reveals
--------------------------------------------------------------------- */

[data-cc-reveal] {
  opacity: 0;
  transform: translateY(var(--cc-reveal-distance, 28px)) scale(var(--cc-reveal-scale, 1));
  transition:
    opacity var(--cc-duration-slow) var(--cc-ease-soft),
    transform var(--cc-duration-slow) var(--cc-ease-soft);
  transition-delay: calc(var(--cc-i, 0) * var(--cc-stagger, 70ms));
  will-change: opacity, transform;
}

[data-cc-reveal='fade'] {
  --cc-reveal-distance: 0px;
}

[data-cc-reveal='scale'] {
  --cc-reveal-distance: 12px;
  --cc-reveal-scale: 0.94;
}

[data-cc-reveal='rise'] {
  --cc-reveal-distance: 48px;
}

[data-cc-reveal].is-revealed {
  opacity: 1;
  transform: translateY(0) scale(1);
  will-change: auto;
}

/* Masked image reveal: a container with overflow hidden and an inner
   element that clips in from the bottom, used for hero/story photography. */
[data-cc-reveal='mask'] {
  opacity: 1;
  transform: none;
  overflow: hidden;
}

[data-cc-reveal='mask'] > * {
  transform: translateY(6%) scale(1.06);
  opacity: 0;
  transition:
    transform var(--cc-duration-story) var(--cc-ease-soft),
    opacity var(--cc-duration-slow) var(--cc-ease-soft);
  transition-delay: calc(var(--cc-i, 0) * var(--cc-stagger, 70ms));
}

[data-cc-reveal='mask'].is-revealed > * {
  transform: translateY(0) scale(1);
  opacity: 1;
}

/* ---------------------------------------------------------------------
   Hand-drawn line / curl path draws (paired with curlycubs-motion.js,
   which measures each path's length and sets --cc-path-length).
--------------------------------------------------------------------- */

.cc-draw-path {
  stroke-dasharray: var(--cc-path-length, 1000);
  stroke-dashoffset: var(--cc-path-length, 1000);
  transition: stroke-dashoffset var(--cc-duration-story) var(--cc-ease-soft);
}

[data-cc-reveal].is-revealed .cc-draw-path,
.is-revealed.cc-draw-path {
  stroke-dashoffset: 0;
}

/* ---------------------------------------------------------------------
   Hover / press microinteractions
--------------------------------------------------------------------- */

.cc-hover-lift {
  transition: transform var(--cc-duration-fast) var(--cc-ease-out), box-shadow var(--cc-duration-fast) var(--cc-ease-out);
}

.cc-hover-lift:hover,
.cc-hover-lift:focus-visible {
  transform: translateY(-4px);
}

.cc-hover-pop {
  transition: transform var(--cc-duration-fast) var(--cc-ease-bounce);
}

.cc-hover-pop:hover,
.cc-hover-pop:focus-visible {
  transform: scale(1.04);
}

.cc-press {
  transition: transform var(--cc-duration-instant) var(--cc-ease-out);
}

.cc-press:active {
  transform: scale(0.96);
}

/* Small rotation wobble for decorative artwork (paws, curls, stickers) */
.cc-wobble-on-hover {
  transition: transform var(--cc-duration-fast) var(--cc-ease-bounce);
}

.cc-wobble-on-hover:hover,
.cc-wobble-on-hover:focus-visible {
  transform: rotate(var(--cc-wobble-2, 4deg)) scale(1.05);
}

/* ---------------------------------------------------------------------
   Utility
--------------------------------------------------------------------- */

.cc-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ---------------------------------------------------------------------
   Reduced motion: calm, fully usable, nothing withheld from view.
--------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  [data-cc-reveal],
  [data-cc-reveal='mask'] > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .cc-draw-path {
    stroke-dashoffset: 0 !important;
    transition: none !important;
  }

  .cc-hover-lift:hover,
  .cc-hover-lift:focus-visible,
  .cc-hover-pop:hover,
  .cc-hover-pop:focus-visible,
  .cc-wobble-on-hover:hover,
  .cc-wobble-on-hover:focus-visible,
  .cc-press:active {
    transform: none;
  }
}
