[
  {
    "id": "canidae",
    "name": "Canidae",
    "kind": "predator",
    "ability_mods": { "CON": 1, "WIS": 1 },
    "languages": ["common", "canid"],
    "traits": [
      { "id": "pack_instinct",         "name": "Pack Instinct",         "description": "Reaction: when an ally within 10 ft. is attacked, grant them +2 AC against that attack. Uses equal to proficiency bonus per long rest." },
      { "id": "superior_scent",        "name": "Superior Scent",        "description": "Advantage on Perception checks that rely on smell. Detects emotional states (fear, anger, deception) within 30 ft. — interpretation requires WIS check." },
      { "id": "subsonic_communication","name": "Subsonic Communication","description": "Communicate simple messages (danger, regroup, follow, stop) to other Canidae within 60 ft. silently." }
    ],
    "detriments": [
      { "id": "pack_dependent",        "name": "Pack-Dependent",        "description": "When no allied creature is within 30 ft., disadvantage on WIS saves against fear and charm." },
      { "id": "scent_overload",        "name": "Scent Overload",        "description": "In environments with overwhelming or chemically altered smells, all Perception checks suffer disadvantage." }
    ]
  },
  {
    "id": "felidae",
    "name": "Felidae",
    "kind": "predator",
    "ability_mods": { "DEX": 1, "CHA": 1 },
    "languages": ["common", "felid"],
    "traits": [
      { "id": "retractable_claws",     "name": "Retractable Claws",     "description": "Unarmed claw attacks deal 1d6 + DEX slashing. Claws extend or retract at will, allowing full manual dexterity when sheathed." },
      { "id": "darkvision",            "name": "Darkvision",            "description": "See in dim light within 60 ft. as if bright; in darkness as if dim (greyscale only)." },
      { "id": "feline_grace",          "name": "Feline Grace",          "description": "Half damage from falls of 30 ft. or less (none from 10 ft. or less). Advantage on Acrobatics checks to maintain balance." },
      { "id": "tail_speak",            "name": "Tail-Speak",            "description": "Communicate complex emotional and tactical info silently to any creature that speaks Felid, visible up to 60 ft." }
    ],
    "detriments": [
      { "id": "solitary_instinct",     "name": "Solitary Instinct",     "description": "Cannot benefit from the Help action unless the helper is a Felidae or a bonded creature." },
      { "id": "prides_cost",           "name": "Pride's Cost",          "description": "Failing a check or save by 5 or more in front of witnesses imposes disadvantage on the next CHA check." }
    ]
  },
  {
    "id": "mustelidae",
    "name": "Mustelidae",
    "kind": "predator",
    "ability_mods": { "DEX": 1, "INT": 1 },
    "languages": ["common", "mustelid"],
    "traits": [
      { "id": "sinuous_frame",         "name": "Sinuous Frame",         "description": "Squeeze through openings sized for one size category smaller without penalty. Advantage on checks to escape grapples and restraints." },
      { "id": "burning_metabolism",    "name": "Burning Metabolism",    "description": "Advantage on saves vs. cold and exhaustion. Requires double rations to function (see equipment costs)." },
      { "id": "ferocity",              "name": "Ferocity",              "description": "When reduced below half HP, deal +1 damage on melee attacks until end of next turn. Triggers once per long rest." }
    ],
    "detriments": [
      { "id": "high_metabolism",       "name": "High Metabolism",       "description": "Requires double rations daily. Without enough food, gain a level of exhaustion every 12 hours instead of 24." },
      { "id": "scent_marker",          "name": "Scent Marker",          "description": "Mustelid musk is unmistakable and difficult to mask. Disadvantage on Stealth checks against creatures with scent abilities unless you have a deep-cover scent-mask active." }
    ]
  },
  {
    "id": "ursidae",
    "name": "Ursidae",
    "kind": "predator",
    "ability_mods": { "DEX": -1, "CON": 2 },
    "languages": ["common", "ursid"],
    "traits": [
      { "id": "powerful_build",        "name": "Powerful Build",        "description": "Counts as one size larger for carrying capacity and grappling. Push, drag, or lift weight is doubled." },
      { "id": "thick_hide",            "name": "Thick Hide",            "description": "Natural AC = 11 + DEX when unarmored. Resistance to non-magical bludgeoning damage." },
      { "id": "bone_crushing_jaws",    "name": "Bone-Crushing Jaws",    "description": "Unarmed bite deals 1d10 + STR piercing. On a critical hit, target makes a STR save (DC = 8 + prof + STR) or is knocked prone." }
    ],
    "detriments": [
      { "id": "lumbering",             "name": "Lumbering",             "description": "Disadvantage on DEX (Stealth) checks. Disadvantage on DEX saves to avoid area effects." },
      { "id": "heat_intolerance",      "name": "Heat Intolerance",      "description": "In temperatures above 80°F, CON save (DC 12) every 2 hours of activity or gain a level of exhaustion." }
    ]
  },
  {
    "id": "cervidae",
    "name": "Cervidae",
    "kind": "prey",
    "ability_mods": { "DEX": 1, "WIS": 1 },
    "languages": ["common", "cervid"],
    "traits": [
      { "id": "fleet_footed",          "name": "Fleet-Footed",          "description": "Base movement speed +5 ft. When you Dash, no opportunity attacks against you for that turn." },
      { "id": "antlers",               "name": "Antlers",               "description": "(Antlered species only.) Natural antler attack deals 1d6 + STR piercing. Antlers shed annually; cosmetic only when shed, attack still functional." },
      { "id": "wide_field_of_view",    "name": "Wide Field of View",    "description": "Cannot be flanked by fewer than three attackers. Advantage on Perception checks to detect movement at the periphery of vision." }
    ],
    "detriments": [
      { "id": "flight_response",       "name": "Flight Response",       "description": "When suddenly threatened (surprise attack, sudden loud sound), WIS save (DC 12) or compelled to move at full speed away from the threat for one turn." },
      { "id": "delicate_frame",        "name": "Delicate Frame",        "description": "Hit point maximum reduced by 1 per level (minimum 1 HP per level)." }
    ]
  },
  {
    "id": "bovidae",
    "name": "Bovidae",
    "kind": "prey",
    "ability_mods": { "STR": 1, "CON": 1 },
    "languages": ["common", "bovid"],
    "traits": [
      { "id": "horns",                 "name": "Horns",                 "description": "Natural horn attack deals 1d8 + STR bludgeoning or piercing (shape varies by species). Horns are permanent and grow throughout life." },
      { "id": "herd_wall",             "name": "Herd Wall",             "description": "Adjacent to one ally: +1 AC. Adjacent to three or more: +2 AC. Stacks with other adjacency bonuses up to a maximum of +3 from all sources." },
      { "id": "unshakeable",           "name": "Unshakeable",           "description": "Advantage on saves against being frightened, charmed, or compelled to move from your position." }
    ],
    "detriments": [
      { "id": "ponderous_gait",        "name": "Ponderous Gait",        "description": "Base movement speed is 25 ft. Disadvantage on DEX saves against effects that require quick repositioning." },
      { "id": "stubborn",              "name": "Stubborn",              "description": "Disadvantage on WIS saves against effects that exploit refusal to change course (feints, misdirections, lures)." }
    ]
  },
  {
    "id": "leporidae",
    "name": "Leporidae",
    "kind": "prey",
    "ability_mods": { "STR": -1, "DEX": 2 },
    "languages": ["common", "leporid"],
    "traits": [
      { "id": "leaping_strides",       "name": "Leaping Strides",       "description": "Long jump distance equal to your speed without a running start. High jump distance equal to half your speed without a running start." },
      { "id": "burrow_savvy",          "name": "Burrow Savvy",          "description": "Proficiency in Survival in underground or warren environments. Advantage on Perception checks underground." },
      { "id": "twitch_reflexes",       "name": "Twitch Reflexes",       "description": "Advantage on initiative rolls. Reaction: when targeted by a ranged attack you can see, impose disadvantage on that attack roll. Uses equal to proficiency bonus per long rest." }
    ],
    "detriments": [
      { "id": "fragile_body",          "name": "Fragile Body",          "description": "Hit point maximum reduced by 1 per level (minimum 1 HP per level). Disadvantage on STR saves against effects that would knock you prone." },
      { "id": "constant_vigilance",    "name": "Constant Vigilance",    "description": "When in a new environment for less than 1 hour, you cannot benefit from a short rest — your nervous system refuses to settle." }
    ]
  }
]
