/* Approved Aevix effects: no component width, height, spacing or typography changes. */
.avfx-hero-canvas { position:absolute; inset:0; display:block; width:100%; height:100%; pointer-events:none; }
.avfx-rock-canvas { position:absolute; inset:0; display:block; width:100%; height:100%; pointer-events:none; z-index:1; }
body.av-site.avfx-running::before { animation:avfx-rock-left 6s ease-in-out infinite; }
body.av-site.avfx-running::after { animation:avfx-rock-right 6s ease-in-out infinite; }
.av-hero-actions .av-button { position:relative; overflow:hidden; }
.av-hero-actions .av-button::after { content:''; position:absolute; pointer-events:none; top:-45%; bottom:-45%; left:-70%; width:38%; transform:skewX(-23deg); background:linear-gradient(90deg,transparent,rgba(255,235,182,.42),transparent); animation:avfx-button-glint 6s ease-in-out infinite; }
.av-hero-actions .av-button:nth-child(2)::after { animation-delay:1.8s; }
.av-event-art { position:relative; overflow:hidden; }
.av-event[data-event="bloodcastle"] .av-event-art { background-image:url('../img/aevix/effects/events.jpg'); background-size:300% 100%; background-position:0 50%; }
.av-event[data-event="devilsquare"] .av-event-art { background-image:url('../img/aevix/effects/events.jpg'); background-size:300% 100%; background-position:50% 50%; }
.av-event[data-event="castlesiege"] .av-event-art { background-image:url('../img/aevix/effects/castle-siege.jpg'); background-size:100% 100%; background-position:center; }
.av-event-art::after { content:''; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 30% 85%,#ffe2a6 0 1px,transparent 2px),radial-gradient(circle at 73% 58%,#f8bb72 0 1px,transparent 2px),radial-gradient(circle at 53% 78%,#ffc868 0 1px,transparent 2px); animation:avfx-event-sparks 4.5s linear infinite; }
.av-event[data-event="devilsquare"] .av-event-art::after { inset:14% 27%; border:1px dotted #ddbcff; border-radius:50%; background:transparent; box-shadow:0 0 9px #ad73e6,inset 0 0 6px #ad73e6; animation:avfx-portal 12s linear infinite; }
.av-event[data-event="chaoscastle"] .av-event-art::after { animation:avfx-chaos-glow 3.5s ease-in-out infinite; background:radial-gradient(ellipse at center,#fff1ca44,transparent 65%); }
.avfx-siege-wrap { display:block; position:relative; }
.av-siege-art.avfx-siege-full { object-fit:fill; }
.avfx-siege-wrap::after { content:''; position:absolute; inset:0; pointer-events:none; background:linear-gradient(110deg,transparent 35%,#f7d99a33 50%,transparent 65%); background-size:240% 100%; animation:avfx-siege-light 7s ease-in-out infinite; }
@keyframes avfx-button-glint { 0%,25%{left:-70%}75%,100%{left:140%} }
@keyframes avfx-event-sparks { 0%{transform:translateY(14px);opacity:0}30%,65%{opacity:1}100%{transform:translateY(-23px);opacity:0} }
@keyframes avfx-portal { to{transform:rotate(360deg)} }
@keyframes avfx-chaos-glow { 0%,100%{opacity:.12}50%{opacity:.95} }
@keyframes avfx-siege-light { 0%,15%{background-position:110% 0}80%,100%{background-position:-110% 0} }
@keyframes avfx-rock-left { 0%,100%{transform:translate(0,0);filter:saturate(.82) brightness(.9)}50%{transform:translate(3px,-2px);filter:saturate(1) brightness(1.1)} }
@keyframes avfx-rock-right { 0%,100%{transform:translate(0,0);filter:saturate(.82) brightness(.9)}50%{transform:translate(-3px,2px);filter:saturate(1) brightness(1.1)} }
@media(prefers-reduced-motion:reduce) {
 .avfx-hero-canvas,.avfx-rock-canvas { display:none; }
 body.av-site.avfx-running::before,body.av-site.avfx-running::after { animation:none; }
 .av-hero-actions .av-button::after,.av-event-art::after,.avfx-siege-wrap::after { animation:none; opacity:0; }
}
