/* PCL Research & Manufacturing — motion system (v2.16)
   Chosen options: 1a section focus-in · 1d hero word by word · 1e calm hero
   background · 1g rolling figures · 1i one panel at a time · 1k light on the border.
   Loaded last, so it overrides the older per-component timings. */
:root{--m-ease:cubic-bezier(.16,1,.3,1);--m-exit:cubic-bezier(.4,0,1,1)}

/* ---------- 1a · sections come into focus ---------- */
.el-reveal,.reveal{opacity:0;filter:blur(6px);transform:translateY(10px) scale(.985);
  transition:opacity .56s var(--m-ease),filter .56s var(--m-ease),transform .56s var(--m-ease),
    translate .5s var(--m-ease),box-shadow .5s var(--m-ease),border-color .3s ease,background-color .3s ease}
.el-reveal.el-in,.reveal.visible{opacity:1;filter:none;transform:none}
/* large blocks and touch screens: no blur, it costs more than it gives there */
.svc-block.el-reveal,.cta-band.el-reveal,.legal-wrap>.el-reveal,.aimg.el-reveal{filter:none}
@media (hover:none){.el-reveal,.reveal{filter:none}}

/* ---------- 1d · hero headline, word by word ---------- */
html.m-js .hero-c>.hero-pill{opacity:0}
html.m-js .hero-c>.hp,html.m-js .hero-c>.hero-int,html.m-js .hero-c>.hbtns,html.m-js .hero .hstats{opacity:0;transform:translateY(8px)}
html.m-js h1.hh.m-hold{opacity:0}
.m-w{display:inline-block;opacity:0;filter:blur(10px);transform:translateY(.22em)}
html.m-go .hero-c>.hero-pill{opacity:1;transition:opacity .5s ease}
html.m-go .m-w{opacity:1;filter:none;transform:none;transition:opacity .6s var(--m-ease),filter .6s var(--m-ease),transform .6s var(--m-ease);transition-delay:calc(.15s + var(--w)*45ms)}
html.m-go .hero-c>.hp{opacity:1;transform:none;transition:opacity .6s var(--m-ease),transform .6s var(--m-ease);transition-delay:var(--m-t1,.7s)}
html.m-go .hero-c>.hero-int{opacity:1;transform:none;transition:opacity .6s var(--m-ease),transform .6s var(--m-ease);transition-delay:calc(var(--m-t1,.7s) + .12s)}
html.m-go .hero-c>.hbtns{opacity:1;transform:none;transition:opacity .6s var(--m-ease),transform .6s var(--m-ease);transition-delay:calc(var(--m-t1,.7s) + .22s)}
html.m-go .hero .hstats{opacity:1;transform:none;transition:opacity .6s var(--m-ease),transform .6s var(--m-ease);transition-delay:calc(var(--m-t1,.7s) + .34s)}
/* the stat band is centred with a transform on wide screens: keep it while animating */
@media(min-width:1061px){html.m-js .hero .hstats{transform:translateX(-50%) translateY(8px)}html.m-go .hero .hstats{transform:translateX(-50%)}
  html[dir="rtl"].m-js .hero .hstats{transform:translateX(50%) translateY(8px)}html[dir="rtl"].m-go .hero .hstats{transform:translateX(50%)}}

/* ---------- 1e · calm hero background ---------- */
.el-shard{animation:none!important;transition:transform .9s var(--m-ease)}
.el-aurora{transition:transform 1.2s var(--m-ease)}
.el-gem3d{transition:transform 1.1s var(--m-ease)}
.el-aurora .a2,.el-aurora .a3{animation:none!important}
.el-aurora .a1{animation-duration:26s!important}
.el-gem{animation-duration:60s!important}
.eg-ring{animation:none!important;opacity:.16}
.eg-spots,.eg-spots circle{animation:none!important}
.hero-pill .dot{animation:none}
.svc-block.svc-featured .svc-tag{animation:none}
/* the same rule elsewhere: one continuous movement per screen */
.reach-dot,.reach-pulse{animation:none!important}
.hp-shield,.hp-scan,.hp-mol,.hp-mol circle,.hp-orbiters circle,.hp-label{animation:none!important}
.svc-visual .glow,.ni>svg [fill^="url(#liq"],.lab-illustration svg [fill^="url(#liq"]{animation:none!important}
.svc-visual svg circle[fill="#5DCFED"],.lab-illustration svg circle[fill="#5DCFED"]{animation:none!important}

/* ---------- 1g · rolling figures ---------- */
.hsn.m-roll{display:inline-flex;align-items:flex-start;line-height:1;-webkit-text-fill-color:initial;background:none!important}
.m-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.m-vis{display:inline-flex;align-items:flex-start}
.m-col,.m-lm{display:inline-block;height:1em;overflow:hidden;line-height:1}
.m-strip{display:block;transform:translateY(0)}
.m-strip span{display:block;height:1em}
.m-lt,.m-sx{display:inline-block;transform:translateY(105%)}
.m-g{background-image:linear-gradient(120deg,var(--cyan-d),var(--navy));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
html[data-theme="dark"] .m-g{background-image:linear-gradient(120deg,#5DCFED,#8FE0F7)}
.m-on .m-strip{transform:translateY(calc(var(--d)*-1em));transition:transform 1.15s var(--m-ease);transition-delay:calc(var(--m-b,0ms) + var(--c)*70ms)}
.m-on .m-lt,.m-on .m-sx{transform:none;transition:transform .7s var(--m-ease);transition-delay:calc(var(--m-b,0ms) + var(--c)*70ms)}

/* ---------- 1i · one panel at a time, same movement ---------- */
.pcl-dw{transition:opacity .32s ease!important}
.pcl-dw-box{transition:transform .42s var(--m-ease)!important}
.pcl-dw:not(.in) .pcl-dw-box{transform:translateY(10px) scale(.96)!important}
.pcl-ck{transition:opacity .42s var(--m-ease),transform .42s var(--m-ease)!important}
.pcl-ck:not(.in){transform:translateY(10px) scale(.97)}
.pcl-spot{transition:opacity .42s var(--m-ease),transform .42s var(--m-ease)!important}
.pcl-spot:not(.in){transform:translateY(10px) scale(.97)!important}
.pcl-bar{transition:transform .42s var(--m-ease),top .3s ease!important}
html.m-q:not(.m-r-bar) .pcl-bar{transform:translateY(-102%)!important;visibility:hidden}
html.m-q:not(.m-r-spot) .pcl-spot{opacity:0!important;transform:translateY(10px) scale(.97)!important;visibility:hidden;pointer-events:none}
.pcl-as-panel{transition:opacity .32s var(--m-ease),transform .32s var(--m-ease)!important}

/* ---------- 1k · light along the border ---------- */
.svcp-card,.svcp-rel a{position:relative}
.sc::after,.cc::after,.ncard::after,.perk::after,.loc-card::after,.av::after,.svcp-card::after,.svcp-rel a::after{
  content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;z-index:2;
  background:linear-gradient(110deg,transparent 35%,#5DCFED 50%,#00AEDB 55%,transparent 70%) 160% 0/260% 100% no-repeat,var(--el-glass-border,transparent);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
  transition:background-position 1.1s var(--m-ease)}
.sc:hover::after,.cc:hover::after,.ncard:hover::after,.perk:hover::after,.loc-card:hover::after,.av:hover::after,.svcp-card:hover::after,.svcp-rel a:hover::after{
  background-position:-60% 0,0 0}
.sc.el-in,.cc.el-in,.ncard.el-in,.perk.el-in,.loc-card.el-in,.av.el-in{transform:none!important}
.sc:hover,.cc:hover,.ncard:hover,.perk:hover,.loc-card:hover,.av:hover,.svcp-rel a:hover{transform:none!important;translate:0 -2px}
.sc .el-sheen{display:none}
.svcp-card .ic{transition:background .4s ease,color .4s ease}
.svcp-card:hover .ic{background:linear-gradient(140deg,#0D1B5E,#0090BC);color:#fff}
.sc .fa-arrow-right,.ncard .fa-arrow-right,.svc-more .fa-arrow-right{transition:translate .5s var(--m-ease)}
.sc:hover .fa-arrow-right,.ncard:hover .fa-arrow-right,.svc-more:hover .fa-arrow-right{translate:4px 0}

/* ---------- reduced motion: everything simply appears ---------- */
@media (prefers-reduced-motion:reduce){
  .el-reveal,.reveal,.m-w,html.m-js .hero-c>*,html.m-js .hero .hstats,html.m-js h1.hh.m-hold{opacity:1!important;filter:none!important;transform:none!important;transition:none!important}
  @media(min-width:1061px){html.m-js .hero .hstats{transform:translateX(-50%)!important}}
  .m-strip,.m-lt,.m-sx{transition:none!important}
  .el-aurora .a1,.el-gem{animation:none!important}
  .sc::after,.cc::after,.ncard::after,.svcp-card::after{transition:none!important}
}
