/* Shared site styles: loader and section animations */
:root{--primary:#1d1c5e;--on-primary:#ffffff}
html.js-loading, body.js-loading{overflow:hidden;height:100%}
#site-loader{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--background,rgba(255,255,255,0.98));z-index:9999;transition:opacity .45s ease}
#site-loader.hide{opacity:0;pointer-events:none}
.loader-spinner{width:54px;height:54px;border-radius:50%;border:6px solid rgba(0,0,0,0.08);border-top-color:var(--primary);animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Section appear animations */
.animate-section{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.2,.8,.2,1),transform .6s cubic-bezier(.2,.8,.2,1)}
.animate-section.in-view{opacity:1;transform:none}

/* simple utility to slightly delay appearance for hero children */
.appear-stagger > *{opacity:0;transform:translateY(10px);transition:opacity .5s ease,transform .5s ease}
.appear-stagger.in-view > *{opacity:1;transform:none}

/* Small tweak for header links when JS rewrites them */
nav a{transition:color .2s ease}

/* ensure assets don't disrupt Tailwind-based pages */
@media (prefers-reduced-motion: reduce){.loader-spinner{animation:none}.animate-section{transition:none}}
