/* Motion is an enhancement: the complete page remains visible without JavaScript. */
.hero-line{display:block;overflow:hidden;padding-bottom:.16em;margin-bottom:-.16em}
.hero-line>span{display:block}
.reading-progress{position:absolute;inset:auto 0 0;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;pointer-events:none;z-index:1}
.motion-enhanced .site-header{transition:box-shadow .35s,border-color .35s}
.motion-enhanced .site-header.has-scrolled{box-shadow:0 6px 28px #101c1610}
.motion-enhanced .hero-image{animation:frontera-pan 24s ease-in-out infinite alternate;will-change:transform}
.motion-enhanced .hero{--hero-shift:0px}
@keyframes frontera-pan{
  from{transform:translate3d(0,var(--hero-shift),0) scale(1.1)}
  to{transform:translate3d(-1.2%,var(--hero-shift),0) scale(1.16)}
}
@keyframes line-arrival{
  from{transform:translate3d(0,112%,0);opacity:0}
  to{transform:translate3d(0,0,0);opacity:1}
}
@keyframes quiet-arrival{
  from{opacity:0;transform:translate3d(0,20px,0)}
  to{opacity:1;transform:translate3d(0,0,0)}
}
@keyframes panel-arrival{
  from{opacity:0;transform:translate3d(32px,0,0)}
  to{opacity:1;transform:translate3d(0,0,0)}
}
.intro-running .hero-line>span{animation:line-arrival 1s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.12s + var(--line-index,0)*.15s)}
.sweco.intro-running .hero-panel{animation:panel-arrival 1s cubic-bezier(.16,1,.3,1) both}
.sweco.intro-running .hero-line>span{animation-delay:calc(.28s + var(--line-index,0)*.13s)}
.intro-running .hero-panel .eyebrow,.intro-running .hero-content>.eyebrow{animation:quiet-arrival .8s .15s both}
.intro-running .hero-panel p,.intro-running .hero-main-link{animation:quiet-arrival .8s .7s both}
.intro-running .hero-panel .inline-link,.intro-running .hero-bottom{animation:quiet-arrival .8s .85s both}
.intro-running .hero-nav a{animation:quiet-arrival .65s both;animation-delay:calc(.6s + var(--item-index,0)*.1s)}
.motion-enhanced .reveal{transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0ms)}
.js-motion .motion-enhanced .reveal:not(.visible){transform:translate3d(0,34px,0)}
.motion-enhanced .drawing .draw-line{stroke-dasharray:1;stroke-dashoffset:1}
.motion-enhanced .approach-art.visible .drawing .draw-line{animation:trace-architecture 1.8s cubic-bezier(.4,0,.2,1) both;animation-delay:calc(.2s + var(--path-index,0)*.045s)}
@keyframes trace-architecture{to{stroke-dashoffset:0}}
.motion-enhanced .service-accordion[open] .service-body{animation:quiet-arrival .5s cubic-bezier(.16,1,.3,1) both}
.motion-enhanced .service-panel:not([hidden]) .service-visual{animation:image-arrival .7s cubic-bezier(.16,1,.3,1) both}
.motion-enhanced .service-panel:not([hidden]) .service-info>*{animation:quiet-arrival .65s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--item-index,0)*.065s)}
@keyframes image-arrival{
  from{opacity:0;clip-path:inset(0 0 10% 0);transform:translate3d(0,12px,0)}
  to{opacity:1;clip-path:inset(0);transform:translate3d(0,0,0)}
}
.motion-enhanced dialog[open]:not(.menu-dialog){animation:dialog-arrival .32s cubic-bezier(.16,1,.3,1)}
.motion-enhanced dialog[open]::backdrop{animation:backdrop-arrival .28s ease-out}
@keyframes dialog-arrival{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes backdrop-arrival{from{opacity:0}to{opacity:1}}
.motion-enhanced .menu-dialog[open] .menu-nav a{animation:quiet-arrival .55s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(.08s + var(--item-index,0)*.075s)}
.motion-enhanced .solid-button,.motion-enhanced .header-cta{transition:transform .25s,background .25s,color .25s,box-shadow .25s}
.motion-enhanced .solid-button svg,.motion-enhanced .header-cta svg,.motion-enhanced .hero-nav svg{transition:transform .3s cubic-bezier(.16,1,.3,1)}
.motion-enhanced .inline-link{position:relative}
.motion-enhanced .inline-link::after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.16,1,.3,1)}
.motion-enhanced .services-tabs button{transition:color .25s,border-color .25s}
.sweco .motion-control{position:absolute;left:36px;bottom:126px;z-index:4;display:inline-flex;align-items:center;gap:10px;min-height:36px;padding:8px 13px;border:1px solid #ffffff80;background:#203526b0;color:#fff;backdrop-filter:blur(8px);font-size:10px}
.motion-glyph{min-width:10px;display:inline-block}
.motion-control{transition:background .25s,border-color .25s}
.motion-control:hover{background:#263a26d0;border-color:var(--accent)}
.motion-control:disabled{opacity:.6;cursor:default}
.motion-off .hero-image,.tab-asleep .hero-image{animation-play-state:paused!important}
.motion-off .reveal,.motion-off .hero-line>span,.motion-off .hero-panel,.motion-off .hero-panel p,.motion-off .hero-panel .eyebrow,.motion-off .hero-panel .inline-link,.motion-off .hero-content>.eyebrow,.motion-off .hero-main-link,.motion-off .hero-bottom,.motion-off .hero-nav a,.motion-off .service-body,.motion-off .service-visual,.motion-off .service-info>*,.motion-off .menu-nav a,.motion-off dialog[open]{animation:none!important;transition:none!important;opacity:1!important;transform:none!important;clip-path:none!important}
.motion-off .drawing .draw-line{animation:none!important;stroke-dashoffset:0!important}
.motion-off dialog[open]::backdrop{animation:none!important}
@media(hover:hover) and (pointer:fine){
  .motion-enhanced:not(.motion-off) .solid-button:hover,.motion-enhanced:not(.motion-off) .header-cta:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000015}
  .motion-enhanced:not(.motion-off) .solid-button:hover svg,.motion-enhanced:not(.motion-off) .header-cta:hover svg,.motion-enhanced:not(.motion-off) .hero-nav a:hover svg{transform:translate(3px,-3px)}
  .motion-enhanced .inline-link:hover::after{transform:scaleX(1)}
}
@media(max-width:850px){
  .motion-enhanced .hero-image{animation-name:frontera-pan-mobile;animation-duration:30s}
  .intro-running .hero-line>span{animation-duration:.8s}
  .motion-enhanced .reveal{transition-duration:.65s}
  .js-motion .motion-enhanced .reveal:not(.visible){transform:translate3d(0,18px,0)}
  @keyframes frontera-pan-mobile{from{transform:scale(1.035)}to{transform:scale(1.08)}}
}
@media(max-width:650px){
  .sweco .motion-control{left:20px;top:173px;bottom:auto;min-height:32px;font-size:9px}
  .sweco.intro-running .hero-panel{animation-name:quiet-arrival}
}
@media(prefers-reduced-motion:reduce){
  .motion-enhanced .hero-image{animation:none!important;will-change:auto}
  .motion-enhanced .drawing .draw-line{stroke-dashoffset:0!important}
  .reading-progress{transition:none}
}
