/* IGP animations — all disabled for users who prefer reduced motion */
@media (prefers-reduced-motion:no-preference){
.js .reveal{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0ms)}
.js .reveal.in{opacity:1;transform:none}
.js .reveal-left{opacity:0;transform:translateX(-32px);transition:opacity .8s ease,transform .8s ease}
.js .reveal-left.in{opacity:1;transform:none}
.js .reveal-right{opacity:0;transform:translateX(32px);transition:opacity .8s ease,transform .8s ease}
.js .reveal-right.in{opacity:1;transform:none}
.js .reveal.in.lift{transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,background-color .25s ease}
.js .reveal.in.lift:hover{transform:translateY(-5px);box-shadow:0 14px 34px rgba(0,0,0,.45),0 0 0 1px rgba(243,190,91,.35)}
@keyframes igpUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
.hero-in{animation:igpUp .9s cubic-bezier(.2,.7,.2,1) both;animation-delay:var(--d,0ms)}
@keyframes igpFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.float-slow{animation:igpFloat 6s ease-in-out infinite}
@keyframes igpGlow{0%,100%{box-shadow:0 4px 20px rgba(184,137,43,.30)}50%{box-shadow:0 4px 30px rgba(243,190,91,.60)}}
header a.inline-flex{animation:igpGlow 3.2s ease-in-out infinite}
@keyframes igpDash{to{stroke-dashoffset:-200}}
#igp-progress{position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,#8F6B1F,#F3BE5B);z-index:60;transition:width .1s linear}
.igp-img-zoom{overflow:hidden}.igp-img-zoom img{transition:transform .9s ease}.igp-img-zoom:hover img{transform:scale(1.06)}
header nav a{position:relative}
header nav a::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:#F3BE5B;transition:width .25s ease}
header nav a:hover::after{width:100%}
}

.igp-hero-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.igp-hero>*:not(canvas):not(.absolute){position:relative;z-index:1}
.igp-hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 20% 50%,rgba(19,19,21,.55),rgba(19,19,21,0) 60%)}
@keyframes igpShine{0%{background-position:-200% 0}100%{background-position:200% 0}}
@media (prefers-reduced-motion:no-preference){.igp-hero h1 em,.igp-hero h1 span.italic{background:linear-gradient(90deg,#F3BE5B 0%,#FFE7A8 45%,#F3BE5B 90%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:igpShine 6s linear infinite}}
