/* Site-wide motion. Loaded on every page. */
.js .rv{opacity:0;transform:translateY(28px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.js .rv.in{opacity:1;transform:none}
@keyframes fxup{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes fxglow{to{transform:translate(-14vmax,10vmax) scale(1.25)}}
body{animation:fxfade .6s ease both}
@keyframes fxfade{from{opacity:0}to{opacity:1}}
.pbar{position:fixed;left:0;top:0;height:3px;width:100%;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,var(--blue),var(--blue-soft));z-index:400;pointer-events:none}
.hd{transition:box-shadow .3s}
.hd.fx-s{box-shadow:0 2px 16px rgba(5,28,44,.1)}
/* inner-page hero entrance + moving glow */
.phero{position:relative;overflow:hidden;isolation:isolate}
.phero::after{content:"";position:absolute;z-index:-1;width:55vmax;height:55vmax;right:-18vmax;top:-30vmax;border-radius:50%;background:radial-gradient(circle,rgba(34,81,255,.5),transparent 62%);animation:fxglow 16s ease-in-out infinite alternate}
.phero .wrap>*{animation:fxup .9s cubic-bezier(.2,.7,.2,1) both}
.phero .wrap>:nth-child(2){animation-delay:.1s}.phero .wrap>:nth-child(3){animation-delay:.2s}.phero .wrap>:nth-child(4){animation-delay:.32s}.phero .wrap>:nth-child(5){animation-delay:.44s}
/* links, buttons, cards */
.btn{position:relative;overflow:hidden;transition:background .25s,transform .25s,box-shadow .25s}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(34,81,255,.28)}
.btn:hover::after{transform:translateX(120%)}
.link{background:linear-gradient(currentColor,currentColor) left bottom/0 1px no-repeat;border-bottom-color:transparent;transition:gap .25s,background-size .4s;background-size:100% 1px}
.link:hover{gap:.9em}
.tile__a,.work div,.ind div,.caps li,.lead__p img,.ft__col a{transition:transform .35s,box-shadow .35s,background .3s,color .3s}
.work div:hover,.ind div:hover{transform:translateY(-5px);box-shadow:0 16px 36px rgba(5,28,44,.1)}
.tile__a:hover{transform:translateY(-6px);box-shadow:0 20px 44px rgba(5,28,44,.2)}
.caps li:hover{padding-left:10px;background:var(--wash)}
.prac__row,.ins a,.pager a{transition:background .3s,padding .3s}
.nav__link{transition:color .25s,background .25s}
.nav__link::before{content:"";position:absolute;left:12px;right:12px;bottom:6px;height:2px;background:var(--blue);transform:scaleX(0);transition:transform .3s}
.nav__link:hover::before{transform:scaleX(1)}
.sub{animation:fxup .3s ease both}
.ft__col a{display:inline-block}
.ft__col a:hover{transform:translateX(4px)}
.f input,.f select,.f textarea{transition:border-color .25s,box-shadow .25s}
@media (prefers-reduced-motion:reduce){body,.phero::after,.phero .wrap>*,.sub{animation:none}.js .rv{opacity:1;transform:none;transition:none}}

/* ===== sans-serif institutional type (client #14) ===== */
:root{--serif:Inter,"Helvetica Neue",Arial,sans-serif}
h1,h2,h3,h4{font-weight:500;letter-spacing:-.028em}
.d2{letter-spacing:-.03em}
.nums b,.st__nums b,.steps .n,.mt__n,.mx__big{font-weight:300}
.sub a b{font-weight:600}
.stack__t,.layers b{font-weight:500}
/* header: transparent over hero, solid on scroll */
.hd--over{position:fixed;left:0;right:0;top:0;background:transparent;border-bottom:1px solid rgba(255,255,255,.2);transition:background .25s}
.hd--over .logo img{}
.hd--over .logo__txt{color:#fff}
.hd--over .nav__link{color:#fff}
.hd--over .nav__link:hover{color:#fff;background:rgba(255,255,255,.12)}
.hd--over .nav__link[aria-current]::after{background:#fff}
.hd--over .hd__cta{background:#fff;color:var(--navy)}
.hd--over .menu-btn span,.hd--over .menu-btn span::before,.hd--over .menu-btn span::after{background:#000}
.hd--over.is-solid{background:#fff;border-bottom-color:var(--line);box-shadow:0 2px 14px rgba(5,28,44,.08)}
.hd--over.is-solid .logo img{filter:none}
.hd--over.is-solid .logo__txt,.hd--over.is-solid .nav__link{color:var(--ink)}
.hd--over.is-solid .nav__link:hover{background:none;color:var(--blue)}
.hd--over.is-solid .hd__cta{background:var(--blue);color:#fff}
.hd--over.is-solid .menu-btn span,.hd--over.is-solid .menu-btn span::before,.hd--over.is-solid .menu-btn span::after{background:var(--ink)}
.menu-open .hd--over{background:#fff}
.menu-open .hd--over .logo img{filter:none}
.menu-open .hd--over .nav__link{color:var(--ink)}
.menu-open .hd--over .hd__cta{background:var(--blue);color:#fff}
.menu-open .hd--over .menu-btn span{background:transparent}
.menu-open .hd--over .menu-btn span::before,.menu-open .hd--over .menu-btn span::after{background:var(--ink)}


/* inner pages: header floats over the navy page hero */
.hd--over~main .phero{padding-top:calc(var(--head) + clamp(36px,5vw,72px))}
