{
  "name": "Cadra",
  "version": "0.2.0",
  "author": "Christophe Martin",
  "publisher": "Eugene Studio",
  "tagline": "Une typographie pour le storyboard agentique : 60 glyphes pour transformer les intentions de mise en scène en instructions visuelles, lisibles par les humains et les agents IA.",
  "license": "OFL-1.1",
  "icons": [
    {
      "id": "lock-off",
      "label": "Lock-off",
      "description": "Caméra fixe, axe stable.",
      "codepoint": "U+E001",
      "css_class": "cadra-lock-off",
      "svg": "svg/cadra-lock-off.svg",
      "agent_aliases": [
        "lock off",
        "lock-off"
      ]
    },
    {
      "id": "pan-left",
      "label": "Pan gauche",
      "description": "Rotation horizontale vers la gauche.",
      "codepoint": "U+E002",
      "css_class": "cadra-pan-left",
      "svg": "svg/cadra-pan-left.svg",
      "agent_aliases": [
        "pan left",
        "pan gauche"
      ]
    },
    {
      "id": "pan-right",
      "label": "Pan droite",
      "description": "Rotation horizontale vers la droite.",
      "codepoint": "U+E003",
      "css_class": "cadra-pan-right",
      "svg": "svg/cadra-pan-right.svg",
      "agent_aliases": [
        "pan right",
        "pan droite"
      ]
    },
    {
      "id": "tilt-up",
      "label": "Tilt haut",
      "description": "Rotation verticale vers le haut.",
      "codepoint": "U+E004",
      "css_class": "cadra-tilt-up",
      "svg": "svg/cadra-tilt-up.svg",
      "agent_aliases": [
        "tilt up",
        "tilt haut"
      ]
    },
    {
      "id": "tilt-down",
      "label": "Tilt bas",
      "description": "Rotation verticale vers le bas.",
      "codepoint": "U+E005",
      "css_class": "cadra-tilt-down",
      "svg": "svg/cadra-tilt-down.svg",
      "agent_aliases": [
        "tilt down",
        "tilt bas"
      ]
    },
    {
      "id": "roll",
      "label": "Roll",
      "description": "Rotation de l’axe autour de l’objectif.",
      "codepoint": "U+E006",
      "css_class": "cadra-roll",
      "svg": "svg/cadra-roll.svg",
      "agent_aliases": [
        "roll",
        "roll"
      ]
    },
    {
      "id": "dolly-in",
      "label": "Dolly in",
      "description": "La caméra avance vers le sujet.",
      "codepoint": "U+E007",
      "css_class": "cadra-dolly-in",
      "svg": "svg/cadra-dolly-in.svg",
      "agent_aliases": [
        "dolly in",
        "dolly in"
      ]
    },
    {
      "id": "dolly-out",
      "label": "Dolly out",
      "description": "La caméra recule et révèle le contexte.",
      "codepoint": "U+E008",
      "css_class": "cadra-dolly-out",
      "svg": "svg/cadra-dolly-out.svg",
      "agent_aliases": [
        "dolly out",
        "dolly out"
      ]
    },
    {
      "id": "truck-left",
      "label": "Travelling gauche",
      "description": "La caméra se déplace latéralement à gauche.",
      "codepoint": "U+E009",
      "css_class": "cadra-truck-left",
      "svg": "svg/cadra-truck-left.svg",
      "agent_aliases": [
        "truck left",
        "travelling gauche"
      ]
    },
    {
      "id": "truck-right",
      "label": "Travelling droite",
      "description": "La caméra se déplace latéralement à droite.",
      "codepoint": "U+E00A",
      "css_class": "cadra-truck-right",
      "svg": "svg/cadra-truck-right.svg",
      "agent_aliases": [
        "truck right",
        "travelling droite"
      ]
    },
    {
      "id": "orbit",
      "label": "Orbit",
      "description": "La caméra décrit un cercle autour du sujet.",
      "codepoint": "U+E00B",
      "css_class": "cadra-orbit",
      "svg": "svg/cadra-orbit.svg",
      "agent_aliases": [
        "orbit",
        "orbit"
      ]
    },
    {
      "id": "crane-up",
      "label": "Crane up",
      "description": "La caméra monte dans l’espace.",
      "codepoint": "U+E00C",
      "css_class": "cadra-crane-up",
      "svg": "svg/cadra-crane-up.svg",
      "agent_aliases": [
        "crane up",
        "crane up"
      ]
    },
    {
      "id": "crane-down",
      "label": "Crane down",
      "description": "La caméra descend dans l’espace.",
      "codepoint": "U+E00D",
      "css_class": "cadra-crane-down",
      "svg": "svg/cadra-crane-down.svg",
      "agent_aliases": [
        "crane down",
        "crane down"
      ]
    },
    {
      "id": "pedestal-up",
      "label": "Pedestal up",
      "description": "La caméra monte sans incliner l’objectif.",
      "codepoint": "U+E00E",
      "css_class": "cadra-pedestal-up",
      "svg": "svg/cadra-pedestal-up.svg",
      "agent_aliases": [
        "pedestal up",
        "pedestal up"
      ]
    },
    {
      "id": "pedestal-down",
      "label": "Pedestal down",
      "description": "La caméra descend sans incliner l’objectif.",
      "codepoint": "U+E00F",
      "css_class": "cadra-pedestal-down",
      "svg": "svg/cadra-pedestal-down.svg",
      "agent_aliases": [
        "pedestal down",
        "pedestal down"
      ]
    },
    {
      "id": "tracking-follow",
      "label": "Tracking follow",
      "description": "La caméra accompagne le déplacement du sujet.",
      "codepoint": "U+E010",
      "css_class": "cadra-tracking-follow",
      "svg": "svg/cadra-tracking-follow.svg",
      "agent_aliases": [
        "tracking follow",
        "tracking follow"
      ]
    },
    {
      "id": "handheld",
      "label": "Handheld",
      "description": "Instabilité contrôlée, énergie physique.",
      "codepoint": "U+E011",
      "css_class": "cadra-handheld",
      "svg": "svg/cadra-handheld.svg",
      "agent_aliases": [
        "handheld",
        "handheld"
      ]
    },
    {
      "id": "snorricam",
      "label": "SnorriCam",
      "description": "Le visage reste ancré tandis que le décor bouge.",
      "codepoint": "U+E012",
      "css_class": "cadra-snorricam",
      "svg": "svg/cadra-snorricam.svg",
      "agent_aliases": [
        "snorricam",
        "snorricam"
      ]
    },
    {
      "id": "zoom-in",
      "label": "Zoom in",
      "description": "La focale se resserre sans déplacer la caméra.",
      "codepoint": "U+E013",
      "css_class": "cadra-zoom-in",
      "svg": "svg/cadra-zoom-in.svg",
      "agent_aliases": [
        "zoom in",
        "zoom in"
      ]
    },
    {
      "id": "zoom-out",
      "label": "Zoom out",
      "description": "La focale s’ouvre sans déplacer la caméra.",
      "codepoint": "U+E014",
      "css_class": "cadra-zoom-out",
      "svg": "svg/cadra-zoom-out.svg",
      "agent_aliases": [
        "zoom out",
        "zoom out"
      ]
    },
    {
      "id": "rack-focus",
      "label": "Rack focus",
      "description": "Le point net passe d’un sujet à l’autre.",
      "codepoint": "U+E015",
      "css_class": "cadra-rack-focus",
      "svg": "svg/cadra-rack-focus.svg",
      "agent_aliases": [
        "rack focus",
        "rack focus"
      ]
    },
    {
      "id": "dolly-zoom",
      "label": "Dolly zoom",
      "description": "Le déplacement et la focale créent un vertige.",
      "codepoint": "U+E016",
      "css_class": "cadra-dolly-zoom",
      "svg": "svg/cadra-dolly-zoom.svg",
      "agent_aliases": [
        "dolly zoom",
        "dolly zoom"
      ]
    },
    {
      "id": "whip-pan",
      "label": "Whip pan",
      "description": "Panoramique très rapide, transition ou choc.",
      "codepoint": "U+E017",
      "css_class": "cadra-whip-pan",
      "svg": "svg/cadra-whip-pan.svg",
      "agent_aliases": [
        "whip pan",
        "whip pan"
      ]
    },
    {
      "id": "long-take",
      "label": "Long take",
      "description": "Trajectoire continue sans coupe visible.",
      "codepoint": "U+E018",
      "css_class": "cadra-long-take",
      "svg": "svg/cadra-long-take.svg",
      "agent_aliases": [
        "long take",
        "long take"
      ]
    },
    {
      "id": "arc-left",
      "label": "Arc gauche",
      "description": "La caméra décrit une courbe autour du sujet.",
      "codepoint": "U+E019",
      "css_class": "cadra-arc-left",
      "svg": "svg/cadra-arc-left.svg",
      "agent_aliases": [
        "arc left",
        "arc gauche"
      ]
    },
    {
      "id": "arc-right",
      "label": "Arc droite",
      "description": "La caméra décrit une courbe dans l’autre sens.",
      "codepoint": "U+E01A",
      "css_class": "cadra-arc-right",
      "svg": "svg/cadra-arc-right.svg",
      "agent_aliases": [
        "arc right",
        "arc droite"
      ]
    },
    {
      "id": "drone-up",
      "label": "Drone up",
      "description": "La caméra aérienne monte depuis le sujet.",
      "codepoint": "U+E01B",
      "css_class": "cadra-drone-up",
      "svg": "svg/cadra-drone-up.svg",
      "agent_aliases": [
        "drone up",
        "drone up"
      ]
    },
    {
      "id": "drone-down",
      "label": "Drone down",
      "description": "La caméra aérienne descend vers le sujet.",
      "codepoint": "U+E01C",
      "css_class": "cadra-drone-down",
      "svg": "svg/cadra-drone-down.svg",
      "agent_aliases": [
        "drone down",
        "drone down"
      ]
    },
    {
      "id": "steadicam",
      "label": "Steadicam",
      "description": "Déplacement fluide stabilisé autour du sujet.",
      "codepoint": "U+E01D",
      "css_class": "cadra-steadicam",
      "svg": "svg/cadra-steadicam.svg",
      "agent_aliases": [
        "steadicam",
        "steadicam"
      ]
    },
    {
      "id": "tripod",
      "label": "Tripod",
      "description": "Caméra posée, stable et soutenue par trois points.",
      "codepoint": "U+E01E",
      "css_class": "cadra-tripod",
      "svg": "svg/cadra-tripod.svg",
      "agent_aliases": [
        "tripod",
        "tripod"
      ]
    },
    {
      "id": "pov",
      "label": "POV",
      "description": "Le cadre adopte le point de vue du personnage.",
      "codepoint": "U+E01F",
      "css_class": "cadra-pov",
      "svg": "svg/cadra-pov.svg",
      "agent_aliases": [
        "pov",
        "pov"
      ]
    },
    {
      "id": "over-shoulder",
      "label": "Over shoulder",
      "description": "Un personnage est cadré depuis l’épaule d’un autre.",
      "codepoint": "U+E020",
      "css_class": "cadra-over-shoulder",
      "svg": "svg/cadra-over-shoulder.svg",
      "agent_aliases": [
        "over shoulder",
        "over shoulder"
      ]
    },
    {
      "id": "high-angle",
      "label": "High angle",
      "description": "La caméra regarde le sujet depuis une position haute.",
      "codepoint": "U+E021",
      "css_class": "cadra-high-angle",
      "svg": "svg/cadra-high-angle.svg",
      "agent_aliases": [
        "high angle",
        "high angle"
      ]
    },
    {
      "id": "low-angle",
      "label": "Low angle",
      "description": "La caméra regarde le sujet depuis une position basse.",
      "codepoint": "U+E022",
      "css_class": "cadra-low-angle",
      "svg": "svg/cadra-low-angle.svg",
      "agent_aliases": [
        "low angle",
        "low angle"
      ]
    },
    {
      "id": "overhead",
      "label": "Overhead",
      "description": "La caméra observe verticalement depuis le dessus.",
      "codepoint": "U+E023",
      "css_class": "cadra-overhead",
      "svg": "svg/cadra-overhead.svg",
      "agent_aliases": [
        "overhead",
        "overhead"
      ]
    },
    {
      "id": "wide-shot",
      "label": "Wide shot",
      "description": "Le sujet est petit dans un espace dominant.",
      "codepoint": "U+E024",
      "css_class": "cadra-wide-shot",
      "svg": "svg/cadra-wide-shot.svg",
      "agent_aliases": [
        "wide shot",
        "wide shot"
      ]
    },
    {
      "id": "medium-shot",
      "label": "Medium shot",
      "description": "Le sujet occupe une portion intermédiaire du cadre.",
      "codepoint": "U+E025",
      "css_class": "cadra-medium-shot",
      "svg": "svg/cadra-medium-shot.svg",
      "agent_aliases": [
        "medium shot",
        "medium shot"
      ]
    },
    {
      "id": "close-up",
      "label": "Close-up",
      "description": "Le cadre se resserre sur le visage ou le détail.",
      "codepoint": "U+E026",
      "css_class": "cadra-close-up",
      "svg": "svg/cadra-close-up.svg",
      "agent_aliases": [
        "close up",
        "close-up"
      ]
    },
    {
      "id": "extreme-close-up",
      "label": "Extreme close-up",
      "description": "Le détail remplit presque tout le cadre.",
      "codepoint": "U+E027",
      "css_class": "cadra-extreme-close-up",
      "svg": "svg/cadra-extreme-close-up.svg",
      "agent_aliases": [
        "extreme close up",
        "extreme close-up"
      ]
    },
    {
      "id": "crash-zoom",
      "label": "Crash zoom",
      "description": "La focale se resserre brutalement vers le sujet.",
      "codepoint": "U+E028",
      "css_class": "cadra-crash-zoom",
      "svg": "svg/cadra-crash-zoom.svg",
      "agent_aliases": [
        "crash zoom",
        "crash zoom"
      ]
    },
    {
      "id": "dutch-angle",
      "label": "Dutch angle",
      "description": "L’horizon est volontairement incliné pour créer une tension visuelle.",
      "codepoint": "U+E029",
      "css_class": "cadra-dutch-angle",
      "svg": "svg/cadra-dutch-angle.svg",
      "agent_aliases": [
        "dutch angle",
        "dutch angle"
      ]
    },
    {
      "id": "dutch-angle-reverse",
      "label": "Dutch angle reverse",
      "description": "L’inclinaison est inversée pour créer un contrepoint visuel.",
      "codepoint": "U+E02A",
      "css_class": "cadra-dutch-angle-reverse",
      "svg": "svg/cadra-dutch-angle-reverse.svg",
      "agent_aliases": [
        "dutch angle reverse",
        "dutch angle reverse"
      ]
    },
    {
      "id": "follow-pan",
      "label": "Follow pan",
      "description": "La caméra accompagne latéralement le déplacement du sujet.",
      "codepoint": "U+E02B",
      "css_class": "cadra-follow-pan",
      "svg": "svg/cadra-follow-pan.svg",
      "agent_aliases": [
        "follow pan",
        "follow pan"
      ]
    },
    {
      "id": "crane-diagonal",
      "label": "Crane diagonal",
      "description": "La caméra monte ou descend sur une trajectoire diagonale.",
      "codepoint": "U+E02C",
      "css_class": "cadra-crane-diagonal",
      "svg": "svg/cadra-crane-diagonal.svg",
      "agent_aliases": [
        "crane diagonal",
        "crane diagonal"
      ]
    },
    {
      "id": "establishing-shot",
      "label": "Establishing shot",
      "description": "Le plan installe le lieu, l’échelle et les lignes de force.",
      "codepoint": "U+E02D",
      "css_class": "cadra-establishing-shot",
      "svg": "svg/cadra-establishing-shot.svg",
      "agent_aliases": [
        "establishing shot",
        "establishing shot"
      ]
    },
    {
      "id": "full-shot",
      "label": "Full shot",
      "description": "Le sujet est montré en pied dans son environnement immédiat.",
      "codepoint": "U+E02E",
      "css_class": "cadra-full-shot",
      "svg": "svg/cadra-full-shot.svg",
      "agent_aliases": [
        "full shot",
        "full shot"
      ]
    },
    {
      "id": "two-shot",
      "label": "Two shot",
      "description": "Deux personnages partagent le même cadre et le même axe.",
      "codepoint": "U+E02F",
      "css_class": "cadra-two-shot",
      "svg": "svg/cadra-two-shot.svg",
      "agent_aliases": [
        "two shot",
        "two shot"
      ]
    },
    {
      "id": "insert-shot",
      "label": "Insert shot",
      "description": "Un détail isolé devient le centre d’attention du plan.",
      "codepoint": "U+E030",
      "css_class": "cadra-insert-shot",
      "svg": "svg/cadra-insert-shot.svg",
      "agent_aliases": [
        "insert shot",
        "insert shot"
      ]
    },
    {
      "id": "parallax-left",
      "label": "Parallax left",
      "description": "La profondeur se décale vers la gauche autour du sujet.",
      "codepoint": "U+E031",
      "css_class": "cadra-parallax-left",
      "svg": "svg/cadra-parallax-left.svg",
      "agent_aliases": [
        "parallax left",
        "parallax left"
      ]
    },
    {
      "id": "parallax-right",
      "label": "Parallax right",
      "description": "La profondeur se décale vers la droite autour du sujet.",
      "codepoint": "U+E032",
      "css_class": "cadra-parallax-right",
      "svg": "svg/cadra-parallax-right.svg",
      "agent_aliases": [
        "parallax right",
        "parallax right"
      ]
    },
    {
      "id": "spiral-orbit",
      "label": "Spiral orbit",
      "description": "L’orbite se resserre en spirale autour du sujet.",
      "codepoint": "U+E033",
      "css_class": "cadra-spiral-orbit",
      "svg": "svg/cadra-spiral-orbit.svg",
      "agent_aliases": [
        "spiral orbit",
        "spiral orbit"
      ]
    },
    {
      "id": "roll-left",
      "label": "Roll left",
      "description": "L’axe bascule progressivement vers la gauche.",
      "codepoint": "U+E034",
      "css_class": "cadra-roll-left",
      "svg": "svg/cadra-roll-left.svg",
      "agent_aliases": [
        "roll left",
        "roll left"
      ]
    },
    {
      "id": "roll-right",
      "label": "Roll right",
      "description": "L’axe bascule progressivement vers la droite.",
      "codepoint": "U+E035",
      "css_class": "cadra-roll-right",
      "svg": "svg/cadra-roll-right.svg",
      "agent_aliases": [
        "roll right",
        "roll right"
      ]
    },
    {
      "id": "gimbal",
      "label": "Gimbal",
      "description": "La caméra reste stabilisée dans une structure articulée.",
      "codepoint": "U+E036",
      "css_class": "cadra-gimbal",
      "svg": "svg/cadra-gimbal.svg",
      "agent_aliases": [
        "gimbal",
        "gimbal"
      ]
    },
    {
      "id": "macro-shot",
      "label": "Macro shot",
      "description": "Un très petit détail devient le sujet principal.",
      "codepoint": "U+E037",
      "css_class": "cadra-macro-shot",
      "svg": "svg/cadra-macro-shot.svg",
      "agent_aliases": [
        "macro shot",
        "macro shot"
      ]
    },
    {
      "id": "extreme-wide-shot",
      "label": "Extreme wide shot",
      "description": "Le sujet est minuscule face à l’espace.",
      "codepoint": "U+E038",
      "css_class": "cadra-extreme-wide-shot",
      "svg": "svg/cadra-extreme-wide-shot.svg",
      "agent_aliases": [
        "extreme wide shot",
        "extreme wide shot"
      ]
    },
    {
      "id": "profile-shot",
      "label": "Profile shot",
      "description": "Le sujet est présenté dans une relation de profil.",
      "codepoint": "U+E039",
      "css_class": "cadra-profile-shot",
      "svg": "svg/cadra-profile-shot.svg",
      "agent_aliases": [
        "profile shot",
        "profile shot"
      ]
    },
    {
      "id": "reaction-shot",
      "label": "Reaction shot",
      "description": "Le cadre privilégie la réaction du sujet.",
      "codepoint": "U+E03A",
      "css_class": "cadra-reaction-shot",
      "svg": "svg/cadra-reaction-shot.svg",
      "agent_aliases": [
        "reaction shot",
        "reaction shot"
      ]
    },
    {
      "id": "cutaway-shot",
      "label": "Cutaway shot",
      "description": "Un détail ou un élément adjacent interrompt l’action principale.",
      "codepoint": "U+E03B",
      "css_class": "cadra-cutaway-shot",
      "svg": "svg/cadra-cutaway-shot.svg",
      "agent_aliases": [
        "cutaway shot",
        "cutaway shot"
      ]
    },
    {
      "id": "master-shot",
      "label": "Master shot",
      "description": "Le plan couvre l’ensemble de la scène et des personnages.",
      "codepoint": "U+E03C",
      "css_class": "cadra-master-shot",
      "svg": "svg/cadra-master-shot.svg",
      "agent_aliases": [
        "master shot",
        "master shot"
      ]
    }
  ]
}
