/* ==========================================================================
   Button Animations
   NOTE: The cds-animate-underline-* keyframes now live in the shared
   assets/css/cdswerx-underline.css (registered as 'cdswerx-underline', a
   dependency of this stylesheet) so Button and TOC stay in lockstep.
   ========================================================================== */
@keyframes cds-addons-for-elementor-fade-in {
  0% {
    opacity: 0;
    visibility: hidden;
    z-index: 102;
  }
  100% {
    opacity: 1;
    visibility: visible;
    z-index: 102;
  }
}
@keyframes cds-addons-for-elementor-fade-out {
  0% {
    opacity: 1;
    visibility: visible;
    z-index: 102;
  }
  100% {
    opacity: 0;
    visibility: hidden;
    z-index: 0;
  }
}
@keyframes cds-animate-highlight {
  0% {
    background-size: 0% 100%;
    background-position-x: left;
  }
  100% {
    background-size: 100% 100%;
    background-position-x: left;
  }
}


@keyframes cds-move-horizontal-normal-text-marquee {
  0% {
    transform: translateX(0%) translateZ(0);
  }
  100% {
    transform: translateX(-100%) translateZ(0);
  }
}
@keyframes cds-move-horizontal-normal-text-marquee-copy {
  0% {
    transform: translateX(100%) translateZ(0);
  }
  100% {
    transform: translateX(0%) translateZ(0);
  }
}
@keyframes cds-move-vertical-normal-text-marquee {
  0% {
    transform: translateY(0%) translateZ(0);
  }
  100% {
    transform: translateY(-100%) translateZ(0);
  }
}
@keyframes cds-move-vertical-normal-text-marquee-copy {
  0% {
    transform: translateY(100%) translateZ(0);
  }
  100% {
    transform: translateY(0%) translateZ(0);
  }
}
@keyframes cds-move-horizontal-reverse-text-marquee {
  0% {
    transform: translateX(0%) translateZ(0);
  }
  100% {
    transform: translateX(100%) translateZ(0);
  }
}
@keyframes cds-move-horizontal-reverse-text-marquee-copy {
  0% {
    transform: translateX(-100%) translateZ(0);
  }
  100% {
    transform: translateX(0%) translateZ(0);
  }
}
@keyframes cds-move-vertical-reverse-text-marquee {
  0% {
    transform: translateY(0%) translateZ(0);
  }
  100% {
    transform: translateY(100%) translateZ(0);
  }
}
@keyframes cds-move-vertical-reverse-text-marquee-copy {
  0% {
    transform: translateY(-100%) translateZ(0);
  }
  100% {
    transform: translateY(0%) translateZ(0);
  }
}
/* ==========================================================================
   Button 
   ========================================================================== */

.cdswerx-button-widget {
    position: relative;
    display: inline-block;
    vertical-align: middle;
    width: auto;
    margin: 0;
    font-family: inherit;
    font-size: 16px;
    line-height: 2em;
    font-weight: 500;
    text-decoration: none;
    text-transform: none;
    border-radius: 4px;
    outline: 0;
    transition: color .25s ease-in-out, background-color .25s ease-in-out, border-color .25s ease-in-out;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    padding: 13px 46px;
    overflow: hidden
}

/* Info variant — mirrors Qi info-button: column layout with text-holder row */
.cdswerx-button-widget.cdswerx-button--info {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    line-height: 1.2em
}

.cdswerx-button-widget.cdswerx-button--info .cdswerx-button__text-holder {
    display: flex;
    align-items: center
}

.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-icon--left .cdswerx-button__text-holder {
    flex-direction: row-reverse
}

/* Icon Boxed + Info: title/subtitle stack vertically inside text-holder; icon sits beside */
.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-type--icon-boxed .cdswerx-button__text-holder {
    flex-direction: column;
    align-items: flex-start
}

.cdswerx-button-widget.cdswerx-button--info .cdswerx-button__subtext {
    font-size: 0.75em
}

/* Default subtext spacing for info variant; style control can override */
.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-subtext--below .cdswerx-button__subtext {
  margin-top: 0.25em;
  margin-bottom: 0;
}

.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-subtext--above .cdswerx-button__subtext {
  margin-bottom: 0.25em;
  margin-top: 0;
}

.cdswerx-button-widget.cdswerx-button--info .cdswerx-button__subtext-link {
    color: inherit;
    text-decoration: inherit
}

.cdswerx-button-widget.cdswerx-button-size--small {
    padding: 9px 33px
}

.cdswerx-button-widget.cdswerx-button-size--large {
    padding: 15px 52px
}

.cdswerx-button-widget.cdswerx-button-size--full {
    width: 100%;
    text-align: center
}

/* Full-width info variant: force consistent centering for primary + subtext */
.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-size--full {
  align-items: center;
}

.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-size--full .cdswerx-button__text-holder {
  width: 100%;
  justify-content: center;
  text-align: center;
}

.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-size--full .cdswerx-button__subtext {
  display: block;
  width: 100%;
  text-align: center;
}

.cdswerx-button-widget.cdswerx-button--info.cdswerx-button-type--icon-boxed.cdswerx-button-size--full .cdswerx-button__text-holder {
  align-items: center;
}

.cdswerx-button-widget.cdswerx-button--filled {
    color: #111;
    background-color: #f4f4f4;
    border: 0;
    font-size: 1rem;
    border-style: solid
}

.cdswerx-button-widget.cdswerx-button--filled:hover {
    color: #fff;
    background-color: #111
}

.cdswerx-button-widget.cdswerx-button--outlined {
    color: #111;
    background-color: transparent;
    border: 2px solid #111
}

.cdswerx-button-widget.cdswerx-button--outlined:hover {
    color: #111;
    background-color: #f4f4f4;
    border-color: #f4f4f4
}

.cdswerx-button-widget.cdswerx-button--textual {
    padding: 0 !important;
    background-color: transparent;
    border: 0;
    border-radius: 0;
    overflow: visible
}

.cdswerx-button-widget.cdswerx-button--textual .cdswerx-button-text {
    display: inline-block;
    vertical-align: middle
}

.cdswerx-button-widget.cdswerx-button--textual:hover {
    color: #111
}

.cdswerx-button-widget.cdswerx-button-icon--left {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-direction: row-reverse
}

/*
 * Defensive guard: link-protection plugins (e.g. Email Encoder Bundle) that
 * obfuscate tel:/mailto: links wrap the link's inner content in an extra
 * <span id="eeb-..."> node. That nests the text + icon out of the <a> flex
 * context, defeating the row-reverse above and shoving the icon to the right.
 * Re-establish the reversed flex row on the injected wrapper so icon--left
 * keeps rendering the icon on the left even when the link is protected.
 */
.cdswerx-button-widget.cdswerx-button-icon--left > span[id^="eeb-"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-direction: row-reverse;
}

.cdswerx-button-widget.cdswerx-button-text-underline .cdswerx-button-text {
    position: relative
}

.cdswerx-button-widget.cdswerx-button-text-underline .cdswerx-button-text:after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 1px;
    background-color: currentColor;
    transition: background-color .25s ease-in-out, width .36s cubic-bezier(.51, .5, .07, .99);
    backface-visibility: hidden
}

.cdswerx-button-widget.cdswerx-button-text-underline:not(.cdswerx-button-underline-draw):hover .cdswerx-button-text:after {
    width: 0
}

.cdswerx-button-widget.cdswerx-button-text-underline.cdswerx-button-underline--center .cdswerx-button-text:after {
    left: 50%;
    transform: translateX(-50%);
}

.cdswerx-button-widget.cdswerx-button-text-underline.cdswerx-button-underline--right .cdswerx-button-text:after {
    left: auto;
    right: 0;
}

.cdswerx-button-widget.cdswerx-button-underline-draw .cdswerx-button-text {
    overflow: hidden
}

.cdswerx-button-widget.cdswerx-button-underline-draw.cdswerx-button-underline--left:hover .cdswerx-button-text:after,
.cdswerx-button-widget.cdswerx-button-underline-draw.cdswerx-button-underline--right:hover .cdswerx-button-text:after {
    animation: cds-animate-underline-from-left .7s cubic-bezier(.45, .29, 0, .82) forwards
}

.cdswerx-button-widget.cdswerx-button-underline-draw.cdswerx-button-underline--right:hover .cdswerx-button-text:after {
    animation: cds-animate-underline-from-right .7s cubic-bezier(.45, .29, 0, .82) forwards
}

.cdswerx-button-widget .cdswerx-button-icon {
    color: currentColor;
    line-height: 0
}

.cdswerx-button-widget .cdswerx-button-icon.cdswerx-button--icon-color-set {
    transition: color .25s ease-in-out, background-color .25s ease-in-out
}

.cdswerx-button-widget .cdswerx-button-icon svg {
    width: 1em;
    fill: currentColor;
    stroke: currentColor;
    vertical-align: middle
}

/* Default icon margins — Elementor Icon Margin DIMENSIONS control overrides when set */
.cdswerx-button-widget.cdswerx-button-icon--right:not(.cdswerx-button-type--icon-boxed) .cdswerx-button-icon {
    margin-left: 10px
}

.cdswerx-button-widget.cdswerx-button-icon--left:not(.cdswerx-button-type--icon-boxed) .cdswerx-button-icon {
    margin-right: 10px
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner {
    position: relative;
    overflow: hidden;
    display: inherit;
    padding: 1px
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner i,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner svg,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner i,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner svg,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner i,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner svg {
    transition: transform .38s cubic-bezier(.37, .08, .02, .93), opacity .18s ease-in-out;
    will-change: transform
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner svg:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner svg:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner svg:nth-child(1) {
    transform: translateX(0) translateY(0);
    transition-delay: .1s;
    opacity: 1
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner svg:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner svg:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner svg:nth-child(2) {
    position: absolute;
    opacity: 0;
    left: 1px;
    top: 1px;
    transition-delay: 0s
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal:hover .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal:hover .cdswerx-button-icon-inner svg:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal:hover .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal:hover .cdswerx-button-icon-inner svg:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical:hover .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical:hover .cdswerx-button-icon-inner svg:nth-child(1) {
    opacity: 0
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal:hover .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal:hover .cdswerx-button-icon-inner svg:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal:hover .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal:hover .cdswerx-button-icon-inner svg:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical:hover .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical:hover .cdswerx-button-icon-inner svg:nth-child(2) {
    transform: translateX(0) translateY(0) translatez(0);
    transition-delay: .25s;
    opacity: 1
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal .cdswerx-button-icon-inner svg:nth-child(2) {
    transform: translateX(-150%) translateY(0)
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal:hover .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal:hover .cdswerx-button-icon-inner svg:nth-child(1) {
    transform: translateX(200%) translateY(0)
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner i,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner svg {
    will-change: transform
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical .cdswerx-button-icon-inner svg:nth-child(2) {
    transform: translateX(0) translateY(150%) translateZ(0)
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical:hover .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-vertical:hover .cdswerx-button-icon-inner svg:nth-child(1) {
    transform: translateX(0) translateY(-150%) translateZ(0)
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner i,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner svg {
    will-change: transform
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner i:nth-child(2),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal .cdswerx-button-icon-inner svg:nth-child(2) {
    transform: translateX(-100%) translateY(100%) translateZ(0)
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal:hover .cdswerx-button-icon-inner i:nth-child(1),
.cdswerx-button-widget.cdswerx-button-hover--icon-move-diagonal:hover .cdswerx-button-icon-inner svg:nth-child(1) {
    transform: translateX(100%) translateY(-100%) translateZ(0)
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal-short .cdswerx-button-icon-inner i,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal-short .cdswerx-button-icon-inner svg {
    transition: transform .3s cubic-bezier(.37, .08, .02, .93), opacity .2s ease-in-out;
    transform: translateX(0);
    will-change: transform
}

.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal-short:hover .cdswerx-button-icon-inner i,
.cdswerx-button-widget.cdswerx-button-hover--icon-move-horizontal-short:hover .cdswerx-button-icon-inner svg {
    transform: translateX(4px)
}

.cdswerx-button-widget.cdswerx-button-hover--reveal:after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transition: transform .5s cubic-bezier(.54, .3, .02, 1.01)
}

.cdswerx-button-widget.cdswerx-button-hover--reveal .cdswerx-button-icon,
.cdswerx-button-widget.cdswerx-button-hover--reveal .cdswerx-button-text {
    z-index: 1
}

.cdswerx-button-widget.cdswerx-button-hover--reveal:hover:after {
    transform: scaleX(1) scaleY(1)
}

.cdswerx-button-widget.cdswerx-button-hover--reveal.cdswerx-button--outlined:hover {
    background-color: initial
}

.cdswerx-button-widget.cdswerx-button--reveal-horizontal:after {
    transform-origin: left;
    transform: scaleX(0)
}

.cdswerx-button-widget.cdswerx-button--reveal-vertical:after {
    transform-origin: bottom;
    transform: scaleY(0)
}

.cdswerx-button-widget.cdswerx-button-icon-background-hover--reveal .cdswerx-button-icon:after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transition: transform .5s cubic-bezier(.54, .3, .02, 1.01)
}

.cdswerx-button-widget.cdswerx-button-icon-background-hover--reveal .cdswerx-button-icon .cdswerx-button-icon-inner {
    z-index: 1
}

.cdswerx-button-widget.cdswerx-button-icon-background-hover--reveal:hover .cdswerx-button-icon:after {
    transform: scaleX(1) scaleY(1)
}

.cdswerx-button-widget.cdswerx-button-icon-background-hover--reveal-horizontal .cdswerx-button-icon:after {
    transform-origin: left;
    transform: scaleX(0)
}

.cdswerx-button-widget.cdswerx-button-icon-background-hover--reveal-vertical .cdswerx-button-icon:after {
    transform-origin: bottom;
    transform: scaleY(0)
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed {
    padding: 0 !important;
    flex-direction: row;
    align-items: stretch
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed.cdswerx-button-icon--left {
    flex-direction: row-reverse
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed.cdswerx-button-icon--left .cdswerx-button-icon {
    flex-direction: row-reverse
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed .cdswerx-button-text {
    align-self: center;
    padding: 11px 28px
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed.cdswerx-button-size--small .cdswerx-button-text {
    padding: 7px 15px
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed.cdswerx-button-size--large .cdswerx-button-text {
    padding: 13px 40px
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed .cdswerx-button-icon {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 11px 0;
    transition: background-color 0.25s ease-in-out;
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed .cdswerx-button-icon i {
    line-height: inherit
}

.cdswerx-button-widget.cdswerx-button-type--icon-boxed .cdswerx-button-icon svg {
    width: 1em;
    fill: currentColor;
    stroke: currentColor
}

.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-inner-border {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    color: #111;
    font-size: 4px;
    transition: color .25s ease-in-out;
    pointer-events: none;
}

/* Icon Side Border Styling - Full height by default like QI */
.cdswerx-button-widget.cdswerx-button-type--icon-boxed .cdswerx-button-border {
    width: 2px;
    background-color: #111;
    transition: background-color .25s ease-in-out;
    /* No height/align-self - stretches to full height naturally via parent's align-items: stretch */
}

.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-top {
    position: absolute;
    background-color: currentColor;
    transition: background-color .25s ease-in-out;
}

.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-top {
    top: 1em;
    left: 1em;
    height: 2px;
    width: calc(100% - 2em)
}

.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-right {
    top: 1em;
    right: 1em;
    width: 2px;
    height: calc(100% - 2em)
}

.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-bottom {
    bottom: 1em;
    right: 1em;
    height: 2px;
    width: calc(100% - 2em)
}

.cdswerx-button-widget.cdswerx-button-type--inner-border .cdswerx-button-border-left {
    bottom: 1em;
    left: 1em;
    width: 2px;
    height: calc(100% - 2em)
}

/* Inner border hover animations for btn widgets */
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--draw"] .cdswerx-button-inner-border-copy .cdswerx-button-border-bottom,
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--draw"] .cdswerx-button-inner-border-copy .cdswerx-button-border-left,
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--draw"] .cdswerx-button-inner-border-copy .cdswerx-button-border-right,
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--draw"] .cdswerx-button-inner-border-copy .cdswerx-button-border-top {
    transition: transform .36s ease-out
}

.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center .cdswerx-button-inner-border-copy .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center .cdswerx-button-inner-border-copy .cdswerx-button-border-top,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point .cdswerx-button-inner-border-copy .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point .cdswerx-button-inner-border-copy .cdswerx-button-border-top,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points .cdswerx-button-inner-border-copy .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points .cdswerx-button-inner-border-copy .cdswerx-button-border-top {
    transform: scaleX(0)
}

.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center .cdswerx-button-inner-border-copy .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center .cdswerx-button-inner-border-copy .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point .cdswerx-button-inner-border-copy .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point .cdswerx-button-inner-border-copy .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points .cdswerx-button-inner-border-copy .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points .cdswerx-button-inner-border-copy .cdswerx-button-border-right {
    transform: scaleY(0)
}

.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-center:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-top,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-one-point:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-top,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--draw-from-two-points:hover .cdswerx-button-inner-border-copy .cdswerx-button-border-top {
    transform: scaleX(1) scaleY(1)
}

/* Inner border remove animations for btn widgets */
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--remove"] .cdswerx-button-inner-border .cdswerx-button-border-bottom,
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--remove"] .cdswerx-button-inner-border .cdswerx-button-border-left,
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--remove"] .cdswerx-button-inner-border .cdswerx-button-border-right,
.cdswerx-button-widget[class*="cdswerx-button-inner-border-hover--remove"] .cdswerx-button-inner-border .cdswerx-button-border-top {
    transition: background-color .25s ease-in-out, transform .36s ease-out;
    transform: scaleX(1) scaleY(1)
}

.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-center:hover .cdswerx-button-inner-border .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-center:hover .cdswerx-button-inner-border .cdswerx-button-border-top,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-one-point:hover .cdswerx-button-inner-border .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-one-point:hover .cdswerx-button-inner-border .cdswerx-button-border-top,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-two-points:hover .cdswerx-button-inner-border .cdswerx-button-border-bottom,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-two-points:hover .cdswerx-button-inner-border .cdswerx-button-border-top {
    transform: scaleX(0)
}

.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-center:hover .cdswerx-button-inner-border .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-center:hover .cdswerx-button-inner-border .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-one-point:hover .cdswerx-button-inner-border .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-one-point:hover .cdswerx-button-inner-border .cdswerx-button-border-right,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-two-points:hover .cdswerx-button-inner-border .cdswerx-button-border-left,
.cdswerx-button-widget.cdswerx-button-inner-border-hover--remove-to-two-points:hover .cdswerx-button-inner-border .cdswerx-button-border-right {
    transform: scaleY(0)
}

/* --- Move To Outer Edge (square mode, legacy class names) --- */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--square.cdswerx-button-inner-border-hover--move-to-outer-edge,
.cdswerx-button-widget.cdswerx-button-inner-border-mode--square.cdswerx-button-inner-border-hover--move-to-outer-edge {
  overflow: visible;
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--square.cdswerx-button-inner-border-hover--move-to-outer-edge .cdswerx-button-inner-border,
.cdswerx-button-widget.cdswerx-button-inner-border-mode--square.cdswerx-button-inner-border-hover--move-to-outer-edge .cdswerx-button-inner-border {
  top: 1em;
  left: 1em;
  width: calc(100% - 2em);
  height: calc(100% - 2em);
  border: 1px solid currentColor;
  transition: all var(--cds-ib-anim, 0.3s) cubic-bezier(0.46, 0.03, 0.52, 0.96);
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--square.cdswerx-button-inner-border-hover--move-to-outer-edge:hover .cdswerx-button-inner-border,
.cdswerx-button-widget.cdswerx-button-inner-border-mode--square.cdswerx-button-inner-border-hover--move-to-outer-edge:hover .cdswerx-button-inner-border {
  top: -1em;
  left: -1em;
  width: calc(100% + 2em);
  height: calc(100% + 2em);
}

/* --- Rounded Change Color (bordered div, CSS border-radius semantics) --- */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded:not([class*="cdswerx-button-inner-border-hover--"]) .cdswerx-button-inner-border {
  top: var(--cds-ib-offset, 4px);
  left: var(--cds-ib-offset, 4px);
  width: calc(100% - 2 * var(--cds-ib-offset, 4px));
  height: calc(100% - 2 * var(--cds-ib-offset, 4px));
  border: var(--cds-ib-border-width, 2px) solid currentColor;
}

/* --- Rounded SVG trace container --- */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded .cdswerx-button-inner-border-svg {
  position: absolute;
  pointer-events: none;
  overflow: visible;
  display: block;
  top: var(--cds-ib-offset, 4px);
  left: var(--cds-ib-offset, 4px);
  width: calc(100% - 2 * var(--cds-ib-offset, 4px));
  height: calc(100% - 2 * var(--cds-ib-offset, 4px));
  color: #111;
  transition: color var(--cds-ib-anim, 0.36s) ease-in-out;
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded .cdswerx-button-inner-border-rect {
  stroke: currentColor;
  stroke-width: var(--cds-ib-border-width, 2px);
  stroke-dasharray: 100;
  stroke-dashoffset: 0;
  transition:
    stroke var(--cds-ib-anim, 0.36s) ease-in-out,
    stroke-dashoffset var(--cds-ib-anim, 0.36s) ease-out;
}

/* Draw From Left Point */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--draw-from-left-point .cdswerx-button-inner-border-rect {
  stroke-dashoffset: 100;
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--draw-from-left-point:hover .cdswerx-button-inner-border-rect {
  stroke-dashoffset: 0;
}

/* Draw From Right Point */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--draw-from-right-point .cdswerx-button-inner-border-svg {
  transform: scaleX(-1);
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--draw-from-right-point .cdswerx-button-inner-border-rect {
  stroke-dashoffset: 100;
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--draw-from-right-point:hover .cdswerx-button-inner-border-rect {
  stroke-dashoffset: 0;
}

/* Remove From Left Point */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--remove-from-left-point .cdswerx-button-inner-border-rect {
  stroke-dashoffset: 0;
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--remove-from-left-point:hover .cdswerx-button-inner-border-rect {
  stroke-dashoffset: -100;
}

/* Remove From Right Point */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--remove-from-right-point .cdswerx-button-inner-border-svg {
  transform: scaleX(-1);
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--remove-from-right-point .cdswerx-button-inner-border-rect {
  stroke-dashoffset: 0;
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--remove-from-right-point:hover .cdswerx-button-inner-border-rect {
  stroke-dashoffset: -100;
}

/* Remove To Center (rounded) */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--remove-to-center .cdswerx-button-inner-border {
  top: var(--cds-ib-offset, 4px);
  left: var(--cds-ib-offset, 4px);
  width: calc(100% - 2 * var(--cds-ib-offset, 4px));
  height: calc(100% - 2 * var(--cds-ib-offset, 4px));
  border: var(--cds-ib-border-width, 2px) solid currentColor;
  transition: all var(--cds-ib-anim, 0.3s) cubic-bezier(0.46, 0.03, 0.52, 0.96);
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--remove-to-center:hover .cdswerx-button-inner-border {
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  opacity: 0;
}

/* Move To Outer Edge (rounded) */
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--move-to-outer-edge,
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--move-to-outer-edge {
  overflow: visible;
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--move-to-outer-edge .cdswerx-button-inner-border,
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--move-to-outer-edge .cdswerx-button-inner-border {
  top: var(--cds-ib-offset, 4px);
  left: var(--cds-ib-offset, 4px);
  width: calc(100% - 2 * var(--cds-ib-offset, 4px));
  height: calc(100% - 2 * var(--cds-ib-offset, 4px));
  border: var(--cds-ib-border-width, 2px) solid currentColor;
  transition: all var(--cds-ib-anim, 0.3s) cubic-bezier(0.46, 0.03, 0.52, 0.96);
}

.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--move-to-outer-edge:hover .cdswerx-button-inner-border,
.cdswerx-button-widget.cdswerx-button-inner-border-mode--rounded.cdswerx-button-inner-border-hover--move-to-outer-edge:hover .cdswerx-button-inner-border {
  top: calc(-1 * var(--cds-ib-offset, 4px));
  left: calc(-1 * var(--cds-ib-offset, 4px));
  width: calc(100% + 2 * var(--cds-ib-offset, 4px));
  height: calc(100% + 2 * var(--cds-ib-offset, 4px));
}
