/* DiaCircle Motion 1.3.1 — motion effects. Loaded only when motion is on.
   Nothing here hides content unless the script has run and tagged the element (.dc-pre). */
:root{--dc-dist:16px;--dc-dur:600ms;--dc-gap:80ms;--dc-ring:900ms;--dc-ease:cubic-bezier(.2,.7,.2,1)}
@media (max-width:767px){:root{--dc-dist:8px;--dc-dur:300ms;--dc-gap:50ms;--dc-ring:400ms}}
.dc-motion-subtle{--dc-dist:8px;--dc-dur:450ms;--dc-gap:60ms;--dc-ring:600ms}
@media (max-width:767px){.dc-motion-subtle{--dc-dist:4px;--dc-dur:250ms;--dc-gap:40ms;--dc-ring:300ms}}

/* Reveal + stagger */
/* Hiding is instant (off screen); only the reveal animates */
.dc-pre:not(.dc-in){opacity:0;transform:translate3d(0,var(--dc-dist),0)}
.dc-pre.dc-anim{transition:opacity var(--dc-dur) var(--dc-ease),transform var(--dc-dur) var(--dc-ease);transition-delay:calc(var(--dc-i,0) * var(--dc-gap));will-change:opacity,transform}

/* Ring draw: inline SVG strokes draw on; icons and SVG images turn and settle in */
.dc-ring-draw .dc-stroke{stroke-dasharray:1}
.dc-ring-pre:not(.dc-in) .dc-stroke{stroke-dashoffset:1}
.dc-ring-pre.dc-in .dc-stroke{transition:stroke-dashoffset var(--dc-ring) var(--dc-ease)}
.dc-ring-pre.dc-in .elementor-icon,.dc-ring-pre.dc-in img{transition:opacity var(--dc-ring) var(--dc-ease),transform var(--dc-ring) var(--dc-ease)}
.dc-ring-pre:not(.dc-in) .elementor-icon,.dc-ring-pre:not(.dc-in) img{opacity:0;transform:rotate(-90deg) scale(.7)}

/* Zoom: desktop only, image scales 1.00 → 1.06 as it comes into view */
.dc-zoom-on .elementor-widget-container,.dc-zoom-on{overflow:hidden;border-radius:16px}
.dc-zoom-on img{transform:scale(1);transition:transform 1400ms var(--dc-ease)}
.dc-zoom-on.dc-in img{transform:scale(1.06)}

/* Parallax: desktop only, one per page, transform set by the script (max 40 px) */
.dc-parallax-on,.dc-parallax-on .elementor-widget-container{overflow:hidden}
.dc-parallax-on img{will-change:transform}

/* Card lift: pointer devices only, on hover and keyboard focus */
@media (hover:hover) and (pointer:fine){
  .dc-lift{transition:transform 200ms var(--dc-ease),box-shadow 200ms var(--dc-ease)}
  .dc-lift:hover,.dc-lift:focus-within{transform:translate3d(0,-4px,0);box-shadow:0 12px 24px rgba(23,59,87,.12)}
}

/* dc-stack: pinned horizontal gallery. Desktop + tablet only, native vertical scroll.
   The script adds .dc-stack-on and sizes the row; without it the stack stays a plain list.
   The stage pins, centred under the header. Scrolling down slides the module cards sideways
   (one card at a time, with a short rest on each) and a progress line fills underneath.
   The theme image + title fade out and in (no movement) when the first card of a new theme slides in.
   Only transform and opacity change while scrolling. */
@media (min-width:768px) and (prefers-reduced-motion:no-preference){
  .dc-stack-on{align-items:flex-start!important;min-height:var(--dc-stack-len,0px)!important}
  .dc-stack-on .dc-stack-col{position:sticky;top:var(--dc-stack-top,96px);min-height:var(--dc-stack-h,0px)}
  .dc-stack-on .dc-stack-theme{display:grid!important;grid-template-columns:minmax(0,1fr);align-items:start}
  .dc-stack-on .dc-stack-theme>.dc-stack-item{grid-area:1/1;margin:0!important;opacity:var(--dc-o,1);will-change:opacity}
  .dc-stack-on .dc-stack-lead{top:calc(var(--dc-stack-top,96px) + var(--dc-stack-off,0px) - 28px);margin-top:calc(var(--dc-stack-off,0px) - 28px);min-height:calc(var(--dc-stack-h,0px) - var(--dc-stack-off,0px) + 28px);display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:flex-start!important;justify-content:flex-start!important;gap:40px!important;box-sizing:border-box;overflow-x:clip;overflow-y:visible;padding:28px 20px 56px!important}
  .dc-stack-on .dc-stack-lead>.dc-stack-item{flex:0 0 100%!important;width:100%!important;max-width:100%!important;margin:0!important;transform:translate3d(calc(var(--dc-x,0) * (-100% - 40px)),0,0);will-change:transform}
  .dc-stack-on .dc-stack-lead::before,.dc-stack-on .dc-stack-lead::after{content:"";position:absolute;left:20px;right:20px;bottom:12px;height:4px;border-radius:2px}
  .dc-stack-on .dc-stack-lead::before{background:rgba(23,59,87,.12)}
  .dc-stack-on .dc-stack-lead::after{background:#0A5F67;transform-origin:0 50%;transform:scaleX(var(--dc-prog,0))}
  .dc-stack-on .dc-stack-end{display:none!important}
}

/* Reduced motion (device setting, also set live by the script) and per-section opt-out */
@media (prefers-reduced-motion:reduce){
  .dc-pre,.dc-ring-pre .elementor-icon,.dc-ring-pre img,.dc-zoom-on img,.dc-lift,.dc-ring-draw .dc-stroke{transition:none!important;transform:none!important;opacity:1!important;stroke-dashoffset:0!important}
}
.dc-rm .dc-pre,.dc-rm .dc-ring-pre .elementor-icon,.dc-rm .dc-ring-pre img,.dc-rm .dc-zoom-on img,.dc-rm .dc-lift,.dc-rm .dc-stroke{transition:none!important;transform:none!important;opacity:1!important;stroke-dashoffset:0!important}
.dc-no-motion.dc-lift,.dc-no-motion .dc-lift{transition:none!important;transform:none!important}
