/* =========================================================
   HUBBITS & MORDOCS — LIVING WORLD v5.7
   LIGHT FROM THE PIXELS

   The awakening layer never paints broad translucent color
   over the hero artwork. Production effects reuse the hero's
   own pixels inside object-shaped masks, then briefly raise
   their luminance/saturation and add small edge reflections.

   Clarity first. Magic second. Identity always.
   ========================================================= */

.home-page .home-gateway__art{
    isolation:isolate;
}

.living-world-v5{
    position:absolute;
    z-index:2;
    pointer-events:none;
    overflow:visible;
}

/* =========================================================
   DEBUG CALIBRATION
   ?v5debug=1 only
   ========================================================= */

.living-world-v5 .v5-debug-target{
    opacity:0;
}

.living-world-v5.is-v5-debug .v5-debug-target{
    opacity:1;
}

.living-world-v5 .v5-debug-target rect,
.living-world-v5 .v5-debug-target ellipse{
    fill:rgba(156,108,255,.055);
    stroke:#e8cf97;
    stroke-width:2;
    vector-effect:non-scaling-stroke;
}

.living-world-v5 .v5-debug-target line{
    stroke:#c5a8ff;
    stroke-width:1.35;
    vector-effect:non-scaling-stroke;
}

.living-world-v5 .v5-debug-target text{
    fill:#fff5cf;
    font-family:Arial, Helvetica, sans-serif;
    font-size:15px;
    font-weight:700;
    paint-order:stroke;
    stroke:rgba(0,0,0,.92);
    stroke-width:4px;
    stroke-linejoin:round;
}

/* =========================================================
   PRODUCTION FOUNDATION
   ========================================================= */

.living-world-v5 .v5-effect{
    opacity:0;
    pointer-events:none;
}

.living-world-v5 .v5-effect.is-active{
    opacity:1;
}

/*
 * Pixel echoes are filtered duplicates of the exact hero
 * artwork. No flat fill, no glaze, no painted rectangle.
 */
.living-world-v5 .v5-pixel-echo{
    opacity:0;
    pointer-events:none;
}

/* =========================================================
   VISORS — LENS PIXEL AWAKENING
   ========================================================= */

.living-world-v5 .v5-visor-pixels{
    filter:
        brightness(1.05)
        saturate(1.06)
        contrast(1.01);
}

.living-world-v5 .v5-visor-edge{
    fill:none;
    stroke:rgba(119,205,255,.76);
    stroke-width:1.05;
    vector-effect:non-scaling-stroke;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(211,243,255,.82))
        drop-shadow(0 0 6px rgba(86,188,255,.45))
        drop-shadow(0 0 9px rgba(151,104,255,.25));
}

.living-world-v5 .v5-visor-scan{
    stroke:rgba(232,248,255,.90);
    stroke-width:2.15;
    stroke-linecap:round;
    vector-effect:non-scaling-stroke;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,255,.92))
        drop-shadow(0 0 6px rgba(103,201,255,.64));
    transform-box:fill-box;
    transform-origin:center;
}

/*
 * Natural glass reflection. This is intentionally a narrow
 * specular streak clipped to the real lens geometry — never a
 * broad translucent fill. The existing eye/HUD pixels remain
 * visible beneath it.
 */
.living-world-v5 .v5-visor-reflection{
    pointer-events:none;
    mix-blend-mode:screen;
}

/*
 * The outer reflection group owns the stationary lens clip. Only this
 * inner sweep is translated, so the glare can never leave the glass.
 */
.living-world-v5 .v5-visor-reflection-sweep{
    opacity:0;
    transform-box:fill-box;
    transform-origin:center;
}

.living-world-v5 .v5-visor-reflection-line{
    fill:none;
    stroke-linecap:round;
    vector-effect:non-scaling-stroke;
}

.living-world-v5 .v5-visor-reflection-line--main{
    stroke:rgba(246,252,255,.92);
    stroke-width:2.05;
    filter:
        drop-shadow(0 0 1px rgba(255,255,255,.96))
        drop-shadow(0 0 4px rgba(135,216,255,.54))
        drop-shadow(0 0 6px rgba(178,145,255,.24));
}

.living-world-v5 .v5-visor-reflection-line--soft{
    stroke:rgba(182,229,255,.42);
    stroke-width:4.6;
    filter:blur(.75px);
}

.living-world-v5 .v5-visor-node{
    fill:#dcecff;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,255,.95))
        drop-shadow(0 0 6px rgba(111,196,255,.72))
        drop-shadow(0 0 9px rgba(166,111,255,.42));
}

.living-world-v5 .v5-visor-effect.is-active .v5-visor-pixels{
    animation:v5-visor-pixel-luminance 3.25s ease-in-out both;
}

.living-world-v5 .v5-visor-effect.is-active .v5-visor-edge{
    animation:v5-visor-edge-luminance 3.25s ease-in-out both;
}

.living-world-v5 .v5-visor-effect.is-active .v5-visor-scan{
    animation:v5-visor-scan-luminance 1.45s cubic-bezier(.2,.72,.22,1)
        .58s both;
}

.living-world-v5 .v5-visor-effect.is-active .v5-visor-reflection-sweep{
    animation:
        v5-visor-glass-reflection
        var(--v5-reflection-duration, .58s)
        cubic-bezier(.20,.72,.24,1)
        var(--v5-reflection-delay, 1.15s)
        both;
}

.living-world-v5 .v5-visor-effect.is-active .v5-visor-node{
    animation:v5-visor-node-luminance 3.25s ease-in-out both;
}

@keyframes v5-visor-pixel-luminance{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.05)
            saturate(1.06)
            contrast(1.01);
    }

    16%{
        opacity:.18;
    }

    34%{
        opacity:.50;
        filter:
            brightness(1.28)
            saturate(1.22)
            contrast(1.035);
    }

    49%{
        opacity:.70;
        filter:
            brightness(1.44)
            saturate(1.34)
            contrast(1.055);
    }

    63%{
        opacity:.43;
        filter:
            brightness(1.29)
            saturate(1.24)
            contrast(1.035);
    }

    77%{
        opacity:.61;
        filter:
            brightness(1.39)
            saturate(1.31)
            contrast(1.05);
    }

    93%{
        opacity:.07;
    }
}

@keyframes v5-visor-edge-luminance{
    0%,100%{opacity:0}
    18%{opacity:.10}
    38%{opacity:.48}
    51%{opacity:.72}
    66%{opacity:.30}
    79%{opacity:.58}
    93%{opacity:.05}
}

@keyframes v5-visor-scan-luminance{
    0%{
        opacity:0;
        transform:translateX(0);
    }

    18%{opacity:.35}
    39%{opacity:.90}
    66%{opacity:.64}

    100%{
        opacity:0;
        transform:translateX(var(--v5-scan-distance));
    }
}

@keyframes v5-visor-glass-reflection{
    0%{
        opacity:0;
        transform:translateX(0);
    }

    15%{
        opacity:.16;
    }

    38%{
        opacity:.66;
    }

    55%{
        opacity:.82;
    }

    78%{
        opacity:.30;
    }

    100%{
        opacity:0;
        transform:translateX(var(--v5-reflection-distance));
    }
}

@keyframes v5-visor-node-luminance{
    0%,22%,100%{
        opacity:0;
        transform:scale(.72);
        transform-box:fill-box;
        transform-origin:center;
    }

    38%{
        opacity:.78;
        transform:scale(1.18);
    }

    49%{
        opacity:.20;
        transform:scale(.90);
    }

    62%{
        opacity:.70;
        transform:scale(1.08);
    }

    78%{
        opacity:.34;
        transform:scale(.96);
    }
}

/* =========================================================
   TABLET — SCREEN PIXELS / BACKLIGHT RESPONSE
   ========================================================= */

.living-world-v5 .v5-tablet-pixels{
    filter:
        brightness(1.04)
        saturate(1.06)
        contrast(1.01);
}

.living-world-v5 .v5-tablet-edge{
    fill:none;
    stroke:rgba(126,202,255,.62);
    stroke-width:1.05;
    vector-effect:non-scaling-stroke;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(220,246,255,.74))
        drop-shadow(0 0 7px rgba(98,185,255,.38))
        drop-shadow(0 0 11px rgba(151,105,255,.22));
}

.living-world-v5 .v5-tablet-scan{
    stroke:rgba(225,245,255,.84);
    stroke-width:1.35;
    stroke-linecap:round;
    vector-effect:non-scaling-stroke;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,255,.84))
        drop-shadow(0 0 5px rgba(100,197,255,.55));
    transform-box:fill-box;
    transform-origin:center;
}

.living-world-v5 .v5-tablet-node{
    fill:#d9e8ff;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,255,.92))
        drop-shadow(0 0 6px rgba(121,191,255,.66))
        drop-shadow(0 0 8px rgba(163,112,255,.34));
}

.living-world-v5 .v5-device-effect--tablet.is-active .v5-tablet-pixels{
    animation:v5-tablet-pixel-luminance 3.3s ease-in-out both;
}

.living-world-v5 .v5-device-effect--tablet.is-active .v5-tablet-edge{
    animation:v5-tablet-edge-luminance 3.3s ease-in-out both;
}

.living-world-v5 .v5-device-effect--tablet.is-active .v5-tablet-scan{
    animation:v5-tablet-scan-luminance 1.75s cubic-bezier(.2,.72,.22,1)
        .52s both;
}

.living-world-v5 .v5-device-effect--tablet.is-active .v5-tablet-node{
    animation:v5-tablet-node-luminance 3.3s ease-in-out both;
}

@keyframes v5-tablet-pixel-luminance{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.04)
            saturate(1.06)
            contrast(1.01);
    }

    17%{opacity:.12}

    34%{
        opacity:.38;
        filter:
            brightness(1.24)
            saturate(1.19)
            contrast(1.025);
    }

    50%{
        opacity:.63;
        filter:
            brightness(1.46)
            saturate(1.35)
            contrast(1.055);
    }

    65%{
        opacity:.43;
        filter:
            brightness(1.31)
            saturate(1.25)
            contrast(1.035);
    }

    79%{
        opacity:.57;
        filter:
            brightness(1.40)
            saturate(1.31)
            contrast(1.05);
    }

    94%{opacity:.06}
}

@keyframes v5-tablet-edge-luminance{
    0%,100%{opacity:0}
    19%{opacity:.07}
    40%{opacity:.32}
    54%{opacity:.54}
    69%{opacity:.24}
    81%{opacity:.41}
    94%{opacity:.04}
}

@keyframes v5-tablet-scan-luminance{
    0%{
        opacity:0;
        transform:translateY(0);
    }

    20%{opacity:.32}
    42%{opacity:.78}
    68%{opacity:.58}

    100%{
        opacity:0;
        transform:translateY(88px);
    }
}

@keyframes v5-tablet-node-luminance{
    0%,25%,100%{
        opacity:0;
        transform:scale(.7);
        transform-box:fill-box;
        transform-origin:center;
    }

    40%{
        opacity:.68;
        transform:scale(1.16);
    }

    55%{
        opacity:.20;
        transform:scale(.9);
    }

    71%{
        opacity:.59;
        transform:scale(1.06);
    }
}

/* =========================================================
   ORB — INTERNAL PIXEL LUMINOSITY
   ========================================================= */

.living-world-v5 .v5-orb-pixels--core,
.living-world-v5 .v5-orb-pixels--ring{
    filter:
        brightness(1.04)
        saturate(1.06)
        contrast(1.01);
}

.living-world-v5 .v5-orb-edge{
    fill:none;
    vector-effect:non-scaling-stroke;
    opacity:0;
}

.living-world-v5 .v5-orb-edge--inner{
    stroke:rgba(190,144,255,.68);
    stroke-width:1.05;
    filter:
        drop-shadow(0 0 2px rgba(225,209,255,.78))
        drop-shadow(0 0 6px rgba(164,105,255,.48));
}

.living-world-v5 .v5-orb-edge--outer{
    stroke:rgba(104,188,255,.46);
    stroke-width:.85;
    filter:
        drop-shadow(0 0 2px rgba(211,241,255,.64))
        drop-shadow(0 0 6px rgba(91,174,255,.32));
}

.living-world-v5 .v5-orb-spark{
    fill:#e9efff;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,255,.92))
        drop-shadow(0 0 5px rgba(118,196,255,.68))
        drop-shadow(0 0 8px rgba(169,111,255,.54));
}

.living-world-v5 .v5-device-effect--orb.is-active .v5-orb-pixels--core{
    animation:v5-orb-core-pixel-luminance 3.5s ease-in-out both;
}

.living-world-v5 .v5-device-effect--orb.is-active .v5-orb-pixels--ring{
    animation:v5-orb-ring-pixel-luminance 3.5s ease-in-out both;
}

.living-world-v5 .v5-device-effect--orb.is-active .v5-orb-edge--inner{
    animation:v5-orb-edge-luminance 3.5s ease-in-out both;
}

.living-world-v5 .v5-device-effect--orb.is-active .v5-orb-edge--outer{
    animation:v5-orb-edge-luminance 3.5s ease-in-out .09s both;
}

.living-world-v5 .v5-device-effect--orb.is-active .v5-orb-spark{
    animation:v5-orb-spark-luminance 3.5s ease-in-out both;
}

@keyframes v5-orb-core-pixel-luminance{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.04)
            saturate(1.06)
            contrast(1.01);
    }

    17%{opacity:.12}

    34%{
        opacity:.39;
        filter:
            brightness(1.28)
            saturate(1.20)
            contrast(1.025);
    }

    49%{
        opacity:.69;
        filter:
            brightness(1.57)
            saturate(1.42)
            contrast(1.065);
    }

    61%{
        opacity:.43;
        filter:
            brightness(1.34)
            saturate(1.27)
            contrast(1.04);
    }

    74%{
        opacity:.61;
        filter:
            brightness(1.48)
            saturate(1.36)
            contrast(1.055);
    }

    91%{opacity:.09}
}

@keyframes v5-orb-ring-pixel-luminance{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.04)
            saturate(1.06)
            contrast(1.01);
    }

    24%{opacity:.09}

    43%{
        opacity:.31;
        filter:
            brightness(1.22)
            saturate(1.17)
            contrast(1.02);
    }

    57%{
        opacity:.49;
        filter:
            brightness(1.38)
            saturate(1.28)
            contrast(1.04);
    }

    72%{
        opacity:.25;
        filter:
            brightness(1.27)
            saturate(1.21)
            contrast(1.03);
    }

    84%{
        opacity:.38;
        filter:
            brightness(1.33)
            saturate(1.25)
            contrast(1.035);
    }

    94%{opacity:.04}
}

@keyframes v5-orb-edge-luminance{
    0%,100%{opacity:0}
    24%{opacity:.08}
    45%{opacity:.36}
    58%{opacity:.54}
    72%{opacity:.24}
    85%{opacity:.35}
    95%{opacity:.03}
}

@keyframes v5-orb-spark-luminance{
    0%,34%,100%{
        opacity:0;
        transform:scale(.65);
        transform-box:fill-box;
        transform-origin:center;
    }

    43%{
        opacity:.80;
        transform:scale(1.28);
    }

    49%{
        opacity:.18;
        transform:scale(.82);
    }

    59%{
        opacity:.62;
        transform:scale(1.08);
    }

    70%{
        opacity:.10;
        transform:scale(.88);
    }
}



/* =========================================================
   STAFF CRYSTAL — FACET / ARCANE RING LUMINOSITY
   ---------------------------------------------------------
   The crystal never receives a translucent painted veil.
   Its own hero pixels brighten inside the crystal silhouette,
   while the already-painted arcane ring answers behind it.
   ========================================================= */

.living-world-v5 .v5-crystal-pixels,
.living-world-v5 .v5-crystal-ring-pixels{
    filter:
        brightness(1.04)
        saturate(1.07)
        contrast(1.01);
}

.living-world-v5 .v5-crystal-facet{
    fill:none;
    stroke:rgba(224,207,255,.72);
    stroke-width:.95;
    stroke-linecap:round;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(246,240,255,.82))
        drop-shadow(0 0 5px rgba(177,117,255,.54))
        drop-shadow(0 0 8px rgba(106,153,255,.25));
}

.living-world-v5 .v5-crystal-core{
    fill:#f4efff;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,255,.96))
        drop-shadow(0 0 6px rgba(207,169,255,.78))
        drop-shadow(0 0 11px rgba(154,99,255,.58));
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-crystal-pixels{
    animation:v5-crystal-pixel-luminance 4.1s ease-in-out both;
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-crystal-ring-pixels{
    animation:v5-crystal-ring-pixel-luminance 4.1s ease-in-out both;
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-crystal-facet{
    animation:v5-crystal-facet-luminance 4.1s ease-in-out both;
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-crystal-core{
    animation:v5-crystal-core-luminance 4.1s ease-in-out both;
}

@keyframes v5-crystal-pixel-luminance{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.04)
            saturate(1.07)
            contrast(1.01);
    }

    13%{opacity:.08}

    28%{
        opacity:.30;
        filter:
            brightness(1.22)
            saturate(1.18)
            contrast(1.025);
    }

    44%{
        opacity:.58;
        filter:
            brightness(1.50)
            saturate(1.34)
            contrast(1.055);
    }

    57%{
        opacity:.72;
        filter:
            brightness(1.68)
            saturate(1.44)
            contrast(1.07);
    }

    70%{
        opacity:.43;
        filter:
            brightness(1.39)
            saturate(1.28)
            contrast(1.04);
    }

    82%{
        opacity:.57;
        filter:
            brightness(1.52)
            saturate(1.36)
            contrast(1.055);
    }

    94%{opacity:.06}
}

@keyframes v5-crystal-ring-pixel-luminance{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.04)
            saturate(1.07)
            contrast(1.01);
    }

    22%{opacity:.04}

    39%{
        opacity:.18;
        filter:
            brightness(1.18)
            saturate(1.16)
            contrast(1.02);
    }

    55%{
        opacity:.34;
        filter:
            brightness(1.34)
            saturate(1.27)
            contrast(1.035);
    }

    68%{
        opacity:.20;
        filter:
            brightness(1.24)
            saturate(1.20)
            contrast(1.025);
    }

    82%{
        opacity:.27;
        filter:
            brightness(1.30)
            saturate(1.24)
            contrast(1.03);
    }

    94%{opacity:.03}
}

@keyframes v5-crystal-facet-luminance{
    0%,100%{opacity:0}
    18%{opacity:.05}
    36%{opacity:.26}
    52%{opacity:.58}
    62%{opacity:.72}
    74%{opacity:.31}
    84%{opacity:.48}
    95%{opacity:.03}
}

@keyframes v5-crystal-core-luminance{
    0%,28%,100%{
        opacity:0;
        transform:scale(.58);
        transform-box:fill-box;
        transform-origin:center;
    }

    42%{
        opacity:.28;
        transform:scale(.82);
    }

    55%{
        opacity:.86;
        transform:scale(1.10);
    }

    61%{
        opacity:.34;
        transform:scale(.91);
    }

    70%{
        opacity:.72;
        transform:scale(1.03);
    }

    82%{
        opacity:.24;
        transform:scale(.95);
    }
}



/* =========================================================
   STAFF COMPLETION — CROWN / SHAFT PIXEL REFLECTION
   ---------------------------------------------------------
   The crystal remains the source. Existing metalwork pixels in
   the crown and upper shaft catch a short descending reflection.
   No luminous rod or broad staff-shaped overlay is painted.
   ========================================================= */

.living-world-v5 .v5-staff-crown-pixels,
.living-world-v5 .v5-staff-shaft-pixels{
    filter:
        brightness(1.03)
        saturate(1.04)
        contrast(1.01);
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-staff-crown-pixels{
    animation:v5-staff-crown-catch 4.1s ease-in-out both;
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-staff-shaft-pixels--1{
    animation:v5-staff-trace-one 4.1s ease-in-out both;
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-staff-shaft-pixels--2{
    animation:v5-staff-trace-two 4.1s ease-in-out both;
}

.living-world-v5 .v5-world-effect--crystal.is-active .v5-staff-shaft-pixels--3{
    animation:v5-staff-trace-three 4.1s ease-in-out both;
}

@keyframes v5-staff-crown-catch{
    0%,100%{
        opacity:0;
        filter:brightness(1.03) saturate(1.04) contrast(1.01);
    }
    24%{opacity:.04}
    39%{
        opacity:.18;
        filter:
            brightness(1.18)
            saturate(1.12)
            contrast(1.02)
            drop-shadow(0 0 5px rgba(163,111,255,.16));
    }
    53%{
        opacity:.38;
        filter:
            brightness(1.36)
            saturate(1.22)
            contrast(1.035)
            drop-shadow(0 0 7px rgba(177,119,255,.22))
            drop-shadow(0 0 10px rgba(98,177,255,.10));
    }
    68%{opacity:.19}
    82%{opacity:.27}
    95%{opacity:.02}
}

@keyframes v5-staff-trace-one{
    0%,31%,100%{opacity:0}
    42%{opacity:.12}
    52%{
        opacity:.34;
        filter:
            brightness(1.33)
            saturate(1.19)
            contrast(1.03)
            drop-shadow(0 0 5px rgba(165,111,255,.17));
    }
    64%{opacity:.14}
    76%{opacity:.04}
}

@keyframes v5-staff-trace-two{
    0%,42%,100%{opacity:0}
    52%{opacity:.10}
    63%{
        opacity:.31;
        filter:
            brightness(1.30)
            saturate(1.17)
            contrast(1.028)
            drop-shadow(0 0 5px rgba(153,107,255,.15));
    }
    74%{opacity:.12}
    86%{opacity:.03}
}

@keyframes v5-staff-trace-three{
    0%,53%,100%{opacity:0}
    63%{opacity:.08}
    74%{
        opacity:.26;
        filter:
            brightness(1.27)
            saturate(1.15)
            contrast(1.024)
            drop-shadow(0 0 4px rgba(144,103,255,.13));
    }
    84%{opacity:.09}
    94%{opacity:.02}
}


/* =========================================================
   MEDALLION OMEN — NATIVE JEWEL LUMINOSITY
   ---------------------------------------------------------
   The wizard's purple medallion answers his visor. Its existing
   jewel pixels intensify from within; only a hairline reflected
   edge and a pin-point core glint are added.
   ========================================================= */

.living-world-v5 .v5-medallion-pixels,
.living-world-v5 .v5-medallion-gem-pixels{
    filter:
        brightness(1.04)
        saturate(1.06)
        contrast(1.01);
}

.living-world-v5 .v5-medallion-edge{
    fill:none;
    stroke:rgba(195,163,255,.58);
    stroke-width:.72;
    vector-effect:non-scaling-stroke;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(231,221,255,.66))
        drop-shadow(0 0 5px rgba(161,108,255,.32));
}

.living-world-v5 .v5-medallion-core{
    fill:#f0eaff;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,255,.90))
        drop-shadow(0 0 5px rgba(185,136,255,.64));
}

.living-world-v5 .v5-world-effect--medallion.is-active .v5-medallion-pixels{
    animation:v5-medallion-pixel-omen 3s ease-in-out both;
}

.living-world-v5 .v5-world-effect--medallion.is-active .v5-medallion-gem-pixels{
    animation:v5-medallion-gem-omen 3s ease-in-out both;
}

.living-world-v5 .v5-world-effect--medallion.is-active .v5-medallion-edge{
    animation:v5-medallion-edge-omen 3s ease-in-out both;
}

.living-world-v5 .v5-world-effect--medallion.is-active .v5-medallion-core{
    animation:v5-medallion-core-omen 3s ease-in-out both;
}

@keyframes v5-medallion-pixel-omen{
    0%,100%{
        opacity:0;
        filter:brightness(1.04) saturate(1.06) contrast(1.01);
    }
    15%{opacity:.05}
    32%{
        opacity:.24;
        filter:brightness(1.24) saturate(1.18) contrast(1.025);
    }
    47%{
        opacity:.53;
        filter:
            brightness(1.48)
            saturate(1.36)
            contrast(1.05)
            drop-shadow(0 0 5px rgba(162,109,255,.19));
    }
    59%{opacity:.26}
    71%{
        opacity:.44;
        filter:brightness(1.40) saturate(1.31) contrast(1.042);
    }
    89%{opacity:.06}
}

@keyframes v5-medallion-gem-omen{
    0%,100%{opacity:0}
    24%{opacity:.08}
    42%{
        opacity:.42;
        filter:
            brightness(1.55)
            saturate(1.43)
            contrast(1.055)
            drop-shadow(0 0 6px rgba(177,117,255,.24));
    }
    54%{
        opacity:.68;
        filter:
            brightness(1.72)
            saturate(1.50)
            contrast(1.065)
            drop-shadow(0 0 7px rgba(188,129,255,.28));
    }
    66%{opacity:.31}
    77%{opacity:.49}
    91%{opacity:.05}
}

@keyframes v5-medallion-edge-omen{
    0%,100%{opacity:0}
    27%{opacity:.04}
    47%{opacity:.36}
    58%{opacity:.52}
    70%{opacity:.22}
    80%{opacity:.34}
    92%{opacity:.03}
}

@keyframes v5-medallion-core-omen{
    0%,34%,100%{
        opacity:0;
        transform:scale(.58);
        transform-box:fill-box;
        transform-origin:center;
    }
    49%{
        opacity:.78;
        transform:scale(1.16);
    }
    57%{
        opacity:.18;
        transform:scale(.82);
    }
    68%{
        opacity:.56;
        transform:scale(1.03);
    }
    82%{opacity:.10}
}


/* =========================================================
   TOWER EYE — SPECTRAL WATCHER v5.3.2
   ---------------------------------------------------------
   Unique environmental exception: the native orange Eye keeps
   its own ember luminosity while cool violet/indigo spectral
   radiance briefly reveals the upper tower and storm around it.

   Both warm and cool layers are made from the hero's own pixels.
   No solid aura disc / rectangular glaze is painted over art.
   ========================================================= */

.living-world-v5 .v5-world-effect--eye{
    mix-blend-mode:screen;
}

.living-world-v5 .v5-eye-pixels,
.living-world-v5 .v5-eye-spectral{
    opacity:0;
}

/* ---------------------------------------------------------
   SPECTRAL ATMOSPHERE
   --------------------------------------------------------- */

.living-world-v5 .v5-eye-spectral--atmosphere{
    opacity:0;
    filter:
        brightness(1.12)
        saturate(1.10)
        contrast(1.02)
        hue-rotate(228deg)
        blur(3.6px);
}

.living-world-v5 .v5-eye-spectral--spine{
    opacity:0;
    filter:
        brightness(1.08)
        saturate(1.06)
        contrast(1.03)
        hue-rotate(228deg)
        blur(.7px);
}

/* ---------------------------------------------------------
   NATIVE EYE LUMINOSITY
   --------------------------------------------------------- */

.living-world-v5 .v5-eye-pixels{
    filter:
        brightness(1.06)
        saturate(1.08)
        contrast(1.02);
}

.living-world-v5 .v5-eye-pixels--halo{
    opacity:0;
    filter:
        brightness(1.18)
        saturate(1.10)
        contrast(1.02)
        blur(1.6px);
}

.living-world-v5 .v5-eye-edge{
    fill:none;
    stroke:rgba(255,126,42,.88);
    stroke-width:1.22;
    stroke-linecap:round;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,230,171,.92))
        drop-shadow(0 0 7px rgba(255,111,28,.78))
        drop-shadow(0 0 15px rgba(211,46,15,.50));
}

.living-world-v5 .v5-eye-edge--slit{
    stroke:rgba(255,188,92,.94);
    stroke-width:1.02;
}

.living-world-v5 .v5-eye-pupil-glint{
    fill:#fff4cf;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,240,1))
        drop-shadow(0 0 7px rgba(255,198,91,1))
        drop-shadow(0 0 14px rgba(255,92,20,.92))
        drop-shadow(0 0 26px rgba(195,37,13,.68));
}

/* ---------------------------------------------------------
   ACTIVE SEQUENCE
   Eye ignites first; spectral watcher appears immediately after.
   --------------------------------------------------------- */

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-spectral--atmosphere{
    animation:v5-eye-spectral-atmosphere 5.9s ease-in-out .12s both;
}

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-spectral--spine{
    animation:v5-eye-spectral-spine 5.9s ease-in-out .08s both;
}

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-pixels--halo{
    animation:v5-eye-halo-presence 5.9s ease-in-out both;
}

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-pixels--ring{
    animation:v5-eye-ring-presence 5.9s ease-in-out both;
}

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-pixels--channel{
    animation:v5-eye-channel-presence 5.9s ease-in-out both;
}

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-edge--outer{
    animation:v5-eye-edge-presence 5.9s ease-in-out both;
}

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-edge--slit{
    animation:v5-eye-slit-presence 5.9s ease-in-out both;
}

.living-world-v5 .v5-world-effect--eye.is-active .v5-eye-pupil-glint{
    animation:v5-eye-pupil-presence 5.9s ease-in-out both;
}

/* Cool spectral crown: bright enough to be discovered in the dark
   side, but feathered so the title area never receives a solid wash. */
@keyframes v5-eye-spectral-atmosphere{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.05)
            saturate(1.08)
            contrast(1.02)
            hue-rotate(228deg)
            blur(4.4px);
    }

    17%{opacity:.03}

    30%{
        opacity:.16;
        filter:
            brightness(1.72)
            saturate(1.30)
            contrast(1.035)
            hue-rotate(224deg)
            blur(4.0px)
            drop-shadow(0 0 18px rgba(121,91,255,.28));
    }

    43%{
        opacity:.42;
        filter:
            brightness(2.55)
            saturate(1.58)
            contrast(1.07)
            hue-rotate(220deg)
            blur(3.6px)
            drop-shadow(0 0 20px rgba(161,108,255,.50))
            drop-shadow(0 0 42px rgba(86,133,255,.34));
    }

    54%{
        opacity:.66;
        filter:
            brightness(3.35)
            saturate(1.82)
            contrast(1.10)
            hue-rotate(218deg)
            blur(3.2px)
            drop-shadow(0 0 24px rgba(183,124,255,.72))
            drop-shadow(0 0 48px rgba(91,155,255,.54))
            drop-shadow(0 0 72px rgba(102,72,206,.36));
    }

    63%{
        opacity:.34;
        filter:
            brightness(2.10)
            saturate(1.48)
            contrast(1.06)
            hue-rotate(221deg)
            blur(3.5px)
            drop-shadow(0 0 28px rgba(131,92,255,.34));
    }

    72%{
        opacity:.59;
        filter:
            brightness(3.05)
            saturate(1.72)
            contrast(1.09)
            hue-rotate(216deg)
            blur(3.2px)
            drop-shadow(0 0 22px rgba(178,116,255,.62))
            drop-shadow(0 0 46px rgba(83,149,255,.46));
    }

    86%{
        opacity:.16;
        filter:
            brightness(1.62)
            saturate(1.30)
            contrast(1.04)
            hue-rotate(223deg)
            blur(3.9px);
    }

    96%{opacity:.025}
}

/* Narrow spectral tower apparition. Because this is a clipped clone
   of the real tower, architecture/detail remains intact. */
@keyframes v5-eye-spectral-spine{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.04)
            saturate(1.06)
            contrast(1.02)
            hue-rotate(228deg)
            blur(.8px);
    }

    24%{opacity:.05}

    39%{
        opacity:.30;
        filter:
            brightness(1.85)
            saturate(1.44)
            contrast(1.06)
            hue-rotate(220deg)
            blur(.7px)
            drop-shadow(0 0 8px rgba(163,111,255,.34));
    }

    53%{
        opacity:.61;
        filter:
            brightness(2.72)
            saturate(1.72)
            contrast(1.10)
            hue-rotate(216deg)
            blur(.55px)
            drop-shadow(0 0 10px rgba(194,141,255,.58))
            drop-shadow(0 0 24px rgba(83,150,255,.40));
    }

    63%{
        opacity:.28;
        filter:
            brightness(1.82)
            saturate(1.42)
            contrast(1.06)
            hue-rotate(221deg)
            blur(.7px);
    }

    72%{
        opacity:.52;
        filter:
            brightness(2.42)
            saturate(1.62)
            contrast(1.085)
            hue-rotate(217deg)
            blur(.58px)
            drop-shadow(0 0 17px rgba(125,92,255,.38));
    }

    90%{opacity:.07}
}

/* Warm native-pixel aura — keeps the Eye itself orange/ember. */
@keyframes v5-eye-halo-presence{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.08)
            saturate(1.06)
            contrast(1.02)
            blur(1.8px);
    }

    14%{opacity:.05}

    31%{
        opacity:.26;
        filter:
            brightness(2.0)
            saturate(1.22)
            contrast(1.045)
            blur(1.8px)
            drop-shadow(0 0 8px rgba(255,118,28,.42))
            drop-shadow(0 0 18px rgba(239,64,17,.28));
    }

    46%{
        opacity:.58;
        filter:
            brightness(3.45)
            saturate(1.44)
            contrast(1.08)
            blur(1.7px)
            drop-shadow(0 0 10px rgba(255,184,68,.72))
            drop-shadow(0 0 24px rgba(255,83,18,.62))
            drop-shadow(0 0 44px rgba(190,38,12,.44));
    }

    55%{
        opacity:.78;
        filter:
            brightness(4.10)
            saturate(1.56)
            contrast(1.10)
            blur(1.55px)
            drop-shadow(0 0 12px rgba(255,204,94,.88))
            drop-shadow(0 0 28px rgba(255,85,18,.78))
            drop-shadow(0 0 52px rgba(185,34,10,.54));
    }

    63%{
        opacity:.34;
        filter:
            brightness(2.35)
            saturate(1.30)
            contrast(1.06)
            blur(1.7px)
            drop-shadow(0 0 15px rgba(255,91,20,.44));
    }

    72%{
        opacity:.66;
        filter:
            brightness(3.62)
            saturate(1.48)
            contrast(1.085)
            blur(1.6px)
            drop-shadow(0 0 11px rgba(255,176,63,.72))
            drop-shadow(0 0 25px rgba(245,69,16,.64))
            drop-shadow(0 0 45px rgba(176,31,10,.42));
    }

    88%{
        opacity:.17;
        filter:
            brightness(1.70)
            saturate(1.18)
            contrast(1.04)
            blur(1.8px);
    }

    96%{opacity:.03}
}

@keyframes v5-eye-ring-presence{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.06)
            saturate(1.08)
            contrast(1.02);
    }

    10%{opacity:.08}

    25%{
        opacity:.40;
        filter:
            brightness(1.62)
            saturate(1.22)
            contrast(1.05)
            drop-shadow(0 0 5px rgba(255,122,30,.46));
    }

    41%{
        opacity:.80;
        filter:
            brightness(2.42)
            saturate(1.40)
            contrast(1.09)
            drop-shadow(0 0 7px rgba(255,154,45,.76))
            drop-shadow(0 0 16px rgba(239,62,17,.58));
    }

    54%{
        opacity:1;
        filter:
            brightness(3.35)
            saturate(1.58)
            contrast(1.13)
            drop-shadow(0 0 8px rgba(255,214,121,.96))
            drop-shadow(0 0 19px rgba(255,91,18,.88))
            drop-shadow(0 0 34px rgba(187,34,11,.62));
    }

    62%{
        opacity:.58;
        filter:
            brightness(2.05)
            saturate(1.34)
            contrast(1.07)
            drop-shadow(0 0 8px rgba(255,103,21,.54));
    }

    72%{
        opacity:.92;
        filter:
            brightness(2.92)
            saturate(1.50)
            contrast(1.11)
            drop-shadow(0 0 8px rgba(255,190,76,.86))
            drop-shadow(0 0 18px rgba(247,73,16,.72));
    }

    86%{
        opacity:.34;
        filter:
            brightness(1.72)
            saturate(1.22)
            contrast(1.05);
    }

    96%{opacity:.04}
}

@keyframes v5-eye-channel-presence{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.05)
            saturate(1.07)
            contrast(1.02);
    }

    19%{opacity:.05}

    37%{
        opacity:.31;
        filter:
            brightness(1.55)
            saturate(1.22)
            contrast(1.05);
    }

    51%{
        opacity:.76;
        filter:
            brightness(2.48)
            saturate(1.44)
            contrast(1.10)
            drop-shadow(0 0 6px rgba(255,117,25,.68))
            drop-shadow(0 0 15px rgba(221,51,13,.42));
    }

    60%{
        opacity:.44;
        filter:
            brightness(1.75)
            saturate(1.28)
            contrast(1.065);
    }

    73%{
        opacity:.66;
        filter:
            brightness(2.16)
            saturate(1.36)
            contrast(1.08)
            drop-shadow(0 0 7px rgba(244,73,17,.48));
    }

    92%{opacity:.05}
}

@keyframes v5-eye-edge-presence{
    0%,100%{opacity:0}
    18%{opacity:.06}
    37%{opacity:.42}
    49%{opacity:.86}
    55%{opacity:1}
    62%{opacity:.42}
    72%{opacity:.88}
    88%{opacity:.16}
}

@keyframes v5-eye-slit-presence{
    0%,100%{opacity:0}
    30%{opacity:.05}
    43%{opacity:.38}
    54%{opacity:.96}
    61%{opacity:.44}
    71%{opacity:.80}
    86%{opacity:.12}
}

@keyframes v5-eye-pupil-presence{
    0%,39%,100%{
        opacity:0;
        transform:scale(.50);
        transform-box:fill-box;
        transform-origin:center;
    }

    48%{
        opacity:.35;
        transform:scale(.92);
    }

    54%{
        opacity:1;
        transform:scale(1.82);
    }

    58%{
        opacity:.18;
        transform:scale(.72);
    }

    64%{
        opacity:.94;
        transform:scale(1.34);
    }

    70%{
        opacity:.20;
        transform:scale(.82);
    }

    75%{
        opacity:.78;
        transform:scale(1.12);
    }

    88%{
        opacity:.06;
        transform:scale(.76);
    }
}


/* =========================================================
   VOLCANO — INTERNAL LAVA / CRATER LUMINOSITY v5.4
   ---------------------------------------------------------
   The orb doctrine applied to the mountain. The effect reuses
   the volcano's own hot pixels inside crater, plume and lava-
   channel masks. No flat orange veil is painted over the cone.
   ========================================================= */

.living-world-v5 .v5-world-effect--volcano{
    mix-blend-mode:screen;
}

.living-world-v5 .v5-volcano-pixels{
    opacity:0;
    filter:
        brightness(1.03)
        saturate(1.05)
        contrast(1.01);
}

/* Eruption plume: native fire/cloud pixels, slightly breathed upward. */
.living-world-v5 .v5-volcano-pixels--plume{
    transform-box:view-box;
    transform-origin:1487px 165px;
}

/* Hot channels remain the sharpest part of the event. */
.living-world-v5 .v5-volcano-pixels--lava{
    filter:
        brightness(1.04)
        saturate(1.07)
        contrast(1.02);
}

.living-world-v5 .v5-volcano-core-glint{
    fill:#fff0ca;
    opacity:0;
    filter:
        drop-shadow(0 0 2px rgba(255,255,245,.96))
        drop-shadow(0 0 6px rgba(255,177,72,.82))
        drop-shadow(0 0 12px rgba(255,82,22,.56));
}

.living-world-v5 .v5-world-effect--volcano.is-active .v5-volcano-pixels--plume{
    animation:v5-volcano-plume-luminosity 5.2s ease-in-out both;
}

.living-world-v5 .v5-world-effect--volcano.is-active .v5-volcano-pixels--crater{
    animation:v5-volcano-crater-luminosity 5.2s ease-in-out both;
}

.living-world-v5 .v5-world-effect--volcano.is-active .v5-volcano-pixels--lava{
    animation:v5-volcano-lava-luminosity 5.2s ease-in-out both;
}

.living-world-v5 .v5-world-effect--volcano.is-active .v5-volcano-core-glint{
    animation:v5-volcano-core-glint 5.2s ease-in-out both;
}

@keyframes v5-volcano-plume-luminosity{
    0%,100%{
        opacity:0;
        transform:translateY(0) scale(1);
        filter:
            brightness(1.03)
            saturate(1.05)
            contrast(1.01)
            blur(0);
    }

    18%{opacity:.05}

    34%{
        opacity:.17;
        transform:translateY(-1px) scale(1.003);
        filter:
            brightness(1.16)
            saturate(1.13)
            contrast(1.02)
            blur(.35px);
    }

    49%{
        opacity:.34;
        transform:translateY(-2px) scale(1.007);
        filter:
            brightness(1.34)
            saturate(1.22)
            contrast(1.035)
            blur(.55px)
            drop-shadow(0 0 9px rgba(255,91,25,.22));
    }

    62%{
        opacity:.21;
        transform:translateY(-1px) scale(1.004);
        filter:
            brightness(1.22)
            saturate(1.16)
            contrast(1.025)
            blur(.4px);
    }

    74%{
        opacity:.30;
        transform:translateY(-2.5px) scale(1.008);
        filter:
            brightness(1.30)
            saturate(1.20)
            contrast(1.03)
            blur(.5px)
            drop-shadow(0 0 8px rgba(255,81,21,.18));
    }

    92%{opacity:.04}
}

@keyframes v5-volcano-crater-luminosity{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.03)
            saturate(1.05)
            contrast(1.01);
    }

    12%{opacity:.07}

    29%{
        opacity:.31;
        filter:
            brightness(1.28)
            saturate(1.17)
            contrast(1.03);
    }

    44%{
        opacity:.67;
        filter:
            brightness(1.62)
            saturate(1.30)
            contrast(1.055)
            drop-shadow(0 0 7px rgba(255,111,29,.32));
    }

    55%{
        opacity:.82;
        filter:
            brightness(1.82)
            saturate(1.37)
            contrast(1.07)
            drop-shadow(0 0 9px rgba(255,146,46,.46))
            drop-shadow(0 0 16px rgba(245,71,20,.26));
    }

    65%{
        opacity:.39;
        filter:
            brightness(1.40)
            saturate(1.22)
            contrast(1.04);
    }

    76%{
        opacity:.70;
        filter:
            brightness(1.68)
            saturate(1.32)
            contrast(1.06)
            drop-shadow(0 0 8px rgba(255,125,34,.36));
    }

    91%{opacity:.08}
}

@keyframes v5-volcano-lava-luminosity{
    0%,100%{
        opacity:0;
        filter:
            brightness(1.04)
            saturate(1.07)
            contrast(1.02);
    }

    20%{opacity:.05}

    36%{
        opacity:.24;
        filter:
            brightness(1.24)
            saturate(1.18)
            contrast(1.035);
    }

    50%{
        opacity:.57;
        filter:
            brightness(1.58)
            saturate(1.31)
            contrast(1.06)
            drop-shadow(0 0 5px rgba(255,96,25,.28));
    }

    61%{
        opacity:.31;
        filter:
            brightness(1.36)
            saturate(1.23)
            contrast(1.045);
    }

    73%{
        opacity:.49;
        filter:
            brightness(1.49)
            saturate(1.28)
            contrast(1.055)
            drop-shadow(0 0 5px rgba(255,84,22,.24));
    }

    89%{opacity:.06}
}

@keyframes v5-volcano-core-glint{
    0%,31%,100%{
        opacity:0;
        transform:scale(.62);
        transform-box:fill-box;
        transform-origin:center;
    }

    43%{
        opacity:.36;
        transform:scale(.90);
    }

    54%{
        opacity:.88;
        transform:scale(1.22);
    }

    60%{
        opacity:.22;
        transform:scale(.78);
    }

    72%{
        opacity:.67;
        transform:scale(1.05);
    }

    83%{
        opacity:.12;
        transform:scale(.84);
    }
}


/* =========================================================
   AURORA / SKY — NATIVE STORM LUMINOSITY v5.5
   ---------------------------------------------------------
   Environmental awakening using only the hero's own cloud and
   lightning pixels. The sky does not receive a color glaze.
   Feathered pixel echoes briefly lift the existing violet-blue
   storm light and drift by only a few pixels, so the realm feels
   as if it breathed rather than as if an overlay was switched on.
   ========================================================= */

.living-world-v5 .v5-world-effect--aurora{
    mix-blend-mode:screen;
}

.living-world-v5 .v5-aurora-pixels{
    opacity:0;
    transform-box:view-box;
    filter:
        brightness(1.02)
        saturate(1.04)
        contrast(1.01);
}

.living-world-v5 .v5-aurora-pixels--left{
    transform-origin:228px 168px;
}

.living-world-v5 .v5-aurora-pixels--middle{
    transform-origin:626px 178px;
}

.living-world-v5 .v5-aurora-pixels--high{
    transform-origin:825px 88px;
}

.living-world-v5 .v5-aurora-pixels--lightning{
    filter:
        brightness(1.08)
        saturate(1.08)
        contrast(1.02);
}

.living-world-v5 .v5-world-effect--aurora.is-active .v5-aurora-pixels--left{
    animation:v5-aurora-left-breath 7.2s ease-in-out both;
}

.living-world-v5 .v5-world-effect--aurora.is-active .v5-aurora-pixels--middle{
    animation:v5-aurora-middle-breath 7.2s ease-in-out both;
}

.living-world-v5 .v5-world-effect--aurora.is-active .v5-aurora-pixels--high{
    animation:v5-aurora-high-breath 7.2s ease-in-out both;
}

.living-world-v5 .v5-world-effect--aurora.is-active .v5-aurora-pixels--lightning{
    animation:v5-aurora-lightning-answer 7.2s ease-in-out both;
}

@keyframes v5-aurora-left-breath{
    0%,100%{
        opacity:0;
        transform:translate(0,0) scale(1);
        filter:
            brightness(1.02)
            saturate(1.04)
            contrast(1.01);
    }

    16%{opacity:.04}

    31%{
        opacity:.13;
        transform:translate(1px,-.4px) scale(1.0015);
        filter:
            brightness(1.12)
            saturate(1.14)
            contrast(1.018)
            hue-rotate(2deg);
    }

    47%{
        opacity:.24;
        transform:translate(2px,-1px) scale(1.003);
        filter:
            brightness(1.24)
            saturate(1.24)
            contrast(1.026)
            hue-rotate(5deg)
            drop-shadow(0 0 12px rgba(132,107,255,.12));
    }

    61%{
        opacity:.15;
        transform:translate(1px,-.5px) scale(1.002);
        filter:
            brightness(1.16)
            saturate(1.18)
            contrast(1.02)
            hue-rotate(3deg);
    }

    76%{
        opacity:.20;
        transform:translate(1.5px,-.8px) scale(1.0025);
        filter:
            brightness(1.21)
            saturate(1.21)
            contrast(1.024)
            hue-rotate(5deg);
    }

    93%{opacity:.03}
}

@keyframes v5-aurora-middle-breath{
    0%,100%{
        opacity:0;
        transform:translate(0,0) scale(1);
        filter:
            brightness(1.02)
            saturate(1.04)
            contrast(1.01);
    }

    20%{opacity:.03}

    35%{
        opacity:.12;
        transform:translate(-.8px,-.4px) scale(1.0015);
        filter:
            brightness(1.13)
            saturate(1.16)
            contrast(1.02)
            hue-rotate(4deg);
    }

    52%{
        opacity:.27;
        transform:translate(-1.8px,-1px) scale(1.0035);
        filter:
            brightness(1.28)
            saturate(1.30)
            contrast(1.03)
            hue-rotate(8deg)
            drop-shadow(0 0 13px rgba(113,134,255,.13));
    }

    65%{
        opacity:.16;
        transform:translate(-1px,-.5px) scale(1.002);
        filter:
            brightness(1.17)
            saturate(1.20)
            contrast(1.022)
            hue-rotate(5deg);
    }

    79%{
        opacity:.23;
        transform:translate(-1.5px,-.8px) scale(1.003);
        filter:
            brightness(1.24)
            saturate(1.25)
            contrast(1.027)
            hue-rotate(7deg);
    }

    94%{opacity:.03}
}

@keyframes v5-aurora-high-breath{
    0%,100%{
        opacity:0;
        transform:translate(0,0) scale(1);
    }

    24%{opacity:.02}

    41%{
        opacity:.10;
        transform:translate(.6px,-.8px) scale(1.002);
        filter:
            brightness(1.14)
            saturate(1.16)
            contrast(1.02)
            hue-rotate(5deg);
    }

    57%{
        opacity:.19;
        transform:translate(1.2px,-1.4px) scale(1.004);
        filter:
            brightness(1.23)
            saturate(1.24)
            contrast(1.026)
            hue-rotate(9deg)
            drop-shadow(0 0 11px rgba(154,105,255,.11));
    }

    72%{
        opacity:.11;
        transform:translate(.7px,-.8px) scale(1.0025);
        filter:
            brightness(1.16)
            saturate(1.18)
            contrast(1.02)
            hue-rotate(6deg);
    }

    86%{opacity:.07}
    96%{opacity:.01}
}

@keyframes v5-aurora-lightning-answer{
    0%,18%,100%{
        opacity:0;
        filter:
            brightness(1.08)
            saturate(1.08)
            contrast(1.02);
    }

    30%{
        opacity:.08;
        filter:
            brightness(1.20)
            saturate(1.12)
            contrast(1.025);
    }

    43%{
        opacity:.30;
        filter:
            brightness(1.48)
            saturate(1.18)
            contrast(1.04)
            hue-rotate(3deg)
            drop-shadow(0 0 5px rgba(205,213,255,.20))
            drop-shadow(0 0 11px rgba(146,106,255,.17));
    }

    49%{opacity:.10}

    59%{
        opacity:.39;
        filter:
            brightness(1.62)
            saturate(1.20)
            contrast(1.045)
            hue-rotate(4deg)
            drop-shadow(0 0 6px rgba(222,226,255,.23))
            drop-shadow(0 0 13px rgba(138,103,255,.20));
    }

    66%{opacity:.12}

    78%{
        opacity:.23;
        filter:
            brightness(1.40)
            saturate(1.16)
            contrast(1.035)
            hue-rotate(3deg);
    }

    91%{opacity:.03}
}

/* =========================================================
   ACCESSIBILITY / REDUCED MOTION
   ========================================================= */

@media(prefers-reduced-motion:reduce){
    .living-world-v5 .v5-effect,
    .living-world-v5 .v5-effect *{
        animation:none !important;
        transition:none !important;
    }
}

/* =========================================================
   LIVING WORLD v5.6 — REALM ECHO
   The linked event intentionally adds no new painted overlay.
   It choreographs the already-approved pixel-luminosity effects.
   ========================================================= */


/* =========================================================
   LIVING WORLD v5.7 — STAFF COMPLETION + MEDALLION OMEN
   The staff extension and medallion omen both reuse native hero
   pixels. No broad translucent overlay is introduced.
   ========================================================= */


/* =========================================================
   LIVING WORLD v5.8 — VISOR SPECULAR REFLECTION
   Reflection only; no additional lens glaze.
   ========================================================= */
@media(prefers-reduced-motion:reduce){
    .living-world-v5 .v5-visor-reflection{
        animation:none !important;
        opacity:0 !important;
    }
}
