:root{--motion-ease:cubic-bezier(.2,.7,.15,1)}
.scroll-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:80;pointer-events:none;background:var(--terra);transform:scaleX(0);transform-origin:left}
body.motion-enabled .motion-reveal{opacity:0;translate:0 38px;transition:opacity 1.05s var(--motion-ease),translate 1.25s var(--motion-ease);transition-delay:var(--reveal-delay,0ms)}
body.motion-enabled .motion-reveal.is-visible{opacity:1;translate:0 0}
body.motion-enabled .image-reveal{clip-path:inset(7% 0 7% 0);transition:clip-path 1.45s var(--motion-ease),opacity 1s,translate 1.25s var(--motion-ease)}
body.motion-enabled .image-reveal.is-visible{clip-path:inset(0)}
body.motion-enabled .hero>img{animation:hero-drift 16s ease-in-out infinite alternate;will-change:transform}
@keyframes hero-drift{from{transform:scale(1.025)}to{transform:scale(1.12)}}
body.motion-enabled .hero .eyebrow{animation:hero-arrive 1.3s var(--motion-ease) both}
body.motion-enabled .hero-content>.hero-actions{animation:hero-arrive 1.4s .55s var(--motion-ease) both}
body.motion-enabled .hero-bottom{animation:hero-arrive 1.5s .7s var(--motion-ease) both}
@keyframes hero-arrive{from{opacity:0;translate:0 25px}to{opacity:1;translate:0 0}}
.motion-line{display:block;overflow:hidden;padding-bottom:.09em;margin-bottom:-.09em}.motion-line>span{display:block}
body.motion-enabled .hero .motion-line>span{animation:line-rise 1.5s var(--motion-ease) both;animation-delay:calc(var(--line-index)*130ms + 100ms)}
@keyframes line-rise{from{transform:translateY(112%) rotate(2deg);opacity:0}to{transform:translateY(0) rotate(0);opacity:1}}
body.motion-enabled .hero-copy-enter{animation:hero-arrive 1.4s .35s var(--motion-ease) both}
body.motion-enabled .scroll-cue>span:last-child{animation:scroll-nudge 2.4s ease-in-out infinite}
@keyframes scroll-nudge{0%,100%{translate:0 0}50%{translate:0 7px}}
body.motion-enabled .button{position:relative;overflow:hidden;transition:background .3s,box-shadow .4s,translate .45s var(--motion-ease)}
body.motion-enabled .button:hover{translate:0 -3px;box-shadow:0 12px 26px #191e191c}
body.motion-enabled .button:after{content:'';position:absolute;inset:-100% -50%;background:linear-gradient(110deg,transparent 40%,#fff2 50%,transparent 60%);transform:translateX(-75%);transition:transform .8s;pointer-events:none}
body.motion-enabled .button:hover:after{transform:translateX(75%)}
body.motion-enabled :is(.button,.ff-btn-submit){transition:background .3s,box-shadow .4s,translate .45s var(--motion-ease),scale .18s var(--motion-ease)}body.motion-enabled .ff-btn-submit{position:relative;overflow:hidden}
body.motion-enabled :is(.button,.ff-btn-submit):active{scale:.96;translate:0 0;box-shadow:0 4px 10px #191e1914}body.motion-enabled .text-link{transition:gap .45s var(--motion-ease),color .3s,scale .18s var(--motion-ease)}body.motion-enabled .text-link:active{scale:.97}
body.motion-enabled :is(.button,.text-link)>span[aria-hidden]:not(.press-ripple){transition:transform .45s var(--motion-ease)}body.motion-enabled :is(.button,.text-link):hover>span[aria-hidden]:not(.press-ripple){transform:translateX(4px)}[dir=rtl] body.motion-enabled :is(.button,.text-link):hover>span[aria-hidden]:not(.press-ripple){transform:translateX(-4px)}
.press-ripple{position:absolute;border-radius:50%;background:#ffffff59;transform:scale(0);animation:press-ripple .65s var(--motion-ease) forwards;pointer-events:none}@keyframes press-ripple{to{transform:scale(1);opacity:0}}
body.motion-enabled .project-image img,body.motion-enabled .sector img,body.motion-enabled .news-card img{transition:transform 1.2s var(--motion-ease),filter .7s}
body.motion-enabled .project-card:hover img,body.motion-enabled .sector:hover img,body.motion-enabled .news-card:hover img{transform:scale(1.075)}
body.motion-enabled .project-open,body.motion-enabled .circle{transition:transform .55s var(--motion-ease),background .35s,color .35s}
body.motion-enabled .project-card:hover .project-open,body.motion-enabled .sector:hover .circle{transform:rotate(45deg);background:var(--terra);color:white}
body.motion-enabled .investment-item:hover .circle{transform:translate(5px,-5px)}
body.motion-enabled .investment-item h3{transition:color .3s}body.motion-enabled .investment-item:hover h3{color:var(--terra)}
body.motion-enabled .partner img{transition:filter .5s,opacity .5s,transform .6s}body.motion-enabled .partner:hover img{transform:scale(1.09)}
body.motion-enabled .stats strong{font-variant-numeric:tabular-nums}
body.motion-enabled .life-banner,body.motion-enabled .contact-banner{overflow:hidden}
body.motion-enabled .life-banner>img,body.motion-enabled .contact-banner>img{height:120%;position:absolute;top:-10%;will-change:transform}
body.motion-enabled .life-banner>div,body.motion-enabled .contact-banner>div{transition:none}
body.motion-enabled dialog[open]{animation:dialog-arrive .6s var(--motion-ease)}
body.motion-enabled dialog[open]::backdrop{animation:backdrop-arrive .4s ease}
@keyframes dialog-arrive{from{opacity:0;transform:translateY(40px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes backdrop-arrive{from{opacity:0}to{opacity:1}}
body.motion-enabled .accordion details[open] p{animation:accordion-arrive .6s var(--motion-ease)}
@keyframes accordion-arrive{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
body.motion-enabled nav a{position:relative}body.motion-enabled nav a:after{content:'';position:absolute;bottom:-5px;inset-inline:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .4s var(--motion-ease)}body.motion-enabled nav a:hover:after{transform:scaleX(1)}
.hero-sweep{position:absolute;inset:0;z-index:0;pointer-events:none;background:#f6f3ed;animation:sweep-away 1.4s var(--motion-ease) both;transform-origin:top}
@keyframes sweep-away{from{transform:scaleY(1)}to{transform:scaleY(0)}}
body.motion-off .motion-reveal{opacity:1;translate:none;clip-path:none}body.motion-off *,body.motion-off *:before,body.motion-off *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(max-width:800px){.motion-reveal{--reveal-delay:0ms!important}.scroll-progress{height:2px}}
@media(prefers-reduced-motion:reduce){.motion-reveal{opacity:1!important;translate:none!important;clip-path:none!important}.hero>img,.life-banner>img,.contact-banner>img{transform:none!important;animation:none!important}.hero-sweep{display:none}}
.hero{overflow:hidden}
body.motion-enabled .page-hero>img{animation:hero-drift 18s ease-in-out infinite alternate}body.motion-enabled .page-hero-copy{animation:hero-arrive 1.5s var(--motion-ease) both}body.motion-enabled .editorial .inline-image{transition:width 1s var(--motion-ease),transform 1s var(--motion-ease)}body.motion-enabled .editorial .inline-image:hover{transform:scale(1.1)}body.motion-enabled .esg-shot img{transition:transform 1.3s var(--motion-ease)}body.motion-enabled .governance-panel:not([hidden]){animation:hero-arrive .65s var(--motion-ease) both}body.motion-off .page-hero>img{animation:none!important}body.motion-enabled .page-hero{overflow:hidden}
body.motion-enabled .entry-media>img{animation:hero-drift 18s ease-in-out infinite alternate}body.motion-off .entry-media>img{animation:none!important}
