/******* Do not edit this file *******
Woody Code Snippets CSS and JS
Saved: Mar 01 2026 | 20:02:31 */
/* =========================================================
   WIPE ANIMATIONS (Elementor Entrance + Exit)
   Principle:
   - Keep opacity at 1 (no uniform fade)
   - Use clip-path inset() to create a wipe mask
   - "In" = reveal, "Out" = hide
   - Direction name = where the reveal/hide STARTS (the leading edge)
     • InDown  = reveal starts at TOP, moves DOWN
     • OutDown = hide starts at TOP, moves DOWN
     • InUp    = reveal starts at BOTTOM, moves UP
     • OutUp   = hide starts at BOTTOM, moves UP
     • InLeft  = reveal starts at LEFT, moves RIGHT
     • OutLeft = hide starts at LEFT, moves RIGHT
     • InRight = reveal starts at RIGHT, moves LEFT
     • OutRight= hide starts at RIGHT, moves LEFT
   ========================================================= */

/* Recommended for popups */
.elementor-popup-modal .dialog-widget-content {
  overflow: hidden;
  will-change: clip-path;
}

/* Class → animation mapping (duration/ease can be adjusted) */
.wipeInLeft   { animation: wipeInLeft   .9s cubic-bezier(.65, 0, .35, 1) both; }
.wipeOutLeft  { animation: wipeOutLeft  .9s cubic-bezier(.65, 0, .35, 1) both; }

.wipeInRight  { animation: wipeInRight  .9s cubic-bezier(.65, 0, .35, 1) both; }
.wipeOutRight { animation: wipeOutRight .9s ccubic-bezier(.65, 0, .35, 1) both; }

.wipeInDown   { animation: wipeInDown   .9s cubic-bezier(.65, 0, .35, 1) both; }
.wipeOutDown  { animation: wipeOutDown  .9s cubic-bezier(.65, 0, .35, 1) both; }

.wipeInUp     { animation: wipeInUp     .9s cubic-bezier(.65, 0, .35, 1) both; }
.wipeOutUp    { animation: wipeOutUp    .9s cubic-bezier(.65, 0, .35, 1) both; }


/* =========================
   WIPE IN (REVEAL)
   ========================= */

/* Reveal from LEFT → RIGHT */
@keyframes wipeInLeft {
  0% {
    opacity: 1;
    clip-path: inset(0 100% 0 0);
    -webkit-clip-path: inset(0 100% 0 0);
  }
  100% {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
}

/* Reveal from RIGHT → LEFT */
@keyframes wipeInRight {
  0% {
    opacity: 1;
    clip-path: inset(0 0 0 100%);
    -webkit-clip-path: inset(0 0 0 100%);
  }
  100% {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
}

/* Reveal from TOP → BOTTOM */
@keyframes wipeInDown {
  0% {
    opacity: 1;
    clip-path: inset(0 0 100% 0);
    -webkit-clip-path: inset(0 0 100% 0);
  }
  100% {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
}

/* Reveal from BOTTOM → TOP */
@keyframes wipeInUp {
  0% {
    opacity: 1;
    clip-path: inset(100% 0 0 0);
    -webkit-clip-path: inset(100% 0 0 0);
  }
  100% {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
}


/* =========================
   WIPE OUT (EXIT / HIDE)
   ========================= */

/* OutLeft: left disappears first, edge moves RIGHT */
@keyframes wipeOutLeft {
  100% {
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
  0% {
    clip-path: inset(0 0 0 100%);      /* increase LEFT inset */
    -webkit-clip-path: inset(0 0 0 100%);
  }
}

/* OutRight: right disappears first, edge moves LEFT */
@keyframes wipeOutRight {
  100% {
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
  0% {
    clip-path: inset(0 100% 0 0);      /* increase RIGHT inset */
    -webkit-clip-path: inset(0 100% 0 0);
  }
}

/* OutDown: top disappears first, edge moves DOWN */
@keyframes wipeOutDown {
  100% {
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
  0% {
    clip-path: inset(100% 0 0 0);      /* increase TOP inset */
    -webkit-clip-path: inset(100% 0 0 0);
  }
}

/* OutUp: bottom disappears first, edge moves UP */
@keyframes wipeOutUp {
  100% {
    clip-path: inset(0 0 0 0);
    -webkit-clip-path: inset(0 0 0 0);
  }
  0% {
    clip-path: inset(0 0 100% 0);      /* increase BOTTOM inset */
    -webkit-clip-path: inset(0 0 100% 0);
  }
}