/* Element designs, text styles and motion for builder elements — loaded by the website and the app, so a design looks the
   same in both. One class per choice (cms/designs.py lists them): sk-* designs, fs/fw/ls/tx/lh text styles, lp-* loops,
   dl-* delays, hv-* hovers, rv-* entrances. Site markup uses .blk/.inner/.col, the app .cms-blk/.cms-in/.cms-col. */
:is(.blk, .cms-blk, .col, .cms-col) { --sk-brand: var(--brand, var(--primary)); --sk-accent: var(--accent, #818cf8); --sk-ink: var(--ink, var(--fg));
  --sk-surface: var(--surface, var(--panel)); --sk-line: var(--line); --sk-grad: linear-gradient(120deg, var(--sk-brand), var(--sk-accent)); }

/* ── titles ── */
.sk-gradient-text :is(h1, h2, h3, h4, .h, .cms-h) { background: var(--sk-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.sk-underline-grow :is(h1, h2, h3, .h, .cms-h) { position: relative; padding-bottom: .35em; }
.sk-underline-grow :is(h1, h2, h3, .h, .cms-h)::after { content: ""; position: absolute; left: 0; bottom: 0; height: .14em; min-height: 3px; width: 0; border-radius: 99px;
  background: var(--sk-grad); animation: sk-grow 1.1s .2s cubic-bezier(.2, .8, .2, 1) forwards; }
:is(.ta-center, .page-header) .sk-underline-grow :is(h1, h2, h3, .h)::after, .sk-underline-grow.ta-center :is(h1, h2, h3, .h, .cms-h)::after { left: 50%; transform: translateX(-50%); }
@keyframes sk-grow { to { width: min(120px, 60%); } }
.sk-marker :is(h1, h2, h3, .h, .cms-h) { display: inline; padding: 0 .12em; background: linear-gradient(transparent 58%, color-mix(in srgb, var(--sk-accent) 38%, transparent) 58%, color-mix(in srgb, var(--sk-accent) 38%, transparent) 92%, transparent 92%);
  -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.sk-outline-text :is(h1, h2, h3, .h, .cms-h) { color: transparent; -webkit-text-stroke: 1.6px var(--sk-brand); letter-spacing: .01em; }
.sk-shadow-3d :is(h1, h2, h3, .h, .cms-h) { text-shadow: 1px 1px 0 color-mix(in srgb, var(--sk-brand) 55%, transparent), 2px 2px 0 color-mix(in srgb, var(--sk-brand) 40%, transparent),
  3px 3px 0 color-mix(in srgb, var(--sk-accent) 30%, transparent), 6px 8px 18px rgb(0 0 0 / .18); }
.sk-shine-text :is(h1, h2, h3, .h, .cms-h) { background: linear-gradient(100deg, var(--sk-ink) 40%, var(--sk-brand) 50%, var(--sk-ink) 60%) 0 0 / 250% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent; animation: sk-shine 4.5s ease-in-out infinite; }
@keyframes sk-shine { 0%, 30% { background-position: 120% 0; } 70%, 100% { background-position: -20% 0; } }
.sk-accent-bar :is(h1, h2, h3, .h, .cms-h) { border-left: .18em solid var(--sk-brand); padding-left: .55em; border-image: var(--sk-grad) 1; }
.sk-neon :is(h1, h2, h3, .h, .cms-h) { color: #fff; text-shadow: 0 0 6px var(--sk-brand), 0 0 18px var(--sk-brand), 0 0 38px var(--sk-accent); }

/* ── text ── */
.sk-dropcap :is(.prose, .cms-prose, .custom-html) > p:first-of-type::first-letter { float: left; font-size: 3.4em; line-height: .86; font-weight: 800; margin: .05em .12em 0 0;
  background: var(--sk-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.sk-lead-serif :is(.prose, .cms-prose, .custom-html, p) { font-family: Georgia, "Iowan Old Style", "Times New Roman", serif; font-size: 1.12em; line-height: 1.75; }
.sk-fancy-links a:not(.btn) { color: var(--sk-brand); text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 0 2px no-repeat; transition: background-size .35s; }
.sk-fancy-links a:not(.btn):hover { background-size: 100% 2px; }
.sk-quote-mark :is(blockquote, .quote, .prose, .cms-prose) { position: relative; padding-top: .9em; }
.sk-quote-mark :is(blockquote, .quote, .prose, .cms-prose)::before { content: "“"; position: absolute; top: -.25em; left: -.05em; font: 800 4.2em/1 Georgia, serif; color: var(--sk-brand); opacity: .28; }
@media (min-width: 900px) { .sk-two-columns :is(.prose, .cms-prose, .custom-html) { columns: 2; column-gap: 2.6em; } .sk-two-columns :is(.prose, .cms-prose) :is(h2, h3) { column-span: all; } }
.sk-note-card > :is(.inner, .cms-in) { padding: 1.2em 1.4em; border-radius: 16px; background: color-mix(in srgb, var(--sk-brand) 6%, var(--sk-surface)); border-left: 4px solid var(--sk-brand); }

/* ── buttons ── */
.sk-btn-glow .btn:is(.btn-primary, .primary) { animation: sk-btnglow 2.4s ease-in-out infinite; }
@keyframes sk-btnglow { 50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--sk-brand) 20%, transparent), 0 10px 30px color-mix(in srgb, var(--sk-brand) 45%, transparent); } }
.sk-btn-shine .btn { position: relative; overflow: hidden; isolation: isolate; }
.sk-btn-shine .btn::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(110deg, transparent 30%, rgb(255 255 255 / .55) 50%, transparent 70%); transform: translateX(-120%); transition: transform .7s; }
.sk-btn-shine .btn:hover::after { transform: translateX(120%); }
.sk-btn-3d .btn { box-shadow: 0 5px 0 color-mix(in srgb, var(--sk-brand) 60%, #000), 0 10px 18px rgb(0 0 0 / .18); transform: translateY(-2px); transition: transform .12s, box-shadow .12s; }
.sk-btn-3d .btn:active { transform: translateY(3px); box-shadow: 0 1px 0 color-mix(in srgb, var(--sk-brand) 60%, #000); }
.sk-btn-fill .btn { background: transparent !important; color: var(--sk-brand) !important; border: 2px solid var(--sk-brand) !important; background-image: linear-gradient(var(--sk-brand), var(--sk-brand)) !important;
  background-size: 0 100% !important; background-repeat: no-repeat !important; transition: background-size .35s, color .35s; box-shadow: none !important; }
.sk-btn-fill .btn:hover { background-size: 100% 100% !important; color: #fff !important; }
.sk-btn-flow .btn:is(.btn-primary, .primary) { background: linear-gradient(110deg, var(--sk-brand), var(--sk-accent), #22d3ee, var(--sk-brand)) 0 0 / 300% 100% !important; color: #fff !important;
  animation: sk-flow 5s linear infinite; }
@keyframes sk-flow { to { background-position: 300% 0; } }
.sk-btn-arrow .btn { border-radius: 999px !important; padding-inline: 1.4em; }
.sk-btn-arrow .btn .arr, .sk-btn-arrow .btn .ic { transition: transform .25s; } .sk-btn-arrow .btn:hover :is(.arr, .ic) { transform: translateX(5px); }
.sk-btn-neon .btn { background: transparent !important; color: var(--sk-brand) !important; border: 2px solid var(--sk-brand) !important;
  box-shadow: 0 0 8px color-mix(in srgb, var(--sk-brand) 60%, transparent), inset 0 0 8px color-mix(in srgb, var(--sk-brand) 35%, transparent) !important; text-shadow: 0 0 6px color-mix(in srgb, var(--sk-brand) 60%, transparent); }

/* ── pictures ── */
.sk-img-polaroid img:not(.logo-img) { padding: 10px 10px 34px; background: #fff; border-radius: 4px !important; box-shadow: 0 16px 40px rgb(15 23 42 / .22); transform: rotate(-2deg); transition: transform .35s; }
.sk-img-polaroid img:not(.logo-img):hover { transform: rotate(0) scale(1.02); }
.sk-img-tilt :is(img, .fig, .cms-fig) { transition: transform .45s cubic-bezier(.2, .8, .2, 1), box-shadow .45s; transform: perspective(900px); }
.sk-img-tilt :is(img, .fig, .cms-fig):hover { transform: perspective(900px) rotateX(6deg) rotateY(-9deg) scale(1.02); box-shadow: 18px 24px 50px rgb(15 23 42 / .25); }
.sk-img-zoom :is(.fig, figure, .img-card, .ic-media, .mt-media, .cms-fig, .gallery a) { overflow: hidden; }
.sk-img-zoom img { transition: transform .8s cubic-bezier(.2, .8, .2, 1); } .sk-img-zoom :is(figure, .fig, .img-card, .ic-media, .mt-media, .cms-fig, .gallery a):hover img { transform: scale(1.08); }
.sk-img-grayscale img { filter: grayscale(1) contrast(1.05); transition: filter .5s; } .sk-img-grayscale img:hover, .sk-img-grayscale :hover > img { filter: none; }
.sk-img-blob img:not(.logo-img) { border-radius: 42% 58% 63% 37% / 41% 44% 56% 59% !important; animation: sk-blob 12s ease-in-out infinite alternate; }
@keyframes sk-blob { 50% { border-radius: 58% 42% 38% 62% / 52% 61% 39% 48%; } 100% { border-radius: 37% 63% 51% 49% / 37% 35% 65% 63%; } }
.sk-img-offset :is(.fig, figure, .mt-media, .cms-fig) { position: relative; z-index: 0; }
.sk-img-offset :is(.fig, figure, .mt-media, .cms-fig)::before { content: ""; position: absolute; inset: 14px -14px -14px 14px; z-index: -1; border-radius: 20px; border: 3px solid var(--sk-brand);
  background: color-mix(in srgb, var(--sk-brand) 8%, transparent); }
.sk-img-float img:not(.logo-img) { animation: sk-floaty 6s ease-in-out infinite; box-shadow: 0 24px 40px -18px rgb(15 23 42 / .45); }
@keyframes sk-floaty { 50% { transform: translateY(-10px); } }
.sk-img-duotone :is(.fig, figure, .img-card, .ic-media, .mt-media, .cms-fig, .gallery a) { position: relative; isolation: isolate; }
.sk-img-duotone img { filter: grayscale(1) contrast(1.1); }
.sk-img-duotone :is(.fig, figure, .img-card, .ic-media, .mt-media, .cms-fig, .gallery a)::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit;
  background: var(--sk-grad); mix-blend-mode: color; opacity: .85; }
.sk-img-glass img:not(.logo-img) { padding: 10px; border-radius: 24px !important; background: rgb(255 255 255 / .35); backdrop-filter: blur(8px); border: 1px solid rgb(255 255 255 / .55);
  box-shadow: 0 20px 50px rgb(15 23 42 / .18), inset 0 1px 0 rgb(255 255 255 / .6); }

/* ── cards (feature, picture, team, price, step, number, icon boxes, columns) ── */
.sk-cards-lift :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .tl-card, .cms-card, .cms-iconbox) { transition: transform .3s cubic-bezier(.2, .8, .2, 1), box-shadow .3s; }
.sk-cards-lift :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .tl-card, .cms-card, .cms-iconbox):hover { transform: translateY(-8px); box-shadow: 0 22px 44px -16px rgb(15 23 42 / .35); }
.sk-cards-gradient-border :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .tl-card, .cms-card, .cms-iconbox) { position: relative; border-color: transparent !important; isolation: isolate; }
.sk-cards-gradient-border :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .tl-card, .cms-card, .cms-iconbox)::before { content: ""; position: absolute; inset: -2px; z-index: -1; border-radius: inherit;
  background: conic-gradient(from var(--sk-angle, 0deg), var(--sk-brand), var(--sk-accent), #22d3ee, var(--sk-brand)); animation: sk-spin-angle 6s linear infinite; }
.sk-cards-gradient-border :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .tl-card, .cms-card, .cms-iconbox)::after { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: var(--sk-surface); }
@property --sk-angle { syntax: "<angle>"; initial-value: 0deg; inherits: false; }
@keyframes sk-spin-angle { to { --sk-angle: 360deg; } }
.sk-cards-glass :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .tl-card, .cms-card, .cms-iconbox) { background: color-mix(in srgb, var(--sk-surface) 55%, transparent) !important;
  backdrop-filter: blur(14px) saturate(140%); border: 1px solid rgb(255 255 255 / .35) !important; box-shadow: 0 10px 30px rgb(15 23 42 / .1); }
.sk-cards-accent-top :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .tl-card, .cms-card, .cms-iconbox) { border-top: 4px solid transparent !important; border-image: var(--sk-grad) 1; }
.sk-cards-icon-pop :is(.card-ic, .cms-card-ic, .ic, .icon) { transition: transform .4s cubic-bezier(.34, 1.56, .64, 1); }
.sk-cards-icon-pop :is(.card, .icon-box, .step, .stat, .cms-card, .cms-iconbox, li):hover :is(.card-ic, .cms-card-ic, .ic, .icon) { transform: translateY(-4px) scale(1.18) rotate(-6deg); }
.sk-cards-stagger :is(.cards, .tcards, .plans, .steps, .stats, .grid, .cms-cards, .cms-steps, .cms-stats) > * { animation: sk-rise .7s cubic-bezier(.2, .8, .2, 1) both; }
.sk-cards-stagger :is(.cards, .tcards, .plans, .steps, .stats, .grid, .cms-cards, .cms-steps, .cms-stats) > :nth-child(2) { animation-delay: .12s; }
.sk-cards-stagger :is(.cards, .tcards, .plans, .steps, .stats, .grid, .cms-cards, .cms-steps, .cms-stats) > :nth-child(3) { animation-delay: .24s; }
.sk-cards-stagger :is(.cards, .tcards, .plans, .steps, .stats, .grid, .cms-cards, .cms-steps, .cms-stats) > :nth-child(4) { animation-delay: .36s; }
.sk-cards-stagger :is(.cards, .tcards, .plans, .steps, .stats, .grid, .cms-cards, .cms-steps, .cms-stats) > :nth-child(n+5) { animation-delay: .48s; }
@keyframes sk-rise { from { opacity: 0; transform: translateY(24px); } }
.sk-cards-spotlight :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .cms-card, .cms-iconbox) { background-image: radial-gradient(400px 200px at 50% -40%, color-mix(in srgb, var(--sk-brand) 0%, transparent), transparent) !important;
  transition: background-image .4s; }
.sk-cards-spotlight :is(.card, .tcard, .plan, .img-card, .person, .step, .stat, .icon-box, .cms-card, .cms-iconbox):hover { background-image: radial-gradient(400px 220px at 50% -30%, color-mix(in srgb, var(--sk-brand) 18%, transparent), transparent) !important; }
.sk-cards-numbered :is(.cards, .tcards, .grid, .cms-cards) { counter-reset: skn; }
.sk-cards-numbered :is(.card, .tcard, .img-card, .cms-card) { position: relative; counter-increment: skn; }
.sk-cards-numbered :is(.card, .tcard, .img-card, .cms-card)::before { content: counter(skn, decimal-leading-zero); position: absolute; top: 12px; right: 16px; font: 900 2.2rem/1 var(--font, system-ui);
  background: var(--sk-grad); -webkit-background-clip: text; background-clip: text; color: transparent; opacity: .35; }

/* ── lists (icon lists, FAQ, accordion, timeline, steps) ── */
.sk-list-bubbles :is(.ilist, .cms-ilist) li > :is(svg, .ic):first-child { box-sizing: content-box; padding: 6px; border-radius: 50%; background: var(--sk-brand); color: #fff; }
.sk-list-dividers :is(.ilist, .cms-ilist) li, .sk-list-dividers :is(.faq-item, .acc-item, .tl-card) { border-bottom: 1px solid var(--sk-line); padding-bottom: .7em; }
.sk-list-cards :is(.ilist, .cms-ilist) li, .sk-list-cards :is(.faq-item, .acc-item) { padding: .8em 1em; border-radius: 14px; background: var(--sk-surface); border: 1px solid var(--sk-line);
  box-shadow: 0 2px 8px rgb(15 23 42 / .05); margin-bottom: .5em; list-style: none; }

/* ── sections ── */
.sk-sec-wave, .sk-sec-slant { position: relative; }
.sk-sec-wave { padding-bottom: calc(48px + 3vw); }
.sk-sec-wave::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: calc(18px + 3vw); pointer-events: none; background: var(--bg);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0 60c150 40 300 40 450 0s300-40 450 0 300 40 300 40v20H0z'/%3E%3C/svg%3E") 0 100% / 100% 100% no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0 60c150 40 300 40 450 0s300-40 450 0 300 40 300 40v20H0z'/%3E%3C/svg%3E") 0 100% / 100% 100% no-repeat; }
.sk-sec-slant { clip-path: polygon(0 0, 100% 0, 100% calc(100% - 4vw), 0 100%); padding-bottom: calc(4vw + 48px); }
.sk-sec-blobs { position: relative; isolation: isolate; overflow: hidden; }
.sk-sec-blobs::before, .sk-sec-blobs::after { content: ""; position: absolute; z-index: -1; width: 46vmax; height: 46vmax; border-radius: 50%; filter: blur(60px); opacity: .32; pointer-events: none; }
.sk-sec-blobs::before { top: -18vmax; left: -12vmax; background: var(--sk-brand); animation: sk-drift 18s ease-in-out infinite alternate; }
.sk-sec-blobs::after { bottom: -20vmax; right: -14vmax; background: var(--sk-accent); animation: sk-drift 22s ease-in-out infinite alternate-reverse; }
@keyframes sk-drift { to { transform: translate(8vmax, 6vmax) scale(1.15); } }
.sk-sec-dots { position: relative; isolation: isolate; overflow: hidden; }
.sk-sec-dots::before { content: ""; position: absolute; inset: -50%; z-index: -1; pointer-events: none; opacity: .35;
  background-image: radial-gradient(color-mix(in srgb, var(--sk-brand) 70%, transparent) 1.5px, transparent 2px), radial-gradient(color-mix(in srgb, var(--sk-accent) 60%, transparent) 1px, transparent 1.5px);
  background-size: 46px 46px, 74px 74px; animation: sk-dots 40s linear infinite; }
@keyframes sk-dots { to { transform: translate(46px, -74px); } }
.sk-sec-flow { background: linear-gradient(120deg, color-mix(in srgb, var(--sk-brand) 18%, transparent), color-mix(in srgb, var(--sk-accent) 18%, transparent), color-mix(in srgb, #22d3ee 16%, transparent), color-mix(in srgb, var(--sk-brand) 18%, transparent)) 0 0 / 300% 300%;
  animation: sk-flowbg 16s ease infinite; }
@keyframes sk-flowbg { 50% { background-position: 100% 100%; } }
.sk-sec-grid { position: relative; isolation: isolate; }
.sk-sec-grid::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(var(--sk-line) 1px, transparent 1px) 0 0 / 44px 44px, linear-gradient(90deg, var(--sk-line) 1px, transparent 1px) 0 0 / 44px 44px;
  -webkit-mask: radial-gradient(ellipse at center, #000 30%, transparent 75%); mask: radial-gradient(ellipse at center, #000 30%, transparent 75%); }
.sk-sec-spotlight { background-image: radial-gradient(900px 420px at 50% -10%, color-mix(in srgb, var(--sk-brand) 22%, transparent), transparent 70%) !important; }
.sk-sec-glow-border > :is(.inner, .cms-in), .sk-sec-glow-border:is(.col, .cms-col) { border-radius: 24px; border: 1px solid color-mix(in srgb, var(--sk-brand) 45%, transparent);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--sk-brand) 10%, transparent), 0 0 40px color-mix(in srgb, var(--sk-brand) 22%, transparent); padding: clamp(18px, 3vw, 36px); }

/* ── text styles ── */
:is(.blk, .cms-blk, .col, .cms-col).fs-sm :is(h1, h2, h3, .h, .cms-h) { font-size: clamp(1.25rem, 2vw, 1.6rem); }
:is(.blk, .cms-blk, .col, .cms-col).fs-md :is(h1, h2, h3, .h, .cms-h) { font-size: clamp(1.6rem, 2.8vw, 2.2rem); }
:is(.blk, .cms-blk, .col, .cms-col).fs-lg :is(h1, h2, h3, .h, .cms-h) { font-size: clamp(2rem, 3.8vw, 3rem); }
:is(.blk, .cms-blk, .col, .cms-col).fs-xl :is(h1, h2, h3, .h, .cms-h) { font-size: clamp(2.5rem, 5.2vw, 4rem); line-height: 1.08; }
:is(.blk, .cms-blk, .col, .cms-col).fs-display :is(h1, h2, h3, .h, .cms-h) { font-size: clamp(2.9rem, 7vw, 5.4rem); line-height: 1.02; letter-spacing: -.03em; }
:is(.blk, .cms-blk, .col, .cms-col).fs-sm :is(p, li, .lead, .prose) { font-size: .92rem; }
:is(.blk, .cms-blk, .col, .cms-col).fs-lg :is(p, li, .lead, .prose), :is(.blk, .cms-blk, .col, .cms-col).fs-xl :is(p, li, .lead, .prose) { font-size: 1.14rem; }
.fw-400 :is(h1, h2, h3, h4, .h, .cms-h) { font-weight: 400; } .fw-500 :is(h1, h2, h3, h4, .h, .cms-h) { font-weight: 500; } .fw-600 :is(h1, h2, h3, h4, .h, .cms-h) { font-weight: 600; }
.fw-700 :is(h1, h2, h3, h4, .h, .cms-h) { font-weight: 700; } .fw-800 :is(h1, h2, h3, h4, .h, .cms-h) { font-weight: 800; } .fw-900 :is(h1, h2, h3, h4, .h, .cms-h) { font-weight: 900; }
.ls-tight :is(h1, h2, h3, h4, .h, .cms-h) { letter-spacing: -.035em; } .ls-wide :is(h1, h2, h3, h4, .h, .cms-h, .eyebrow) { letter-spacing: .04em; } .ls-wider :is(h1, h2, h3, h4, .h, .cms-h, .eyebrow) { letter-spacing: .12em; }
.tx-upper :is(h1, h2, h3, h4, .h, .cms-h) { text-transform: uppercase; } .tx-capitalize :is(h1, h2, h3, h4, .h, .cms-h) { text-transform: capitalize; }
.lh-tight :is(p, li, .prose, .lead) { line-height: 1.35; } .lh-relaxed :is(p, li, .prose, .lead) { line-height: 1.85; }

/* ── more entrances (start state; .in = visible) ── */
.js :is(.rv-bounce-in), .js-anim .cms-rv.rv-bounce-in { transform: scale(.82); transition-timing-function: cubic-bezier(.34, 1.56, .64, 1) !important; }
.js .rv-rotate-in, .js-anim .cms-rv.rv-rotate-in { transform: rotate(-6deg) translateY(30px); transform-origin: left bottom; }
.js .rv-drop, .js-anim .cms-rv.rv-drop { transform: translateY(-46px); transition-timing-function: cubic-bezier(.34, 1.4, .64, 1) !important; }
.js .rv-unfold, .js-anim .cms-rv.rv-unfold { transform: scaleY(.4); transform-origin: top; }
.js .rv-reveal, .js-anim .cms-rv.rv-reveal { clip-path: inset(0 100% 0 0); opacity: 1 !important; transition-property: clip-path !important; }
.js .rv-reveal.in, .js-anim .cms-rv.rv-reveal.in { clip-path: inset(0 0 0 0); }
.js .rv-swing, .js-anim .cms-rv.rv-swing { transform: perspective(900px) rotateY(28deg); transform-origin: left center; }
.js :is(.rv-bounce-in, .rv-rotate-in, .rv-drop, .rv-unfold, .rv-swing).in, .js-anim .cms-rv:is(.rv-bounce-in, .rv-rotate-in, .rv-drop, .rv-unfold, .rv-swing).in { transform: none; }
.dl-100 { transition-delay: .1s !important; } .dl-200 { transition-delay: .2s !important; } .dl-300 { transition-delay: .3s !important; }
.dl-500 { transition-delay: .5s !important; } .dl-800 { transition-delay: .8s !important; }
.is-preview .rv-reveal { clip-path: none !important; }

/* ── keeps moving (on the content, so it never fights the entrance) ── */
.lp-float > :is(.inner, .cms-in), .lp-float:is(.col, .cms-col) { animation: sk-floaty 5s ease-in-out infinite; }
.lp-pulse > :is(.inner, .cms-in), .lp-pulse:is(.col, .cms-col) { animation: sk-pulse 2.6s ease-in-out infinite; }
.lp-bounce > :is(.inner, .cms-in), .lp-bounce:is(.col, .cms-col) { animation: sk-bounce 2.2s cubic-bezier(.28, .84, .42, 1) infinite; }
.lp-wiggle > :is(.inner, .cms-in), .lp-wiggle:is(.col, .cms-col) { animation: sk-wiggle 3.5s ease-in-out infinite; }
.lp-spin > :is(.inner, .cms-in) :is(svg, img):first-of-type, .lp-spin:is(.col, .cms-col) :is(svg, img):first-of-type { animation: sk-spin 14s linear infinite; }
.lp-glow > :is(.inner, .cms-in), .lp-glow:is(.col, .cms-col) { animation: sk-glow 2.8s ease-in-out infinite; border-radius: 18px; }
.lp-heartbeat > :is(.inner, .cms-in), .lp-heartbeat:is(.col, .cms-col) { animation: sk-heart 2.4s ease-in-out infinite; }
.lp-shimmer > :is(.inner, .cms-in), .lp-shimmer:is(.col, .cms-col) { position: relative; overflow: hidden; }
.lp-shimmer > :is(.inner, .cms-in)::after, .lp-shimmer:is(.col, .cms-col)::after { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(110deg, transparent 35%, rgb(255 255 255 / .35) 50%, transparent 65%) 0 0 / 250% 100%; animation: sk-shimmer 3.5s ease-in-out infinite; }
@keyframes sk-pulse { 50% { transform: scale(1.025); } }
@keyframes sk-bounce { 0%, 60%, 100% { transform: translateY(0); } 30% { transform: translateY(-10px); } 45% { transform: translateY(-3px); } }
@keyframes sk-wiggle { 0%, 80%, 100% { transform: rotate(0); } 84% { transform: rotate(-2.5deg); } 88% { transform: rotate(2.5deg); } 92% { transform: rotate(-1.5deg); } 96% { transform: rotate(1deg); } }
@keyframes sk-spin { to { transform: rotate(360deg); } }
@keyframes sk-glow { 50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--sk-brand) 14%, transparent), 0 0 36px color-mix(in srgb, var(--sk-brand) 30%, transparent); } }
@keyframes sk-heart { 0%, 40%, 100% { transform: scale(1); } 10%, 30% { transform: scale(1.04); } 20% { transform: scale(.99); } }
@keyframes sk-shimmer { 0%, 30% { background-position: 130% 0; } 80%, 100% { background-position: -30% 0; } }

/* ── more hovers ── */
:is(.hv-tilt, .hv-shine, .hv-brighten, .hv-rotate, .hv-shadow, .hv-border) > :is(.inner, .cms-in), :is(.hv-tilt, .hv-shine, .hv-brighten, .hv-rotate, .hv-shadow, .hv-border):is(.col, .cms-col) {
  transition: transform .35s cubic-bezier(.2, .8, .2, 1), box-shadow .35s, filter .35s, outline-color .35s; }
.hv-tilt:hover > :is(.inner, .cms-in), .hv-tilt:is(.col, .cms-col):hover { transform: perspective(900px) rotateX(3deg) rotateY(-4deg); }
.hv-brighten:hover > :is(.inner, .cms-in), .hv-brighten:is(.col, .cms-col):hover { filter: brightness(1.08) saturate(1.15); }
.hv-rotate:hover > :is(.inner, .cms-in), .hv-rotate:is(.col, .cms-col):hover { transform: rotate(-1.2deg) scale(1.01); }
.hv-shadow:hover > :is(.inner, .cms-in), .hv-shadow:is(.col, .cms-col):hover { box-shadow: 0 28px 60px -20px rgb(15 23 42 / .45); }
.hv-border > :is(.inner, .cms-in), .hv-border:is(.col, .cms-col) { outline: 2px solid transparent; outline-offset: 4px; border-radius: 18px; }
.hv-border:hover > :is(.inner, .cms-in), .hv-border:is(.col, .cms-col):hover { outline-color: var(--sk-brand); }
.hv-shine > :is(.inner, .cms-in), .hv-shine:is(.col, .cms-col) { position: relative; overflow: hidden; }
.hv-shine > :is(.inner, .cms-in)::before, .hv-shine:is(.col, .cms-col)::before { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: linear-gradient(110deg, transparent 30%, rgb(255 255 255 / .4) 50%, transparent 70%); transform: translateX(-120%); transition: transform .8s; }
.hv-shine:hover > :is(.inner, .cms-in)::before, .hv-shine:is(.col, .cms-col):hover::before { transform: translateX(120%); }

/* custom HTML element */
.custom-html { min-width: 0; overflow-wrap: anywhere; } .custom-html img { max-width: 100%; height: auto; }

@media (prefers-reduced-motion: reduce) {
  [class*="sk-"], [class*="sk-"] *, [class*="lp-"] > *, [class*="lp-"] { animation: none !important; }
  .sk-underline-grow :is(h1, h2, h3, .h, .cms-h)::after { width: min(120px, 60%); }
}
