html {
scroll-behavior: smooth; scroll-padding-top: 88px;
} [data-reveal],
.ub-reveal,
.ub-reveal-up,
.ub-reveal-left,
.ub-reveal-right,
.ub-reveal-zoom,
.ub-reveal-fade {
opacity: 0;
transform: translate3d(0, 14px, 0);
transition:
opacity 900ms cubic-bezier(.22,.61,.36,1),
transform 900ms cubic-bezier(.22,.61,.36,1);
will-change: opacity, transform;
}
[data-reveal="left"],  .ub-reveal-left  { transform: translate3d(-22px, 0, 0); }
[data-reveal="right"], .ub-reveal-right { transform: translate3d( 22px, 0, 0); }
[data-reveal="zoom"],  .ub-reveal-zoom  { transform: scale(.97); }
[data-reveal="fade"],  .ub-reveal-fade  { transform: none; }
[data-reveal].is-visible,
.ub-reveal.is-visible,
.ub-reveal-up.is-visible,
.ub-reveal-left.is-visible,
.ub-reveal-right.is-visible,
.ub-reveal-zoom.is-visible,
.ub-reveal-fade.is-visible {
opacity: 1;
transform: translate3d(0, 0, 0) scale(1);
} [data-stagger] > [data-reveal],
.ub-stagger > .ub-reveal,
.ub-stagger > [class*="ub-reveal-"] { transition-delay: 0ms; }
[data-stagger] > [data-reveal]:nth-child(1),
.ub-stagger > .ub-reveal:nth-child(1),
.ub-stagger > [class*="ub-reveal-"]:nth-child(1)  { transition-delay:  60ms; }
[data-stagger] > [data-reveal]:nth-child(2),
.ub-stagger > .ub-reveal:nth-child(2),
.ub-stagger > [class*="ub-reveal-"]:nth-child(2)  { transition-delay: 140ms; }
[data-stagger] > [data-reveal]:nth-child(3),
.ub-stagger > .ub-reveal:nth-child(3),
.ub-stagger > [class*="ub-reveal-"]:nth-child(3)  { transition-delay: 220ms; }
[data-stagger] > [data-reveal]:nth-child(4),
.ub-stagger > .ub-reveal:nth-child(4),
.ub-stagger > [class*="ub-reveal-"]:nth-child(4)  { transition-delay: 300ms; }
[data-stagger] > [data-reveal]:nth-child(5),
.ub-stagger > .ub-reveal:nth-child(5),
.ub-stagger > [class*="ub-reveal-"]:nth-child(5)  { transition-delay: 380ms; }
[data-stagger] > [data-reveal]:nth-child(6),
.ub-stagger > .ub-reveal:nth-child(6),
.ub-stagger > [class*="ub-reveal-"]:nth-child(6)  { transition-delay: 460ms; }
[data-stagger] > [data-reveal]:nth-child(7),
.ub-stagger > .ub-reveal:nth-child(7),
.ub-stagger > [class*="ub-reveal-"]:nth-child(7)  { transition-delay: 540ms; }
[data-stagger] > [data-reveal]:nth-child(8),
.ub-stagger > .ub-reveal:nth-child(8),
.ub-stagger > [class*="ub-reveal-"]:nth-child(8)  { transition-delay: 620ms; } .hero-collage {
perspective: 1200px;
}
.hero-collage .pic,
.hero-collage .badge {
transition: transform 600ms cubic-bezier(.22,.61,.36,1);
will-change: transform;
}
.hero-collage[data-parallax-ready] .pic,
.hero-collage[data-parallax-ready] .badge { transform:
translate3d(
calc(var(--px, 0) * var(--pf, 1) * 8px),
calc(var(--py, 0) * var(--pf, 1) * 8px + var(--sy, 0px)),
0
);
transition: transform 280ms cubic-bezier(.22,.61,.36,1);
}
.hero-collage .pic.tall  { --pf: 1.6; }
.hero-collage .pic.wide  { --pf: 1.0; }
.hero-collage .pic:not(.tall):not(.wide) { --pf: 1.3; }
.hero-collage .badge     { --pf: 2.0; } .hero-collage .pic img {
transition: transform 14s ease-in-out;
transform: scale(1.04);
}
.hero-collage[data-parallax-ready] .pic:hover img {
transform: scale(1.08);
}  .btn-primary,
.btn-ghost {
transition:
transform 280ms cubic-bezier(.22,.61,.36,1),
box-shadow 280ms cubic-bezier(.22,.61,.36,1),
background-color 200ms ease,
color 200ms ease;
}
.btn-primary:hover { transform: translateY(-2px); }
.btn-primary:active { transform: translateY(0); transition-duration: 80ms; }
.btn-ghost:hover { transform: translateY(-1px); } .btn-primary svg {
transition: transform 320ms cubic-bezier(.22,.61,.36,1);
}
.btn-primary:hover svg { transform: translate3d(3px, -1px, 0); } .schedule-row { transition:
background-color 220ms ease,
opacity 380ms ease,
transform 380ms cubic-bezier(.22,.61,.36,1),
max-height 420ms ease,
margin 380ms ease,
padding 380ms ease;
overflow: hidden;
max-height: 260px;
}
.schedule-row.is-hidden {
opacity: 0;
transform: translateY(-6px);
max-height: 0 !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
border-width: 0 !important;
pointer-events: none;
}
.schedule-tab {
position: relative;
transition: color 220ms ease, background-color 220ms ease, transform 220ms ease;
}
.schedule-tab:hover { transform: translateY(-1px); } .faq details,
.ub-faq details {
transition: background-color 260ms ease;
}
.faq details > summary .plus svg,
.ub-faq details > summary .plus svg {
transition: transform 320ms cubic-bezier(.22,.61,.36,1);
}
.faq details[open] > summary .plus svg,
.ub-faq details[open] > summary .plus svg {
transform: rotate(45deg);
}
.faq details > *:not(summary),
.ub-faq details > *:not(summary) {
animation: ub-faq-slide 380ms cubic-bezier(.22,.61,.36,1);
}
@keyframes ub-faq-slide {
from { opacity: 0; transform: translateY(-4px); }
to   { opacity: 1; transform: translateY(0); }
} .form .field input,
.form .field select,
.form .field textarea {
transition:
border-color 220ms ease,
box-shadow 220ms ease,
background-color 220ms ease;
}
.form .field input:focus,
.form .field select:focus,
.form .field textarea:focus {
outline: none;
border-color: var(--accent, #8AAD3A);
box-shadow: 0 0 0 4px rgba(138, 173, 58, 0.12);
}
.form .field label {
transition: color 220ms ease, transform 220ms ease;
transform-origin: left center;
}
.form .field:focus-within label {
color: var(--accent, #8AAD3A);
} .success-msg {
animation: ub-success-pop 540ms cubic-bezier(.22,1.36,.36,1);
}
@keyframes ub-success-pop {
0%   { opacity: 0; transform: translateY(8px) scale(.96); }
100% { opacity: 1; transform: translateY(0) scale(1); }
} .hero-eyebrow::before {
transform-origin: left center;
animation: ub-eyebrow-grow 1400ms cubic-bezier(.22,.61,.36,1) 200ms both;
}
@keyframes ub-eyebrow-grow {
from { transform: scaleX(0); opacity: 0; }
to   { transform: scaleX(1); opacity: 1; }
} .hero-title .accent {
display: inline-block;
animation: ub-accent-rise 1100ms cubic-bezier(.22,.61,.36,1) 350ms both;
}
@keyframes ub-accent-rise {
from { opacity: 0; transform: translateY(28px); }
to   { opacity: 1; transform: translateY(0); }
} .band {
position: relative;
overflow: hidden;
}
.band::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(
100deg,
transparent 30%,
rgba(255,255,255,.18) 50%,
transparent 70%
);
transform: translateX(-110%);
pointer-events: none;
}
.band.is-visible::after {
animation: ub-shine 2200ms cubic-bezier(.22,.61,.36,1) 200ms;
}
@keyframes ub-shine {
to { transform: translateX(110%); }
} .testimonial.is-visible .quotemark {
animation: ub-quote-pop 900ms cubic-bezier(.22,1.18,.36,1) 100ms both;
}
.testimonial.is-visible .quotemark-close {
animation-delay: 300ms;
}
@keyframes ub-quote-pop {
from { opacity: 0; transform: scale(.6) rotate(-6deg); }
to   { opacity: 1; transform: scale(1) rotate(0); }
}  .elementor-widget-heading.hero-eyebrow .elementor-heading-title {
font-family: var(--font-sans);
font-size: 13px;
letter-spacing: var(--track-caps);
text-transform: uppercase;
color: var(--accent);
display: inline-flex;
align-items: center;
gap: 10px;
}
.elementor-widget-heading.hero-eyebrow .elementor-heading-title::before {
content: "";
display: inline-block;
width: 28px; height: 1.5px;
background: var(--accent);
transform-origin: left center;
animation: ub-eyebrow-grow 1400ms cubic-bezier(.22,.61,.36,1) 200ms both;
}
.elementor-widget-heading.hero-title .elementor-heading-title {
font-family: var(--font-script);
color: var(--ink);
font-size: clamp(60px, 7.5vw, 118px);
line-height: 1.1;
margin: 0 0 32px;
font-weight: 400;
letter-spacing: .005em;
}
.elementor-widget-heading.script-title .elementor-heading-title {
font-family: var(--font-script);
color: var(--accent);
font-size: clamp(44px, 5vw, 64px);
line-height: 1.25;
font-weight: 400;
margin: 0 0 24px;
}
.elementor-widget-heading.h-title .elementor-heading-title {
font-family: var(--font-sans);
font-size: clamp(28px, 3vw, 40px);
font-weight: 400;
letter-spacing: .015em;
color: var(--ink);
line-height: 1.15;
margin: 0 0 18px;
}
.elementor-widget-heading.eyebrow .elementor-heading-title {
display: inline-block;
font-family: var(--font-sans);
font-size: 12px;
letter-spacing: var(--track-caps);
text-transform: uppercase;
color: var(--accent);
margin-bottom: 24px;
white-space: nowrap;
}
.elementor-widget-heading.role .elementor-heading-title {
font-family: var(--font-sans);
color: var(--fg3);
font-size: 14px;
letter-spacing: var(--track-wide);
margin-bottom: 24px;
} .elementor-widget-text-editor > .elementor-widget-container > p { margin: 0 0 14px; } .elementor-widget-html > .elementor-widget-container > a.btn { display: inline-flex; align-items: center; gap: 10px; } .ub-parallax {
position: relative;
perspective: 1200px;
}
.ub-parallax-layer {
will-change: transform;
transition: transform 280ms cubic-bezier(.22,.61,.36,1);
}
.ub-parallax[data-ub-parallax-ready] .ub-parallax-layer {
transition: transform 240ms cubic-bezier(.22,.61,.36,1);
} .ub-filter {
display: flex;
gap: 12px;
flex-wrap: wrap;
justify-content: center;
margin-bottom: 24px;
}
.ub-filter-tab {
appearance: none;
background: transparent;
border: 1px solid rgba(0,0,0,.14);
color: inherit;
padding: 10px 20px;
border-radius: 999px;
cursor: pointer;
font: inherit;
font-size: 14px;
letter-spacing: .02em;
transition: background-color 220ms ease, border-color 220ms ease, color 220ms ease, transform 220ms ease;
}
.ub-filter-tab:hover { transform: translateY(-1px); }
.ub-filter-tab.is-active {
background: var(--accent, #8AAD3A);
border-color: var(--accent, #8AAD3A);
color: #fff;
}
.ub-filter-target { display: block; }
.ub-filter-item {
overflow: hidden;
transition:
opacity 380ms ease,
transform 380ms cubic-bezier(.22,.61,.36,1),
max-height 420ms ease,
margin 380ms ease,
padding 380ms ease;
max-height: 600px;
}
.ub-filter-item.is-hidden {
opacity: 0;
transform: translateY(-6px);
max-height: 0 !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
border-width: 0 !important;
pointer-events: none;
} [data-tilt],
.ub-tilt {
transform-style: preserve-3d; transition:
transform 320ms cubic-bezier(.22,.61,.36,1),
box-shadow 320ms cubic-bezier(.22,.61,.36,1);
}
[data-tilt-ready] { --tilt: 6deg; transform: perspective(900px)
rotateY(calc((var(--mx, 0.5) - 0.5) * var(--tilt) * var(--in, 0)))
rotateX(calc((0.5 - var(--my, 0.5)) * var(--tilt) * var(--in, 0)))
translate3d(0, calc(-4px * var(--in, 0)), 0);
} [data-spot],
.ub-spot {
position: relative;
isolation: isolate;
}
[data-spot]::after,
.ub-spot::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
border-radius: inherit;
background: radial-gradient(
260px circle at calc(var(--mx, 0.5) * 100%) calc(var(--my, 0.5) * 100%),
rgba(255, 255, 255, 0.22),
rgba(255, 255, 255, 0) 60%
);
opacity: var(--in, 0);
transition: opacity 360ms ease;
mix-blend-mode: soft-light;
z-index: 2;
} [data-spot].rose::after,
.ub-spot.rose::after,
.course-row.rose[data-spot]::after,
.course-row.rose.ub-spot::after {
background: radial-gradient(
260px circle at calc(var(--mx, 0.5) * 100%) calc(var(--my, 0.5) * 100%),
rgba(205, 103, 150, 0.30),
rgba(205, 103, 150, 0) 60%
);
mix-blend-mode: screen;
} .schedule [data-spot]::after,
.schedule .ub-spot::after,
[data-spot].dark::after,
.ub-spot.dark::after {
background: radial-gradient(
260px circle at calc(var(--mx, 0.5) * 100%) calc(var(--my, 0.5) * 100%),
rgba(184, 217, 106, 0.20),
rgba(184, 217, 106, 0) 60%
);
mix-blend-mode: screen;
}  @media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
[data-reveal],
[data-reveal].is-visible,
.ub-reveal, .ub-reveal.is-visible,
[class*="ub-reveal-"],
[class*="ub-reveal-"].is-visible {
opacity: 1 !important;
transform: none !important;
transition: none !important;
}
[data-stagger] > [data-reveal],
.ub-stagger > .ub-reveal,
.ub-stagger > [class*="ub-reveal-"] { transition-delay: 0ms !important; }
.hero-collage[data-parallax-ready] .pic,
.hero-collage[data-parallax-ready] .badge {
transform: none !important;
}
.hero-collage .pic img { transform: none !important; }
.hero-eyebrow::before { animation: none !important; transform: scaleX(1); opacity: 1; }
.hero-title .accent   { animation: none !important; opacity: 1; transform: none; }
.band::after          { display: none !important; }
.testimonial .quotemark { animation: none !important; opacity: 1; transform: none; } .btn-primary:hover,
.btn-primary:active,
.btn-ghost:hover,
.schedule-tab:hover { transform: none !important; }
[data-tilt][data-tilt-ready],
.ub-tilt[data-tilt-ready] { transform: none !important; }
[data-spot]::after,
.ub-spot::after { display: none !important; }
.ub-parallax-layer { transform: none !important; transition: none !important; }
.ub-filter-tab:hover { transform: none !important; }
}