// Package persona provides species-agnostic character description primitives.
//
// This package defines canonical DNA types for character generation systems,
// supporting both humans and humanoids with biological DNA, psychology, and
// validation logic.
//
// # Architecture
//
// The package is organized into several layers:
//
//   - Core Types: Character, DNA, IdentityDNA, FaceDNA, BodyDNA, VoiceDNA
//   - Species System: Human, Humanoid, Android with MorphLevel progression
//   - Psychology: HEXACOProfile, AttachmentStyle, Values
//   - Validation: Species-aware plausibility and consistency checks
//   - Pools: YAML-loaded description pools for prose generation
//
// # Usage
//
//	character := &persona.Character{
//	    ID:      "char_001",
//	    Species: persona.SpeciesHuman,
//	    DNA: &persona.DNA{
//	        Identity: persona.IdentityDNA{
//	            Ethnicity: persona.EthnicityEastAsian,
//	            Age:       28,
//	            Gender:    persona.GenderWoman,
//	        },
//	        Face: persona.FaceDNA{
//	            FaceShape: persona.FaceShapeOval,
//	            EyeShape:  persona.EyeShapeAlmond,
//	            // ...
//	        },
//	    },
//	}
//
//	// Validate the character
//	if err := persona.Validate(character); err != nil {
//	    log.Printf("validation failed: %v", err)
//	}
//
// # Species System
//
// The Species field determines which validation rules apply:
//
//   - Human: Ethnicity plausibility checks (eye color, hair, skin tone)
//   - Humanoid: Morphology validation (ears, tail, fangs require MorphLevel >= 25)
//   - Android: Minimal validation (synthetic beings)
//
// # MorphLevel
//
// For humanoid characters, MorphLevel (0-100) controls transformation intensity:
//
//   - 0-24:  Human appearance with supernatural energy
//   - 25-49: Subtle features (pointed ears, fangs)
//   - 50-74: Demi-human (anime-style ears/tail)
//   - 75-99: Hybrid (fur patterns, scales)
//   - 100:   Full creature form
//
// # Design Principles
//
//   - Category enums (not strings) for type safety
//   - Separate struct for each DNA domain
//   - All fields have json/yaml tags for serialization
//   - Validation is opt-in per species
//   - Pools are YAML-loaded at init() for flexibility
package persona
