/* Shared utilities are available to Elementor classes and every custom template. */
.willus-font-sans { font-family: var(--willus-font); }
.willus-text-xs { font-size: 12px; }.willus-text-sm { font-size: 14px; }.willus-text-base { font-size: 16px; }.willus-text-lg { font-size: 18px; }.willus-text-xl { font-size: 22px; }
.willus-heading-1, .willus-heading-2, .willus-heading-3, .willus-heading-4 { font-family: var(--willus-font); font-weight: 600; line-height: 1.25; }
.willus-heading-1 { font-size: clamp(32px,4.5vw,64px); }.willus-heading-2 { font-size: clamp(28px,3.5vw,48px); }.willus-heading-3 { font-size: clamp(24px,2.5vw,36px); }.willus-heading-4 { font-size: 20px; }
.willus-text-primary { color: var(--willus-navy); }.willus-text-accent { color: var(--willus-accent); }.willus-text-ink { color: var(--willus-ink); }.willus-text-muted { color: var(--willus-muted); }.willus-text-white { color: #fff; }
.willus-bg-primary { background: var(--willus-navy); }.willus-bg-accent { background: var(--willus-accent); }.willus-bg-white { background: #fff; }.willus-bg-surface { background: var(--willus-surface); }
.willus-text-center { text-align: center; }.willus-font-regular { font-weight: 400; }.willus-font-medium { font-weight: 500; }.willus-font-semibold { font-weight: 600; }.willus-font-bold { font-weight: 700; }
.willus-leading-tight { line-height: 1.25; }.willus-leading-body { line-height: 1.65; }
.willus-flex { display: flex; }.willus-flex-wrap { flex-wrap: wrap; }.willus-items-center { align-items: center; }.willus-justify-between { justify-content: space-between; }.willus-justify-center { justify-content: center; }
.willus-grid-2 { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }.willus-grid-3 { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
.willus-stack { display: flex; flex-direction: column; gap: 16px; }
.willus-gap-2 { gap: 8px; }.willus-gap-3 { gap: 12px; }.willus-gap-4 { gap: 16px; }.willus-gap-6 { gap: 24px; }.willus-gap-8 { gap: 32px; }
.willus-p-4 { padding: 16px; }.willus-p-6 { padding: 24px; }.willus-p-8 { padding: 32px; }.willus-m-0 { margin: 0; }.willus-mb-4 { margin-bottom: 16px; }.willus-mb-6 { margin-bottom: 24px; }.willus-mb-8 { margin-bottom: 32px; }
.willus-rounded-sm { border-radius: 4px; }.willus-rounded-md { border-radius: 8px; }.willus-rounded-lg { border-radius: 16px; }
.willus-hover-lift { transition: translate .2s ease, box-shadow .2s ease; }.willus-hover-lift:hover, .willus-hover-lift:focus-within { translate: 0 -4px; box-shadow: var(--willus-shadow); }
.btn-prime, .btn-sec { --willus-btn-base: var(--willus-navy); --willus-btn-fill: var(--willus-accent); --willus-btn-text: #fff; --willus-btn-hover-text: var(--willus-navy); display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 12px 24px; border: 1px solid var(--willus-btn-base); border-radius: 8px; font: 500 16px/1.3 var(--willus-font); text-decoration: none; cursor: pointer; }
.btn-sec { --willus-btn-base: var(--willus-accent); --willus-btn-fill: var(--willus-navy); --willus-btn-text: var(--willus-navy); --willus-btn-hover-text: #fff; }
:is(.btn-prime,.btn-sec):is(.btn-prime,.btn-sec), #page #content .elementor-button:is(.btn-prime,.btn-sec) { background-color: var(--willus-btn-base); background-image: linear-gradient(var(--willus-btn-fill),var(--willus-btn-fill)); background-repeat: no-repeat; background-position: left center; background-size: 0% 100%; color: var(--willus-btn-text); transition: background-size .35s ease, color .35s ease, box-shadow .2s ease; }
:is(.btn-prime,.btn-sec):hover, :is(.btn-prime,.btn-sec):focus-visible { background-size: 100% 100%; color: var(--willus-btn-hover-text); box-shadow: 0 5px 14px #0002; }
:is(.btn-prime,.btn-sec):focus-visible { outline: 3px solid var(--willus-accent); outline-offset: 4px; }
:is(.btn-prime,.btn-sec):active { }
:is(.btn-prime,.btn-sec):disabled, :is(.btn-prime,.btn-sec)[aria-disabled="true"] { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }
.btn-ghost-light { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 12px 26px; border: 1px solid rgba(255, 255, 255, 0.28); border-radius: 8px; background-image: linear-gradient(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.18)); background-repeat: no-repeat; background-position: left center; background-size: 0% 100%; background-color: rgba(255, 255, 255, 0.06); color: #ffffff; font: 500 15px/1.3 var(--willus-font); text-decoration: none; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); cursor: pointer; transition: background-size .35s ease, background-color .25s ease, border-color .25s ease, color .25s ease, box-shadow .25s ease; }
.btn-ghost-light:hover, .btn-ghost-light:focus-visible { background-size: 100% 100%; background-color: #ffffff; color: var(--willus-navy); border-color: #ffffff; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); }

@media (prefers-reduced-motion: no-preference) {
 .animate-this.willus-reveal-ready { transition: opacity .6s ease-out, translate .6s ease-out, clip-path .6s ease-out, transform .35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow .35s ease, border-color .35s ease; transition-delay: var(--willus-reveal-delay, 0ms); }
 .animate-this.willus-reveal-ready:not(.animated) { opacity: 0; }
 .animate-this.willus-reveal-ready.up:not(.animated) { translate: 0 40px; }
 .animate-this.willus-reveal-ready.right:not(.animated) { translate: 40px 0; }
 .animate-this.willus-reveal-ready.left:not(.animated) { translate: -40px 0; }
 .animate-this.willus-reveal-ready.swipe:not(.animated) { clip-path: inset(0 100% 0 0); }
 .animate-this.willus-reveal-ready.animated { opacity: 1; translate: 0 0; clip-path: inset(0); transition: opacity .6s ease-out, translate .6s ease-out, clip-path .6s ease-out, transform .35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow .35s ease, border-color .35s ease; transition-delay: 0ms; }
 .willus-delay-1 { --willus-reveal-delay: 80ms; }.willus-delay-2 { --willus-reveal-delay: 160ms; }.willus-delay-3 { --willus-reveal-delay: 240ms; }
}
@media (max-width: 767px) { .willus-grid-2, .willus-grid-3 { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .animate-this.willus-reveal-ready { opacity: 1; translate: none; clip-path: none; transition: none; } .willus-hover-lift, :is(.btn-prime,.btn-sec):is(.btn-prime,.btn-sec) { transition: none; transform: none; translate: none; } }
