/* ==========================================================================
   Lumen — motion layer: loader, page transition, cursor, reveal states, marquee
   ========================================================================== */

/* Hide animated elements until JS has prepared them (prevents a flash).
   The failsafe class shows anything JS never reached. It is part of the hiding selector
   (:not(.lumen-failsafe)) so it can never lose a specificity fight. */
html.lumen-js:not(.lumen-failsafe) [data-lumen-reveal]:not([data-lumen-reveal="line"]):not(.is-init),
html.lumen-js:not(.lumen-failsafe) [data-lumen-text]:not(.is-split){visibility:hidden}

/* Elementor editor: never hide anything while editing. */
body.elementor-editor-active [data-lumen-reveal],
body.elementor-editor-active [data-lumen-text]{visibility:visible!important}

[data-lumen-reveal="curtain"]{overflow:hidden}
[data-lumen-reveal="line"]{position:relative}
[data-lumen-reveal="line"]::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--l-line);transform:scaleX(var(--l-line-s,1));transform-origin:left}

/* SplitText helpers: masks must not clip descenders on tight headlines */
.lumen-line-mask,.lumen-mask{padding-bottom:.18em;margin-bottom:-.18em}
.lumen-char,.lumen-word{will-change:transform}
[data-lumen-text="drift"]{overflow:visible}
[data-lumen-text="drift"] .lumen-drift-line{display:block;white-space:nowrap}

/* --- Loader ---------------------------------------------------------------- */
.lumen-loader{position:fixed;inset:0;z-index:10000;display:none;flex-direction:column;justify-content:space-between;padding:var(--l-pad);background:var(--l-alt);color:var(--l-ink);clip-path:inset(0 0 0 0)}
html.lumen-loading .lumen-loader{display:flex}
html.lumen-failsafe .lumen-loader{display:none}
.lumen-loader__brand{font-family:var(--l-display);font-weight:500;font-size:clamp(1.75rem,4vw,3.25rem);letter-spacing:-.05em;line-height:1;overflow:hidden}
.lumen-loader__brand .lumen-char{display:inline-block}
.lumen-loader__foot{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem}
.lumen-loader__tag{font-size:.95rem;color:var(--l-ink-2)}
.lumen-loader__count{font-family:var(--l-display);font-weight:500;font-size:clamp(5.5rem,24vw,24rem);line-height:.78;letter-spacing:-.07em;font-variant-numeric:tabular-nums;display:flex;align-items:flex-start}
.lumen-loader__pct{font-size:.16em;letter-spacing:0;margin:.35em 0 0 .1em}

/* --- Page transition ------------------------------------------------------- */
.lumen-transition{position:fixed;inset:0;z-index:9999;pointer-events:none;visibility:hidden}
.lumen-transition__panel{position:absolute;inset:0;clip-path:inset(100% 0 0 0)}
.lumen-transition__panel--a{background:var(--l-alt)}
.lumen-transition__panel--b{background:#000;color:#fff;display:flex;align-items:flex-end;padding:var(--l-pad)}
.lumen-transition__label{font-family:var(--l-display);font-weight:500;font-size:clamp(2.5rem,9vw,9rem);letter-spacing:-.06em;line-height:.95;overflow:hidden;display:block;padding-bottom:.08em}
html.lumen-arriving .lumen-transition{visibility:visible;pointer-events:auto}
html.lumen-arriving .lumen-transition__panel{clip-path:inset(0 0 0 0)}
html.lumen-failsafe .lumen-transition{visibility:hidden;pointer-events:none}

/* --- Cursor ---------------------------------------------------------------- */
.lumen-cursor{position:fixed;left:0;top:0;z-index:10001;pointer-events:none;mix-blend-mode:difference;opacity:0;transition:opacity .3s}
.lumen-cursor.is-visible{opacity:1}
html.has-lumen-cursor,
html.has-lumen-cursor :is(a,button,[role="button"],label,summary,.elementor-button){cursor:none}
.lumen-cursor__dot{position:absolute;left:0;top:0;width:8px;height:8px;border-radius:50%;background:#fff;transition:opacity .25s}
.lumen-cursor__ring{position:absolute;left:0;top:0;width:44px;height:44px;display:grid;place-items:center}
.lumen-cursor__bg{position:absolute;inset:0;border-radius:50%;border:1px solid #fff;transition:transform .55s var(--l-ease),background-color .3s}
.lumen-cursor__label{position:relative;font:500 .78rem/1 var(--l-display);letter-spacing:-.01em;color:#000;white-space:nowrap;opacity:0;transition:opacity .25s}
.lumen-cursor.is-link .lumen-cursor__bg{transform:scale(1.55)}
.lumen-cursor.is-label .lumen-cursor__bg{transform:scale(2.5);background:#fff}
.lumen-cursor.is-label .lumen-cursor__label{opacity:1}
.lumen-cursor.is-label .lumen-cursor__dot{opacity:0}
.lumen-cursor.is-down .lumen-cursor__bg{transform:scale(.8)}

/* --- Marquee ---------------------------------------------------------------- */
.lumen-marquee{overflow:hidden;white-space:nowrap;font-family:var(--l-display);font-weight:500;font-size:clamp(3.5rem,11vw,11rem);letter-spacing:-.055em;line-height:1.08;user-select:none}
.lumen-marquee__track{display:flex;width:max-content;will-change:transform}
.lumen-marquee__group{display:flex;align-items:center;flex:none}
.lumen-marquee__item{padding-inline:.16em}
.lumen-marquee__sep{display:inline-block;flex:none;width:.14em;height:.14em;border-radius:50%;background:currentColor;margin-inline:.1em}
.lumen-marquee[data-sep="slash"] .lumen-marquee__sep{width:.04em;height:.6em;border-radius:0;transform:rotate(18deg)}
.lumen-marquee[data-sep="star"] .lumen-marquee__sep{width:.3em;height:.3em;border-radius:0;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.lumen-marquee[data-sep="none"] .lumen-marquee__sep{display:none}
.lumen-marquee.is-outline .lumen-marquee__item{-webkit-text-fill-color:transparent;-webkit-text-stroke:1.5px currentColor}

/* --- Reduced motion --------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .lumen-loader,.lumen-transition,.lumen-cursor{display:none!important}
  html.lumen-js [data-lumen-reveal],html.lumen-js [data-lumen-text]{visibility:visible!important}
}
