/* Part Engineering. motion layer. All states are applied by parts-motion.js,
   so with JS off or reduced-motion on, nothing is ever hidden. */

/* scroll progress */
.mo-bar{position:fixed;top:0;left:0;height:2px;width:0;background:var(--brass);z-index:950;transition:width .12s linear;pointer-events:none}

/* nav auto-hide */
.nav{transition:background .3s var(--ease),transform .42s var(--ease)}
.nav.mo-up{transform:translateY(-100%)}

/* generic reveal */
.mo-ready{opacity:0;transform:translateY(18px);transition:opacity .82s var(--ease),transform .82s var(--ease)}
.mo-ready.mo-in{opacity:1;transform:none}
.mo-ready[data-mo="fade"]{transform:none}
.mo-ready[data-mo="rise-sm"]{transform:translateY(10px)}

/* word-by-word headline reveal */
.mo-h{opacity:1!important;transform:none!important}
.mo-word{display:inline-block;opacity:0;transform:translateY(.42em);transition:opacity .62s var(--ease),transform .78s var(--ease);will-change:transform,opacity}
.mo-h.mo-in .mo-word{opacity:1;transform:none}

/* image / frame wipe */
.mo-wipe{opacity:1!important;transform:none!important;clip-path:inset(0 100% 0 0);transition:clip-path 1.05s cubic-bezier(.62,.05,.24,1)}
.mo-wipe.mo-in{clip-path:inset(0 0 0 0)}

/* hairline rule draw */
.mo-rule{position:relative}
.mo-rule::before{content:"";position:absolute;top:-1px;left:0;height:1px;width:0;background:var(--brass);transition:width 1.1s var(--ease);opacity:.85}
.mo-rule.mo-in::before{width:100%}

/* card hover lift + image zoom */
.pcard-img,.iblk-img,.detail-img,.feat-img{overflow:hidden}
.pcard-img>*,.iblk-img>*,.detail-img>*,.feat-img>*{transition:transform .9s var(--ease)}
.pcard:hover .pcard-img>*{transform:scale(1.045)}
.pcard h3,.ind h3,.ins a h3{transition:color .22s var(--ease),transform .32s var(--ease)}
.pcard:hover h3{transform:translateX(3px)}
.ind>a{position:relative;overflow:hidden}
.ind>a::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--brass);transition:width .42s var(--ease)}
.ind>a:hover::after{width:100%}
.ins a{position:relative}
.ins a::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:0;background:var(--brass);transition:width .5s var(--ease)}
.ins a:hover::after{width:100%}
.ins a:hover h3{transform:translateX(4px)}

/* logo marquee */
.mq{overflow:hidden;border-block:1px solid var(--line);position:relative;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.mq-track{display:flex;width:max-content;animation:mq 46s linear infinite}
.mq:hover .mq-track{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.mq-cell{flex:0 0 auto;width:clamp(150px,17vw,230px);aspect-ratio:16/8;display:flex;align-items:center;justify-content:center;border-right:1px solid var(--line);padding:14px}
.mq-cell .tag{text-align:center;line-height:1.5;font-size:9.5px;color:#4E555A}

/* scroll-drawn connector for step / timeline flows */
.mo-flow{position:relative}
.mo-flow::before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--line)}
.mo-flow::after{content:"";position:absolute;left:0;top:0;width:1px;height:var(--flow,0%);background:var(--brass);transition:height .2s linear}
.qsteps.mo-flow,.tl.mo-flow{padding-left:22px}
.qsteps.mo-flow li,.tl.mo-flow .tl-r{position:relative}
.qsteps.mo-flow li::before,.tl.mo-flow .tl-r::before{content:"";position:absolute;left:-26px;top:22px;width:7px;height:7px;background:var(--bone);border:1px solid var(--brass-ink);border-radius:50%}
.paper .mo-flow::before{background:var(--line-ink)}
.paper .mo-flow::after{background:var(--brass-ink)}

/* hotspot idle pulse + panel swap */
.hs-dot circle.ring{transition:fill .2s var(--ease),transform .25s var(--ease);transform-box:fill-box;transform-origin:center}
.hs-dot:not([aria-pressed="true"]) circle.ring{animation:hsPulse 3.4s ease-in-out infinite}
.hs-dot:nth-of-type(2) circle.ring{animation-delay:.4s}
.hs-dot:nth-of-type(3) circle.ring{animation-delay:.8s}
.hs-dot:nth-of-type(4) circle.ring{animation-delay:1.2s}
.hs-dot:nth-of-type(5) circle.ring{animation-delay:1.6s}
.hs-dot:nth-of-type(6) circle.ring{animation-delay:2s}
.hs-dot:nth-of-type(7) circle.ring{animation-delay:2.4s}
@keyframes hsPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.16)}}
.hs-dot[aria-pressed="true"] circle.ring{transform:scale(1.14)}
.hs-swap{animation:hsSwap .46s var(--ease)}
@keyframes hsSwap{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* sticky sub-nav active state */
.jump a{transition:color .2s var(--ease)}
.jump a.on{color:var(--brass-ink)}

/* ---- ambient layer: drifting part profiles + garnet motes ---- */
.amb{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;will-change:transform}
.amb-o{position:absolute;opacity:var(--op,.07);animation:ambFloat var(--dur,70s) ease-in-out var(--delay,0s) infinite;will-change:transform}
@keyframes ambFloat{
0%{transform:translate3d(0,0,0) rotate(0deg)}
25%{transform:translate3d(2.2vw,-3.4vh,0) rotate(calc(var(--rot,14deg) * .45))}
50%{transform:translate3d(-1.6vw,-6.2vh,0) rotate(var(--rot,14deg))}
75%{transform:translate3d(-2.8vw,-2.6vh,0) rotate(calc(var(--rot,14deg) * .3))}
100%{transform:translate3d(0,0,0) rotate(0deg)}
}
.amb-canvas{position:absolute;inset:0;pointer-events:none;z-index:0}
.bhero .amb,.bhero .amb-canvas{z-index:1}
.bhero-scrim{z-index:2}
.bhero-in{z-index:3}
header.ph{position:relative;overflow:hidden}
header.ph>.wrap,section.sec>.wrap,.band-cta>.wrap{position:relative;z-index:1}
@media(prefers-reduced-motion:reduce){.amb,.amb-canvas{display:none}}

/* page transition. a curtain, never body opacity (content is never hidden) */
.mo-curtain{position:fixed;inset:0;background:var(--ink);z-index:990;pointer-events:none;opacity:0;transition:opacity .28s var(--ease)}
.mo-curtain.on{opacity:1}

/* hero load sequence + slow media drift */
.bhero-media{transform:scale(1.06);transition:transform 2.4s var(--ease)}
.bhero.mo-in .bhero-media{transform:scale(1)}
.bhero-strip span{opacity:0;transform:translateY(8px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.bhero.mo-in .bhero-strip span{opacity:1;transform:none}
.bhero.mo-in .bhero-strip span:nth-child(1){transition-delay:.62s}
.bhero.mo-in .bhero-strip span:nth-child(2){transition-delay:.7s}
.bhero.mo-in .bhero-strip span:nth-child(3){transition-delay:.78s}
.bhero.mo-in .bhero-strip span:nth-child(4){transition-delay:.86s}

/* button sheen */
.btn-hot{position:relative;overflow:hidden}
.btn-hot::before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.42) 50%,transparent 65%);transform:translateX(-120%);transition:transform .7s var(--ease)}
.btn-hot:hover::before{transform:translateX(120%)}

/* table row reveal */
.tbl tbody tr,.docs tbody tr,.ord-t tbody tr{transition:background .2s var(--ease)}

@media(prefers-reduced-motion:reduce){
.mo-ready,.mo-word,.mo-wipe{opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important}
.mo-curtain{display:none}
.mo-rule::before{width:100%!important;transition:none}
.mq-track{animation:none}
.hs-dot circle.ring{animation:none!important}
.bhero-media{transform:none!important;transition:none}
.bhero-strip span{opacity:1!important;transform:none!important}
.nav.mo-up{transform:none}
.mo-bar{display:none}
}
