/* reveal system (see fx.js): everything here is gated by html.fxr, so without it (JS off, reduced motion, after the 4 s fallback) all text is simply visible */
html.fxr .fxh .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
html.fxr .fxh .wi{display:inline-block;transform:translateY(112%);opacity:0;filter:blur(3px);transition:transform .55s cubic-bezier(.2,.8,.2,1),opacity .4s ease,filter .5s ease;transition-delay:calc(var(--i,0) * 70ms)}
html.fxr .fxh.in .wi{transform:none;opacity:1;filter:none}
html.fxr .fxe{opacity:0;letter-spacing:.5em;white-space:nowrap;transition:opacity .6s ease,letter-spacing .7s cubic-bezier(.2,.8,.2,1)}
html.fxr .fxe.in{opacity:1;letter-spacing:.28em}
html.fxr .fxp{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
html.fxr .fxp.in{opacity:1;transform:none}
html.fxr .grid>*,html.fxr .cases>*,html.fxr .proc>*,html.fxr .steps>*{transition-delay:var(--sd,0ms)}
/* hero sequence (A1exoTech) */
html.fxr .hs{opacity:0;transform:translateY(18px);filter:blur(4px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1),filter .6s ease;transition-delay:var(--hd,0ms)}
html.fxr.hero-go .hs{opacity:1;transform:none;filter:none}
html.fxr .hs--word{display:block;transform:translateY(34px) scale(.94);transition-duration:.7s,.55s,.6s}
html.fxr .hs--pop{transform:scale(.9);transition-timing-function:ease,cubic-bezier(.34,1.56,.64,1),ease}
html.fxr.hero-go .hs--flicker{animation:fxflick .9s steps(1) both;animation-delay:var(--hd,0ms)}
@keyframes fxflick{0%{opacity:0}12%{opacity:1}20%{opacity:.25}34%{opacity:1}44%{opacity:.5}60%,100%{opacity:1}}
html.fxr .hero h1 em.glint{background-size:260% 100%;background-position:100% 0}
html.fxr.hero-go .hero h1 em.glint{animation:fxsweep 1.2s ease 1.5s 1 both}
@keyframes fxsweep{0%{background-position:100% 0}100%{background-position:0 0}}

/* back-to-top arrow (s/totop.js): round dark glass button, aqua ring; follows each page's own --aqua / --gold */
.a1top{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:50;width:44px;height:44px;border-radius:50%;border:2px solid var(--aqua,#3ee8e0);background:rgba(4,12,18,.82);color:var(--aqua,#3ee8e0);display:grid;place-items:center;padding:0;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(8px);box-shadow:0 0 18px rgba(62,232,224,.28);transition:opacity .3s ease,transform .3s ease,visibility .3s,background .2s,box-shadow .2s,color .2s;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.a1top.on{opacity:1;visibility:visible;transform:none}
.a1top:hover,.a1top:focus-visible{background:var(--aqua,#3ee8e0);color:#001;box-shadow:0 0 28px var(--aqua,#3ee8e0)}
.a1top:focus-visible{outline:2px solid var(--gold,#ffc83d);outline-offset:3px}
@media(prefers-reduced-motion:reduce){.a1top{transition:none}}
