.puk-combat-vfx{position:fixed;inset:0;z-index:9500;pointer-events:none;overflow:hidden;isolation:isolate}
.puk-ultimate-canvas{position:fixed;inset:0;width:100vw;height:100vh;z-index:9500;pointer-events:none}
.puk-ultimate-absorbing>.puk-enemy-forest-smoke{visibility:hidden}
.puk-enemy-forest-smoke{animation:pukForestSmokeSettle .8s ease-out both}
@keyframes pukForestSmokeSettle{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.puk-enemy-forest-smoke{animation:none}}
.puk-combat-vfx>span{position:absolute;pointer-events:none}
.puk-fx-domain{z-index:4;transform-origin:50% 60%;filter:drop-shadow(0 0 4px var(--pc2))}
.puk-fx-domain svg,.puk-fx-vector-motif svg,.puk-fx-ribbon-flight svg{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke-linecap:round;stroke-linejoin:round}
.puk-fx-domain path{stroke-dasharray:1;stroke-dashoffset:1;vector-effect:non-scaling-stroke}
.puk-vector-outline{stroke:var(--pc4);stroke-width:1.6}
.puk-vector-outline path:first-child{stroke:var(--pc2);stroke-width:3}
.puk-vector-ribbons{stroke:var(--pc4);stroke-width:1.9;opacity:.85}
.puk-vector-ribbons path:first-child{stroke:var(--pc1);stroke-width:4}
.puk-vector-cage{stroke:var(--pc4);stroke-width:1;opacity:.55}
.puk-fx-domain.is-poison .puk-vector-ribbons{stroke:var(--pc1)}
.puk-fx-domain.is-poison .puk-vector-ribbons path:first-child{stroke:var(--pc2);stroke-width:5;opacity:.8}
.puk-fx-vector-motif{z-index:6;width:40px;height:40px;filter:drop-shadow(0 0 4px var(--pc2));transform-origin:center}
.puk-fx-vector-motif svg{stroke:var(--pc4);stroke-width:1.8;fill:color-mix(in srgb,var(--pc1) 17%,transparent)}
.puk-fx-vector-motif.is-projectile{z-index:3;width:48px;height:48px}
.puk-fx-ribbon-flight{z-index:2;mix-blend-mode:screen}
.puk-fx-ribbon-flight path{fill:none;stroke-dasharray:.22 .78;stroke-dashoffset:1}
.puk-vector-wake{stroke:var(--pc2);stroke-width:12;filter:blur(4px)}
.puk-vector-thread{stroke:var(--pc4);stroke-width:1.8}
.puk-fx-silk{z-index:3;width:1px;background:linear-gradient(transparent,var(--pc4));transform-origin:top;opacity:.6}
.puk-combat-vfx.is-kristaly .puk-vector-outline path:first-child{stroke:var(--pc5);stroke-width:2}
.puk-combat-vfx.is-kristaly .puk-fx-vector-motif svg{fill:color-mix(in srgb,var(--pc2) 28%,transparent);stroke:var(--pc5)}
.puk-combat-vfx.is-jeg .puk-vector-outline{stroke:#c1e6ff;stroke-width:1.2}
.puk-combat-vfx.is-jeg .puk-fx-vector-motif svg{stroke:#c1e6ff;fill:#8eb5ef20}
.puk-combat-vfx.is-rem .puk-vector-outline{stroke:var(--pc4);stroke-width:1}
.puk-combat-vfx.is-rem .puk-fx-vector-motif svg{stroke:var(--pc4);fill:#080416b3}
.puk-combat-vfx.is-mese .puk-vector-outline{stroke:var(--pc2);stroke-width:2}
.puk-combat-vfx.is-mese .puk-fx-vector-motif svg{fill:color-mix(in srgb,var(--pc2) 30%,transparent);stroke:var(--pc4)}
.puk-combat-vfx.is-vip .puk-vector-outline{stroke:var(--pc1);stroke-width:2}
.puk-combat-vfx.is-vip .puk-fx-vector-motif svg{stroke:var(--pc1);fill:color-mix(in srgb,var(--pc3) 22%,transparent)}
.puk-fx-smoke-bank{border-radius:47% 53% 61% 39%;background:radial-gradient(ellipse at 35% 45%,color-mix(in srgb,var(--bank-color) 75%,#100d1a) 0%,color-mix(in srgb,var(--bank-color) 65%,transparent) 35%,transparent 72%);filter:blur(18px)}
.puk-fx-smoke-core{width:65px;height:65px;border-radius:50%;background:radial-gradient(ellipse,#f5ffe2 0%,var(--pc1) 15%,var(--pc2) 40%,transparent 70%);box-shadow:0 0 22px var(--pc2);filter:blur(2px)}
.puk-fx-impact-flash{z-index:5;border-radius:50%;background:radial-gradient(ellipse,#fff9e5 0%,var(--pc4) 9%,var(--pc2) 28%,transparent 65%);mix-blend-mode:screen}
.puk-fx-shockwave{z-index:5;width:130px;height:130px;border:5px solid var(--pc1);border-right-color:var(--pc2);border-radius:50%;box-shadow:0 0 20px var(--pc2),inset 0 0 18px var(--pc1);filter:blur(2px)}
.puk-fx-card-engulf{overflow:hidden;border-radius:20px;background:radial-gradient(ellipse at 30% 65%,var(--pc1),transparent 70%),radial-gradient(ellipse at 70% 35%,var(--pc2),#171022d9);box-shadow:0 0 40px color-mix(in srgb,var(--pc2) 60%,transparent)}
.puk-fx-card-engulf i{position:absolute;left:-20%;top:calc(var(--curl)*13% - 15%);width:135%;height:50%;border-radius:50%;background:radial-gradient(ellipse,var(--pc2),transparent 68%);filter:blur(12px);animation:pukTransformationCurl 1.2s ease-in-out infinite alternate;animation-delay:calc(var(--curl)*-.19s)}
.puk-fx-card-engulf i:nth-child(even){background:radial-gradient(ellipse,var(--pc1),transparent 68%);animation-direction:alternate-reverse}
@media(prefers-reduced-motion:reduce){.puk-fx-card-engulf i{animation:none}}
.puk-fx-transformation{overflow:hidden;border-radius:20px;background:radial-gradient(ellipse at 25% 25%,var(--pc1),transparent 65%),radial-gradient(ellipse at 75% 75%,var(--pc2),transparent 65%),#181021;box-shadow:0 0 35px var(--pc2),inset 0 0 50px var(--pc1)}
.puk-fx-transformation i{position:absolute;left:5%;top:calc(var(--curl)*9% - 12%);width:110%;height:48%;border-radius:43% 57% 62% 38%;background:radial-gradient(ellipse,color-mix(in srgb,var(--pc2) 78%,white),var(--pc2) 30%,transparent 70%);filter:blur(15px);animation:pukTransformationCurl 1.5s ease-in-out infinite alternate;animation-delay:calc(var(--curl)*-.21s)}
.puk-fx-transformation i:nth-child(even){left:-35%;background:radial-gradient(ellipse,color-mix(in srgb,var(--pc1) 78%,white),var(--pc1) 30%,transparent 70%);animation-direction:alternate-reverse}
@keyframes pukTransformationCurl{from{transform:translate(-25%,12%) rotate(-18deg) scale(.9)}to{transform:translate(5%,-15%) rotate(22deg) scale(1.2)}}
@media(prefers-reduced-motion:reduce){.puk-fx-transformation i{animation:none}}
.puk-fx-forest-veil{width:100%;height:100%;background:radial-gradient(ellipse at 50% 80%,color-mix(in srgb,var(--pc1) 24%,transparent),transparent 55%),linear-gradient(0deg,#0a051bdd,transparent 55%);backdrop-filter:saturate(.7)}
.puk-fx-heart{transform:translate(-50%,-50%);font:90px/1 Georgia,serif;color:var(--pc4);text-shadow:0 0 16px var(--pc2);filter:blur(1px)}
.puk-fx-negative{border-radius:18px;backdrop-filter:invert(.8) hue-rotate(90deg);background:color-mix(in srgb,var(--pc2) 15%,transparent);mask-image:radial-gradient(ellipse,#000 15%,transparent 73%)}
.puk-fx-smoke{width:85px;height:100px;border-radius:44% 56% 62% 38%;background:radial-gradient(ellipse at 40% 60%,color-mix(in srgb,var(--smoke-color) 80%,white),color-mix(in srgb,var(--smoke-color) 55%,transparent) 35%,transparent 70%);filter:blur(6px);mix-blend-mode:screen}
.puk-fx-sigil{width:88px;height:88px;filter:drop-shadow(0 0 12px var(--pc2)) drop-shadow(0 0 4px var(--pc4))}
.puk-fx-sigil img{width:100%;height:100%;object-fit:contain}
.puk-fx-ghost{width:145px;height:235px;mask-image:radial-gradient(ellipse,#000 15%,#0009 45%,transparent 72%);filter:drop-shadow(0 0 15px var(--pc2));mix-blend-mode:screen}
.puk-fx-ghost img{width:100%;height:100%;object-fit:cover;filter:saturate(.5) brightness(1.3)}
.puk-fx-charm-ring,.puk-fx-poison-ring{width:140px;height:140px;border:3px solid color-mix(in srgb,var(--pc2) 70%,transparent);border-left-color:var(--pc1);border-radius:48% 52% 42% 58%;box-shadow:0 0 18px var(--pc2),inset 0 0 25px var(--pc1);filter:blur(2px)}
.puk-fx-charm-ring::before,.puk-fx-charm-ring::after{content:"";position:absolute;inset:15px -13px;border:2px solid var(--pc1);border-radius:50%;transform:rotate(55deg);opacity:.65}
.puk-fx-charm-ring::after{inset:-12px 16px;transform:rotate(-55deg);border-color:var(--pc2)}
.puk-fx-poison-ring{width:200px;height:65px;background:radial-gradient(ellipse,color-mix(in srgb,var(--pc1) 60%,transparent),transparent 65%);border-style:double;border-width:5px}
.puk-fx-branch{width:38px;transform-origin:50% 100%;background:linear-gradient(0deg,transparent,var(--pc1) 12%,#100d19 45%,var(--pc2));clip-path:polygon(42% 100%,36% 71%,0 51%,32% 61%,40% 50%,20% 27%,45% 40%,54% 0,62% 37%,100% 17%,65% 48%,68% 73%,100% 58%,72% 83%,62% 100%);rotate:var(--lean);filter:drop-shadow(0 0 6px var(--pc2))}
.puk-fx-mote{font:24px/1 Georgia,serif;color:var(--pc4);text-shadow:0 0 7px var(--pc2),0 0 15px var(--pc1)}
.puk-fx-eyes{transform:translate(-50%,-50%);font:bold 44px/1 Georgia,serif;letter-spacing:18px;color:var(--pc4);text-shadow:0 0 8px white,0 0 22px var(--pc2)}
.puk-fx-fracture{width:240px;height:290px;transform:translate(-50%,-50%);background:conic-gradient(from 10deg,transparent 0 13%,var(--pc4) 13.2% 13.5%,transparent 14% 39%,var(--pc2) 39.2% 39.7%,transparent 40% 68%,var(--pc1) 68.2% 68.6%,transparent 69%);mask-image:radial-gradient(ellipse,#000 10%,transparent 72%);filter:drop-shadow(0 0 7px var(--pc4))}
.puk-combat-vfx.is-kristaly .puk-fx-mote{font-size:31px}
.puk-combat-vfx.is-jeg .puk-fx-smoke{filter:blur(4px)}
.puk-combat-vfx.is-rem .puk-fx-ghost{filter:contrast(1.4) drop-shadow(0 0 15px var(--pc2))}
.puk-combat-vfx.is-mese .puk-fx-mote{font-size:28px}
.puk-combat-vfx.is-vip .puk-fx-mote{text-shadow:0 0 5px white,0 0 16px var(--pc1)}

/* Crimson Eclipse: authored moths, linked silver chains and lunar seals. */
.puk-combat-vfx.is-rend .puk-vector-outline{stroke:#B1695E;stroke-width:1.8}
.puk-combat-vfx.is-rend .puk-vector-outline path:first-child{stroke:#B41D26;stroke-width:2.8}
.puk-combat-vfx.is-rend .puk-fx-domain{filter:drop-shadow(0 0 5px #B41D26)}
.puk-combat-vfx.is-rend .puk-fx-vector-motif{filter:drop-shadow(0 0 6px #B41D26)}
.puk-combat-vfx.is-rend .puk-fx-vector-motif svg{stroke:#ebbdc9;fill:#4F000866;stroke-width:1.8}
.puk-combat-vfx.is-rend .puk-vector-wake{stroke:#B41D26}
.puk-combat-vfx.is-rend .puk-vector-thread{stroke:#B1695E}
.puk-rend-chains{stroke:#c2b4ca;stroke-width:1.1;fill:none;opacity:.8}
.puk-rend-seal{stroke:#B41D26;stroke-width:1.9;fill:none;filter:drop-shadow(0 0 4px #B41D26)}
.puk-combat-vfx.is-rend .puk-fx-poison-ring{border-color:#B41D26;box-shadow:0 0 18px #B41D26,inset 0 0 25px #4F0008}
.puk-combat-vfx.is-rend .puk-fx-smoke:nth-child(even){mix-blend-mode:normal;background:radial-gradient(ellipse,#1C1315cc,#2D000055 42%,transparent 70%)}
.puk-combat-vfx.is-rend .puk-fx-transformation{background:radial-gradient(ellipse at 50% 80%,#B41D26aa,transparent 62%),#1C1315;box-shadow:0 0 35px #4F0008}
.puk-combat-vfx.is-rend .puk-fx-transformation i{background:radial-gradient(ellipse,#B41D2699,#4F0008aa 36%,transparent 70%)}
.puk-fx-rend-eclipse{z-index:6;border:3px solid #B41D26;border-radius:50%;background:#1C1315;box-shadow:0 0 20px #B41D26,inset -6px 1px 0 #B1695E}
.puk-fx-rend-eclipse::after{content:"";position:absolute;inset:-12px;border:1px dashed #b6a3c9;border-radius:50%}
