{
 "note": "Canonical skill list: 18 weapon codices × 7 skills (6 + 1 finisher) + 3 pole codices × 6 buffs (3 self, 3 team). Numbers are proposed tuning; timings are authoritative server phases. Ranks: 1 learn, 2 and 3 each add +18% and a facet choice. Max rank 3. Only kind \"attack\" can sit in the Mouse1 chain; finishers fire only while their \"requires\" condition is true.",
 "rankRule": {
  "maxRank": 3,
  "perRankBonus": 0.18,
  "facetsAtRanks": [
   2,
   3
  ]
 },
 "poleCodices": [
  {
   "id": "pole_str",
   "name": "Iron Codex",
   "pole": "str",
   "note": "STR buffs usable with any weapon. Available to every build whose path includes STR. 3 self buffs (solo, duels) and 3 team buffs (party, arena)."
  },
  {
   "id": "pole_agi",
   "name": "Wind Codex",
   "pole": "agi",
   "note": "AGI buffs usable with any weapon. Available to every build whose path includes AGI. 3 self buffs (solo, duels) and 3 team buffs (party, arena)."
  },
  {
   "id": "pole_int",
   "name": "Lantern Codex",
   "pole": "int",
   "note": "INT buffs usable with any weapon. Available to every build whose path includes INT. 3 self buffs (solo, duels) and 3 team buffs (party, arena)."
  }
 ],
 "skills": [
  {
   "id": "pole_str.iron_banner",
   "key": "iron_banner",
   "name": "Iron Banner",
   "owner": "pole_str",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Plant a banner for 12 s: you and allies within 12 m take 12% less damage and ignore flinches from monsters.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Tall Banner",
       "text": "Radius 12 → 16 m"
      },
      {
       "id": "b",
       "name": "Long Watch",
       "text": "Duration 12 → 18 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Steel Line",
       "text": "Damage reduction 12% → 16%"
      },
      {
       "id": "b",
       "name": "Rally Point",
       "text": "Allies within 4 m of the banner regen 1% life/s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Drive a short iron standard into the ground with both hands, slap the pole.",
    "vfx": "Bronze-and-crimson banner unfurls, faint iron dome over allies.",
    "sfx": "Iron stake thud, cloth snap, low horn.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-str-iron-banner.webp",
   "iconRequest": "ART-SKL-pole_str-iron_banner",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pole_str.war_drum",
   "key": "war_drum",
   "name": "War Drum",
   "owner": "pole_str",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 20
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.35,
    "activeS": 0.15,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.5
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "You and party members within 12 m deal +12% damage for 8 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thunder Skin",
       "text": "+8% damage reduction while active"
      },
      {
       "id": "b",
       "name": "Long Beat",
       "text": "Duration 8 → 12 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Rally Cry",
       "text": "Also cleanses slow/chill from allies"
      },
      {
       "id": "b",
       "name": "Ironpace",
       "text": "+15% move speed while active"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Plant feet, raise weapon overhead, stamp twice (beat on each stamp), roar with chest out.",
    "vfx": "Two expanding dust-and-crimson drum rings on stamps; drum glyph flashes above each affected ally.",
    "sfx": "Two taiko-like drum hits synced to stamps + low war chant swell.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-str-war-drum.webp",
   "iconRequest": "ART-SKL-pole_str-war_drum",
   "scope": "team",
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pole_str.bastion_skin",
   "key": "bastion_skin",
   "name": "Bastion Skin",
   "owner": "pole_str",
   "kind": "buff",
   "role": "defense",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 24,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "30% damage reduction and Superarmour (no flinch/stagger/knockback from monsters) for 5 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thornhide",
       "text": "Reflects 25% of melee damage taken"
      },
      {
       "id": "b",
       "name": "Quick Set",
       "text": "Cooldown −6 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Unmoved",
       "text": "Also immune to stun while active"
      },
      {
       "id": "b",
       "name": "Retaliate",
       "text": "On expiry, 4 m shockwave dealing 200% weapon damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Tense whole body, fists/weapon pulled in, skin flash; returns to stance.",
    "vfx": "Stone-scale shader ripples over the body; faint grey-bronze rim while active.",
    "sfx": "Grinding stone + metallic clench.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-str-bastion-skin.webp",
   "iconRequest": "ART-SKL-pole_str-bastion_skin",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pole_str.rallying_roar",
   "key": "rallying_roar",
   "name": "Rallying Roar",
   "owner": "pole_str",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 24,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Roar: you and allies within 12 m are freed from stun, slow and knockdown and gain 40 Resolve.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thunder Roar",
       "text": "Radius 12 → 16 m"
      },
      {
       "id": "b",
       "name": "Bold Heart",
       "text": "+10% damage for 5 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Second Voice",
       "text": "Also cleanses burn/chill"
      },
      {
       "id": "b",
       "name": "Lionheart",
       "text": "3 s immunity to stun"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Chest out, head back, full-body roar with fists clenched.",
    "vfx": "Crimson shockwave ring, shaken dust, small red motes on allies.",
    "sfx": "Deep roar layered with a war horn.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-str-rallying-roar.webp",
   "iconRequest": "ART-SKL-pole_str-rallying_roar",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pole_str.bloodrage",
   "key": "bloodrage",
   "name": "Bloodrage",
   "owner": "pole_str",
   "kind": "buff",
   "role": "offense",
   "unlockLevel": 20,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 15
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "+20% attack speed and 3% life leech for 10 s; you take 10% more damage.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Red Haze",
       "text": "+10% critical damage while active"
      },
      {
       "id": "b",
       "name": "Controlled Fury",
       "text": "Removes the 10% damage-taken penalty"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Blood Price",
       "text": "Each kill extends duration by 1 s (max +6 s)"
      },
      {
       "id": "b",
       "name": "Feeding Frenzy",
       "text": "Life leech 3% → 5%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Head down, shoulders heave, weapon grip tightens with a shake, eyes flare.",
    "vfx": "Crimson vein glow pulses over arms; heat haze around body; red embers drifting up.",
    "sfx": "Heartbeat thud x2, guttural exhale, low distorted rumble loop (quiet).",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-str-bloodrage.webp",
   "iconRequest": "ART-SKL-pole_str-bloodrage",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pole_str.unbroken_will",
   "key": "unbroken_will",
   "name": "Unbroken Will",
   "owner": "pole_str",
   "kind": "buff",
   "role": "self_buff",
   "unlockLevel": 20,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 6 s you cannot be stunned, knocked down or slowed, and you regenerate 2% life per second. Removes current stun.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Will",
       "text": "Duration 6 → 9 s"
      },
      {
       "id": "b",
       "name": "Iron Blood",
       "text": "Regen 2% → 3%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wrath",
       "text": "+15% damage while active"
      },
      {
       "id": "b",
       "name": "Steady",
       "text": "Also immune to knockback from players in the arena"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Shake the head, grit teeth, flex the arms; a flash of red in the eyes.",
    "vfx": "Red outline on the body, cracks of stun shatter off.",
    "sfx": "Grunt, heartbeat thump, metallic shimmer.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-str-unbroken-will.webp",
   "iconRequest": "ART-SKL-pole_str-unbroken_will",
   "scope": "self",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "ravager.falling_wedge",
   "key": "falling_wedge",
   "name": "Falling Wedge",
   "owner": "ravager",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 6
   },
   "cooldownS": 3,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.34,
    "activeS": 0.1,
    "recoveryS": 0.36,
    "cancelableAfterS": 0.44
   },
   "damage": {
    "percent": 150,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 2.8,
    "angleDeg": 40
   },
   "impact": "heavy",
   "special": null,
   "applies": [
    {
     "state": "bleed",
     "chance": 0.25
    }
   ],
   "payoff": {
    "vs": "bleed",
    "bonus": "+30% damage"
   },
   "followUp": null,
   "effect": "Strike in a 40° arc in front (2.8 m): 150% physical, heavy impact. 25% chance to inflict Bleed. +30% damage against bleeding targets.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Woodsplitter",
       "text": "+1 m range; +20% damage vs staggered"
      },
      {
       "id": "b",
       "name": "Rhythm Chop",
       "text": "Cooldown −1 s; each hit grants +5% attack speed for 3 s (3 stacks)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Stonesplit",
       "text": "Leaves a 3 m fissure that erupts for 60% after 0.4 s"
      },
      {
       "id": "b",
       "name": "Red Harvest",
       "text": "Bleed chance 100%; your bleeds last +2 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Wind up high over right shoulder with hip turn (0.34 s), axe drops in a near-vertical arc driving into ground, 4-frame hold on contact, heave axe free.",
    "vfx": "Thick bronze-orange arc; ground chip burst and short crack decal at impact; blood-dust spray on bleed.",
    "sfx": "Long low whoosh → heavy chop with wood/earth crunch; bleed applies a wet tick.",
    "hitReactionNote": "Heavy impact: small/medium targets stagger; large flinch_heavy.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/falling-wedge.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ravager.quarry_wheel",
   "key": "quarry_wheel",
   "name": "Quarry Wheel",
   "owner": "ravager",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "hold",
   "cost": {
    "mp": 14
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.18,
    "activeS": 0.9,
    "recoveryS": 0.3,
    "cancelableAfterS": 1.08
   },
   "damage": {
    "percent": 65,
    "hits": 3,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "circle",
    "radius": 3
   },
   "impact": "medium",
   "special": "knockback_on_last",
   "applies": [
    {
     "state": "bleed",
     "chance": 0.2
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Hold to keep striking in a 3 m circle around you: 3 × 65% physical, medium impact. The last hit knocks back enemies. 20% chance to inflict Bleed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Grinding Wheel",
       "text": "Hold to spin up to 5 times (+2 hits)"
      },
      {
       "id": "b",
       "name": "Wide Arc",
       "text": "Radius 3 → 4 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Iron Cyclone",
       "text": "Move at full speed while spinning"
      },
      {
       "id": "b",
       "name": "Quarry Pull",
       "text": "First spin pulls normal monsters 2 m inward"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Low crouch, axe dragged behind, then 3 full-body spins with axe at hip height; feet pivot (no sliding), slows into a skid stop. Hold extends spins.",
    "vfx": "Circular whirl ribbon, dust cyclone sheet, rock pebbles thrown outward on last spin.",
    "sfx": "Rising spin whoosh layered per revolution, ground scrape loop, finishing heavy swoosh.",
    "hitReactionNote": "Medium hits flinch; last spin knocks back small/medium 2 m.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/icons/skills/quarry-wheel.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "ravager.rending_cleave",
   "key": "rending_cleave",
   "name": "Rending Cleave",
   "owner": "ravager",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 16
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.12,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.42
   },
   "damage": {
    "percent": 190,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 3.2,
    "angleDeg": 100
   },
   "impact": "heavy",
   "special": null,
   "applies": [
    {
     "state": "bleed",
     "chance": 1,
     "stacks": 2
    }
   ],
   "payoff": null,
   "followUp": {
    "name": "Rend Apart",
    "windowS": 1.5,
    "text": "Press again: upward rip for 160%, launches small/medium monsters."
   },
   "effect": "Strike in a 100° arc in front (3.2 m): 190% physical, heavy impact. Inflicts 2 Bleed stacks. Press again within 1.5 s for Rend Apart: upward rip for 160%, launches small/medium monsters.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Open Wound",
       "text": "Bleeds from this skill deal +40% damage"
      },
      {
       "id": "b",
       "name": "Ripper",
       "text": "Rend Apart window 1.5 → 2.5 s and +30% damage"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Gorge",
       "text": "Heals 2% max life per bleeding target hit"
      },
      {
       "id": "b",
       "name": "Twin Rend",
       "text": "Rend Apart hits twice"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Diagonal downward cleave from left shoulder through right hip; if pressed again, plant axe and rip it upward with full-body extension (follow-up).",
    "vfx": "Dark-red edge trail; bleed burst; follow-up leaves vertical streak and upward debris.",
    "sfx": "Slicing tear + gore-light wet layer (rating-safe); follow-up rising whoosh.",
    "hitReactionNote": "Stagger; follow-up = launch.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-ravager-rending-cleave.webp",
   "iconRequest": "ART-SKL-ravager-rending_cleave",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ravager.reavers_charge",
   "key": "reavers_charge",
   "name": "Reaver's Charge",
   "owner": "ravager",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 9,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.15,
    "activeS": 0.4,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.55
   },
   "damage": {
    "percent": 120,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "dash_line",
    "length": 7,
    "width": 1.6
   },
   "impact": "heavy",
   "special": "knockback",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike dashing 7 m forward through enemies: 120% physical, heavy impact. Knocks back enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Trample",
       "text": "Every enemy on the path is hit (not only the endpoint)"
      },
      {
       "id": "b",
       "name": "Second Wind",
       "text": "Refund 50% cooldown if it hits 3+ enemies"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bulldoze",
       "text": "Knockback 2 → 4 m; enemies hitting walls are stunned 1 s"
      },
      {
       "id": "b",
       "name": "Axe Drop",
       "text": "Ends with a free Falling Wedge"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Lower shoulder, drive forward 7 m with heavy footfalls, axe trailing, finishing chop at endpoint.",
    "vfx": "Dust plume trail, shoulder impact flash, ground scuff decals.",
    "sfx": "Heavy footfall gallop rhythm, impact crunch.",
    "hitReactionNote": "Knockback along charge vector; walls stop sliding.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/new/skill-icons/art-skl-ravager-reavers-charge.webp",
   "iconRequest": "ART-SKL-ravager-reavers_charge",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ravager.blood_frenzy",
   "key": "blood_frenzy",
   "name": "Blood Frenzy",
   "owner": "ravager",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 25,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 15 s each hit on a bleeding enemy grants Frenzy: +4% attack speed and +3% damage (max 5 stacks).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Hungry Edge",
       "text": "Max stacks 5 → 8"
      },
      {
       "id": "b",
       "name": "Sanguine",
       "text": "At max stacks heal 1% life per hit"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Lasting Frenzy",
       "text": "Duration 15 → 22 s"
      },
      {
       "id": "b",
       "name": "Bleeding Edge",
       "text": "All attacks gain +15% bleed chance"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Drag thumb along axe blade, slam haft on ground, roar.",
    "vfx": "Blade glows dark crimson; stack pips orbit wrist; at max stacks red aura flare.",
    "sfx": "Blade scrape, haft thud, short roar.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-ravager-blood-frenzy.webp",
   "iconRequest": "ART-SKL-ravager-blood_frenzy",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "ravager.earthsplitter",
   "key": "earthsplitter",
   "name": "Earthsplitter",
   "owner": "ravager",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 14,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.45,
    "activeS": 0.35,
    "recoveryS": 0.45,
    "cancelableAfterS": 0.8
   },
   "damage": {
    "percent": 320,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "leap_line",
    "leap": 5,
    "length": 10,
    "width": 2.2
   },
   "impact": "massive",
   "special": "launch",
   "applies": [
    {
     "state": "bleed",
     "chance": 0.5
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike leaping 5 m and splitting the ground along 10 m: 320% physical, massive impact. Launches enemies. 50% chance to inflict Bleed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Aftershock",
       "text": "Fissure erupts again after 1 s for 120%"
      },
      {
       "id": "b",
       "name": "Canyon",
       "text": "Length 10 → 14 m, width +0.8 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Red Rift",
       "text": "Bleeding enemies take +50% from the eruption"
      },
      {
       "id": "b",
       "name": "Seismic Leap",
       "text": "Leap distance 5 → 8 m and you are Superarmoured during the leap"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Crouch-coil, leap up to 2 m arc forward, axe raised two-handed, overhead slam on landing driving a fissure forward; 0.2 s impact hold; wrench axe out.",
    "vfx": "Ground splits along a 10 m line; jagged rock spikes erupt sequentially (travel 0.3 s); dust wall; rock chunk debris; camera shake massive.",
    "sfx": "Leap whoosh, colossal impact boom with sub-bass, rolling crack travelling down the fissure, falling rubble.",
    "hitReactionNote": "Launch on small/medium; stagger large; boss break pressure 35.",
    "deathStyle": "launched"
   },
   "icon": "/art/new/skill-icons/art-skl-ravager-earthsplitter.webp",
   "iconRequest": "ART-SKL-ravager-earthsplitter",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "ravager.crimson_reckoning",
   "key": "crimson_reckoning",
   "name": "Crimson Reckoning",
   "owner": "ravager",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 650,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "650% + 50% per bleed stack (max 5); consumes the bleeds. Requires a bleeding target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Open Veins",
       "text": "Leaves 2 bleed stacks after consuming"
      },
      {
       "id": "b",
       "name": "Butcher’s Reach",
       "text": "+1.5 m reach"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Red Tide",
       "text": "Bleeds consumed also heal you 2% each"
      },
      {
       "id": "b",
       "name": "Twin Reckoning",
       "text": "Second chop for 40% if the first kills"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Axe dragged behind, two running steps, full-body vertical chop that buries the blade, wrench it free.",
    "vfx": "Crimson arc trailing blood-dust, ground cleft decal, bleed glyphs burst from the target and fly into the axe.",
    "sfx": "Dragging scrape, roar, butcher chop thud, wet spray, low choir sting.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-ravager-crimson-reckoning.webp",
   "iconRequest": "ART-SKL-ravager-crimson_reckoning",
   "requires": {
    "state": "bleed",
    "text": "target is bleeding"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "warblade.horizon_cleave",
   "key": "horizon_cleave",
   "name": "Horizon Cleave",
   "owner": "warblade",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 6
   },
   "cooldownS": 3.5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.28,
    "activeS": 0.12,
    "recoveryS": 0.32,
    "cancelableAfterS": 0.4
   },
   "damage": {
    "percent": 130,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 3.2,
    "angleDeg": 160
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 160° arc in front (3.2 m): 130% physical, medium impact.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Horizon",
       "text": "+1 m range"
      },
      {
       "id": "b",
       "name": "Sunline",
       "text": "Fires a short 5 m crescent for 50% (requires no other wave skill)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Edge Discipline",
       "text": "+25% damage vs staggered or launched"
      },
      {
       "id": "b",
       "name": "Twin Horizon",
       "text": "Swings twice (second at 70%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Weight shift onto back foot, wide horizontal sweep at chest height through 160°, follow-through wraps around body.",
    "vfx": "Long sun-gold ribbon; dust sheet along arc on ground.",
    "sfx": "Long steel ring whoosh + clean slice impacts.",
    "hitReactionNote": "Medium: flinch_heavy on small/medium.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/horizon-cleave.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "warblade.crescent_wave",
   "key": "crescent_wave",
   "name": "Crescent Wave",
   "owner": "warblade",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.26,
    "activeS": 0.1,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.36
   },
   "damage": {
    "percent": 140,
    "hits": 1,
    "type": "physical",
    "element": "light"
   },
   "shape": {
    "type": "projectile_wave",
    "speed": 22,
    "range": 12,
    "width": 3,
    "pierce": "all"
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a wave that travels 12 m and pierces every enemy: 140% light, medium impact.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Crescents",
       "text": "Fires 2 waves in a V (±12°)"
      },
      {
       "id": "b",
       "name": "Long Wave",
       "text": "Range 12 → 18 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Searing Wave",
       "text": "Applies burn (30%)"
      },
      {
       "id": "b",
       "name": "Return Wave",
       "text": "Wave returns to you, hitting again for 60%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Rising diagonal slash from low-right to high-left, releasing a crescent of light from the blade at peak.",
    "vfx": "Translucent golden crescent wave with heat shimmer and sand kicked up along its path.",
    "sfx": "Blade ring + travelling hum (doppler) + slicing impacts.",
    "hitReactionNote": "Medium flinch along wave direction.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-warblade-crescent-wave.webp",
   "iconRequest": "ART-SKL-warblade-crescent_wave",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "warblade.sunfall_thrust",
   "key": "sunfall_thrust",
   "name": "Sunfall Thrust",
   "owner": "warblade",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 6,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 170,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "dash_line",
    "length": 6,
    "width": 1.2
   },
   "impact": "heavy",
   "special": "knockback",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike dashing 6 m forward through enemies: 170% physical, heavy impact. Knocks back enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Piercing Sun",
       "text": "Hits every enemy along the line"
      },
      {
       "id": "b",
       "name": "Return Stance",
       "text": "Cooldown −2 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Pin",
       "text": "Knocked-back enemies are rooted 1 s"
      },
      {
       "id": "b",
       "name": "Solar Point",
       "text": "Ends with a 2.5 m burst for 100%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Blade drawn back at hip, explosive lunge 6 m with blade forward, front knee bent; recover to guard.",
    "vfx": "Bright linear streak, heat distortion cone at tip, sand wake.",
    "sfx": "Lunge rush, piercing ring, impact clang.",
    "hitReactionNote": "Knockback 2 m.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/icons/skills/sunfall-thrust.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "warblade.iron_riposte",
   "key": "iron_riposte",
   "name": "Iron Riposte",
   "owner": "warblade",
   "kind": "attack",
   "role": "counter",
   "unlockLevel": 10,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 10,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.05,
    "activeS": 0.6,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.65
   },
   "damage": {
    "percent": 260,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 3,
    "angleDeg": 120
   },
   "impact": "heavy",
   "special": "stagger",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Raise guard for 0.6 s. If struck by a monster attack, negate it and counter-slash for 260% (stagger). No hit: short recovery.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Guard",
       "text": "Guard window 0.6 → 0.9 s"
      },
      {
       "id": "b",
       "name": "Punish",
       "text": "Counter applies Exposed and +30% crit chance"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Mirror Edge",
       "text": "Also reflects projectiles"
      },
      {
       "id": "b",
       "name": "Riposte Chain",
       "text": "Successful counter resets Crescent Wave cooldown"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Blade turned flat across body, knees bent; on trigger: parry flash, step-in, rising diagonal punish.",
    "vfx": "Guard sheen on blade; parry spark burst (gold) on trigger; slow 80 ms hitstop.",
    "sfx": "Steel scrape guard; parry = bright ring \"ting\" + punish slice.",
    "hitReactionNote": "Stagger (large: flinch_heavy).",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-warblade-iron-riposte.webp",
   "iconRequest": "ART-SKL-warblade-iron_riposte",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "warblade.blade_oath",
   "key": "blade_oath",
   "name": "Blade Oath",
   "owner": "warblade",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 28,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 10 s your greatsword hits release a ghost blade echo dealing 40% of the hit.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Oathkeeper",
       "text": "Duration 10 → 15 s"
      },
      {
       "id": "b",
       "name": "Echo Edge",
       "text": "Echo 40% → 60%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Sun Oath",
       "text": "Echoes apply burn (20%)"
      },
      {
       "id": "b",
       "name": "Heavy Oath",
       "text": "Echoes on heavy/massive skills create a 2 m burst"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Blade held vertical before face, step back, sweep blade downward to ready.",
    "vfx": "Ghostly gold blade duplicate hovering behind character; echoes are translucent slashes.",
    "sfx": "Choral shimmer + blade ring.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-warblade-blade-oath.webp",
   "iconRequest": "ART-SKL-warblade-blade_oath",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "warblade.sunbreaker",
   "key": "sunbreaker",
   "name": "Sunbreaker",
   "owner": "warblade",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 15,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 1,
    "recoveryS": 0.5,
    "cancelableAfterS": 1.25
   },
   "damage": {
    "percent": 110,
    "hits": 3,
    "type": "physical",
    "element": "light"
   },
   "shape": {
    "type": "combo_circle",
    "radius": 4.5
   },
   "impact": "massive",
   "special": "launch",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Two advancing slashes (110% each) then an overhead slam that detonates a 4.5 m solar burst (330%).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Dawn Burst",
       "text": "Burst radius 4.5 → 6 m"
      },
      {
       "id": "b",
       "name": "Unbroken",
       "text": "Superarmour during the whole combo"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Solar Brand",
       "text": "Burst leaves burning ground 3 s (burn 100%)"
      },
      {
       "id": "b",
       "name": "High Noon",
       "text": "Final slam +60% damage vs launched/staggered"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Step-slash right, step-slash left (each 0.25 s, advancing 1 m), leap 1 m up with blade raised two-handed, slam point-first into ground.",
    "vfx": "Sun-gold slashes; on slam: bright solar disc expands, light rays, cracked ground decal, sand ring; bloom spike capped for accessibility.",
    "sfx": "Two quick slices, rising choir note, explosive boom + rolling thunder tail.",
    "hitReactionNote": "Slashes flinch; slam launches small/medium; boss break 35.",
    "deathStyle": "launched"
   },
   "icon": "/art/new/skill-icons/art-skl-warblade-sunbreaker.webp",
   "iconRequest": "ART-SKL-warblade-sunbreaker",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "warblade.zenith_cut",
   "key": "zenith_cut",
   "name": "Zenith Cut",
   "owner": "warblade",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 850,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 6
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Leap and cut a launched enemy out of the air for 850%; slam-down shockwave 4 m for 150%. Requires a launched target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "High Noon Leap",
       "text": "Leap range 6 → 9 m"
      },
      {
       "id": "b",
       "name": "Solar Crown",
       "text": "Shockwave radius 4 → 6 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Sunset Edge",
       "text": "Kills reset Crescent Wave"
      },
      {
       "id": "b",
       "name": "Gold Wake",
       "text": "Shockwave burns 3 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Crouch, explosive vertical leap to the airborne target, overhead two-handed cut, ride it down to the ground.",
    "vfx": "Vertical sun-gold slash line, solar flare at contact, sand ring shockwave on landing.",
    "sfx": "Jump grunt, rising whoosh, ringing steel crack, deep landing boom.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-warblade-zenith-cut.webp",
   "iconRequest": "ART-SKL-warblade-zenith_cut",
   "requires": {
    "state": "launch",
    "text": "target is launched"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "earthshaker.anvil_strike",
   "key": "anvil_strike",
   "name": "Anvil Strike",
   "owner": "earthshaker",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 6
   },
   "cooldownS": 3,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.36,
    "activeS": 0.1,
    "recoveryS": 0.36,
    "cancelableAfterS": 0.46
   },
   "damage": {
    "percent": 145,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "circle_front",
    "range": 2.6,
    "radius": 2
   },
   "impact": "heavy",
   "special": null,
   "applies": [
    {
     "state": "stun",
     "chance": 0.15
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 2 m circle just in front: 145% physical, heavy impact. 15% chance to inflict Stun.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ringing Anvil",
       "text": "Stun chance 15% → 35%"
      },
      {
       "id": "b",
       "name": "Forge Rhythm",
       "text": "Cooldown −1 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Shatterpoint",
       "text": "+40% damage vs stunned"
      },
      {
       "id": "b",
       "name": "Double Strike",
       "text": "Second smaller impact 0.3 s later for 60%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hammer raised over shoulder, full overhead smash into ground ahead; slight bounce of hammer head; lift.",
    "vfx": "Small shock ring 2 m, ground crack decal, rock chips, metallic spark burst.",
    "sfx": "Anvil clang + earth thump, metallic ring tail.",
    "hitReactionNote": "Stagger small/medium; stun chance.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/new/skill-icons/art-skl-earthshaker-anvil-strike.webp",
   "iconRequest": "ART-SKL-earthshaker-anvil_strike",
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "earthshaker.rimquake",
   "key": "rimquake",
   "name": "Rimquake",
   "owner": "earthshaker",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 0.15,
    "recoveryS": 0.35,
    "cancelableAfterS": 0.55
   },
   "damage": {
    "percent": 150,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 6,
    "angleDeg": 70
   },
   "impact": "heavy",
   "special": "stun",
   "applies": [
    {
     "state": "stun",
     "chance": 1,
     "durationS": 0.75
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 70° arc in front (6 m): 150% physical, heavy impact. Stuns enemies. Inflicts Stun for 0.75 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Broad Quake",
       "text": "Angle 70° → 110°"
      },
      {
       "id": "b",
       "name": "Long Rim",
       "text": "Range 6 → 8 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Fault Line",
       "text": "Applies Exposed"
      },
      {
       "id": "b",
       "name": "Tremor Lock",
       "text": "Stun 0.75 → 1.1 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hammer swung low in front, slammed flat sideways so the head skids forward, sending ripples.",
    "vfx": "Cone of rippling rock waves (3 ridges) travelling outward; dust; bell-glyph stun stars.",
    "sfx": "Grinding rumble travelling outward, impact thuds per ridge.",
    "hitReactionNote": "Stun 0.75 s (Resolve applies).",
    "deathStyle": "blown_back"
   },
   "icon": "/art/icons/skills/rimquake.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "earthshaker.bell_toll_uppercut",
   "key": "bell_toll_uppercut",
   "name": "Bell-Toll Uppercut",
   "owner": "earthshaker",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "charge",
   "cost": {
    "mp": 16
   },
   "cooldownS": 7,
   "castTimeS": 1,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.12,
    "recoveryS": 0.35,
    "cancelableAfterS": 0.42
   },
   "damage": {
    "percent": 180,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 2.6,
    "angleDeg": 60
   },
   "impact": "massive",
   "special": "launch",
   "applies": [],
   "payoff": {
    "vs": "stun",
    "bonus": "+40% damage"
   },
   "followUp": null,
   "effect": "Hold to charge (1 s), then strike in a 60° arc in front (2.6 m): 180% physical, massive impact. Launches enemies. +40% damage against stunned targets.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Full Swing",
       "text": "Charge scales up to +80% damage (was +50%)"
      },
      {
       "id": "b",
       "name": "Quick Toll",
       "text": "Can release early with no penalty after 0.3 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Knell",
       "text": "Launched enemies take +25% from all sources for 2 s"
      },
      {
       "id": "b",
       "name": "Echoing Bell",
       "text": "Creates a 3 m bell-shock on landing for 80%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hold: hammer dragged low behind, body coils, vibration; release: rising uppercut swing with full extension, hammer finishes high.",
    "vfx": "Charging bronze glow on hammer head (3 levels); upward streak; bell-shaped shock ring at apex.",
    "sfx": "Charge hum rising in pitch; release = deep bell toll + impact.",
    "hitReactionNote": "Launch small/medium; stagger large.",
    "deathStyle": "launched"
   },
   "icon": "/art/new/skill-icons/art-skl-earthshaker-bell-toll-uppercut.webp",
   "iconRequest": "ART-SKL-earthshaker-bell_toll_uppercut",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "earthshaker.tremor_line",
   "key": "tremor_line",
   "name": "Tremor Line",
   "owner": "earthshaker",
   "kind": "attack",
   "role": "aoe_line",
   "unlockLevel": 10,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 9,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.38,
    "activeS": 0.4,
    "recoveryS": 0.35,
    "cancelableAfterS": 0.78
   },
   "damage": {
    "percent": 170,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "travel_line",
    "length": 12,
    "width": 2
   },
   "impact": "heavy",
   "special": "knockdown",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a shockwave that rolls 12 m forward: 170% physical, heavy impact. Knocks down enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Faults",
       "text": "Two lines at ±15°"
      },
      {
       "id": "b",
       "name": "Deep Fault",
       "text": "Length 12 → 16 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Buried",
       "text": "Knocked-down enemies are also Exposed"
      },
      {
       "id": "b",
       "name": "Rubble",
       "text": "Line leaves rubble that slows 30% for 3 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hammer driven straight down, then dragged back toward body to \"pull\" the fissure forward.",
    "vfx": "Traveling ground ripple with erupting stone slabs (sequential), dust wall.",
    "sfx": "Travelling rumble, stone slab cracks in sequence.",
    "hitReactionNote": "Knockdown 1.2 s.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/new/skill-icons/art-skl-earthshaker-tremor-line.webp",
   "iconRequest": "ART-SKL-earthshaker-tremor_line",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "earthshaker.stoneheart",
   "key": "stoneheart",
   "name": "Stoneheart",
   "owner": "earthshaker",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 12 s: immune to monster stagger/knockback, and every heavy/massive hit creates an aftershock (30%, 2.5 m).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Granite",
       "text": "Also +10% damage reduction"
      },
      {
       "id": "b",
       "name": "Bedrock",
       "text": "Duration 12 → 18 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Fault Echo",
       "text": "Aftershock 30% → 50%"
      },
      {
       "id": "b",
       "name": "Landslide",
       "text": "Aftershocks knock down small monsters"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hammer head planted, both hands on pommel, crouch, stone crust spreads from feet up legs.",
    "vfx": "Rock crust overlay on legs/arms; pebbles orbiting; aftershock ripples.",
    "sfx": "Stone grind + low heartbeat thud.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-earthshaker-stoneheart.webp",
   "iconRequest": "ART-SKL-earthshaker-stoneheart",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "earthshaker.mountain_fall",
   "key": "mountain_fall",
   "name": "Mountain Fall",
   "owner": "earthshaker",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "aimed_ground",
   "cost": {
    "mp": 32
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.35,
    "activeS": 0.55,
    "recoveryS": 0.45,
    "cancelableAfterS": 0.9
   },
   "damage": {
    "percent": 300,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "leap_circle",
    "leap": 6,
    "radius": 5
   },
   "impact": "massive",
   "special": "launch",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Leap to a target point within 6 m; landing quake 300% in 5 m, then two aftershocks (80%) at 0.5 s intervals.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Avalanche",
       "text": "Three aftershocks instead of two"
      },
      {
       "id": "b",
       "name": "Summit",
       "text": "Leap range 6 → 9 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bedrock Crown",
       "text": "Center 2 m of the landing deals +50%"
      },
      {
       "id": "b",
       "name": "Unshaken",
       "text": "Superarmour from take-off to landing"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Deep crouch, explosive jump in high arc (apex 3 m), hammer raised behind head, slam down two-handed on landing; hold, rise.",
    "vfx": "Takeoff dust, landing crater decal with radial cracks, rising rock ring, two aftershock ripples, debris rain.",
    "sfx": "Takeoff grunt + whoosh, huge impact boom, rolling rubble, two thumps.",
    "hitReactionNote": "Launch small/medium in 5 m; aftershocks flinch.",
    "deathStyle": "launched"
   },
   "icon": "/art/new/skill-icons/art-skl-earthshaker-mountain-fall.webp",
   "iconRequest": "ART-SKL-earthshaker-mountain_fall",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "earthshaker.tolling_verdict",
   "key": "tolling_verdict",
   "name": "Tolling Verdict",
   "owner": "earthshaker",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 900,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "One bell-ringing overhead blow on a stunned enemy for 900%; enemies within 3 m are stunned 1 s. Requires a stunned target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Toll",
       "text": "Splash stun 1 → 1.5 s"
      },
      {
       "id": "b",
       "name": "Bronze Echo",
       "text": "A second toll 0.6 s later for 150%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Cracked Bell",
       "text": "Stunned bosses take +25% from this"
      },
      {
       "id": "b",
       "name": "Groundswell",
       "text": "Splash radius 3 → 5 m"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hammer raised high behind the head, a full-weight step, overhead blow, hold on contact as the bell rings.",
    "vfx": "Bronze bell silhouette rings out from the impact, concentric dust waves, stun stars.",
    "sfx": "Deep temple-bell toll, crushing impact, long ringing tail.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-earthshaker-tolling-verdict.webp",
   "iconRequest": "ART-SKL-earthshaker-tolling_verdict",
   "requires": {
    "state": "stun",
    "text": "target is stunned"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "twinblade.twin_crossing",
   "key": "twin_crossing",
   "name": "Twin Crossing",
   "owner": "twinblade",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2.5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.14,
    "activeS": 0.12,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.26
   },
   "damage": {
    "percent": 80,
    "hits": 2,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 2.2,
    "angleDeg": 90
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 90° arc in front (2.2 m): 2 × 80% physical, medium impact.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Crossed Fates",
       "text": "+1 hit (3 total)"
      },
      {
       "id": "b",
       "name": "Quick Cross",
       "text": "Cooldown −0.5 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Exposing Cross",
       "text": "Second hit applies Exposed"
      },
      {
       "id": "b",
       "name": "Paired Echo",
       "text": "The X leaves a lingering cut that hits again for 50%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Both blades sweep inward crossing in front of the chest (X), right then left, step forward 0.5 m.",
    "vfx": "Two jade-white ribbons crossing into an X glint.",
    "sfx": "Two quick swishes panned L→R, double slice.",
    "hitReactionNote": "Flinch_light ×2 then flinch_heavy.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/twin-crossing.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "twinblade.cyclone_dance",
   "key": "cyclone_dance",
   "name": "Cyclone Dance",
   "owner": "twinblade",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.8,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.92
   },
   "damage": {
    "percent": 45,
    "hits": 5,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "moving_circle",
    "radius": 2.6,
    "travel": 4
   },
   "impact": "light",
   "special": "pull_small",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike spinning through enemies in a 2.6 m circle while moving 4 m: 5 × 45% physical, light impact. Pulls in small monsters.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Eye of the Storm",
       "text": "+2 hits"
      },
      {
       "id": "b",
       "name": "Sandstorm",
       "text": "Radius 2.6 → 3.4 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Whirl Pull",
       "text": "Pulls small/medium monsters to your path each hit"
      },
      {
       "id": "b",
       "name": "Gale Finish",
       "text": "Final hit knocks back for 120%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Spinning dance moving forward 4 m: blades extended, alternating high/low, 5 revolutions, ends in a crouch with blades out.",
    "vfx": "Sand-jade cyclone column, ribbon spirals, sand kick-up.",
    "sfx": "Rhythmic swish per revolution, wind rush loop.",
    "hitReactionNote": "Light flinches; pull inward.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-twinblade-cyclone_dance",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "twinblade.thousand_cuts",
   "key": "thousand_cuts",
   "name": "Thousand Cuts",
   "owner": "twinblade",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 10,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.1,
    "activeS": 1.2,
    "recoveryS": 0.3,
    "cancelableAfterS": 1.3
   },
   "damage": {
    "percent": 32,
    "hits": 8,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 2.4,
    "angleDeg": 70
   },
   "impact": "light",
   "special": "launch_on_last",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 70° arc in front (2.4 m): 8 × 32% physical, light impact. The last hit launches enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ten Thousand",
       "text": "+3 hits"
      },
      {
       "id": "b",
       "name": "Blur",
       "text": "You can move at 50% speed while cutting"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bleeding Lattice",
       "text": "Each hit 10% bleed"
      },
      {
       "id": "b",
       "name": "Final Thread",
       "text": "Last hit +150% and launches"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Rapid alternating slashes in a flurry (8 hits in 1.2 s), arms blur, final rising double-slash.",
    "vfx": "Dense fan of thin slash streaks with afterimages; final vertical streak.",
    "sfx": "Machine-gun-like rhythm of light slices, final heavy rising cut.",
    "hitReactionNote": "Flinch_light chain then launch.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-twinblade-thousand_cuts",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "twinblade.gale_step_slash",
   "key": "gale_step_slash",
   "name": "Gale Step Slash",
   "owner": "twinblade",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.08,
    "activeS": 0.25,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.33
   },
   "damage": {
    "percent": 110,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "dash_line",
    "length": 6,
    "width": 1.4
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": {
    "name": "Return Gale",
    "windowS": 2,
    "text": "Press again to dash back to the start point, slashing again for 110%."
   },
   "effect": "Strike dashing 6 m forward through enemies: 110% physical, medium impact. Press again within 2 s for Return Gale: Press again to dash back to the start point, slashing again for 110%.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Phantom Step",
       "text": "Leaves an afterimage that repeats the slash at 50%"
      },
      {
       "id": "b",
       "name": "Gust",
       "text": "Cooldown −2 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Gale",
       "text": "Distance 6 → 9 m"
      },
      {
       "id": "b",
       "name": "Severing Wind",
       "text": "Enemies hit twice are Exposed"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Low lunge-dash with both blades trailing behind, slash on passing, skid turn.",
    "vfx": "Wind slit line + afterimage silhouette.",
    "sfx": "Sharp wind cut, passing double slice.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-twinblade-gale_step_slash",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "twinblade.blade_rhythm",
   "key": "blade_rhythm",
   "name": "Blade Rhythm",
   "owner": "twinblade",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 25,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 15 s every 4th hit triggers a free crossing slash (60%) and you gain +10% attack speed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Third Beat",
       "text": "Triggers every 3rd hit"
      },
      {
       "id": "b",
       "name": "Dancer",
       "text": "+10% evasion"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Song",
       "text": "Duration 15 → 22 s"
      },
      {
       "id": "b",
       "name": "Crescendo Cut",
       "text": "Free slash 60% → 100%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Spin blades in both hands (twirl), clash them once in front.",
    "vfx": "Rhythm pips (4) orbiting; ghost blades flash on trigger.",
    "sfx": "Blade twirl + clash ring; trigger = bright chime.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-twinblade-blade_rhythm",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "twinblade.tempest_of_blades",
   "key": "tempest_of_blades",
   "name": "Tempest of Blades",
   "owner": "twinblade",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 1,
    "recoveryS": 0.4,
    "cancelableAfterS": 1.4
   },
   "damage": {
    "percent": 60,
    "hits": 8,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "circle",
    "radius": 5
   },
   "impact": "heavy",
   "special": "launch_on_last",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Summon 8 spectral swords that orbit you once (each hits) then rain down inside 5 m.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Steel Rain",
       "text": "+4 swords"
      },
      {
       "id": "b",
       "name": "Storm Center",
       "text": "Radius 5 → 6.5 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Following Storm",
       "text": "Swords follow you while orbiting"
      },
      {
       "id": "b",
       "name": "Execution Rain",
       "text": "Swords deal +60% to enemies below 30% life"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Cross blades overhead, spin once — spectral blades erupt; raise both blades skyward, then drive both down.",
    "vfx": "Jade-white ghost swords orbit leaving ribbon trails, then drop like rain; final impact flashes on ground.",
    "sfx": "Choral shing per sword, rain of impacts, final crash.",
    "hitReactionNote": "Heavy flinches; final launch.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-twinblade-tempest_of_blades",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "twinblade.final_meridian",
   "key": "final_meridian",
   "name": "Final Meridian",
   "owner": "twinblade",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.9,
    "recoveryS": 0.5,
    "cancelableAfterS": 1.1
   },
   "damage": {
    "percent": 700,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Eight cross-cuts on a launched enemy (8 × 88%) ending in a downward X. Requires a launched target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ninth Cut",
       "text": "+1 cut"
      },
      {
       "id": "b",
       "name": "Gale Rise",
       "text": "You hover; you cannot be hit by melee during the cuts"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Cross Finale",
       "text": "Final X deals +50%"
      },
      {
       "id": "b",
       "name": "River Split",
       "text": "Cuts chain to one nearby airborne enemy"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Spring up beside the target, spin cuts around it in mid-air, finish with both blades crossing downward.",
    "vfx": "White-teal blade arcs around the target forming a meridian sphere, final X flash.",
    "sfx": "Rapid metallic shing rhythm, wind whirr, sharp double slash.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-twinblade-final_meridian",
   "requires": {
    "state": "launch",
    "text": "target is launched"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "vanguard.shieldline_cut",
   "key": "shieldline_cut",
   "name": "Shieldline Cut",
   "owner": "vanguard",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 3,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.3
   },
   "damage": {
    "percent": 115,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 2.4,
    "angleDeg": 120
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Successful hit grants +15% block chance for 2 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wall Line",
       "text": "Block bonus +15% → +25%"
      },
      {
       "id": "b",
       "name": "Steady Cut",
       "text": "+1 m range"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Riposte Line",
       "text": "If you blocked in the last 2 s, +40% damage"
      },
      {
       "id": "b",
       "name": "Taunting Cut",
       "text": "Taunts hit monsters for 3 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Shield held forward, sword cuts horizontally from behind the shield edge; recover behind shield.",
    "vfx": "Steel ribbon; shield rim glints when block bonus applies.",
    "sfx": "Steel swish + shield brass knock.",
    "hitReactionNote": "Flinch_heavy small/medium.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/shieldline-cut.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "vanguard.gate_reversal",
   "key": "gate_reversal",
   "name": "Gate Reversal",
   "owner": "vanguard",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.12,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.37
   },
   "damage": {
    "percent": 150,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 2.6,
    "angleDeg": 50
   },
   "impact": "heavy",
   "special": "stun",
   "applies": [
    {
     "state": "stun",
     "chance": 1,
     "durationS": 0.6
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 50° arc in front (2.6 m): 150% physical, heavy impact. Stuns enemies. Inflicts Stun for 0.6 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bolted Gate",
       "text": "Stun 0.6 → 1.0 s"
      },
      {
       "id": "b",
       "name": "Reversal",
       "text": "If you blocked in the last 2 s, also slow 30% for 2 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Gatebreaker",
       "text": "+40% damage vs stunned (follow-ups)"
      },
      {
       "id": "b",
       "name": "Iron Hinge",
       "text": "Cooldown −2 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Shield bash upward to open guard, then reverse-grip sword strike down.",
    "vfx": "Bronze shield flash, stun bell-glyphs.",
    "sfx": "Shield thump, heavy sword chop, bell ring on stun.",
    "hitReactionNote": "Stun.",
    "deathStyle": "collapse"
   },
   "icon": "/art/icons/skills/gate-reversal.webp",
   "iconRequest": null,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "vanguard.shield_charge",
   "key": "shield_charge",
   "name": "Shield Charge",
   "owner": "vanguard",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 6,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 9,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.35,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.47
   },
   "damage": {
    "percent": 110,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "dash_line",
    "length": 7,
    "width": 1.8
   },
   "impact": "heavy",
   "special": "knockback",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Charge with shield up; hit monsters are knocked back and taunted for 3 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Battering Ram",
       "text": "Hits all enemies along the path"
      },
      {
       "id": "b",
       "name": "Bulwark Dash",
       "text": "Blocks all frontal projectiles during the charge"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Pinning Wall",
       "text": "Enemies knocked into walls are stunned 1.2 s"
      },
      {
       "id": "b",
       "name": "Rally Charge",
       "text": "Allies you pass gain +10% damage reduction 4 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Shield raised, shoulder behind it, sprint 7 m, impact shove at end.",
    "vfx": "Dust plume, shield flash, impact ring.",
    "sfx": "Armoured run, heavy shield impact boom.",
    "hitReactionNote": "Knockback 2 m.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-vanguard-shield_charge",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "vanguard.bulwark_slam",
   "key": "bulwark_slam",
   "name": "Bulwark Slam",
   "owner": "vanguard",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 10,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 16
   },
   "cooldownS": 9,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.35,
    "activeS": 0.12,
    "recoveryS": 0.35,
    "cancelableAfterS": 0.47
   },
   "damage": {
    "percent": 140,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "circle",
    "radius": 4
   },
   "impact": "heavy",
   "special": "knockdown",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Slam shield into the ground: knockdown in 4 m and taunt for 4 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Broad Bulwark",
       "text": "Radius 4 → 5.5 m"
      },
      {
       "id": "b",
       "name": "Aftermath",
       "text": "Knocked-down enemies are Exposed"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Brine Ward",
       "text": "Grants you a shield absorbing 8% max life per enemy hit (max 5)"
      },
      {
       "id": "b",
       "name": "Second Slam",
       "text": "A smaller slam follows after 0.6 s for 70%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Leap 0.5 m, slam shield rim-first into ground with full body.",
    "vfx": "Bronze ring shockwave, crack decals, dust ring, taunt glyphs on enemies.",
    "sfx": "Brass gong slam + earth thud.",
    "hitReactionNote": "Knockdown.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-vanguard-bulwark_slam",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "vanguard.retribution_stance",
   "key": "retribution_stance",
   "name": "Retribution Stance",
   "owner": "vanguard",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 24,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 12 s: +30% block chance against frontal attacks; each block fires a counter-slash (90%).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Iron Wall",
       "text": "Block also negates projectiles from all sides"
      },
      {
       "id": "b",
       "name": "Retort",
       "text": "Counter-slash 90% → 150%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Enduring Stance",
       "text": "Duration 12 → 18 s"
      },
      {
       "id": "b",
       "name": "Shared Guard",
       "text": "Party members within 6 m take 10% less damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Plant shield, tap sword on its rim twice, settle into guard.",
    "vfx": "Jade-bronze barrier sheen on shield; counter-slash flashes.",
    "sfx": "Two rim taps + barrier hum.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-vanguard-retribution_stance",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "vanguard.jade_aegis",
   "key": "jade_aegis",
   "name": "Jade Aegis",
   "owner": "vanguard",
   "kind": "buff",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.35,
    "activeS": 4,
    "recoveryS": 0.4,
    "cancelableAfterS": 4.35
   },
   "damage": {
    "percent": 220,
    "hits": 1,
    "type": "physical",
    "element": "light"
   },
   "shape": {
    "type": "circle",
    "radius": 4
   },
   "impact": "massive",
   "special": "knockback",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Raise a jade dome for 4 s: allies inside take −30% damage. When it ends it detonates for 220% and knocks back.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Great Dome",
       "text": "Radius 4 → 5.5 m"
      },
      {
       "id": "b",
       "name": "Mending Jade",
       "text": "Allies inside regenerate 2% life per second"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Stored Fury",
       "text": "Detonation +5% damage per hit blocked by the dome (max +50%)"
      },
      {
       "id": "b",
       "name": "Last Stand",
       "text": "You are Superarmoured while the dome stands"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Shield raised overhead with both hands, kneel, jade light flows from shield into a dome; on end, stand and thrust shield forward.",
    "vfx": "Hexagonal jade dome with flowing glyphs, impacts ripple on surface; detonation = expanding jade ring + light burst.",
    "sfx": "Deep resonant hum, ripple chimes per impact, detonation boom with crystal shatter tail.",
    "hitReactionNote": "Detonation knockback.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-vanguard-jade_aegis",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "vanguard.shield_verdict",
   "key": "shield_verdict",
   "name": "Shield Verdict",
   "owner": "vanguard",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 750,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Shield-rim smash then sword thrust on a stunned enemy: 750%; you gain a barrier of 10% max life. Requires a stunned target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Iron Mercy",
       "text": "Barrier 10% → 16%"
      },
      {
       "id": "b",
       "name": "Heavy Rim",
       "text": "Smash knocks back 3 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Gatekeeper",
       "text": "Taunts nearby enemies 3 s"
      },
      {
       "id": "b",
       "name": "Verdict Pierce",
       "text": "Thrust pierces 4 m behind"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Shield brought up and slammed into the face, sword thrust through the opening, shove off.",
    "vfx": "Bronze shield flash, jade crack lines, thrust streak.",
    "sfx": "Metal clang, grunt, piercing stab.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-vanguard-shield_verdict",
   "requires": {
    "state": "stun",
    "text": "target is stunned"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "boltwright.rapid_bolts",
   "key": "rapid_bolts",
   "name": "Rapid Bolts",
   "owner": "boltwright",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 3,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.3,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.42
   },
   "damage": {
    "percent": 55,
    "hits": 3,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "projectile",
    "speed": 48,
    "range": 16,
    "count": 3
   },
   "impact": "light",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with 3 rapid projectiles (16 m): 3 × 55% physical, light impact.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Repeater",
       "text": "+2 bolts"
      },
      {
       "id": "b",
       "name": "Copper Tips",
       "text": "Bolts shock (15%)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ripping Bolts",
       "text": "Bolts pierce 1"
      },
      {
       "id": "b",
       "name": "Steady Crank",
       "text": "Cooldown −1 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Brace stock to shoulder, three rapid trigger pulls with mechanical recoil, crank lever.",
    "vfx": "Three copper-tracer bolts with spark kicks.",
    "sfx": "Clack-thwip ×3, ratchet crank.",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-boltwright-rapid_bolts",
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "boltwright.spark_trap",
   "key": "spark_trap",
   "name": "Spark Trap",
   "owner": "boltwright",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "aimed_ground",
   "cost": {
    "mp": 12
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.3
   },
   "damage": {
    "percent": 150,
    "hits": 1,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "trap",
    "range": 10,
    "radius": 3,
    "maxActive": 2
   },
   "impact": "medium",
   "special": "root",
   "applies": [
    {
     "state": "shock",
     "chance": 0.6
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Throw a trap that arms after 0.5 s; triggers on enemy: lightning burst, roots 1.5 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Trap Line",
       "text": "Max active traps 2 → 4"
      },
      {
       "id": "b",
       "name": "Chain Trap",
       "text": "Triggered trap fires an arc to a nearby trap, triggering it"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Root",
       "text": "Root 1.5 → 2.5 s"
      },
      {
       "id": "b",
       "name": "Overcharge",
       "text": "Burst radius 3 → 4.5 m"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Underhand toss of a brass device, it lands and unfolds spider-like legs.",
    "vfx": "Brass trap with blinking copper core; trigger = lightning dome burst + binding arcs.",
    "sfx": "Clink-land, mechanical unfold, armed beep; trigger zap-boom.",
    "hitReactionNote": "Root + flinch_heavy.",
    "deathStyle": "charred"
   },
   "icon": null,
   "iconRequest": "ART-SKL-boltwright-spark_trap",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "boltwright.thunder_quarrel",
   "key": "thunder_quarrel",
   "name": "Thunder Quarrel",
   "owner": "boltwright",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.28,
    "activeS": 0.06,
    "recoveryS": 0.28,
    "cancelableAfterS": 0.34
   },
   "damage": {
    "percent": 200,
    "hits": 1,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "projectile_explode",
    "speed": 40,
    "range": 18,
    "radius": 3
   },
   "impact": "heavy",
   "special": null,
   "applies": [
    {
     "state": "shock",
     "chance": 0.5
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a bolt (18 m) that bursts in 3 m: 200% lightning, heavy impact. 50% chance to inflict Shock.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Storm Quarrel",
       "text": "Explosion radius 3 → 4.5 m"
      },
      {
       "id": "b",
       "name": "Chain Quarrel",
       "text": "Explosion arcs to 2 enemies (60%)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Heavy Quarrel",
       "text": "Knocks back small/medium"
      },
      {
       "id": "b",
       "name": "Overload",
       "text": "+40% damage vs shocked"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Load a glowing quarrel, crank, aim, heavy recoil that pushes the shoulder back.",
    "vfx": "Crackling bolt with a lightning trail, explosion with arcs and smoke ring.",
    "sfx": "Heavy thunk, electric whine in flight, thunder crack on impact.",
    "hitReactionNote": "Stagger; shock twitch.",
    "deathStyle": "charred"
   },
   "icon": null,
   "iconRequest": "ART-SKL-boltwright-thunder_quarrel",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "boltwright.recoil_shot",
   "key": "recoil_shot",
   "name": "Recoil Shot",
   "owner": "boltwright",
   "kind": "mobility",
   "role": "disengage",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.08,
    "activeS": 0.3,
    "recoveryS": 0.12,
    "cancelableAfterS": 0.38
   },
   "damage": {
    "percent": 130,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone_blast",
    "range": 4,
    "angleDeg": 60,
    "selfPushback": 5
   },
   "impact": "heavy",
   "special": "knockback",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike blasting a 60° cone (4 m) while you are thrown back 5 m: 130% physical, heavy impact. Knocks back enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Double Recoil",
       "text": "2 charges"
      },
      {
       "id": "b",
       "name": "Scatter Blast",
       "text": "Angle 60° → 100°"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Reload",
       "text": "Resets Thunder Quarrel cooldown"
      },
      {
       "id": "b",
       "name": "Caltrops",
       "text": "Leaves caltrops at the start point (slow 40%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Point-blank blast from the hip; recoil hurls you back 5 m in a controlled slide.",
    "vfx": "Shotgun-like copper spark cone, smoke puff, slide dust.",
    "sfx": "Big boom + spring twang, sliding scrape.",
    "hitReactionNote": "Knockback 3 m.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-boltwright-recoil_shot",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "boltwright.ballista_turret",
   "key": "ballista_turret",
   "name": "Ballista Turret",
   "owner": "boltwright",
   "kind": "summon",
   "role": "summon",
   "unlockLevel": 15,
   "chainable": false,
   "input": "aimed_ground",
   "cost": {
    "mp": 20
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.35,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.45
   },
   "damage": {
    "percent": 60,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "summon",
    "range": 8,
    "durationS": 10
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Deploy a turret for 10 s that fires a bolt (60%) every 0.5 s at the nearest enemy within 15 m. Max 1.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Turrets",
       "text": "Max turrets 1 → 2"
      },
      {
       "id": "b",
       "name": "Storm Ballista",
       "text": "Bolts shock (20%) and chain once"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Fortified",
       "text": "Turret taunts and has 30% of your life"
      },
      {
       "id": "b",
       "name": "Overclock",
       "text": "Fire rate +40%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Drop to a knee, slam a folded device down, it springs up; quick wrench turn.",
    "vfx": "Brass ballista unfolds with gears, copper tracer bolts.",
    "sfx": "Clatter, spring, servo whir, rhythmic thwips.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-boltwright-ballista_turret",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss"
   ]
  },
  {
   "id": "boltwright.incendiary_payload",
   "key": "incendiary_payload",
   "name": "Incendiary Payload",
   "owner": "boltwright",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "aimed_ground",
   "cost": {
    "mp": 28
   },
   "cooldownS": 15,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 0.8,
    "recoveryS": 0.3,
    "cancelableAfterS": 1.2
   },
   "damage": {
    "percent": 240,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "mortar_cluster",
    "range": 15,
    "radius": 3.5,
    "bomblets": 6,
    "bombletRadius": 2
   },
   "impact": "massive",
   "special": "launch",
   "applies": [
    {
     "state": "burn",
     "chance": 0.8
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Lob a shell that bursts (240%) then scatters 6 bomblets (80% each).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Cluster+",
       "text": "+4 bomblets"
      },
      {
       "id": "b",
       "name": "Napalm",
       "text": "Leaves burning ground 4 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Arc",
       "text": "Range 15 → 22 m"
      },
      {
       "id": "b",
       "name": "Shaped Charge",
       "text": "Main burst +60% damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fold crossbow arms up into a mortar angle, brace foot, launch with big recoil.",
    "vfx": "Smoking shell arc, fireball detonation, bomblets bouncing and popping, scorch decals.",
    "sfx": "Thoomp launch, whistle, large explosion, staggered pops.",
    "hitReactionNote": "Launch small/medium.",
    "deathStyle": "ash"
   },
   "icon": null,
   "iconRequest": "ART-SKL-boltwright-incendiary_payload",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "boltwright.siege_quarrel",
   "key": "siege_quarrel",
   "name": "Siege Quarrel",
   "owner": "boltwright",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 800,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "line",
    "range": 20,
    "width": 1
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Crank and fire a siege quarrel at a rooted enemy: 800%, pierces, 3 m blast for 200%. Requires a rooted target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Double Crank",
       "text": "Second quarrel at 50%"
      },
      {
       "id": "b",
       "name": "Shrapnel Head",
       "text": "Blast radius 3 → 5 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Copper Spike",
       "text": "Leaves a spark trap where it lands"
      },
      {
       "id": "b",
       "name": "Breach",
       "text": "Ignores 30% armour"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Brace stance, three quick crank turns, shoulder the crossbow, heavy kick-back on release.",
    "vfx": "Copper bolt with a lightning wake, spark blast on impact, smoke ring from the crossbow.",
    "sfx": "Ratchet clicks, heavy thunk, crackling blast.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-boltwright-siege_quarrel",
   "requires": {
    "state": "root",
    "text": "target is rooted"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "pole_agi.caravan_pace",
   "key": "caravan_pace",
   "name": "Caravan Pace",
   "owner": "pole_agi",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "You and allies within 12 m gain +20% move speed and +10% attack speed for 10 s. Out of combat it lasts 30 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Road",
       "text": "Duration 10 → 15 s"
      },
      {
       "id": "b",
       "name": "Wide Road",
       "text": "Radius 12 → 18 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Swift Hooves",
       "text": "Also applies to mounts (+10%)"
      },
      {
       "id": "b",
       "name": "Quick Hands",
       "text": "Attack speed 10% → 15%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Whistle with two fingers and wave the caravan forward.",
    "vfx": "Green-gold wind streaks at allies’ feet, dust trails.",
    "sfx": "Sharp whistle, rush of wind, hoofbeat-like drums.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-agi-caravan-pace.webp",
   "iconRequest": "ART-SKL-pole_agi-caravan_pace",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pole_agi.windwalk",
   "key": "windwalk",
   "name": "Windwalk",
   "owner": "pole_agi",
   "kind": "buff",
   "role": "mobility_buff",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.1,
    "activeS": 0.05,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.15
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "+30% move speed and +20% evasion for 6 s; your next attack is a guaranteed critical strike.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Tailwind",
       "text": "Party members within 10 m gain half the speed"
      },
      {
       "id": "b",
       "name": "Gust Step",
       "text": "Cooldown −5 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ambush",
       "text": "Guaranteed crit deals +40% damage"
      },
      {
       "id": "b",
       "name": "Mistform",
       "text": "Passing through enemies does not block movement while active"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Quick flourish: brush hand across chest, scarf flick, weight onto toes.",
    "vfx": "Sand-green wind ribbons spiralling around legs; faint after-images while moving.",
    "sfx": "Soft whoosh swell + wind chime.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-agi-windwalk.webp",
   "iconRequest": "ART-SKL-pole_agi-windwalk",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pole_agi.hunters_mark",
   "key": "hunters_mark",
   "name": "Hunter's Mark",
   "owner": "pole_agi",
   "kind": "debuff",
   "role": "target_debuff",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.15,
    "activeS": 0.05,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.2
   },
   "damage": null,
   "shape": {
    "type": "target",
    "range": 20
   },
   "impact": null,
   "special": null,
   "applies": [
    {
     "state": "marked",
     "chance": 1,
     "durationS": 12
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Mark one enemy for 12 s: it takes +15% damage from you and +8% from party; your crits against it deal +25% damage.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Pack Mark",
       "text": "Party bonus 8% → 12%"
      },
      {
       "id": "b",
       "name": "Transfer",
       "text": "If the marked enemy dies, the mark jumps to the nearest enemy"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Expose Weakness",
       "text": "Marked targets are also Exposed"
      },
      {
       "id": "b",
       "name": "Twin Marks",
       "text": "Mark up to 2 enemies"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Point two fingers at target, flick wrist (one-handed works with any weapon).",
    "vfx": "Bronze crosshair glyph spins onto target and stays above head.",
    "sfx": "Bow-string pluck + soft metallic click.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-agi-hunters-mark.webp",
   "iconRequest": "ART-SKL-pole_agi-hunters_mark",
   "scope": "team",
   "scenarios": [
    "boss",
    "party",
    "arena"
   ]
  },
  {
   "id": "pole_agi.keen_eye_chant",
   "key": "keen_eye_chant",
   "name": "Keen Eye Chant",
   "owner": "pole_agi",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "You and allies within 12 m gain +12% critical chance and +20% critical damage for 10 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Eagle Sight",
       "text": "Crit chance 12% → 16%"
      },
      {
       "id": "b",
       "name": "Long Chant",
       "text": "Duration 10 → 14 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Hunter’s Pack",
       "text": "Marked enemies take +10% crit damage"
      },
      {
       "id": "b",
       "name": "Steady Aim",
       "text": "+20% accuracy"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Tap the brow, sweep the arm across the horizon, quick chant.",
    "vfx": "Gold eye glyph above each ally, thin focus lines.",
    "sfx": "Soft chant, crisp metallic ping.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-agi-keen-eye-chant.webp",
   "iconRequest": "ART-SKL-pole_agi-keen_eye_chant",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pole_agi.evasive_instinct",
   "key": "evasive_instinct",
   "name": "Evasive Instinct",
   "owner": "pole_agi",
   "kind": "buff",
   "role": "self_buff",
   "unlockLevel": 20,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 24,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 6 s: +40% evasion, and the first attack you evade triggers an automatic 3 m sidestep and +30% damage on your next hit.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Instinct",
       "text": "Duration 6 → 9 s"
      },
      {
       "id": "b",
       "name": "Twin Step",
       "text": "Two automatic sidesteps"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Counter Edge",
       "text": "Next hit +30% → +50%"
      },
      {
       "id": "b",
       "name": "Ghost",
       "text": "Sidestep leaves a decoy 1 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Loose shoulders, light bouncing steps, eyes narrow.",
    "vfx": "Faint green after-images trailing the body.",
    "sfx": "Quick breath, fabric whisper, wind flick.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-agi-evasive-instinct.webp",
   "iconRequest": "ART-SKL-pole_agi-evasive_instinct",
   "scope": "self",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pole_agi.quickening",
   "key": "quickening",
   "name": "Quickening",
   "owner": "pole_agi",
   "kind": "buff",
   "role": "offense",
   "unlockLevel": 20,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 16
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.15,
    "activeS": 0.05,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.2
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "+25% attack and cast speed for 8 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Hurried Hands",
       "text": "Also +10% cooldown recovery"
      },
      {
       "id": "b",
       "name": "Flowing",
       "text": "Duration 8 → 12 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Second Pace",
       "text": "Kills during Quickening extend it by 0.5 s"
      },
      {
       "id": "b",
       "name": "Zephyr",
       "text": "Also +15% projectile speed"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Snap of both hands, a quick bounce on the heels.",
    "vfx": "Pale-green speed lines on arms/weapon; hands blur slightly.",
    "sfx": "Fast rising wing-flutter swell ending in a light tick.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-agi-quickening.webp",
   "iconRequest": "ART-SKL-pole_agi-quickening",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "nightblade.threadcut",
   "key": "threadcut",
   "name": "Threadcut",
   "owner": "nightblade",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 4
   },
   "cooldownS": 2,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.1,
    "activeS": 0.06,
    "recoveryS": 0.14,
    "cancelableAfterS": 0.16
   },
   "damage": {
    "percent": 120,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 1.9,
    "angleDeg": 60
   },
   "impact": "light",
   "special": null,
   "applies": [],
   "payoff": {
    "vs": "behind",
    "bonus": "+30% damage when striking within the target's rear 120°"
   },
   "followUp": null,
   "effect": "Strike in a 60° arc in front (1.9 m): 120% physical, light impact. +30% damage when striking within the target's rear 120°.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Needle",
       "text": "+15% crit chance"
      },
      {
       "id": "b",
       "name": "Silent Thread",
       "text": "Cooldown −0.5 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Severed Thread",
       "text": "Applies bleed 40%"
      },
      {
       "id": "b",
       "name": "Weaver",
       "text": "Each Threadcut grants +5% damage for 4 s (stacks 5)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fast reverse-grip stab with a hop to the side, other dagger guarding.",
    "vfx": "Short violet streak; crit = small star glint.",
    "sfx": "Quick hiss + wet tick.",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/threadcut.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "nightblade.cross_stitch",
   "key": "cross_stitch",
   "name": "Cross Stitch",
   "owner": "nightblade",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 8
   },
   "cooldownS": 5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.2,
    "recoveryS": 0.18,
    "cancelableAfterS": 0.32
   },
   "damage": {
    "percent": 90,
    "hits": 2,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 1.9,
    "angleDeg": 70
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "exposed",
     "chance": 1
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 70° arc in front (1.9 m): 2 × 90% physical, medium impact. Inflicts Exposed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Triple Stitch",
       "text": "+1 hit"
      },
      {
       "id": "b",
       "name": "Deep Stitch",
       "text": "Exposed duration +3 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bleeding Seam",
       "text": "Each hit 30% bleed"
      },
      {
       "id": "b",
       "name": "Unravel",
       "text": "+50% damage vs bleeding"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Two alternating diagonal slashes 0.2 s apart, body twists between.",
    "vfx": "X-shaped violet stitch line glows on target briefly.",
    "sfx": "Two sharp slices + cloth-rip sweetener.",
    "hitReactionNote": "Flinch_light → flinch_heavy.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/cross-stitch.webp",
   "iconRequest": null,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "nightblade.fan_of_knives",
   "key": "fan_of_knives",
   "name": "Fan of Knives",
   "owner": "nightblade",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.15,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.25
   },
   "damage": {
    "percent": 70,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "radial_projectiles",
    "count": 12,
    "range": 7
   },
   "impact": "light",
   "special": null,
   "applies": [
    {
     "state": "bleed",
     "chance": 0.4
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike throwing 12 blades in every direction (7 m): 70% physical, light impact. 40% chance to inflict Bleed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thousand Knives",
       "text": "18 knives"
      },
      {
       "id": "b",
       "name": "Returning Fan",
       "text": "Knives return for 50%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Poisoned Fan",
       "text": "Bleed chance 40% → 80%"
      },
      {
       "id": "b",
       "name": "Pinning Fan",
       "text": "Hit enemies slowed 25% for 2 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Spin on one foot flinging knives in all directions from both hands.",
    "vfx": "12 small knife projectiles with violet trails; impact sparks.",
    "sfx": "Burst of 12 tiny whistles + scattered ticks.",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-nightblade-fan-of-knives.webp",
   "iconRequest": "ART-SKL-nightblade-fan_of_knives",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "nightblade.shadow_step",
   "key": "shadow_step",
   "name": "Shadow Step",
   "owner": "nightblade",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.05,
    "activeS": 0.1,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.15
   },
   "damage": {
    "percent": 100,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "blink_target",
    "range": 8
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Blink behind a target within 8 m and stab; your next hit within 3 s is a guaranteed crit.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Second Shadow",
       "text": "2 charges"
      },
      {
       "id": "b",
       "name": "Vanish",
       "text": "Enemies lose track of you for 1 s (drop aggro briefly)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Backstab",
       "text": "Stab +80% damage"
      },
      {
       "id": "b",
       "name": "Shadow Trail",
       "text": "Leaves a shade that stabs once for 60%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Body dissolves into smoke, reappears crouched behind target with a rising stab.",
    "vfx": "Violet smoke burst at both ends, faint shadow line between.",
    "sfx": "Smoke puff whoosh, reappear snap, stab.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-nightblade-shadow-step.webp",
   "iconRequest": "ART-SKL-nightblade-shadow_step",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "nightblade.nightshade_coat",
   "key": "nightshade_coat",
   "name": "Nightshade Coat",
   "owner": "nightblade",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 25,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 15 s: hits have +30% bleed chance and +15% crit chance.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Venom Bloom",
       "text": "Bleeds deal +30% damage"
      },
      {
       "id": "b",
       "name": "Lingering Coat",
       "text": "Duration 15 → 22 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Toxic Crit",
       "text": "Crits apply Exposed"
      },
      {
       "id": "b",
       "name": "Bloodletter",
       "text": "Max bleed stacks 3 → 5 on your hits"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Draw both daggers across a small vial on the belt, flick off excess.",
    "vfx": "Daggers coated in dripping violet-black sheen.",
    "sfx": "Liquid swirl + blade scrape.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-nightblade-nightshade-coat.webp",
   "iconRequest": "ART-SKL-nightblade-nightshade_coat",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "nightblade.death_lotus",
   "key": "death_lotus",
   "name": "Death Lotus",
   "owner": "nightblade",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 1.4,
    "recoveryS": 0.3,
    "cancelableAfterS": 1.6
   },
   "damage": {
    "percent": 70,
    "hits": 15,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "chain_teleport",
    "range": 10,
    "targets": 5
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Teleport between up to 5 enemies within 10 m, striking each 3 times, then return to the start.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Full Bloom",
       "text": "Up to 7 enemies"
      },
      {
       "id": "b",
       "name": "Petal Rain",
       "text": "Each target hit releases 4 knives (40%)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Lotus Mark",
       "text": "Each target becomes Exposed and bleeding"
      },
      {
       "id": "b",
       "name": "Single Petal",
       "text": "If only one enemy, strike it 9 times"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Vanish; reappear at each target performing a 3-hit spin-slash; final reappearance at origin with a blade flourish.",
    "vfx": "Violet lotus petals scatter at each strike; smoke links between targets.",
    "sfx": "Rapid triple-slice motifs separated by smoke pops; final chime.",
    "hitReactionNote": "Flinch_heavy per triplet.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-nightblade-death-lotus.webp",
   "iconRequest": "ART-SKL-nightblade-death_lotus",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "nightblade.severance",
   "key": "severance",
   "name": "Severance",
   "owner": "nightblade",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 1100,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 8
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Vanish and reappear behind an Exposed enemy for a 1,100% throat cut; guaranteed critical. Requires an Exposed target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Silent Exit",
       "text": "Become invisible 2 s after"
      },
      {
       "id": "b",
       "name": "Thread Pull",
       "text": "Range 8 → 12 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Nightfall",
       "text": "Kills refresh Shadow Step"
      },
      {
       "id": "b",
       "name": "Deep Cut",
       "text": "Leaves 3 bleed stacks"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fade to smoke, reappear behind, reverse-grip cut across, flick the blood off.",
    "vfx": "Black smoke puff, thin violet cut line, fading silhouette.",
    "sfx": "Whispered whoosh, quick slice, soft cloth flutter.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-nightblade-severance.webp",
   "iconRequest": "ART-SKL-nightblade-severance",
   "requires": {
    "state": "exposed",
    "text": "target is Exposed"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "talon.rake_flurry",
   "key": "rake_flurry",
   "name": "Rake Flurry",
   "owner": "talon",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2.5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.08,
    "activeS": 0.5,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.58
   },
   "damage": {
    "percent": 50,
    "hits": 3,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 1.9,
    "angleDeg": 90
   },
   "impact": "light",
   "special": null,
   "applies": [
    {
     "state": "bleed",
     "chance": 0.15
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 90° arc in front (1.9 m): 3 × 50% physical, light impact. 15% chance to inflict Bleed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Frenzied Rake",
       "text": "+2 hits"
      },
      {
       "id": "b",
       "name": "Feral Speed",
       "text": "Cancelable after each hit with no recovery"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Rending Rake",
       "text": "Bleed 15% → 35%"
      },
      {
       "id": "b",
       "name": "Storm Claw",
       "text": "Last hit adds lightning (shock 25%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Three rapid alternating claw rakes, shoulders rolling, low feral stance.",
    "vfx": "Triple parallel claw streaks per rake.",
    "sfx": "Tearing scrapes, growl breath.",
    "hitReactionNote": "Flinch_light ×3.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/rake-flurry.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "talon.hooking_palm",
   "key": "hooking_palm",
   "name": "Hooking Palm",
   "owner": "talon",
   "kind": "attack",
   "role": "pull",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.15,
    "activeS": 0.15,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.3
   },
   "damage": {
    "percent": 110,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "line",
    "length": 5,
    "width": 1
   },
   "impact": "medium",
   "special": "pull",
   "applies": [
    {
     "state": "slow",
     "chance": 1,
     "durationS": 2
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Claw hook reaches 5 m; pulls small/medium monsters to you and slows 25%.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Hook",
       "text": "Reach 5 → 7 m"
      },
      {
       "id": "b",
       "name": "Double Hook",
       "text": "Hooks 2 targets"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Claw Lock",
       "text": "Pulled enemies rooted 1 s"
      },
      {
       "id": "b",
       "name": "Feeding Hook",
       "text": "Heal 3% life per hook hit"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Lunge with open clawed palm, spectral claw extends, clench and yank back.",
    "vfx": "Storm-blue spectral claw tether.",
    "sfx": "Whip crack + tension snap.",
    "hitReactionNote": "Pull then flinch_heavy.",
    "deathStyle": "collapse"
   },
   "icon": "/art/icons/skills/hooking-palm.webp",
   "iconRequest": null,
   "scenarios": [
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "talon.pounce",
   "key": "pounce",
   "name": "Pounce",
   "owner": "talon",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 6,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.4,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.52
   },
   "damage": {
    "percent": 130,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "leap_target",
    "range": 7,
    "radius": 1.6
   },
   "impact": "heavy",
   "special": "knockdown",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike pouncing onto a target up to 7 m away (1.6 m impact): 130% physical, heavy impact. Knocks down enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Pounce",
       "text": "Range 7 → 10 m"
      },
      {
       "id": "b",
       "name": "Pin Down",
       "text": "Knockdown 1.2 → 1.8 s on small"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Maul",
       "text": "Ends with a free Rake Flurry"
      },
      {
       "id": "b",
       "name": "Prey Drive",
       "text": "Resets cooldown if the target dies within 2 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Drop low on all fours (hands with claws), explosive leap arc, land claws-first on target.",
    "vfx": "Leap arc streak, landing dust ring, claw marks decal.",
    "sfx": "Feral snarl, leap whoosh, heavy landing rake.",
    "hitReactionNote": "Knockdown.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-talon-pounce.webp",
   "iconRequest": "ART-SKL-talon-pounce",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "talon.storm_rend",
   "key": "storm_rend",
   "name": "Storm Rend",
   "owner": "talon",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 10,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 16
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.25,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.45
   },
   "damage": {
    "percent": 75,
    "hits": 2,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "cone",
    "range": 5,
    "angleDeg": 120
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "shock",
     "chance": 0.4
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 120° arc in front (5 m): 2 × 75% lightning, medium impact. 40% chance to inflict Shock.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thunder Rend",
       "text": "+1 wave"
      },
      {
       "id": "b",
       "name": "Wide Storm",
       "text": "Angle 120° → 160°"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Arc Hunger",
       "text": "Heal 1% life per shocked enemy hit"
      },
      {
       "id": "b",
       "name": "Static Claws",
       "text": "Shocked enemies take +20% from your claw hits"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Two big cross-body claw sweeps; claws spark and release arcs on each sweep.",
    "vfx": "Lightning arcs fanning out from claw tips; ground scorch flecks.",
    "sfx": "Electric crackle sweeps + thunder snap.",
    "hitReactionNote": "Flinch_heavy; shock twitch.",
    "deathStyle": "charred"
   },
   "icon": "/art/new/skill-icons/art-skl-talon-storm-rend.webp",
   "iconRequest": "ART-SKL-talon-storm_rend",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "talon.predators_instinct",
   "key": "predators_instinct",
   "name": "Predator's Instinct",
   "owner": "talon",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 25,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 15 s: +4% life leech and +20% crit chance vs slowed or shocked enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bloodscent",
       "text": "Leech 4% → 6%"
      },
      {
       "id": "b",
       "name": "Stalker",
       "text": "+15% move speed"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Apex",
       "text": "Duration 15 → 22 s"
      },
      {
       "id": "b",
       "name": "Killing Instinct",
       "text": "Crits vs bleeding enemies +30% damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Head low, sniff the air, claws flex open.",
    "vfx": "Feral amber eye glow, faint beast silhouette behind.",
    "sfx": "Low growl + claw scrape.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-talon-predators-instinct.webp",
   "iconRequest": "ART-SKL-talon-predators_instinct",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "talon.beast_within",
   "key": "beast_within",
   "name": "Beast Within",
   "owner": "talon",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 18,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 1.6,
    "recoveryS": 0.35,
    "cancelableAfterS": 1.9
   },
   "damage": {
    "percent": 45,
    "hits": 12,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 2.4,
    "angleDeg": 100
   },
   "impact": "medium",
   "special": "launch_on_last",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "A spectral beast overlays you: a 12-hit maul over 1.6 s with 10% life leech; you can steer.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Pack Beast",
       "text": "A second spectral beast mauls a nearby enemy"
      },
      {
       "id": "b",
       "name": "Unleashed",
       "text": "+4 hits"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thunder Beast",
       "text": "Hits shock (20%)"
      },
      {
       "id": "b",
       "name": "Last Bite",
       "text": "Final hit +200%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Roar; translucent beast shape (wolf-lion) wraps the body; frenzy of rakes and bites; final double-claw uppercut.",
    "vfx": "Amber-storm spectral beast overlay, claw streak storm, final upward slash.",
    "sfx": "Layered beast roar + rapid tearing + final howl.",
    "hitReactionNote": "Flinch_light chain → launch.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-talon-beast-within.webp",
   "iconRequest": "ART-SKL-talon-beast_within",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "talon.apex_rend",
   "key": "apex_rend",
   "name": "Apex Rend",
   "owner": "talon",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.8,
    "recoveryS": 0.45,
    "cancelableAfterS": 1
   },
   "damage": {
    "percent": 780,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Pounce onto a downed enemy and maul it: 6 × 130%, 3 bleed stacks. Requires a knocked-down target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Feeding Frenzy",
       "text": "Heal 2% per hit"
      },
      {
       "id": "b",
       "name": "Wide Maul",
       "text": "Hits enemies within 2 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Alpha Roar",
       "text": "Fear enemies 4 m for 1.5 s after"
      },
      {
       "id": "b",
       "name": "Storm Claws",
       "text": "Hits shock 30%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Low pounce, land on the target, alternating claw rakes, rear up with a roar.",
    "vfx": "Feral amber claw streaks, beast-spirit overlay, blood-dust.",
    "sfx": "Snarl, rapid rakes, roar.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "sliced"
   },
   "icon": "/art/new/skill-icons/art-skl-talon-apex-rend.webp",
   "iconRequest": "ART-SKL-talon-apex_rend",
   "requires": {
    "state": "knockdown",
    "text": "target is knocked down"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windarcher.pinning_shot",
   "key": "pinning_shot",
   "name": "Pinning Shot",
   "owner": "windarcher",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 3,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.22,
    "activeS": 0.06,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.28
   },
   "damage": {
    "percent": 120,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "projectile",
    "speed": 42,
    "range": 18,
    "count": 1
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "slow",
     "chance": 1,
     "durationS": 2
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a projectile (18 m): 120% physical, medium impact. Inflicts Slow for 2 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Pinned",
       "text": "Slow becomes root 1 s on small/medium"
      },
      {
       "id": "b",
       "name": "Quick Nock",
       "text": "Cooldown −1 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Through Pin",
       "text": "Pierces 2 enemies"
      },
      {
       "id": "b",
       "name": "Barbed",
       "text": "Applies bleed 50%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Quick nock, half-draw, release with a slight lean.",
    "vfx": "Arrow streak with a wind ribbon; pin impact leaves a glowing arrow briefly.",
    "sfx": "Draw creak, twang, zip, thunk.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "collapse"
   },
   "icon": "/art/icons/skills/pinning-shot.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windarcher.split_horizon",
   "key": "split_horizon",
   "name": "Split Horizon",
   "owner": "windarcher",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.22,
    "activeS": 0.06,
    "recoveryS": 0.22,
    "cancelableAfterS": 0.28
   },
   "damage": {
    "percent": 80,
    "hits": 3,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "projectile_fan",
    "speed": 40,
    "range": 16,
    "count": 3,
    "spreadDeg": 24
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Three arrows in a fan; each enemy can be hit by one arrow per cast.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Five Winds",
       "text": "5 arrows"
      },
      {
       "id": "b",
       "name": "Wide Horizon",
       "text": "Spread 24° → 40°"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Focused Horizon",
       "text": "If all arrows hit one target they all count (point-blank)"
      },
      {
       "id": "b",
       "name": "Fire Horizon",
       "text": "Arrows burn (30%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fan three arrows on the string, wide draw, release with a sweep of the bow arm.",
    "vfx": "Three arrow streaks fanning; impact puffs.",
    "sfx": "Triple zip, layered thunks.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "collapse"
   },
   "icon": "/art/icons/skills/split-horizon.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "windarcher.piercing_gale",
   "key": "piercing_gale",
   "name": "Piercing Gale",
   "owner": "windarcher",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "charge",
   "cost": {
    "mp": 14
   },
   "cooldownS": 8,
   "castTimeS": 1,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.08,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.33
   },
   "damage": {
    "percent": 220,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "line",
    "length": 25,
    "width": 1.2,
    "pierce": "all"
   },
   "impact": "heavy",
   "special": "knockback_full_charge",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Hold to charge (1 s), then strike along a 25 m line, piercing every enemy: 220% physical, heavy impact. At full charge it knocks back enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Gale Force",
       "text": "Full charge +70% damage (was +40%)"
      },
      {
       "id": "b",
       "name": "Snap Shot",
       "text": "Minimum charge time 0.3 → 0.15 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Tunnel Wind",
       "text": "Width 1.2 → 2.2 m"
      },
      {
       "id": "b",
       "name": "Eye of Gale",
       "text": "Full-charge crits deal +50%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Deep stance, full draw to cheek with wind gathering, release with recoil step back.",
    "vfx": "Charging wind spiral around arrow (3 stages); release = straight tunnel of wind 25 m, dust blown aside.",
    "sfx": "Rising wind howl during charge, thunderous release crack.",
    "hitReactionNote": "Heavy; knockback at full charge.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/new/skill-icons/art-skl-windarcher-piercing-gale.webp",
   "iconRequest": "ART-SKL-windarcher-piercing_gale",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windarcher.tumble_shot",
   "key": "tumble_shot",
   "name": "Tumble Shot",
   "owner": "windarcher",
   "kind": "mobility",
   "role": "disengage",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.08,
    "activeS": 0.35,
    "recoveryS": 0.12,
    "cancelableAfterS": 0.43
   },
   "damage": {
    "percent": 90,
    "hits": 2,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "backflip_projectiles",
    "distance": 5,
    "count": 2
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike flipping back 5 m while firing 2 shots: 2 × 90% physical, medium impact.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Double Tumble",
       "text": "2 charges"
      },
      {
       "id": "b",
       "name": "Smoke Tumble",
       "text": "Leaves smoke: enemies inside are slowed 30%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Hawk Volley",
       "text": "+2 arrows"
      },
      {
       "id": "b",
       "name": "Free Draw",
       "text": "Next Piercing Gale is fully charged instantly"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Backflip 5 m, firing two arrows at the apex while upside-down, land in a crouch.",
    "vfx": "Wind ring at takeoff, two arrow streaks, landing dust.",
    "sfx": "Flip whoosh, double twang, landing scuff.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-windarcher-tumble-shot.webp",
   "iconRequest": "ART-SKL-windarcher-tumble_shot",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windarcher.hawk_focus",
   "key": "hawk_focus",
   "name": "Hawk Focus",
   "owner": "windarcher",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 25,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 12 s: +20% range, +15% crit chance, and arrows chain once to a nearby enemy (50%).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Keen Sight",
       "text": "Chain 1 → 2"
      },
      {
       "id": "b",
       "name": "Patient Hawk",
       "text": "Duration 12 → 18 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Talon Strike",
       "text": "Crits apply Hunter's Mark for 4 s"
      },
      {
       "id": "b",
       "name": "Updraft",
       "text": "+15% move speed while active"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Raise bow, close one eye, exhale; a hawk cry; hand brushes the fletching.",
    "vfx": "Spectral hawk circles overhead; arrow tips glow white-green.",
    "sfx": "Hawk cry + soft inhale/exhale.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-windarcher-hawk-focus.webp",
   "iconRequest": "ART-SKL-windarcher-hawk_focus",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "windarcher.rain_of_arrows",
   "key": "rain_of_arrows",
   "name": "Rain of Arrows",
   "owner": "windarcher",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "aimed_ground",
   "cost": {
    "mp": 26
   },
   "cooldownS": 14,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 2,
    "recoveryS": 0.2,
    "cancelableAfterS": 2.3
   },
   "damage": {
    "percent": 55,
    "hits": 10,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "ground_circle",
    "range": 18,
    "radius": 5
   },
   "impact": "light",
   "special": "knockback_on_last",
   "applies": [
    {
     "state": "slow",
     "chance": 1,
     "durationS": 1
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Final volley is a single great arrow (220%) that detonates in a wind burst and knocks back.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Deluge",
       "text": "+4 volleys"
      },
      {
       "id": "b",
       "name": "Wide Rain",
       "text": "Radius 5 → 6.5 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Burning Rain",
       "text": "Arrows burn (20%)"
      },
      {
       "id": "b",
       "name": "Pinning Rain",
       "text": "Enemies remaining 2 s are rooted 1 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Kneel, aim high, release a glowing arrow skyward with a full-body spin; stand and draw a great arrow for the final shot as the rain falls.",
    "vfx": "Arrow splits into a storm of streaks raining over 2 s; final great arrow with wind spiral detonates into a ring of blown sand.",
    "sfx": "Upward whistle, rain of thunks building, final gale crack + whoosh.",
    "hitReactionNote": "Flinch_light repeated, final knockback.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-windarcher-rain-of-arrows.webp",
   "iconRequest": "ART-SKL-windarcher-rain_of_arrows",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "windarcher.heartpiercer",
   "key": "heartpiercer",
   "name": "Heartpiercer",
   "owner": "windarcher",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 900,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "line",
    "range": 28,
    "width": 1
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "A full-draw killing shot at a wounded enemy (below 30% life): 900%, pierces all. Requires a target below 30% life.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Draw",
       "text": "Range 28 → 36 m"
      },
      {
       "id": "b",
       "name": "Fletched Gale",
       "text": "Knocks back everything it passes"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Mercy Shot",
       "text": "Threshold 30% → 35%"
      },
      {
       "id": "b",
       "name": "Hawk’s Return",
       "text": "Kills refund 50% cooldown"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Kneel, draw to the ear for a held breath, release; bow arm recoils.",
    "vfx": "Wind-spiral arrow with a long white contrail, hole-punch burst.",
    "sfx": "Creaking draw, held breath, cracking release, distant thud.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/new/skill-icons/art-skl-windarcher-heartpiercer.webp",
   "iconRequest": "ART-SKL-windarcher-heartpiercer",
   "requires": {
    "state": "low_life",
    "text": "target is below 30% life"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "songweaver.plucked_note",
   "key": "plucked_note",
   "name": "Plucked Note",
   "owner": "songweaver",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 4
   },
   "cooldownS": 2,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.06,
    "recoveryS": 0.16,
    "cancelableAfterS": 0.18
   },
   "damage": {
    "percent": 105,
    "hits": 1,
    "type": "sonic",
    "element": null
   },
   "shape": {
    "type": "projectile",
    "speed": 26,
    "range": 15,
    "count": 1,
    "bounces": 1
   },
   "impact": "light",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Each consecutive note within 2 s raises the pitch (+5% damage, max 5).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Harmony",
       "text": "+1 bounce"
      },
      {
       "id": "b",
       "name": "Melody",
       "text": "Max pitch stacks 5 → 8"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Sharp Note",
       "text": "+20% crit chance at max pitch"
      },
      {
       "id": "b",
       "name": "Echo Note",
       "text": "Every 5th note fires twice"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fast pluck of the strings with a flick of the wrist toward target; the pipa tilts.",
    "vfx": "Jade-gold sound ring bolt with a floating note glyph.",
    "sfx": "Plucked pentatonic note (pitch rises with stacks).",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-songweaver-plucked-note.webp",
   "iconRequest": "ART-SKL-songweaver-plucked_note",
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "songweaver.discordant_chord",
   "key": "discordant_chord",
   "name": "Discordant Chord",
   "owner": "songweaver",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.3
   },
   "damage": {
    "percent": 120,
    "hits": 1,
    "type": "sonic",
    "element": null
   },
   "shape": {
    "type": "circle",
    "radius": 5
   },
   "impact": "medium",
   "special": "knockback",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strum a harsh chord: 5 m shockwave, knockback, enemies deal 15% less damage for 4 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Big Chord",
       "text": "Radius 5 → 6.5 m"
      },
      {
       "id": "b",
       "name": "Dissonance",
       "text": "Enemies also take +10% damage for 4 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Stagger Chord",
       "text": "Knockback becomes stagger on large"
      },
      {
       "id": "b",
       "name": "Double Strum",
       "text": "Second weaker chord after 0.5 s (60%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Full-arm strum downward, body leaning back.",
    "vfx": "Visible concentric sound rings, sand ripples, note glyphs scattered.",
    "sfx": "Harsh dissonant strum + bass thump.",
    "hitReactionNote": "Knockback.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/new/skill-icons/art-skl-songweaver-discordant-chord.webp",
   "iconRequest": "ART-SKL-songweaver-discordant_chord",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "songweaver.lullaby_of_dunes",
   "key": "lullaby_of_dunes",
   "name": "Lullaby of Dunes",
   "owner": "songweaver",
   "kind": "attack",
   "role": "control",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 12,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 60,
    "hits": 1,
    "type": "sonic",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 8,
    "angleDeg": 80
   },
   "impact": "light",
   "special": "sleep",
   "applies": [
    {
     "state": "sleep",
     "chance": 1,
     "durationS": 2
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Soft melody cone: sleeps normal monsters 2 s; elites are slowed 30%.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Lullaby",
       "text": "Sleep 2 → 3 s"
      },
      {
       "id": "b",
       "name": "Wide Song",
       "text": "Angle 80° → 120°"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Nightmare",
       "text": "Sleeping enemies take 3%/s life damage (does not wake)"
      },
      {
       "id": "b",
       "name": "Dreamer's Wake",
       "text": "Waking hit +40%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Slow gentle strum swaying side to side, eyes half closed.",
    "vfx": "Drifting dune-blue motes and soft ribbons flowing over enemies; Z glyphs.",
    "sfx": "Lullaby phrase (4 notes), gentle.",
    "hitReactionNote": "Sleep.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-songweaver-lullaby-of-dunes.webp",
   "iconRequest": "ART-SKL-songweaver-lullaby_of_dunes",
   "scenarios": [
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "songweaver.resonant_echo",
   "key": "resonant_echo",
   "name": "Resonant Echo",
   "owner": "songweaver",
   "kind": "mobility",
   "role": "dash_echo",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 10,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.08,
    "activeS": 0.3,
    "recoveryS": 0.12,
    "cancelableAfterS": 0.38
   },
   "damage": null,
   "shape": {
    "type": "dash",
    "length": 5
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Dash 5 m, leaving an echo that repeats your next skill at 50% from its position.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Echo",
       "text": "Echo repeats 2 skills"
      },
      {
       "id": "b",
       "name": "Loud Echo",
       "text": "Echo 50% → 75%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Quick Step",
       "text": "Cooldown −3 s"
      },
      {
       "id": "b",
       "name": "Harmonic Ward",
       "text": "Echo absorbs one projectile aimed at you"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Strum while sliding sideways; translucent copy stays playing.",
    "vfx": "Jade afterimage holding the pipa, sound rings at both ends.",
    "sfx": "Sliding glissando + echo reverb.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-songweaver-resonant-echo.webp",
   "iconRequest": "ART-SKL-songweaver-resonant_echo",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "songweaver.hymn_of_the_caravan",
   "key": "hymn_of_the_caravan",
   "name": "Hymn of the Caravan",
   "owner": "songweaver",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 22
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.5
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 14
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Party within 14 m: regenerate 2% life/s and +10% move speed for 10 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Choir",
       "text": "Regen 2% → 3%/s"
      },
      {
       "id": "b",
       "name": "Marching Song",
       "text": "Move speed +10% → +20%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ballad of Resolve",
       "text": "Also cleanses one ailment on cast"
      },
      {
       "id": "b",
       "name": "Long Hymn",
       "text": "Duration 10 → 15 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Play a rising melody, step in time; pipa held high on the last note.",
    "vfx": "Golden musical staff ribbons circling the party, warm motes rising.",
    "sfx": "Warm 6-note hymn phrase, sustained chord.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-songweaver-hymn-of-the-caravan.webp",
   "iconRequest": "ART-SKL-songweaver-hymn_of_the_caravan",
   "scope": "team",
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "songweaver.crescendo",
   "key": "crescendo",
   "name": "Crescendo",
   "owner": "songweaver",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "charge",
   "cost": {
    "mp": 30
   },
   "cooldownS": 18,
   "castTimeS": 3,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.4,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 320,
    "hits": 1,
    "type": "sonic",
    "element": null
   },
   "shape": {
    "type": "circle",
    "radius": 6
   },
   "impact": "massive",
   "special": "launch",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Hold up to 3 s building a sound sphere (+30% damage/s, +0.5 m/s radius), release to blast. Superarmour while holding.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Fortissimo",
       "text": "Max hold 3 → 4 s"
      },
      {
       "id": "b",
       "name": "Grand Finale",
       "text": "Release also heals party 10% life"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Shatter Note",
       "text": "Blast applies Exposed + stagger on large"
      },
      {
       "id": "b",
       "name": "Quick Crescendo",
       "text": "Builds 2× faster"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Increasingly intense strumming, body arching back, hair/cloth lifting; final slam strum.",
    "vfx": "Growing translucent sphere of sound rings and note glyphs; release = huge ring burst, sand blown outward.",
    "sfx": "Accelerating strum building in volume + pitch → explosive final chord with reverb tail.",
    "hitReactionNote": "Launch.",
    "deathStyle": "blown_back"
   },
   "icon": "/art/new/skill-icons/art-skl-songweaver-crescendo.webp",
   "iconRequest": "ART-SKL-songweaver-crescendo",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "songweaver.final_cadence",
   "key": "final_cadence",
   "name": "Final Cadence",
   "owner": "songweaver",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 800,
    "hits": 1,
    "type": "sonic",
    "element": "sonic"
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "A single shattering chord on a sleeping enemy: 800% and a 5 m sonic burst for 200%. Requires a sleeping target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Encore",
       "text": "Burst sleeps others 1 s"
      },
      {
       "id": "b",
       "name": "Ringing Ears",
       "text": "Burst radius 5 → 7 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Gentle Close",
       "text": "Allies in range heal 5%"
      },
      {
       "id": "b",
       "name": "Harsh Coda",
       "text": "+30% vs bosses"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hold the pipa high, one full strum across all strings, the instrument rings as it lowers.",
    "vfx": "Golden sound ring collapses into the target then explodes outward.",
    "sfx": "Single full-chord strum with a rising overtone, glass-like shatter.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-songweaver-final-cadence.webp",
   "iconRequest": "ART-SKL-songweaver-final_cadence",
   "requires": {
    "state": "sleep",
    "text": "target is asleep"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windmender.fan_cut",
   "key": "fan_cut",
   "name": "Fan Cut",
   "owner": "windmender",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2.5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.22,
    "activeS": 0.12,
    "recoveryS": 0.26,
    "cancelableAfterS": 0.34
   },
   "damage": {
    "percent": 70,
    "hits": 2,
    "type": "physical",
    "element": "wind"
   },
   "shape": {
    "type": "cone",
    "range": 4.5,
    "angleDeg": 70
   },
   "impact": "light",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Two crossing fan cuts (2 × 70%); the second sends a 4.5 m gust.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Gust",
       "text": "Gust range 4.5 → 7 m"
      },
      {
       "id": "b",
       "name": "Third Fold",
       "text": "A third cut for 70%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Mending Gust",
       "text": "Each hit heals the lowest ally for 1%"
      },
      {
       "id": "b",
       "name": "Razor Silk",
       "text": "+20% critical chance"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fans snap open, left cut, right cut crossing, flick the gust forward.",
    "vfx": "Two pale-teal silk crescents and a short wind ribbon.",
    "sfx": "Silk snap, double swish, soft gust.",
    "hitReactionNote": "Light flinch.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-windmender-fan_cut",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windmender.healing_gale",
   "key": "healing_gale",
   "name": "Healing Gale",
   "owner": "windmender",
   "kind": "buff",
   "role": "heal",
   "unlockLevel": 3,
   "chainable": false,
   "input": "aimed_direction",
   "cost": {
    "mp": 16
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "line",
    "range": 12,
    "width": 3
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "A warm wind heals you and allies in a 12 m line for 12% max life and gives +10% move speed for 3 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Broad Gale",
       "text": "Width 3 → 5 m"
      },
      {
       "id": "b",
       "name": "Strong Gale",
       "text": "Heal 12% → 16%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Second Wind",
       "text": "Also heals 4% over 4 s"
      },
      {
       "id": "b",
       "name": "Tailwind",
       "text": "Move speed bonus 10% → 20%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "One fan sweeps wide from low to high, releasing a long ribbon of wind.",
    "vfx": "Warm gold-teal wind ribbon with leaves and silk threads, green motes on healed allies.",
    "sfx": "Warm whoosh, soft chime per ally healed.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-windmender-healing_gale",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "windmender.updraft",
   "key": "updraft",
   "name": "Updraft",
   "owner": "windmender",
   "kind": "attack",
   "role": "control",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.12,
    "recoveryS": 0.35,
    "cancelableAfterS": 0.42
   },
   "damage": {
    "percent": 140,
    "hits": 1,
    "type": "physical",
    "element": "wind"
   },
   "shape": {
    "type": "self_circle",
    "radius": 3.5
   },
   "impact": "heavy",
   "special": "launch",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Spin both fans upward: 140% in 3.5 m and launches small and medium enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Draft",
       "text": "Radius 3.5 → 4.5 m"
      },
      {
       "id": "b",
       "name": "High Draft",
       "text": "Launch height +50% (longer airtime)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Lift Allies",
       "text": "Allies inside gain 15% evasion 4 s"
      },
      {
       "id": "b",
       "name": "Sky Cut",
       "text": "+40% vs airborne"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Crouch, spin once with both fans low, rise and fling them upward.",
    "vfx": "Upward teal vortex lifting dust and silk, launched enemies trail ribbons.",
    "sfx": "Spinning swish, rising gust howl.",
    "hitReactionNote": "Launch small/medium; large stagger.",
    "deathStyle": "launched"
   },
   "icon": null,
   "iconRequest": "ART-SKL-windmender-updraft",
   "proposed": true,
   "scenarios": [
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windmender.zephyr_glide",
   "key": "zephyr_glide",
   "name": "Zephyr Glide",
   "owner": "windmender",
   "kind": "mobility",
   "role": "dash",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 8
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.08,
    "activeS": 0.25,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.33
   },
   "damage": null,
   "shape": {
    "type": "dash",
    "range": 9
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Glide 9 m on the wind; allies you pass gain +15% move speed for 4 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Far Glide",
       "text": "Range 9 → 12 m"
      },
      {
       "id": "b",
       "name": "Feather Step",
       "text": "2 charges"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Shared Wind",
       "text": "Allies passed are healed 4%"
      },
      {
       "id": "b",
       "name": "Buffet",
       "text": "Enemies passed are knocked back"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fans open like wings, body tilts and glides low over the ground.",
    "vfx": "Silk wing streaks and wind lines, petals scatter.",
    "sfx": "Long gust, fabric flutter.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-windmender-zephyr_glide",
   "proposed": true,
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "windmender.cleansing_breeze",
   "key": "cleansing_breeze",
   "name": "Cleansing Breeze",
   "owner": "windmender",
   "kind": "buff",
   "role": "cleanse",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 14,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 10
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Remove up to 2 ailments (burn, chill, shock, slow, bleed) from you and allies within 10 m, heal 8%, and grant 3 s of ailment immunity.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Breeze",
       "text": "Radius 10 → 14 m"
      },
      {
       "id": "b",
       "name": "Deep Clean",
       "text": "Removes all ailments"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Fresh Air",
       "text": "Immunity 3 → 5 s"
      },
      {
       "id": "b",
       "name": "Spring Rain",
       "text": "Heal 8% → 14%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Both fans fan gently in a circle around the body.",
    "vfx": "Cool mint-white breeze ring sweeping outward, ailment icons blown away.",
    "sfx": "Soft breath of wind, wind-chime tinkle.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-windmender-cleansing_breeze",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "windmender.monsoon_blessing",
   "key": "monsoon_blessing",
   "name": "Monsoon Blessing",
   "owner": "windmender",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 32
   },
   "cooldownS": 18,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.4,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 300,
    "hits": 1,
    "type": "physical",
    "element": "wind"
   },
   "shape": {
    "type": "self_circle",
    "radius": 8
   },
   "impact": "heavy",
   "special": "launch",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Call a monsoon for 8 s: allies inside 8 m heal 3% per second and your fan hits heal the lowest ally for 30% of damage; it opens with a 300% gust that launches.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Monsoon",
       "text": "Radius 8 → 10 m"
      },
      {
       "id": "b",
       "name": "Long Rains",
       "text": "Duration 8 → 12 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thunderhead",
       "text": "Enemies inside are shocked 30%"
      },
      {
       "id": "b",
       "name": "Deluge",
       "text": "Heal 3% → 4.5% per second"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Fans raised high, sweep down and outward to both sides as clouds gather.",
    "vfx": "Dark teal storm clouds, warm rain circle on the ground, gust ring at cast.",
    "sfx": "Thunder roll, rain loop, opening gust boom.",
    "hitReactionNote": "Opening gust launches small/medium.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-windmender-monsoon_blessing",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "windmender.eye_of_the_storm",
   "key": "eye_of_the_storm",
   "name": "Eye of the Storm",
   "owner": "windmender",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 760,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Trap a launched enemy in a cyclone and slam it down: 760%; allies within 8 m heal 6% max life. Requires a launched target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Calm Centre",
       "text": "Heal 6% → 10%"
      },
      {
       "id": "b",
       "name": "Gale Prison",
       "text": "Cyclone pulls enemies within 3 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Monsoon Drop",
       "text": "Slam radius 3 m for 150%"
      },
      {
       "id": "b",
       "name": "Clear Skies",
       "text": "Cleanses allies it heals"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Both fans sweep up in a spiral, then snap shut and chop down.",
    "vfx": "Teal cyclone column with silk ribbons, downward gust ring.",
    "sfx": "Rising wind howl, fan snap, gust boom.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "blown_back"
   },
   "icon": null,
   "iconRequest": "ART-SKL-windmender-eye_of_the_storm",
   "requires": {
    "state": "launch",
    "text": "target is launched"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ringdancer.moonring_toss",
   "key": "moonring_toss",
   "name": "Moonring Toss",
   "owner": "ringdancer",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2.5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.14,
    "activeS": 0.4,
    "recoveryS": 0.16,
    "cancelableAfterS": 0.54
   },
   "damage": {
    "percent": 90,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "ricochet",
    "speed": 30,
    "range": 14,
    "bounces": 2
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a thrown ring that ricochets 2 times (14 m): 90% physical, medium impact.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Moon Path",
       "text": "+2 bounces"
      },
      {
       "id": "b",
       "name": "Silver Return",
       "text": "Returning ring hits again for 60%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Frost Rim",
       "text": "Chill 30%"
      },
      {
       "id": "b",
       "name": "Ringing Edge",
       "text": "+20% damage per bounce"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Wind-up spin, sidearm throw; ring ricochets and returns to the catching hand.",
    "vfx": "Moon-silver spinning disc, glints at bounces.",
    "sfx": "Whirr, ting per bounce, catch chime.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ringdancer-moonring_toss",
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ringdancer.orbit_ward",
   "key": "orbit_ward",
   "name": "Orbit Ward",
   "owner": "ringdancer",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 10,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.15,
    "activeS": 6,
    "recoveryS": 0.15,
    "cancelableAfterS": 6.15
   },
   "damage": {
    "percent": 35,
    "hits": 12,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "orbit",
    "radius": 2.4,
    "durationS": 6
   },
   "impact": "light",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Two chakrams orbit you for 6 s, hitting anything they pass; you can attack meanwhile.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Third Moon",
       "text": "+1 orbiting ring"
      },
      {
       "id": "b",
       "name": "Wide Orbit",
       "text": "Radius 2.4 → 3.4 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Deflect",
       "text": "Orbit destroys enemy projectiles (1 per 0.5 s)"
      },
      {
       "id": "b",
       "name": "Cold Orbit",
       "text": "Orbit chills (20%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Flick both wrists upward; rings leave hands and settle into orbit; hands free.",
    "vfx": "Two silver rings orbiting with faint trails.",
    "sfx": "Continuous soft whirr loop with chime on hits.",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ringdancer-orbit_ward",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "ringdancer.glass_crescent",
   "key": "glass_crescent",
   "name": "Glass Crescent",
   "owner": "ringdancer",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.5,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.7
   },
   "damage": {
    "percent": 130,
    "hits": 2,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "boomerang_line",
    "range": 12,
    "width": 1.6
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "chill",
     "chance": 0.6
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a throw that flies 12 m and returns, hitting on the way out and back: 2 × 130% cold, medium impact. 60% chance to inflict Chill.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Shatter Glass",
       "text": "+50% damage vs chilled"
      },
      {
       "id": "b",
       "name": "Wide Glass",
       "text": "Width 1.6 → 2.6 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Splinters",
       "text": "Hit enemies release 3 shards (40%)"
      },
      {
       "id": "b",
       "name": "Deep Frost",
       "text": "Chill strength +10%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Overhand throw with a skip step; ring flies out frosted, curves back.",
    "vfx": "Frost-crystal ring trail, glass-shard spray on hits.",
    "sfx": "Icy whistle, crystal tinks, return whoosh.",
    "hitReactionNote": "Flinch_heavy; chill slows anim.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ringdancer-glass_crescent",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ringdancer.ring_step",
   "key": "ring_step",
   "name": "Ring Step",
   "owner": "ringdancer",
   "kind": "mobility",
   "role": "teleport",
   "unlockLevel": 10,
   "chainable": false,
   "input": "aimed_ground",
   "cost": {
    "mp": 10
   },
   "cooldownS": 9,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.1,
    "activeS": 0.4,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 80,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "throw_teleport",
    "range": 9,
    "radius": 2
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Throw a ring to a point; after 0.4 s you blink to it, slashing in 2 m.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Step",
       "text": "2 charges"
      },
      {
       "id": "b",
       "name": "Early Step",
       "text": "Recast to blink immediately"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Moon Landing",
       "text": "Landing chills and slows 30%"
      },
      {
       "id": "b",
       "name": "Afterimage",
       "text": "Leaves an afterimage that throws one Moonring Toss"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Throw ring forward, body dissolves into silver light, reforms at ring catching it mid-spin.",
    "vfx": "Silver light line, ring flash at endpoint.",
    "sfx": "Throw whirr, shimmer blink, catch chime.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ringdancer-ring_step",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ringdancer.hovering_halo",
   "key": "hovering_halo",
   "name": "Hovering Halo",
   "owner": "ringdancer",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 24,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 12 s: returning chakrams fire a second pulse (40%) and +20% projectile speed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bright Halo",
       "text": "Pulse 40% → 70%"
      },
      {
       "id": "b",
       "name": "Long Halo",
       "text": "Duration 12 → 18 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Cold Halo",
       "text": "Pulses chill"
      },
      {
       "id": "b",
       "name": "Dancer's Halo",
       "text": "+10% evasion while active"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Raise a ring above the head; it hovers as a halo; spin once.",
    "vfx": "Silver halo above head emitting faint light pulses.",
    "sfx": "Soft choral note, whirr.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ringdancer-hovering_halo",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "ringdancer.ricochet_storm",
   "key": "ricochet_storm",
   "name": "Ricochet Storm",
   "owner": "ringdancer",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.35,
    "activeS": 1.5,
    "recoveryS": 0.3,
    "cancelableAfterS": 1.85
   },
   "damage": {
    "percent": 55,
    "hits": 15,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "ricochet",
    "speed": 34,
    "range": 16,
    "bounces": 15,
    "count": 5
   },
   "impact": "medium",
   "special": "pull_on_last",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "5 rings bounce between up to 15 targets; when they return they pull small/medium enemies 2 m toward you.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Endless Moon",
       "text": "+5 bounces per ring"
      },
      {
       "id": "b",
       "name": "Moonfall",
       "text": "Final return creates a 3 m frost burst (150%)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Focus Storm",
       "text": "Rings prefer elites and marked targets"
      },
      {
       "id": "b",
       "name": "Glass Storm",
       "text": "All bounces chill (20%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Spin full circle releasing rings one after another from both hands, then raise arms to call them back.",
    "vfx": "Five silver trails zig-zag between enemies, bright ricochet sparks, converging return streaks.",
    "sfx": "Layered whirrs, dense ting cascade, final convergent chime.",
    "hitReactionNote": "Flinch_heavy chain; final pull.",
    "deathStyle": "sliced"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ringdancer-ricochet_storm",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "ringdancer.eclipse_reckoning",
   "key": "eclipse_reckoning",
   "name": "Eclipse Reckoning",
   "owner": "ringdancer",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 900,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "target",
    "range": 12
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Both chakrams orbit a chilled enemy and crash together: 900%, shatters chill into a 3 m frost burst for 180%. Requires a chilled target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Eclipse",
       "text": "Second crash at 40%"
      },
      {
       "id": "b",
       "name": "Wide Orbit",
       "text": "Burst radius 3 → 5 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Moon Halo",
       "text": "Gain a 10% barrier"
      },
      {
       "id": "b",
       "name": "Black Moon",
       "text": "+25% critical chance"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Throw both chakrams in opposing arcs, catch them as they return through each other.",
    "vfx": "Two silver-blue rings orbit tighter, crash into an eclipse flash, frost shards.",
    "sfx": "Spinning metal whine, crash chime, icy crackle.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ringdancer-eclipse_reckoning",
   "requires": {
    "state": "chill",
    "text": "target is chilled"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "pole_int.elemental_attunement",
   "key": "elemental_attunement",
   "name": "Elemental Attunement",
   "owner": "pole_int",
   "kind": "buff",
   "role": "aura",
   "unlockLevel": 10,
   "chainable": false,
   "input": "toggle",
   "cost": {
    "mp": 0
   },
   "cooldownS": 2,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Toggle aura (reserves 15% max mana). Choose Fire, Cold or Lightning: 20% of your physical damage is added as that element and its ailment chance +15%.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Deep Attunement",
       "text": "Conversion 20% → 30%"
      },
      {
       "id": "b",
       "name": "Light Reserve",
       "text": "Reservation 15% → 10%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Attunement",
       "text": "Choose two elements (10% each)"
      },
      {
       "id": "b",
       "name": "Resonance",
       "text": "Ailments you apply last +30%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Cup lantern-light in one palm, close the hand, light flows up the arm.",
    "vfx": "Small element-coloured orb orbiting the shoulder (ember / frost / spark).",
    "sfx": "Soft ignition matching the element.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-int-elemental-attunement.webp",
   "iconRequest": "ART-SKL-pole_int-elemental_attunement",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pole_int.lantern_light",
   "key": "lantern_light",
   "name": "Lantern Light",
   "owner": "pole_int",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "A warm lantern hangs above you for 15 s: you and allies within 12 m regenerate 2% mana per second, and hidden enemies and traps are revealed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bright Lantern",
       "text": "Radius 12 → 16 m"
      },
      {
       "id": "b",
       "name": "Long Wick",
       "text": "Duration 15 → 22 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Clear Mind",
       "text": "Cooldowns recover 10% faster"
      },
      {
       "id": "b",
       "name": "Ward Light",
       "text": "Allies take 6% less spell damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Lift the palm, a small lantern of light rises above the head.",
    "vfx": "Floating paper lantern with amber glow, light pool on the ground.",
    "sfx": "Soft ignition, paper rustle, warm hum.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-int-lantern-light.webp",
   "iconRequest": "ART-SKL-pole_int-lantern_light",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pole_int.resonant_ward",
   "key": "resonant_ward",
   "name": "Resonant Ward",
   "owner": "pole_int",
   "kind": "buff",
   "role": "defense",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 22
   },
   "cooldownS": 14,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Shield absorbing 15% of maximum life for 4 s. Recasting replaces the remaining shield (no stacking, no invulnerability).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thick Ward",
       "text": "Absorb 15% → 22%"
      },
      {
       "id": "b",
       "name": "Shared Ward",
       "text": "Also shields the lowest-life party member within 10 m at 50%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Shatter Ward",
       "text": "When broken, releases a 3 m nova (120%) that chills"
      },
      {
       "id": "b",
       "name": "Recharge",
       "text": "Cooldown −4 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hand sweeps a circle in front of the body; glyph ring rotates and wraps around.",
    "vfx": "Translucent indigo-gold rune shell around the body; cracks appear as it absorbs.",
    "sfx": "Glass chime + low hum; breaking = crystal shatter.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/icons/skills/resonant-ward.webp",
   "iconRequest": null,
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pole_int.sanctuary_glyph",
   "key": "sanctuary_glyph",
   "name": "Sanctuary Glyph",
   "owner": "pole_int",
   "kind": "buff",
   "role": "heal",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 24,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Draw a 6 m glyph on the ground for 8 s: allies standing in it heal 2.5% life per second and take 10% less damage.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Glyph",
       "text": "Radius 6 → 8 m"
      },
      {
       "id": "b",
       "name": "Long Glyph",
       "text": "Duration 8 → 12 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Holy Ground",
       "text": "Enemies inside are slowed 20%"
      },
      {
       "id": "b",
       "name": "Deep Rest",
       "text": "Heal 2.5% → 3.5%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Kneel, draw a circle with the fingertips, press the palm flat.",
    "vfx": "Glowing jade-gold glyph circle with rotating runes.",
    "sfx": "Chalk scratch, resonant chord, soft hum loop.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-int-sanctuary-glyph.webp",
   "iconRequest": "ART-SKL-pole_int-sanctuary_glyph",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pole_int.arcane_surge",
   "key": "arcane_surge",
   "name": "Arcane Surge",
   "owner": "pole_int",
   "kind": "buff",
   "role": "offense",
   "unlockLevel": 20,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 20
   },
   "cooldownS": 40,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 6 s: cooldowns recover 40% faster and +20% cast speed.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Overflow",
       "text": "Also refunds 25% of mana spent during the surge"
      },
      {
       "id": "b",
       "name": "Long Surge",
       "text": "Duration 6 → 9 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Spellstorm",
       "text": "+15% spell damage while active"
      },
      {
       "id": "b",
       "name": "Quick Surge",
       "text": "Cooldown −10 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Both hands raised, fingers spread, light rushes in from the air and veins glow.",
    "vfx": "Indigo-gold rune halo behind head, sparks rushing inward.",
    "sfx": "Reverse whoosh into a bright chord.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-int-arcane-surge.webp",
   "iconRequest": "ART-SKL-pole_int-arcane_surge",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pole_int.kindred_flame",
   "key": "kindred_flame",
   "name": "Kindred Flame",
   "owner": "pole_int",
   "kind": "buff",
   "role": "party_buff",
   "unlockLevel": 20,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 18
   },
   "cooldownS": 30,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 12
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "You and allies within 12 m add 15% of physical damage as fire, cold or lightning (your choice) and gain +10% ailment chance for 10 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Flame",
       "text": "Choose two elements (8% each)"
      },
      {
       "id": "b",
       "name": "Long Flame",
       "text": "Duration 10 → 14 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Shared Ailment",
       "text": "Ailments allies apply last +20%"
      },
      {
       "id": "b",
       "name": "Bright Kin",
       "text": "Conversion 15% → 20%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Open both hands, a small flame passes from palm to palm and splits.",
    "vfx": "Element-coloured motes leap from the caster to each ally’s weapon.",
    "sfx": "Ignition crackle matching the element, rising chime.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pole-int-kindred-flame.webp",
   "iconRequest": "ART-SKL-pole_int-kindred_flame",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "pyromancer.cinder_needle",
   "key": "cinder_needle",
   "name": "Cinder Needle",
   "owner": "pyromancer",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.06,
    "recoveryS": 0.16,
    "cancelableAfterS": 0.18
   },
   "damage": {
    "percent": 115,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "projectile",
    "speed": 34,
    "range": 16,
    "count": 1
   },
   "impact": "light",
   "special": null,
   "applies": [
    {
     "state": "burn",
     "chance": 0.25
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a projectile (16 m): 115% fire, light impact. 25% chance to inflict Burn.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Needles",
       "text": "2 projectiles"
      },
      {
       "id": "b",
       "name": "Seeking Embers",
       "text": "Projectiles home slightly"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Kindling",
       "text": "Burn 25% → 45%"
      },
      {
       "id": "b",
       "name": "Detonate",
       "text": "Explodes 2 m on hit (50%)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Snap wand forward from the wrist, other hand braced; alternate hands each cast.",
    "vfx": "Hot orange needle with ember trail, small fiery impact pop.",
    "sfx": "Fiery snap + sizzle impact.",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "ash"
   },
   "icon": "/art/icons/skills/cinder-needle.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "pyromancer.lantern_fan",
   "key": "lantern_fan",
   "name": "Lantern Fan",
   "owner": "pyromancer",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.18,
    "activeS": 0.25,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.43
   },
   "damage": {
    "percent": 100,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "cone",
    "range": 6,
    "angleDeg": 70
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "burn",
     "chance": 0.35
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 70° arc in front (6 m): 100% fire, medium impact. 35% chance to inflict Burn.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Bonfire Fan",
       "text": "Range 6 → 8 m"
      },
      {
       "id": "b",
       "name": "Fanned Flames",
       "text": "Burning enemies hit take +30%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Lingering Fan",
       "text": "Leaves fire on the ground 2 s"
      },
      {
       "id": "b",
       "name": "Pushing Gust",
       "text": "Knocks back small enemies"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Wand sweeps horizontally; flame pours from the tip in a fan.",
    "vfx": "Fan of lantern-orange flame with rolling smoke edges.",
    "sfx": "Whoomph + roaring fire.",
    "hitReactionNote": "Flinch_heavy; burn flail layer.",
    "deathStyle": "ash"
   },
   "icon": "/art/icons/skills/lantern-fan.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "pyromancer.kiln_burst",
   "key": "kiln_burst",
   "name": "Kiln Burst",
   "owner": "pyromancer",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.32,
    "activeS": 0.1,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.42
   },
   "damage": {
    "percent": 180,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "target_circle",
    "range": 14,
    "radius": 2.5
   },
   "impact": "heavy",
   "special": "knockback",
   "applies": [
    {
     "state": "burn",
     "chance": 1
    }
   ],
   "payoff": {
    "vs": "burn",
    "bonus": "+40% per burn source (max 3)"
   },
   "followUp": null,
   "effect": "Detonate the heat inside an enemy: 180% fire in 2.5 m, +40% per burn on the target (max 3), then re-ignites it.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Kiln",
       "text": "Radius 2.5 → 3.5 m"
      },
      {
       "id": "b",
       "name": "Quick Stoke",
       "text": "Cooldown 7 → 5 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Brick Fire",
       "text": "Knockback becomes knockdown on small"
      },
      {
       "id": "b",
       "name": "Bellows",
       "text": "Refunds 6 mana per burning enemy hit"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Point wand, twist the wrist like turning a key, fingers flare open.",
    "vfx": "Orange heat bloom erupts from inside the target, brick-kiln ember ring.",
    "sfx": "Bellows whoomph, crackling roar, ember hiss.",
    "hitReactionNote": "Heavy: stagger small/medium.",
    "deathStyle": "charred"
   },
   "icon": "/art/new/skill-icons/art-skl-pyromancer-kiln-burst.webp",
   "iconRequest": "ART-SKL-pyromancer-kiln_burst",
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "pyromancer.ember_step",
   "key": "ember_step",
   "name": "Ember Step",
   "owner": "pyromancer",
   "kind": "mobility",
   "role": "teleport",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.1,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.2
   },
   "damage": {
    "percent": 80,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "blink",
    "range": 7,
    "radius": 2
   },
   "impact": "light",
   "special": null,
   "applies": [
    {
     "state": "burn",
     "chance": 0.5
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Blink 7 m in a burst of embers; 80% fire at both ends (2 m), 50% burn.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Step",
       "text": "Range 7 → 10 m"
      },
      {
       "id": "b",
       "name": "Two Steps",
       "text": "2 charges"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ember Trail",
       "text": "Leaves a burning line 3 s"
      },
      {
       "id": "b",
       "name": "Cool Head",
       "text": "Next spell within 2 s costs no mana"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Body collapses into embers forward and reforms mid-stride.",
    "vfx": "Ember silhouette streak, small fire puff at start and end.",
    "sfx": "Fwoosh-pop of ignition at both ends, ember crackle trailing off.",
    "hitReactionNote": "Light flinch.",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-pyromancer-ember-step.webp",
   "iconRequest": "ART-SKL-pyromancer-ember_step",
   "proposed": true,
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "pyromancer.pyre_mantle",
   "key": "pyre_mantle",
   "name": "Pyre Mantle",
   "owner": "pyromancer",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 25,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 15 s: burns you inflict deal +25% and each fire hit spreads burn to 1 enemy within 3 m.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Mantle",
       "text": "Spread radius 3 → 5 m"
      },
      {
       "id": "b",
       "name": "Long Pyre",
       "text": "Duration 15 → 22 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Heat Shield",
       "text": "+15% damage reduction while active"
      },
      {
       "id": "b",
       "name": "Firestorm",
       "text": "Spreads to 2 enemies"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Breathe in, wand tip to the chest, flames climb the robes.",
    "vfx": "Rising ember shawl around shoulders, heat shimmer.",
    "sfx": "Low fire roar loop, crackling.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-pyromancer-pyre-mantle.webp",
   "iconRequest": "ART-SKL-pyromancer-pyre_mantle",
   "scope": "self",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "pyromancer.prism_barrage",
   "key": "prism_barrage",
   "name": "Prism Barrage",
   "owner": "pyromancer",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "channel",
   "cost": {
    "mp": 30
   },
   "cooldownS": 15,
   "castTimeS": 2,
   "timing": {
    "windupS": 0.2,
    "activeS": 2,
    "recoveryS": 0.3,
    "cancelableAfterS": 2.2
   },
   "damage": {
    "percent": 70,
    "hits": 12,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "projectile_stream",
    "speed": 36,
    "range": 16,
    "count": 12
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "burn",
     "chance": 0.2
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Channel 2 s firing 12 bolts cycling fire → cold → lightning, each with its ailment chance (20%); you can rotate while channelling. All beams are fire and apply burn 20%.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Overcharged Prism",
       "text": "+6 bolts"
      },
      {
       "id": "b",
       "name": "Splitting Light",
       "text": "Every 3rd bolt splits into 3"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Elemental Overload",
       "text": "Hitting a target with all three elements causes a 3 m prism burst (200%)"
      },
      {
       "id": "b",
       "name": "Steady Hands",
       "text": "Move at 50% speed while channelling"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Wand held forward with both hands, feet planted, body vibrating, wand tip strobing colours.",
    "vfx": "Rapid tri-colour bolt stream with prismatic muzzle flare; impacts per element.",
    "sfx": "Rapid magical fire with element sweeteners cycling, rising pitch over the channel.",
    "hitReactionNote": "Flinch_heavy chain; element overlays.",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-pyromancer-prism-barrage.webp",
   "iconRequest": "ART-SKL-pyromancer-prism_barrage",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "pyromancer.ashfall_verdict",
   "key": "ashfall_verdict",
   "name": "Ashfall Verdict",
   "owner": "pyromancer",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 950,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "target",
    "range": 16
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Call a column of falling ash on a burning enemy: 950% and burning ground 3 s. Requires a burning target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Column",
       "text": "A second column on another burning enemy"
      },
      {
       "id": "b",
       "name": "Hot Ash",
       "text": "Ground burn +50%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Smother",
       "text": "Silences 1.5 s"
      },
      {
       "id": "b",
       "name": "Cinder Bloom",
       "text": "Spreads burn to all within 4 m"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Raise the wand, draw a slow downward line through the air, close the fist.",
    "vfx": "Dark ember column falling from above, orange core, ash snow.",
    "sfx": "Deep roar of fire, crackling hail of embers.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-pyromancer-ashfall-verdict.webp",
   "iconRequest": "ART-SKL-pyromancer-ashfall_verdict",
   "requires": {
    "state": "burn",
    "text": "target is burning"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "stormcaller.staff_cascade",
   "key": "staff_cascade",
   "name": "Staff Cascade",
   "owner": "stormcaller",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2.5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.14,
    "activeS": 0.45,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.59
   },
   "damage": {
    "percent": 55,
    "hits": 3,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 3,
    "angleDeg": 140
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "shock",
     "chance": 0.2
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Three-hit staff spin; the third hit releases a lightning arc to one extra enemy (60%).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Cascade+",
       "text": "+1 hit"
      },
      {
       "id": "b",
       "name": "Grounding Strike",
       "text": "Third hit stuns 0.4 s (Resolve applies)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Forked Arc",
       "text": "Arc jumps to 2 extra enemies"
      },
      {
       "id": "b",
       "name": "Monk Rhythm",
       "text": "Cooldown −0.8 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Thrust, overhead spin (staff rotates across back), low sweep; feet pivot in a martial stance.",
    "vfx": "Wooden blur with storm-violet arcs at tips; final arc jumps.",
    "sfx": "Wooden whooms, knock impacts, final crackle.",
    "hitReactionNote": "Flinch → flinch_heavy.",
    "deathStyle": "charred"
   },
   "icon": null,
   "iconRequest": "ART-SKL-stormcaller-staff_cascade",
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "stormcaller.storm_circle",
   "key": "storm_circle",
   "name": "Storm Circle",
   "owner": "stormcaller",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "aimed_ground",
   "cost": {
    "mp": 14
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.7,
    "recoveryS": 0.25,
    "cancelableAfterS": 1
   },
   "damage": {
    "percent": 150,
    "hits": 1,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "ground_circle",
    "range": 14,
    "radius": 2.4,
    "warningS": 0.6
   },
   "impact": "heavy",
   "special": null,
   "applies": [
    {
     "state": "shock",
     "chance": 0.4
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 2.4 m area up to 14 m away after a 0.6 s warning: 150% lightning, heavy impact. 40% chance to inflict Shock.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Storm",
       "text": "Radius 2.4 → 3.4 m"
      },
      {
       "id": "b",
       "name": "Second Strike",
       "text": "Strikes again after 0.5 s (60%)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Lightning Rod",
       "text": "Shocked enemies in the circle take +40%"
      },
      {
       "id": "b",
       "name": "Fast Storm",
       "text": "Warning 0.6 → 0.3 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Staff raised high, spin it once, point to the ground target.",
    "vfx": "Circle telegraph with storm clouds above, one thick lightning bolt + branching arcs, scorch ring.",
    "sfx": "Charge whine, thunderclap, rolling rumble.",
    "hitReactionNote": "Stagger; shock.",
    "deathStyle": "charred"
   },
   "icon": "/art/icons/skills/storm-circle.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "stormcaller.thunderclap_vault",
   "key": "thunderclap_vault",
   "name": "Thunderclap Vault",
   "owner": "stormcaller",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 6,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.15,
    "activeS": 0.45,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.6
   },
   "damage": {
    "percent": 140,
    "hits": 1,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "leap_circle",
    "leap": 7,
    "radius": 3
   },
   "impact": "heavy",
   "special": "knockdown",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike leaping 7 m and crashing down in 3 m: 140% lightning, heavy impact. Knocks down enemies.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "High Vault",
       "text": "Range 7 → 10 m"
      },
      {
       "id": "b",
       "name": "Thunder Landing",
       "text": "Landing radius 3 → 4 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Static Pole",
       "text": "Leaves a lightning pole 3 s at take-off that zaps (40%/s)"
      },
      {
       "id": "b",
       "name": "Return Vault",
       "text": "Recast within 2 s to vault back"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Plant staff and pole-vault over the ground, landing with staff slammed down.",
    "vfx": "Arc trail along vault path, landing thunderclap ring and sparks.",
    "sfx": "Wooden flex, whoosh, thunderclap.",
    "hitReactionNote": "Knockdown.",
    "deathStyle": "charred"
   },
   "icon": null,
   "iconRequest": "ART-SKL-stormcaller-thunderclap_vault",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "stormcaller.arc_thread",
   "key": "arc_thread",
   "name": "Arc Thread",
   "owner": "stormcaller",
   "kind": "attack",
   "role": "chain_lightning",
   "unlockLevel": 10,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.18,
    "activeS": 0.1,
    "recoveryS": 0.18,
    "cancelableAfterS": 0.28
   },
   "damage": {
    "percent": 100,
    "hits": 1,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "chain",
    "range": 12,
    "jumps": 3,
    "jumpRange": 4
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "shock",
     "chance": 0.35
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with lightning that jumps between up to 4 enemies (12 m, 4 m jumps): 100% lightning, medium impact. 35% chance to inflict Shock.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Thread",
       "text": "+2 jumps"
      },
      {
       "id": "b",
       "name": "Thick Thread",
       "text": "Jump damage no longer decays"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Live Wire",
       "text": "Shocked targets fork to one more enemy"
      },
      {
       "id": "b",
       "name": "Static Web",
       "text": "Leaves a 2 s web between hit enemies (40%/s)"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Wand thrust, lightning leaps from tip; arm jolts slightly from recoil.",
    "vfx": "Jagged violet-white lightning chain jumping between targets, impact flashes.",
    "sfx": "Electric crack per jump, buzzing tail.",
    "hitReactionNote": "Flinch_heavy + shock twitch.",
    "deathStyle": "charred"
   },
   "icon": "/art/icons/skills/arc-thread.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "stormcaller.storm_mantle",
   "key": "storm_mantle",
   "name": "Storm Mantle",
   "owner": "stormcaller",
   "kind": "buff",
   "role": "stance",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 25,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.1,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "self"
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "For 15 s: melee hits chain lightning to 1 extra enemy (50%) and +10% shock chance.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Mantle",
       "text": "Chain to 2 extra enemies"
      },
      {
       "id": "b",
       "name": "Long Storm",
       "text": "Duration 15 → 22 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Conductive",
       "text": "Shocked enemies take +10% more"
      },
      {
       "id": "b",
       "name": "Static Guard",
       "text": "Melee attackers take 60% lightning damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Staff planted, palm on top, lightning climbs the staff into the body.",
    "vfx": "Crackling violet arcs crawling over shoulders and staff.",
    "sfx": "Electric hum loop + crackle bursts.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-stormcaller-storm_mantle",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss",
    "duel"
   ]
  },
  {
   "id": "stormcaller.heavens_pillar",
   "key": "heavens_pillar",
   "name": "Heaven's Pillar",
   "owner": "stormcaller",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 4,
    "recoveryS": 0.3,
    "cancelableAfterS": 4.4
   },
   "damage": {
    "percent": 60,
    "hits": 8,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "sweeping_pillar",
    "radius": 6,
    "durationS": 4
   },
   "impact": "heavy",
   "special": "stun_on_first",
   "applies": [
    {
     "state": "shock",
     "chance": 0.5
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Plant the staff: a lightning pillar strikes it and sweeps out in a 6 m circle for 4 s (8 hits); first hit stuns 0.6 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Pillars",
       "text": "A second pillar sweeps the opposite direction"
      },
      {
       "id": "b",
       "name": "Heaven's Wrath",
       "text": "Final strike 300% at the staff"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Grounded",
       "text": "You are Superarmoured while the pillar stands"
      },
      {
       "id": "b",
       "name": "Wide Heaven",
       "text": "Radius 6 → 7.5 m"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Leap, drive staff into ground, kneel holding it as lightning hammers down; rise and pull the staff free.",
    "vfx": "Massive violet-white pillar from the sky, beam sweeping like a lighthouse, scorch spiral.",
    "sfx": "Huge thunder strike, sustained crackling roar, final thunderclap.",
    "hitReactionNote": "Stun first hit, flinches, shock.",
    "deathStyle": "charred"
   },
   "icon": null,
   "iconRequest": "ART-SKL-stormcaller-heavens_pillar",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "stormcaller.judgement_bolt",
   "key": "judgement_bolt",
   "name": "Judgement Bolt",
   "owner": "stormcaller",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 850,
    "hits": 1,
    "type": "lightning",
    "element": "lightning"
   },
   "shape": {
    "type": "target",
    "range": 18
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Draw down a single white bolt on a shocked enemy: 850%, chains to 3 nearby for 200%. Requires a shocked target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Fork",
       "text": "Chains to 5"
      },
      {
       "id": "b",
       "name": "Overcharge",
       "text": "+30% vs bosses"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thunder Debt",
       "text": "Refund 50% mana on kill"
      },
      {
       "id": "b",
       "name": "Static Field",
       "text": "Leaves a 3 m shocking field 4 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Staff raised overhead, a breath, then pointed down at the target.",
    "vfx": "Blinding white bolt, branching violet forks, scorched ground.",
    "sfx": "Charge whine, deafening crack, rolling thunder.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "charred"
   },
   "icon": null,
   "iconRequest": "ART-SKL-stormcaller-judgement_bolt",
   "requires": {
    "state": "shock",
    "text": "target is shocked"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "frostweaver.rime_lance",
   "key": "rime_lance",
   "name": "Rime Lance",
   "owner": "frostweaver",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2.5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.26,
    "activeS": 0.08,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.34
   },
   "damage": {
    "percent": 115,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "projectile",
    "range": 18,
    "width": 0.6
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "chill",
     "chance": 0.5
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "A spear of ice: 115% cold, 50% chill.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Split Lance",
       "text": "Splits into 2 on hit (50%)"
      },
      {
       "id": "b",
       "name": "Sharp Rime",
       "text": "Chill chance 50% → 80%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Glacier Tip",
       "text": "+30% vs chilled"
      },
      {
       "id": "b",
       "name": "Frozen Wake",
       "text": "Leaves a chilling line 2 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Tome open on the off-hand, palm slides across the page and pushes forward.",
    "vfx": "Pale blue ice lance with frost motes, shatter puff on hit.",
    "sfx": "Crystal hiss, sharp crack.",
    "hitReactionNote": "Medium: flinch_heavy small/medium.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-frostweaver-rime_lance",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "frostweaver.glass_shard",
   "key": "glass_shard",
   "name": "Glass Shard",
   "owner": "frostweaver",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 8
   },
   "cooldownS": 4,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.16,
    "activeS": 0.06,
    "recoveryS": 0.18,
    "cancelableAfterS": 0.22
   },
   "damage": {
    "percent": 140,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "projectile",
    "speed": 30,
    "range": 16,
    "count": 1,
    "pierce": 1
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "chill",
     "chance": 0.4
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a projectile (16 m, pierces 1): 140% cold, medium impact. 40% chance to inflict Chill.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Splintering Glass",
       "text": "Splits into 3 shards on hit"
      },
      {
       "id": "b",
       "name": "Clear Glass",
       "text": "Pierce 1 → 3"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Cold Snap",
       "text": "+50% damage vs chilled"
      },
      {
       "id": "b",
       "name": "Hailstone",
       "text": "Shard knocks back small"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Twist wrist to form a shard at the tip, flick it forward.",
    "vfx": "Crystalline ice shard with frost mist trail; shatter spray.",
    "sfx": "Crystal tink + whistle + shatter.",
    "hitReactionNote": "Flinch_heavy; chill.",
    "deathStyle": "shatter"
   },
   "icon": "/art/icons/skills/glass-shard.webp",
   "iconRequest": null,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "frostweaver.frost_bloom",
   "key": "frost_bloom",
   "name": "Frost Bloom",
   "owner": "frostweaver",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.32,
    "activeS": 0.12,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.44
   },
   "damage": {
    "percent": 150,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "ground_circle",
    "range": 14,
    "radius": 3.5
   },
   "impact": "medium",
   "special": "root",
   "applies": [
    {
     "state": "chill",
     "chance": 1
    },
    {
     "state": "root",
     "chance": 1,
     "durationS": 1.5,
     "note": "only on already chilled enemies (frozen)"
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "A frost flower erupts: 150% cold in 3.5 m, chills all; enemies that were already chilled freeze (root 1.5 s).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Full Bloom",
       "text": "Radius 3.5 → 5 m"
      },
      {
       "id": "b",
       "name": "Hard Freeze",
       "text": "Root 1.5 → 2.2 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Petal Storm",
       "text": "Shards fly out for 3 × 40%"
      },
      {
       "id": "b",
       "name": "Second Bloom",
       "text": "Blooms again after 1 s for 50%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Flip pages fast, slam the palm onto the open book; frost spreads from the feet to the target area.",
    "vfx": "Ice-crystal flower blooms from the ground, frost rime spreads, frozen enemies glaze over.",
    "sfx": "Crackling growth of ice, chime, glassy freeze.",
    "hitReactionNote": "Medium; frozen enemies stop moving.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-frostweaver-frost_bloom",
   "proposed": true,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "frostweaver.mirror_glide",
   "key": "mirror_glide",
   "name": "Mirror Glide",
   "owner": "frostweaver",
   "kind": "mobility",
   "role": "disengage",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.1,
    "activeS": 0.25,
    "recoveryS": 0.15,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "dash",
    "range": 8
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Slide 8 m on a ribbon of ice; an ice mirror of you stays behind 3 s and draws monster attacks.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Glide",
       "text": "Range 8 → 11 m"
      },
      {
       "id": "b",
       "name": "Sharp Mirror",
       "text": "Mirror explodes for 120% cold when it ends"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Mirrors",
       "text": "2 mirrors"
      },
      {
       "id": "b",
       "name": "Cold Trail",
       "text": "Path chills enemies"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Lean back, feet glide as if skating, tome held against the chest.",
    "vfx": "Glassy ice ribbon underfoot, translucent mirror image left behind.",
    "sfx": "Skating hiss, glass ring.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-frostweaver-mirror_glide",
   "proposed": true,
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "frostweaver.stillwater_seal",
   "key": "stillwater_seal",
   "name": "Stillwater Seal",
   "owner": "frostweaver",
   "kind": "attack",
   "role": "control",
   "unlockLevel": 15,
   "chainable": true,
   "input": "aimed_ground",
   "cost": {
    "mp": 16
   },
   "cooldownS": 9,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.25,
    "cancelableAfterS": 0.4
   },
   "damage": {
    "percent": 85,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "ground_circle",
    "range": 12,
    "radius": 2.5
   },
   "impact": "medium",
   "special": "sleep",
   "applies": [
    {
     "state": "sleep",
     "chance": 1,
     "durationS": 2
    },
    {
     "state": "chill",
     "chance": 1
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Telegraph 0.6 s, then a cold seal sleeps enemies 2 s. Any later damage wakes them; the waking hit gets the Quiet Verdict payoff if allocated.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Deep Water",
       "text": "Sleep 2 → 3 s"
      },
      {
       "id": "b",
       "name": "Wide Seal",
       "text": "Radius 2.5 → 3.5 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Rude Awakening",
       "text": "Waking hit +40% damage"
      },
      {
       "id": "b",
       "name": "Frozen Seal",
       "text": "Chill persists 3 s after waking"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Draw a circle in the air with the wand, push palm down toward the ground.",
    "vfx": "Blue-silver water seal ripples on ground, glyph ring, motes drift; sleep Z glyphs.",
    "sfx": "Deep water drop + ringing calm tone.",
    "hitReactionNote": "Sleep.",
    "deathStyle": "collapse"
   },
   "icon": "/art/icons/skills/stillwater-seal.webp",
   "iconRequest": null,
   "scenarios": [
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "frostweaver.moonfrost_tempest",
   "key": "moonfrost_tempest",
   "name": "Moonfrost Tempest",
   "owner": "frostweaver",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "aimed_ground",
   "cost": {
    "mp": 32
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 3,
    "recoveryS": 0.5,
    "cancelableAfterS": 3.3
   },
   "damage": {
    "percent": 60,
    "hits": 10,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "ground_circle",
    "range": 16,
    "radius": 5
   },
   "impact": "medium",
   "special": "root",
   "applies": [
    {
     "state": "chill",
     "chance": 1
    },
    {
     "state": "root",
     "chance": 1,
     "durationS": 2
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "A 3 s blizzard (10 × 60% cold in 5 m); everything inside is chilled, and the final gust freezes them (root 2 s).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Storm",
       "text": "Radius 5 → 6.5 m"
      },
      {
       "id": "b",
       "name": "Moving Storm",
       "text": "Follows the cursor slowly"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Moonlit Hail",
       "text": "Hail hits +50% vs frozen"
      },
      {
       "id": "b",
       "name": "White Out",
       "text": "Enemies inside deal −15% damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Raise the open tome overhead, pages whirl out into the sky, close it with a clap.",
    "vfx": "Silver-blue blizzard disc, moonlit hail, frost fog, freeze glaze at the end.",
    "sfx": "Howling wind loop, hail patter, final crystal crack.",
    "hitReactionNote": "Hail flinches; final gust freezes.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-frostweaver-moonfrost_tempest",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "frostweaver.shatterpoint",
   "key": "shatterpoint",
   "name": "Shatterpoint",
   "owner": "frostweaver",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 880,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "target",
    "range": 16
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Shatter a frozen (rooted) enemy for 880%; ice shards hit enemies within 4 m for 160% and chill. Requires a rooted target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Glass Rain",
       "text": "Shard radius 4 → 6 m"
      },
      {
       "id": "b",
       "name": "Deep Winter",
       "text": "Shards root 1 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Clean Break",
       "text": "+40% vs bosses"
      },
      {
       "id": "b",
       "name": "Mirror Shard",
       "text": "Shards seek 3 extra enemies"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Open the tome, a single page tears out and flies; snap the book shut.",
    "vfx": "Frost lattice spreads over the target then shatters into glass shards.",
    "sfx": "Page tear, rising crystalline whine, shatter.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-frostweaver-shatterpoint",
   "requires": {
    "state": "root",
    "text": "target is frozen (rooted)"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "lanternbinder.luminous_bolt",
   "key": "luminous_bolt",
   "name": "Luminous Bolt",
   "owner": "lanternbinder",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 5
   },
   "cooldownS": 2,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.14,
    "activeS": 0.06,
    "recoveryS": 0.16,
    "cancelableAfterS": 0.2
   },
   "damage": {
    "percent": 110,
    "hits": 1,
    "type": "fire",
    "element": "spirit_fire"
   },
   "shape": {
    "type": "projectile",
    "speed": 30,
    "range": 16,
    "count": 1
   },
   "impact": "light",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Neutral spirit bolt; each hit empowers your wisps (+5% damage, 3 s, stacks 5).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Lights",
       "text": "2 bolts"
      },
      {
       "id": "b",
       "name": "Wisp Call",
       "text": "15% chance to summon a wisp on hit"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Burning Light",
       "text": "Burn 25%"
      },
      {
       "id": "b",
       "name": "Guiding Light",
       "text": "Your summons focus the bolt target"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Scepter swung forward like a censer; lantern on off-hand pulses.",
    "vfx": "Amber spirit flame bolt with a tiny face-like flicker.",
    "sfx": "Soft flame whoosh + chime.",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "ash"
   },
   "icon": "/art/icons/skills/luminous-bolt.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "lanternbinder.ember_curse",
   "key": "ember_curse",
   "name": "Ember Curse",
   "owner": "lanternbinder",
   "kind": "debuff",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": false,
   "input": "aimed_ground",
   "cost": {
    "mp": 12
   },
   "cooldownS": 10,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.25,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.35
   },
   "damage": null,
   "shape": {
    "type": "ground_circle",
    "range": 14,
    "radius": 4
   },
   "impact": null,
   "special": null,
   "applies": [
    {
     "state": "burn",
     "chance": 0.3
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Curse enemies in 4 m for 8 s: they take +20% fire damage; burning cursed enemies spread burn to a nearby enemy on death.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Hex Field",
       "text": "Radius 4 → 5.5 m"
      },
      {
       "id": "b",
       "name": "Deep Curse",
       "text": "+20% → +30% fire damage taken"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wildfire",
       "text": "Death spread hits 3 enemies"
      },
      {
       "id": "b",
       "name": "Withering",
       "text": "Cursed enemies deal 10% less damage"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Scepter raised, lantern shaken; ash glyph thrown to the ground.",
    "vfx": "Smouldering ash circle with drifting embers; cursed enemies show ember sigils.",
    "sfx": "Whispered chant + crackle.",
    "hitReactionNote": "None (debuff).",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-lanternbinder-ember-curse.webp",
   "iconRequest": "ART-SKL-lanternbinder-ember_curse",
   "scope": "enemy",
   "scenarios": [
    "boss",
    "party",
    "arena"
   ]
  },
  {
   "id": "lanternbinder.summon_wisps",
   "key": "summon_wisps",
   "name": "Lantern Wisps",
   "owner": "lanternbinder",
   "kind": "summon",
   "role": "summon",
   "unlockLevel": 6,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 16
   },
   "cooldownS": 10,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.4
   },
   "damage": {
    "percent": 45,
    "hits": 1,
    "type": "fire",
    "element": "spirit_fire"
   },
   "shape": {
    "type": "summon",
    "count": 3,
    "max": 6,
    "durationS": 20
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Release 3 wisps (max 6) for 20 s; they seek enemies and burn them (45% per touch, 1/s).",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wisp Swarm",
       "text": "Max 6 → 9"
      },
      {
       "id": "b",
       "name": "Brighter Wisps",
       "text": "Wisp damage +40%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Kindled Swarm",
       "text": "Wisps apply burn 30%"
      },
      {
       "id": "b",
       "name": "Lingering Lights",
       "text": "Duration 20 → 30 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Open lantern door with scepter tip; wisps spill out; close door.",
    "vfx": "Three amber spirit wisps with trailing smoke, darting motion.",
    "sfx": "Lantern creak, whispering giggles, soft fire.",
    "hitReactionNote": "Flinch_light.",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-lanternbinder-summon-wisps.webp",
   "iconRequest": "ART-SKL-lanternbinder-summon_wisps",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss"
   ]
  },
  {
   "id": "lanternbinder.soul_tether",
   "key": "soul_tether",
   "name": "Soul Tether",
   "owner": "lanternbinder",
   "kind": "attack",
   "role": "drain",
   "unlockLevel": 10,
   "chainable": true,
   "input": "channel",
   "cost": {
    "mp": 14
   },
   "cooldownS": 8,
   "castTimeS": 2,
   "timing": {
    "windupS": 0.15,
    "activeS": 2,
    "recoveryS": 0.2,
    "cancelableAfterS": 2.15
   },
   "damage": {
    "percent": 40,
    "hits": 8,
    "type": "fire",
    "element": "spirit_fire"
   },
   "shape": {
    "type": "beam",
    "range": 10
   },
   "impact": "light",
   "special": "pull_small",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Channel a spirit tether 2 s: 8 ticks; heals you for 50% of damage; small monsters are dragged 3 m toward you.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Twin Tether",
       "text": "Tether 2 targets"
      },
      {
       "id": "b",
       "name": "Soul Feast",
       "text": "Heal 50% → 80%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Snap",
       "text": "Ending the tether early detonates for 150%"
      },
      {
       "id": "b",
       "name": "Binding Tether",
       "text": "Tethered target is rooted"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Scepter pointed, off-hand lantern pulled back like drawing a rope.",
    "vfx": "Rope of amber spirit-flame between scepter and target, motes flowing toward you.",
    "sfx": "Low drone with heartbeat pulses.",
    "hitReactionNote": "Pull + flinch_light ticks.",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-lanternbinder-soul-tether.webp",
   "iconRequest": "ART-SKL-lanternbinder-soul_tether",
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "lanternbinder.lamp_warden",
   "key": "lamp_warden",
   "name": "Lamp Warden",
   "owner": "lanternbinder",
   "kind": "summon",
   "role": "summon",
   "unlockLevel": 15,
   "chainable": false,
   "input": "aimed_ground",
   "cost": {
    "mp": 24
   },
   "cooldownS": 24,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 0.1,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 150,
    "hits": 1,
    "type": "fire",
    "element": "spirit_fire"
   },
   "shape": {
    "type": "summon",
    "count": 1,
    "max": 1,
    "durationS": 15
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Summon a hulking lantern-spirit guardian for 15 s: taunts nearby monsters and slams (150%) every 1.5 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Iron Lantern",
       "text": "Warden has +50% life and 20% damage reduction"
      },
      {
       "id": "b",
       "name": "Bright Slam",
       "text": "Slams knock down small"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Two Wardens",
       "text": "Max 2 (each 70% damage)"
      },
      {
       "id": "b",
       "name": "Last Light",
       "text": "On expiry explodes for 300%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Plant scepter, raise lantern high; a giant spirit forms from its light.",
    "vfx": "Three-metre amber spirit golem with lantern head; slams produce fire rings.",
    "sfx": "Deep bellowing hum, heavy slams, crackling fire.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": "/art/new/skill-icons/art-skl-lanternbinder-lamp-warden.webp",
   "iconRequest": "ART-SKL-lanternbinder-lamp_warden",
   "scope": "self",
   "scenarios": [
    "farm",
    "boss"
   ]
  },
  {
   "id": "lanternbinder.pyre_procession",
   "key": "pyre_procession",
   "name": "Pyre Procession",
   "owner": "lanternbinder",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 0.6,
    "recoveryS": 0.35,
    "cancelableAfterS": 1
   },
   "damage": {
    "percent": 280,
    "hits": 1,
    "type": "fire",
    "element": "spirit_fire"
   },
   "shape": {
    "type": "circle",
    "radius": 5
   },
   "impact": "massive",
   "special": "launch",
   "applies": [
    {
     "state": "burn",
     "chance": 1
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "All your wisps converge into a spiralling pyre; 280% +30% per wisp consumed, burns everything.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Grand Pyre",
       "text": "Radius 5 → 6.5 m"
      },
      {
       "id": "b",
       "name": "Rekindle",
       "text": "Re-summons 3 wisps afterwards"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Funeral Fire",
       "text": "Burn from this skill deals +60%"
      },
      {
       "id": "b",
       "name": "Procession",
       "text": "Pyre travels 6 m forward"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Lantern raised overhead with both hands, spin once, slam scepter down.",
    "vfx": "Wisps spiral into a tall amber fire tornado then burst outward; scorch decal ring.",
    "sfx": "Rising chorus of whispers into a roaring fire blast.",
    "hitReactionNote": "Launch small/medium.",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-lanternbinder-pyre-procession.webp",
   "iconRequest": "ART-SKL-lanternbinder-pyre_procession",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "lanternbinder.last_lantern",
   "key": "last_lantern",
   "name": "Last Lantern",
   "owner": "lanternbinder",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 780,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "target",
    "range": 16
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "All wisps and the Lamp Warden converge on a wounded enemy (below 30% life): 780% + 60% per summon. Requires a target below 30% life.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Kindled Return",
       "text": "Summons survive the dive"
      },
      {
       "id": "b",
       "name": "Brighter Pyre",
       "text": "+20% damage"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Soul Lamp",
       "text": "A kill grants 2 new wisps"
      },
      {
       "id": "b",
       "name": "Lantern Lull",
       "text": "Threshold 30% → 35%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hold the scepter lantern at arm’s length, open the door; summons stream into it, slam it toward the enemy.",
    "vfx": "Amber spirit streams, lantern flare, spirit-fire nova.",
    "sfx": "Lantern creak, rush of whispers, fire bloom.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "ash"
   },
   "icon": "/art/new/skill-icons/art-skl-lanternbinder-last-lantern.webp",
   "iconRequest": "ART-SKL-lanternbinder-last_lantern",
   "requires": {
    "state": "low_life",
    "text": "target is below 30% life"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ashwarden.censer_swing",
   "key": "censer_swing",
   "name": "Censer Swing",
   "owner": "ashwarden",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 6
   },
   "cooldownS": 3,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.32,
    "activeS": 0.12,
    "recoveryS": 0.34,
    "cancelableAfterS": 0.44
   },
   "damage": {
    "percent": 135,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "cone",
    "range": 3.6,
    "angleDeg": 150
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "burn",
     "chance": 0.3
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "A wide burning censer swing: 135% fire in a 150° arc, 30% burn.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Chain",
       "text": "+1 m reach"
      },
      {
       "id": "b",
       "name": "Ember Fall",
       "text": "Drops embers that burn for 2 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Holy Smoke",
       "text": "Enemies hit take +10% from Pyre Halo"
      },
      {
       "id": "b",
       "name": "Double Swing",
       "text": "Swings back for 60%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Chain let out, swing from the hip in a wide flat arc, reel it back.",
    "vfx": "Heavy ember-smoke ribbon, sparks shed along the arc.",
    "sfx": "Chain rattle, whoosh, bronze clank.",
    "hitReactionNote": "Medium flinch.",
    "deathStyle": "ash"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ashwarden-censer_swing",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ashwarden.pyre_halo",
   "key": "pyre_halo",
   "name": "Pyre Halo",
   "owner": "ashwarden",
   "kind": "aura",
   "role": "aura_damage",
   "unlockLevel": 3,
   "chainable": false,
   "input": "toggle",
   "cost": {
    "mp": 0,
    "reserve": "25% max mana"
   },
   "cooldownS": 2,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.3
   },
   "damage": {
    "percentPerSecond": 55,
    "hits": null,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "self_radius",
    "radius": 5
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Toggle an open burning aura (reserves 25% max mana): every enemy inside 5 m takes 55% fire per second and is burning while inside. Path-of-Exile-style: it never needs aiming.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Halo",
       "text": "Radius 5 → 6.5 m"
      },
      {
       "id": "b",
       "name": "Light Reserve",
       "text": "Reservation 25% → 18%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Searing Halo",
       "text": "Enemies inside take +10% fire damage"
      },
      {
       "id": "b",
       "name": "Ember Feast",
       "text": "Kills inside restore 2% mana"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Open the censer lid with a flick; it swings once around the body and settles.",
    "vfx": "Low ring of ember smoke and drifting sparks on the ground around the player, heat shimmer.",
    "sfx": "Soft ignition, constant low crackle loop.",
    "hitReactionNote": "No reaction; burning flicker on enemies.",
    "deathStyle": "ash"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ashwarden-pyre_halo",
   "scope": "enemy",
   "proposed": true,
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "ashwarden.thurible_flare",
   "key": "thurible_flare",
   "name": "Thurible Flare",
   "owner": "ashwarden",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 14
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.36,
    "activeS": 0.12,
    "recoveryS": 0.4,
    "cancelableAfterS": 0.48
   },
   "damage": {
    "percent": 240,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "self_circle",
    "radius": 3.5
   },
   "impact": "heavy",
   "special": "stun",
   "applies": [
    {
     "state": "stun",
     "chance": 1,
     "durationS": 1
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Slam the censer down: 240% fire in 3.5 m, stun 1 s; enemies inside Pyre Halo take +50%.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Flare",
       "text": "Radius 3.5 → 4.5 m"
      },
      {
       "id": "b",
       "name": "Long Stun",
       "text": "Stun 1 → 1.5 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ash Cloud",
       "text": "Leaves a blinding cloud 3 s"
      },
      {
       "id": "b",
       "name": "Halo Surge",
       "text": "Pyre Halo damage doubled for 3 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Swing the censer high over the head and slam it to the ground.",
    "vfx": "Fire dome bursts from the impact, smoke ring, stun stars.",
    "sfx": "Bronze crash, fire boom, ringing.",
    "hitReactionNote": "Heavy: stun.",
    "deathStyle": "charred"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ashwarden-thurible_flare",
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ashwarden.ashen_stride",
   "key": "ashen_stride",
   "name": "Ashen Stride",
   "owner": "ashwarden",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 10
   },
   "cooldownS": 7,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.3,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.42
   },
   "damage": {
    "percent": 90,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "dash",
    "range": 7
   },
   "impact": "light",
   "special": null,
   "applies": [
    {
     "state": "burn",
     "chance": 1
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Stride 7 m through smoke; enemies passed take 90% fire and burn; leaves an ash trail that burns 3 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Longer Stride",
       "text": "Range 7 → 9 m"
      },
      {
       "id": "b",
       "name": "Smoke Veil",
       "text": "+20% evasion for 3 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Two Strides",
       "text": "2 charges"
      },
      {
       "id": "b",
       "name": "Hot Ash",
       "text": "Trail damage +60%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Lean forward, the censer trails behind on its chain, quick gliding steps.",
    "vfx": "Grey smoke stream with ember flecks, ash footprints.",
    "sfx": "Whoosh, chain jingle, sizzle.",
    "hitReactionNote": "Light flinch.",
    "deathStyle": "ash"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ashwarden-ashen_stride",
   "proposed": true,
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "ashwarden.incense_of_valor",
   "key": "incense_of_valor",
   "name": "Incense of Valor",
   "owner": "ashwarden",
   "kind": "aura",
   "role": "aura_buff",
   "unlockLevel": 15,
   "chainable": false,
   "input": "toggle",
   "cost": {
    "mp": 0,
    "reserve": "20% max mana"
   },
   "cooldownS": 2,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.2,
    "activeS": 0.1,
    "recoveryS": 0.1,
    "cancelableAfterS": 0.3
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 10
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Toggle a team aura (reserves 20% max mana): you and allies within 10 m deal +10% damage and regenerate 0.8% life per second.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Wide Incense",
       "text": "Radius 10 → 14 m"
      },
      {
       "id": "b",
       "name": "Sweet Smoke",
       "text": "Reservation 20% → 14%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Valiant Smoke",
       "text": "+5% attack and cast speed"
      },
      {
       "id": "b",
       "name": "Martyr’s Smoke",
       "text": "+10% damage reduction for allies below 40% life"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Hold the censer up and let it turn slowly; fragrant smoke spills.",
    "vfx": "Golden incense smoke drifting in a wide ring, small motes rising over allies.",
    "sfx": "Soft chime, gentle hush of smoke.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ashwarden-incense_of_valor",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "ashwarden.smouldering_rite",
   "key": "smouldering_rite",
   "name": "Smouldering Rite",
   "owner": "ashwarden",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 16,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 2,
    "recoveryS": 0.5,
    "cancelableAfterS": 2.3
   },
   "damage": {
    "percent": 420,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "self_circle",
    "radius": 7
   },
   "impact": "massive",
   "special": "launch",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Whirl the censer overhead for 2 s: Pyre Halo radius ×2 and damage +100% during the whirl, then a final blast of 420% in 7 m that launches.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Rite",
       "text": "Whirl 2 → 3 s"
      },
      {
       "id": "b",
       "name": "Unmoving",
       "text": "Superarmour during the whirl"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Ash Rain",
       "text": "Final blast leaves burning ground 4 s"
      },
      {
       "id": "b",
       "name": "Holy Blaze",
       "text": "Allies inside heal 8%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Feet planted, the censer whirls overhead faster and faster, then is brought down into the ground.",
    "vfx": "Expanding cyclone of ember smoke, halo ring doubles, final pillar of fire and ash.",
    "sfx": "Rising chain whirr, roaring fire, deep crash.",
    "hitReactionNote": "Final blast launches small/medium; boss break 40.",
    "deathStyle": "launched"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ashwarden-smouldering_rite",
   "proposed": true,
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "ashwarden.last_rites",
   "key": "last_rites",
   "name": "Last Rites",
   "owner": "ashwarden",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.6,
    "recoveryS": 0.5,
    "cancelableAfterS": 0.9
   },
   "damage": {
    "percent": 820,
    "hits": 1,
    "type": "fire",
    "element": "fire"
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Swing the censer around a stunned enemy three times and crush it: 820%; Pyre Halo damage +50% for 6 s. Requires a stunned target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Thurible Echo",
       "text": "A fourth swing at 100%"
      },
      {
       "id": "b",
       "name": "Smoke Pall",
       "text": "Enemies within 5 m are blinded 2 s"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Pyre Blessing",
       "text": "Allies in Incense of Valor heal 5%"
      },
      {
       "id": "b",
       "name": "Grave Ember",
       "text": "Leaves burning ground 4 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Three accelerating chain swings around the body, then an overhead crush.",
    "vfx": "Ring of ember smoke tightening, final pillar of ash and sparks.",
    "sfx": "Chain whirr rising, bronze crash, smouldering rumble.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "ash"
   },
   "icon": null,
   "iconRequest": "ART-SKL-ashwarden-last_rites",
   "requires": {
    "state": "stun",
    "text": "target is stunned"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "oathkeeper.reed_sweep",
   "key": "reed_sweep",
   "name": "Reed Sweep",
   "owner": "oathkeeper",
   "kind": "attack",
   "role": "chain",
   "unlockLevel": 1,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 6
   },
   "cooldownS": 3,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.24,
    "activeS": 0.12,
    "recoveryS": 0.28,
    "cancelableAfterS": 0.36
   },
   "damage": {
    "percent": 120,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "cone",
    "range": 3.2,
    "angleDeg": 150
   },
   "impact": "medium",
   "special": "knockdown_small",
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike in a 150° arc in front (3.2 m): 120% physical, medium impact. Knocks down small monsters.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Long Reed",
       "text": "+1 m range"
      },
      {
       "id": "b",
       "name": "Harvest Sweep",
       "text": "+40% damage vs knocked down (Reed Harvest synergy)"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Frost Reed",
       "text": "Chill 30%"
      },
      {
       "id": "b",
       "name": "Second Sweep",
       "text": "Sweeps back for 70%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Low wide sweep at ankle height across 150°, back foot pivot; glaive returns to high guard.",
    "vfx": "Broad pale-moon crescent ribbon at ground level, reed-like grass ripple.",
    "sfx": "Long polearm whoosh, cold chime on hit.",
    "hitReactionNote": "Knockdown small; flinch_heavy medium.",
    "deathStyle": "collapse"
   },
   "icon": "/art/icons/skills/reed-sweep.webp",
   "iconRequest": null,
   "scenarios": [
    "farm",
    "boss",
    "party",
    "duel",
    "arena"
   ]
  },
  {
   "id": "oathkeeper.moon_crescent",
   "key": "moon_crescent",
   "name": "Moon Crescent",
   "owner": "oathkeeper",
   "kind": "attack",
   "role": "aoe",
   "unlockLevel": 3,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 6,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.26,
    "activeS": 0.1,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.36
   },
   "damage": {
    "percent": 130,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "projectile_wave",
    "speed": 22,
    "range": 12,
    "width": 3.4,
    "pierce": "all"
   },
   "impact": "medium",
   "special": null,
   "applies": [
    {
     "state": "chill",
     "chance": 0.5
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike with a wave that travels 12 m and pierces every enemy: 130% cold, medium impact. 50% chance to inflict Chill.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Full Moon",
       "text": "Wave width 3.4 → 4.6 m"
      },
      {
       "id": "b",
       "name": "Twin Moons",
       "text": "Two waves at ±15°"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Moonlit Shatter",
       "text": "+50% vs chilled"
      },
      {
       "id": "b",
       "name": "Tidal Moon",
       "text": "Wave pushes small enemies 2 m"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Vertical rising spin of the glaive releasing a crescent of frost from the blade.",
    "vfx": "Pale blue-white crescent wave with frost mist and ice glints.",
    "sfx": "Cold whoosh, crystalline ring, frosty impacts.",
    "hitReactionNote": "Flinch_heavy; chill.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-oathkeeper-moon_crescent",
   "scenarios": [
    "farm",
    "party"
   ]
  },
  {
   "id": "oathkeeper.bracepoint",
   "key": "bracepoint",
   "name": "Bracepoint",
   "owner": "oathkeeper",
   "kind": "attack",
   "role": "burst",
   "unlockLevel": 6,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 5,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.22,
    "activeS": 0.1,
    "recoveryS": 0.24,
    "cancelableAfterS": 0.32
   },
   "damage": {
    "percent": 165,
    "hits": 1,
    "type": "physical",
    "element": null
   },
   "shape": {
    "type": "line",
    "length": 4.2,
    "width": 1
   },
   "impact": "heavy",
   "special": null,
   "applies": [],
   "payoff": {
    "vs": "knockdown",
    "bonus": "+40% damage and refunds 2 s of Reed Sweep cooldown"
   },
   "followUp": null,
   "effect": "Strike along a 4.2 m line: 165% physical, heavy impact. +40% damage and refunds 2 s of Reed Sweep cooldown against knocked-down targets.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Impale",
       "text": "Pierce: hits everything in the line"
      },
      {
       "id": "b",
       "name": "Brace",
       "text": "+25% stagger build-up vs charging monsters"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Frost Point",
       "text": "Applies chill 60%"
      },
      {
       "id": "b",
       "name": "Lunge",
       "text": "Steps forward 2 m before the thrust"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Drop weight, both hands at the haft end, explosive straight thrust; hold 3 frames; retract.",
    "vfx": "Sharp linear frost glint, small pierce burst.",
    "sfx": "Thrust whoosh + piercing ring.",
    "hitReactionNote": "Stagger.",
    "deathStyle": "sliced"
   },
   "icon": "/art/icons/skills/bracepoint.webp",
   "iconRequest": null,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  },
  {
   "id": "oathkeeper.tidewalk",
   "key": "tidewalk",
   "name": "Tidewalk",
   "owner": "oathkeeper",
   "kind": "mobility",
   "role": "gapcloser",
   "unlockLevel": 10,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 12
   },
   "cooldownS": 8,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.12,
    "activeS": 0.35,
    "recoveryS": 0.2,
    "cancelableAfterS": 0.47
   },
   "damage": {
    "percent": 110,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "dash_line",
    "length": 6,
    "width": 2.2
   },
   "impact": "medium",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Strike dashing 6 m forward through enemies: 110% cold, medium impact.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Riptide",
       "text": "Pulls enemies along the path to the endpoint"
      },
      {
       "id": "b",
       "name": "Ebb",
       "text": "Recast to dash back"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Frozen Wake",
       "text": "Leaves a 3 s frost trail (slow 30%)"
      },
      {
       "id": "b",
       "name": "Undertow",
       "text": "Cooldown −2 s"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Glaive held low-trailing, gliding dash with a sweeping cut through the path, skid to stop.",
    "vfx": "Rippling water-frost trail, crescent cut.",
    "sfx": "Rushing water whoosh, cold cut.",
    "hitReactionNote": "Flinch_heavy.",
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-oathkeeper-tidewalk",
   "scenarios": [
    "farm",
    "duel",
    "arena"
   ]
  },
  {
   "id": "oathkeeper.oath_challenge",
   "key": "oath_challenge",
   "name": "Oath Challenge",
   "owner": "oathkeeper",
   "kind": "buff",
   "role": "taunt",
   "unlockLevel": 15,
   "chainable": false,
   "input": "tap",
   "cost": {
    "mp": 16
   },
   "cooldownS": 14,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.1,
    "recoveryS": 0.3,
    "cancelableAfterS": 0.4
   },
   "damage": null,
   "shape": {
    "type": "self_radius",
    "radius": 8
   },
   "impact": null,
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Taunt enemies within 8 m for 4 s; you and allies within 10 m gain a barrier of 12% max life for 6 s.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Loud Oath",
       "text": "Taunt radius 8 → 11 m"
      },
      {
       "id": "b",
       "name": "Bulwark Vow",
       "text": "Barrier 12% → 16%"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Shared Oath",
       "text": "You take 20% of damage dealt to allies, they take 20% less"
      },
      {
       "id": "b",
       "name": "Moon Guard",
       "text": "Enemies taunted are chilled"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Slam the glaive butt into the ground, raise the other fist, shout the vow.",
    "vfx": "Pale moon glyph ring on the ground, barrier shimmer over allies, taunt marks over enemies.",
    "sfx": "Wooden haft thud, shouted vow, glassy barrier hum.",
    "hitReactionNote": null,
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-oathkeeper-oath_challenge",
   "scope": "team",
   "proposed": true,
   "scenarios": [
    "party",
    "arena",
    "boss"
   ]
  },
  {
   "id": "oathkeeper.falling_moon",
   "key": "falling_moon",
   "name": "Falling Moon",
   "owner": "oathkeeper",
   "kind": "attack",
   "role": "signature",
   "unlockLevel": 20,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 30
   },
   "cooldownS": 15,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.4,
    "activeS": 0.4,
    "recoveryS": 0.45,
    "cancelableAfterS": 0.8
   },
   "damage": {
    "percent": 310,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "leap_circle",
    "leap": 5,
    "radius": 4.5
   },
   "impact": "massive",
   "special": "launch",
   "applies": [
    {
     "state": "chill",
     "chance": 1
    }
   ],
   "payoff": null,
   "followUp": null,
   "effect": "Strike leaping 5 m and crashing down in 4.5 m: 310% cold, massive impact. Launches enemies. Inflicts Chill.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Lunar Eclipse",
       "text": "Crater persists 3 s chilling and dealing 40%/s"
      },
      {
       "id": "b",
       "name": "Twin Moons",
       "text": "A second smaller crescent lands 0.5 s later"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Moonlit Leap",
       "text": "Leap 5 → 8 m and Superarmour"
      },
      {
       "id": "b",
       "name": "Shattering Moon",
       "text": "+60% vs chilled; kills shatter"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Leap high, glaive drawn back over head in a full arc, falling downward cleave, kneel on impact.",
    "vfx": "Moon disc briefly visible behind the leap; impact forms a frozen crescent crater, ice spikes, frost mist.",
    "sfx": "Ethereal rising tone, massive cold impact with shatter layer.",
    "hitReactionNote": "Launch small/medium.",
    "deathStyle": "shatter"
   },
   "icon": null,
   "iconRequest": "ART-SKL-oathkeeper-falling_moon",
   "scenarios": [
    "farm",
    "boss",
    "party"
   ]
  },
  {
   "id": "oathkeeper.oathfall",
   "key": "oathfall",
   "name": "Oathfall",
   "owner": "oathkeeper",
   "kind": "attack",
   "role": "finisher",
   "unlockLevel": 27,
   "chainable": true,
   "input": "tap",
   "cost": {
    "mp": 28
   },
   "cooldownS": 20,
   "castTimeS": 0,
   "timing": {
    "windupS": 0.3,
    "activeS": 0.2,
    "recoveryS": 0.55,
    "cancelableAfterS": 0.5
   },
   "damage": {
    "percent": 820,
    "hits": 1,
    "type": "cold",
    "element": "cold"
   },
   "shape": {
    "type": "target",
    "range": 3.5
   },
   "impact": "massive",
   "special": null,
   "applies": [],
   "payoff": null,
   "followUp": null,
   "effect": "Drive the glaive through a downed enemy: 820%; you and allies within 8 m gain a 12% barrier. Requires a knocked-down target.",
   "ranks": [
    {
     "rank": 1,
     "text": "Learn (1 pick)."
    },
    {
     "rank": 2,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Moon Pin",
       "text": "Pins the target 1.5 s"
      },
      {
       "id": "b",
       "name": "Wide Oath",
       "text": "Barrier range 8 → 12 m"
      }
     ]
    },
    {
     "rank": 3,
     "text": "+18% damage/effect. Choose one facet.",
     "facets": [
      {
       "id": "a",
       "name": "Cold Vow",
       "text": "Chills enemies within 4 m"
      },
      {
       "id": "b",
       "name": "Unbroken Oath",
       "text": "Barrier 12% → 18%"
      }
     ]
    }
   ],
   "presentation": {
    "anim": "Spin the glaive overhead once, step in and drive the blade down two-handed.",
    "vfx": "Pale moon arc, frost glyph circle, barrier shimmer on allies.",
    "sfx": "Polearm whirl, heavy stab, ice crack, low vow chant.",
    "hitReactionNote": "Massive: launch or blown back on small/medium, boss break 60.",
    "deathStyle": "collapse"
   },
   "icon": null,
   "iconRequest": "ART-SKL-oathkeeper-oathfall",
   "requires": {
    "state": "knockdown",
    "text": "target is knocked down"
   },
   "proposed": true,
   "scenarios": [
    "boss",
    "duel",
    "arena"
   ]
  }
 ],
 "finisherRule": "A finisher (role \"finisher\") needs its requires.state on the target. In the Mouse1 chain it is checked before every step: if the condition holds and it is ready it fires on that step, otherwise it is skipped. Pressed manually without the condition it shows \"No opening\" and does not go on cooldown."
}
