Skip to content
Plume Visuals
← Back
Core range

Sunburst chart for Power BI Sunburst Plume

A hierarchy in rings: a click opens the level beneath, or every level is shown at once.

Tutorials ↓
Get it on Microsoft MarketplaceThe visual's official Microsoft listing · free to install

Interactive demo

The real Power BI visual, running in your browser with the sample report's fictitious data. Switch scenario, style or year: the visual updates as it does in Power BI. Premium ★ features are shown here without the watermark; in Power BI, without a license, they show “Plume Visuals · Premium preview”.

Power BI has no sunburst chart. Sunburst Plume draws 1 to 8 levels of a hierarchy as rings, from the center to the edge: region, city, category; department, item, supplier. Two modes: Explore, where a click opens the sector (animated zoom, breadcrumb, back through the center), and All levels, where everything is shown and a click filters the page. Names follow the arcs, the total sits in the center, percentages of the parent or of the total need no DAX, small sectors are grouped in Others and ragged hierarchies stop cleanly. With premium: the play axis (the rings grow or shrink from one year to the next, keeping their colors), a comparison band with last year, colors by variance to budget or by a measure, icicle and half-circle views, summary rings for hidden levels, highlighted sectors, one color per level, comparable-area rings and grouping below a % of the parent.

Use cases

  • Sales by region, city and category, with each one's share of its parent
  • Spending by department, item and supplier, compared with the budget
  • Headcount by site, team and job; stock by warehouse, family and item
  • How shares changed since last year, branch by branch
  • Market shares year by year, replayed with the play axis ★

FreeIncluded for free

  • 1 to 8 levels as rings; Explore mode (a click opens the level beneath, animated zoom, breadcrumb, center = go up) or All levels
  • Adjustable levels shown at once, cue on the sectors that open; click = open, open and filter, or select
  • Labels along the arcs, radial or tangential, never upside down; name, value, % of parent, of total or of the opened sector
  • Total in the center, opened or hovered sector with its share of the parent
  • Automatic Others (maximum count of sectors per parent), sorting, ragged hierarchies
  • Colors by branch (lighter outward) or single; tooltips, cross-filtering, highlighting, keyboard, right-click menu
  • Dynamic formats: fx button on colors and texts, any option driven by DAX

PremiumPremium features

  • Play axis: play ▶, slider, speed, loop, animated arc transitions, stable colors
  • Comparison band with another period (favorable / unfavorable) and ▲▼ in the labels
  • Colors by variance to target (a decrease can be favorable) or by a measure
  • Icicle (rectangles) and half-circle views, with the same click-to-open
  • Summary rings for hidden levels, sectors highlighted by name
  • One color per level, comparable-area or first-ring-thicker rings, grouping below a % of the parent
  • Catalog-wide styles (Neon, Newspaper, Nordic…), palettes, theme JSON

Usable without a key to try them, with a watermark.

Tutorials

Start with Getting started, then pick from the how-to guides. The Fields and settings page describes every option of the Format pane.

  1. Getting startedBeginner6 min readA sunburst chart that opens with a click in Power BIGet started with Sunburst Plume: prepare a Region, City, Category hierarchy, insert the visual, open a sector with a click, go back, filter the page and read the percentages.
  2. How-to guidesIntermediate5 min readSunburst Plume: 10 use casesStep by step: open and filter with one click, show the % of the parent, group small sectors, watch shares change year by year, compare with last year, track a budget, switch to an icicle.
  3. Fields and settingsAdvanced11 min readSunburst Plume: every field and Format pane settingComplete reference for Sunburst Plume: the seven fields and each setting of the Data colors, Layout, Sectors and levels, Labels, Center, Breadcrumb, Comparison and Playback (play axis) cards.
  4. BasicsGetting started with Plume visualsInstallation, license, styles and the settings shared by every visual.

Fields to drop into the visual

FieldContent
Groups (center to edge)1 to 8 columns: one ring per fieldRequired
SizeMeasure that sizes the sectors (without it: rows are counted)Optional
Color (measure)Margin rate, satisfaction: color gradientOptionalPremium
TargetBudget, target: color by varianceOptionalPremium
ComparisonPrevious year: variance band and ▲▼OptionalPremium
Play axisYear, month or date: the rings moveOptionalPremium
TooltipsExtra measuresOptional
Dynamic formatMeasures renamed card.setting (e.g. title.text): the Format pane driven by DAXOptional

Missing a feature? We adapt our visuals or build custom ones. Request a custom visual

Found a bug in Sunburst Plume, or have an idea to improve it? Report a bug · Suggest an idea

Technical reference for AI assistants

This section is meant for AI assistants (ChatGPT, Claude, Copilot…): every field, every Format pane option with its internal name, the expected data shape and DAX examples. Generated from the visual's code, version 1.1.0.0. Paste it into your assistant so it can guide you.

Raw Markdown version (/ai/visuals/sunburst.md)
# Sunburst Plume: technical reference for AI assistants

> Power BI custom visual by Plume Studio (Plume Visuals). Visual version **1.1.0.0**. This page is generated from the visual's source code at each site build: field names, option names and defaults are exact for this version.

Use it to help someone build a report with Sunburst Plume: which fields to drag, how to shape the data, which Format pane option to change, or how to write the visual's settings in a PBIP `visual.json` file.

- Product page: https://plumevisuals.com/en/visuals/sunburst (French: https://plumevisuals.com/fr/visuels/sunburst)
- Summary: A hierarchy in rings: a click opens the level beneath, or every level is shown at once.
- Power BI visual GUID (`visualType`): `plumeSunburstE157D96C0C32496286BD12E747C8F76F`
- Power BI visuals API: 5.11.1
- Support: https://plumevisuals.com/support · contact@plumevisuals.com
- Index of everything on the site for AI assistants: https://plumevisuals.com/llms.txt

## What the visual does

Sunburst Plume (identifier `sunburst`) is a Power BI custom visual (version 1.1.0.0, installed from its `.pbiviz` file; not yet on AppSource) that draws **sunburst charts**: 1 to 8 levels of a hierarchy as concentric rings, from the center (first level) to the edge (last level). Power BI Desktop has no native sunburst chart.

**New in version 1.1.0.0 (30/10/2026):** Format pane reorganized to the shared v2 order (Tooltips, Title, Source note, Frame, Language and numbers); no new feature (native parity was already complete).

- **Two modes** (`layout.mode`): `explore` (default) shows `layout.depth` rings at once (2 by default); a click on a sector **opens the level beneath** with an animated zoom (the sector takes the whole circle), the **breadcrumb** (`nav`) and a click on the **center** go back; `all` shows every ring and a click selects (cross-filter).
- `interaction.click` (explore mode): `zoom` (open; Ctrl + click selects), `zoomSelect` (open and filter the other visuals; going back to the top clears the filter), `select` (never open). A sector with no level beneath is always selected.
- **Labels** follow the arcs when they fit (`labels.orientation` = `auto`), otherwise turn radial, otherwise are shortened with "…" or hidden (never upside down, never one letter, numbers never cut); content: name, value, % of the parent, of the total or of the opened sector.
- **Center**: total, opened sector or hovered sector, with its share of the parent.
- **Others**: at most `rings.maxChildren` sectors per parent (12 by default) and, ★, sectors under `rings.minShare` % of their parent are grouped in one "Others" sector (tooltip lists their names; a click selects them all).
- **Ragged hierarchies**: a blank value stops the branch (`rings.blanks` = `hide`) or shows "(Blank)" (`show`).
- In explore mode, a thin line (`rings.cue`) marks the sectors that can be opened.
- **Play axis ★** (`play` role, premium since the 22/10/2026 rebalancing; usable with the watermark, never blocked): one value of a year, date or ordered text column at a time, with a play bar (▶, start, end, slider, speed ×0.5–×4) and the current value in large type; arcs grow and shrink from one frame to the next (animated transitions), branch colors and the opened sector stay the same. Same shared player and same `play` settings as Scatter Plume.

## Free vs premium (★)

- Every feature works without a key and nothing is ever blocked. Free features never show a watermark.
- Shared Style card (the same in every Plume visual): the styles `none`, `minimal` and `blackWhite`, the two Plume gradient palettes (`crest`, `crestDiverging`), "Follow report theme" and all custom colors are **free**; every other `style.preset`, the other gradient palettes (`style.palette`) and `style.themeJson` ("Theme JSON ★") are **premium**.
- Free in Sunburst Plume: both modes, levels shown at once, the breadcrumb, the center, labels and their orientations, % of parent / total / opened sector, Others by maximum count, sorting, blank handling, equal rings, gaps, corners, start angle, colors by branch or single, the legend, tooltips, cross-filtering, highlighting, keyboard.
- Premium features of Sunburst Plume:
  - `layout.view` = `half` (half circle) or `icicle` (rectangular partition);
  - coloring `dataColors.mode` = `measure` (gradient by the Color field or by the size) or `target` (variance to target); the `auto` mode becomes premium when the Color or Target field is filled;
  - the Comparison field with `compare.band` or `compare.arrows` on (variance band on each sector's outer edge, ▲▼ in labels and center);
  - `rings.summary` (hidden levels drawn as thin rings, explore mode);
  - `interaction.highlight` (sector names that keep their color, the rest dimmed);
  - since the 22/10/2026 rebalancing: the Play axis field with at least one value (« Axe de lecture ★ », card « Lecture ★ » / « Playback ★ »); `dataColors.mode` = `level` (one color per level); `layout.ringSizing` = `area` or `inner` with at least two rings shown (not in icicle); `rings.minShare` when at least one sector is actually grouped by it.
- Without a valid key, a premium feature in use shows, in edit mode, a "Premium preview" note in the footer; in reading view, **"Plume Visuals · Premium preview"** (French « Plume Visuals · Aperçu premium ») is repeated lightly across the whole visual, without catching the mouse. It disappears once a key is pasted in **Format › Plume Studio License › License key** (`license.key`), the **first card** of the Format pane. Premium options and list values have " ★" appended to their label.
- Accepted keys: only keys starting with `PLUM1.` shown in the buyer's account on plumevisuals.com, checked offline (Ed25519 signature), covering `sunburst` or the whole catalog. In edit mode, a wrong key shows "Invalid license key", "License expired (date)" or "This key does not cover this visual".
- Licenses last one year (one-time payment, no automatic renewal, key accepted for 30 more days, reminders 30 and 7 days before the end). Prices: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog pack (199 € / 399 € / 1,199 € per year; tiers by number of users: personal 1–10, SME 11–200, enterprise more than 200).

## Expected data shape

One row per combination of the finest level, one column per level, and measures.

| Region (`groups`) | City (`groups`) | Category (`groups`) | Revenue (`value`) | Revenue LY (`comparison` ★) |
|---|---|---|---|---|
| London | Westminster | Furniture | 41,000 | 37,500 |
| London | Camden | Decor | 32,000 | 34,100 |

- **Groups (center to edge)** (`groups`, « Groupes (du centre vers le bord) », 1 to 8 columns, required): the first field is the center ring. Text, numbers (years shown without a thousands separator) and dates (formatted with the column format).
- **Size** (`value`, « Taille », one measure): sector size; only positive values count (negative rows are left out with a warning icon, blank rows ignored). Without it, rows are counted (title "Count by …"). Use an additive measure.
- **Color (measure) ★** (`colorBy`, « Couleur (mesure) »): gradient on the style's gradient palette; a parent gets the size-weighted average of its rows.
- **Target ★** (`target`, « Objectif »): color by variance to target (summed for parents).
- **Comparison ★** (`comparison`, « Comparaison »): value to compare with (e.g. previous year), summed for parents.
- **Play axis ★** (`play`, « Axe de lecture ★ », one column, optional, premium): each value is a frame showing only its rows. Numbers and dates in ascending order (years without a thousands separator, dates with the column format), texts in Power BI's order ("Sort by column" included), blanks last. One value only: no play bar. The tooltip gets a line with the field name and the current frame.
- **Tooltips** (`tooltips`, up to 5 measures, summed for parents) and **Dynamic format** (`format`, see below).
- Volume of data: windows of 30,000 rows, more fetched with `fetchMoreData` up to 1,000,000 rows; Others keeps the number of sectors drawn low (at most 6,000 drawn). 100,004 rows render in well under 3 s.

## DAX recipes

```dax
Revenue = SUM ( Sales[Amount] )
Revenue LY = CALCULATE ( [Revenue], SAMEPERIODLASTYEAR ( Calendar[Date] ) )   // Comparison ★
Margin rate = DIVIDE ( [Margin], [Revenue] )                                    // Color (measure) ★
Planned budget = SUM ( Expenses[Budget] )                                       // Target ★ (with compare.lowerIsBetter = true for costs)
```

## Interactions with the report

- Click: open (explore) or select; the selection ID of a sector combines its path (Region, then City…), so a city selects Region + City. Ctrl for several; click an empty area to clear. A selected sector keeps its parents and children bright.
- Cross-highlighting from other visuals: sectors step back and the highlighted part is drawn in full color.
- Hover: tooltip (path, value, share of parent, share of total, share of the opened sector, Others members, comparison and change, target and variance, color measure, Tooltips measures); report-page tooltips supported; with `interaction.trace` the hovered sector's parents and children stay bright; the center shows the hovered sector.
- Play bar: Space or Enter plays or pauses, arrows step one frame, Page Up / Page Down a tenth, Home / End; the frame is announced to screen readers. On a dashboard tile: opening frame, no autoplay, no transition.
- Keyboard: Tab, arrows to browse sectors, Enter to open (explore) or select, Backspace to go up one level, Esc to clear. High contrast, ARIA labels, French and English.
- Context menu everywhere (sector, empty area, center, breadcrumb, landing page). The opened sector is session state: it is kept after a filter (back to the top if it disappears) but never saved in the report.

## Dynamic formats

- **fx button** (Power BI conditional formatting) on colors and texts of the Format pane; per-category fx on the first-level colors.
- **"Dynamic format" well** (`format`): measures renamed `card.setting` (e.g. `layout.mode`, `title.text`, `center.text`) drive any setting and win over the fixed value. Driving a ★ setting by DAX still shows the watermark without a key.

```dax
// renamed title.text
Dynamic title = "Revenue by channel · 2025 vs 2024: " & FORMAT ( CALCULATE ( DIVIDE ( [Revenue], [Revenue LY] ) - 1, ALLSELECTED () ), "+0.0 %;-0.0 %" )
```

## Format pane: option IDs

- Card order: `license`, `style`, `dataColors`, `layout`, `rings`, `labels`, `center`, `nav`, `compare`, `play`, `legend`, `interaction`, then `title`, `source`, `container`, `texts`. Format pane in version 1.1.0.0 (30/10/2026), top to bottom: `license`, `style`, `dataColors`, `layout`, `rings`, `labels`, `center`, `nav`, `compare`, `play`, `legend`, `interaction`, `tooltip`, `title`, `source`, `container`, `texts`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- `dataColors`: `mode` (`auto` | `branch` | `level` ★ | `single` | `measure` ★ | `target` ★), `single`, `shade` (0–60, 22), `fill` per first-level category.
- `layout`: `mode` (`explore` | `all`), `depth` (1–8, 2), `view` (`sunburst` | `half` ★ | `icicle` ★), `innerRadius` (0–80 %, 30), `ringSizing` (`equal` | `area` ★ | `inner` ★), `ringGap` (0–10, 1.5), `padding` (0–6, 1), `cornerRadius` (0–16, 3), `startAngle` (−180–180, 0).
- `rings`: `sort` (`value` | `valueAsc` | `alpha` | `data`), `maxChildren` (0–200, 12), `minShare` ★ (0–25 %, 0), `othersLabel`, `blanks` (`hide` | `show`), `cue`, `summary` ★.
- `labels`: `show`, `content` (`name` | `nameValue` | `namePct` | `value` | `pct`), `pctOf` (`parent` | `total` | `view`), `orientation` (`auto` | `curved` | `radial` | `tangential`), `fontSize` (10), `color`, `bold`, `units`, `decimals`, `prefix`, `suffix`.
- `center`: `show`, `content` (`auto` | `view` | `total`), `text`, `valueSize` (22), `labelSize` (11), `color`, `back`.
- `nav`: `show`, `rootLabel`, `hint`, `position` (`top` | `bottom`).
- `compare`: `band` ★, `bandWidth` (2–12, 4), `arrows`, `lowerIsBetter`, `neutral` (0–50 %, 2), `scale` (2–200 %, 25), `compareLabel`.
- `play` ★ (card « Lecture ★ », shown with the Play axis field): `start` (`last` | `first`), `speed` (100–10,000 ms per frame, 1000), `loop` (false), `autoPlay` (false; never when animations are reduced), `transition` (true; off as well when `style.animate` is false or the system reduces motion), `controls` (true), `position` (`bottom` | `top`), `ticks` (`auto` | `all` | `none`), `tickLabels`, `stepButtons`, `speedButton` (true), `showLabel` (true), `labelSize` (12–160, 44), `labelPosition` (`bottomRight` | `topRight` | `topLeft` | `bottomLeft` | `center`).
- `legend`: off by default (`show`, `position` = `right`…). `interaction`: `hover`, `dim` (5–80, 25), `click` (`zoom` | `zoomSelect` | `select`), `trace`, `highlight` ★.

## Editing a PBIP report (visual.json)

`visualType` is the visual GUID, `queryState` keys are the data role names, `objects` keys are the option IDs. Booleans `true` / `false`, numbers suffixed with `D`, strings and enumeration values in single quotes.

```json
{
  "visualType": "plumeSunburstE157D96C0C32496286BD12E747C8F76F",
  "query": {
    "queryState": {
      "groups": { "projections": [
        { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Region" } }, "queryRef": "Sales.Region", "nativeQueryRef": "Region" },
        { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "City" } }, "queryRef": "Sales.City", "nativeQueryRef": "City" } ] },
      "value": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" } ] }
    }
  },
  "objects": {
    "layout": [ { "properties": { "mode": { "expr": { "Literal": { "Value": "'all'" } } } } } ],
    "labels": [ { "properties": { "content": { "expr": { "Literal": { "Value": "'namePct'" } } } } } ],
    "license": [ { "properties": { "key": { "expr": { "Literal": { "Value": "'PLUM1.…'" } } } } } ]
  }
}
```

The custom visual package must also be embedded in the report (Power BI does this when the visual is imported from the `.pbiviz` file).

## Styles and theme JSON

- `style.preset` takes one of the 20 style IDs shared by every Plume visual: `none`, `minimal`, `blackWhite`, `press`, `vintage`, `earth`, `nordic`, `executive`, `accessible`, `pastel`, `bauhaus`, `climate`, `blueprint`, `unknownPleasures`, `dark`, `neon`, `terminal`, `infographic`, `cockpit`, `hologram`. Branch colors come from the style's categorical palette (or custom series 1–8); `minimal` removes corner rounding, the style's `fill` token (hatch, outlined, glass…) paints the sectors.
- `style.themeJson` (Theme JSON ★): a JSON theme as plain text (format v2 with optional `extends` and groups `colors`, `palettes`, `typography`, `shape`, `table`, `marks`, `effects`). Full reference: https://plumevisuals.com/ai/tutorials/en/themes-json.md.

## Common pitfalls

- A single ring although several fields are in Groups: explore mode shows `layout.depth` rings; click a sector or raise the depth, or use `layout.mode` = `all`.
- "Count by …" title: no measure in Size.
- Warning "Negative values ignored": negative rows cannot be ring shares.
- Many gray "Others" sectors: raise `rings.maxChildren` or set 0.
- A click does not filter the page: explore mode opens sectors; use Ctrl + click or `interaction.click` = `zoomSelect`.
- Names missing: sectors too small for their text; enlarge the visual, lower `labels.fontSize`, read the tooltip.
- Watermark visible: a Play axis field, one color per level, comparable-area or first-ring-thicker rings, grouping below a % of the parent, half circle, icicle, measure or target coloring (including `auto` with the Color or Target field), comparison band or arrows, summary rings, highlight, a ★ style or a theme JSON, without a valid key.
- The visual makes no network request: data and license key stay in the report.

## Features that do NOT exist (do not suggest them)

Small multiples, images or icons in the center, labels outside the circle with leader lines, saving the opened sector in the report or in bookmarks, Power BI's native drill buttons (the visual zooms by itself), values computed from non-additive measures at parent level (parents add up their rows; the Color measure is a size-weighted average).

## Data fields (wells)

Internal name = data role name (PBIP `queryState` key). Labels as shown in Power BI (English / French). ★ = premium.

| Internal name | Label (EN) | Label (FR) | Kind | Max fields | Description |
|---|---|---|---|---|---|
| `groups` | Groups (center to edge) | Groupes (du centre vers le bord) | column | 8 | 1 to 8 fields, from the center ring to the outer ring (e.g. Region, Country, City). |
| `value` | Size | Taille | measure | 1 | Measure that sizes each sector (without it, rows are counted). |
| `colorBy` | Color (measure) ★ | Couleur (mesure) ★ | measure | 1 | Premium: colors the sectors on the gradient palette (margin rate, satisfaction…). |
| `target` | Target ★ | Objectif ★ | measure | 1 | Premium: colors each sector by its variance to target (favorable / unfavorable). |
| `comparison` | Comparison ★ | Comparaison ★ | measure | 1 | Premium: value to compare with (e.g. last year), shown as a band on the edge of each sector with ▲▼. |
| `play` | Play axis ★ | Axe de lecture ★ | column | 1 | Premium: a date, a year or an ordered category: the sectors grow and shrink from one value to the next (play button). |
| `tooltips` | Tooltips | Infobulles | measure | 5 |  |
| `format` | Dynamic format | Format dynamique | measure | several | Measures named card.setting (e.g. title.fontSize): drive any Format option with DAX |

Data view: categorical, categories = `groups` + `play` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `value`, `colorBy`, `target`, `comparison`, `tooltips`, `format`.
Capabilities: supportsHighlight, supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).

## Format pane options (145)

Columns: option ID (`object.property`), labels EN / FR as shown in Power BI, control type, PBIP literal type, default value, allowed values, notes.

### Plume Studio License / Licence Plume Studio (`license`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `license.buy` | Get a license | Obtenir une licence | info | text | `plumevisuals.com` |  |  |
| `license.key` | License key | Clé de licence | text | text | (empty) |  | Paste the key received after purchase on plumevisuals.com (starts with PLUM1.). Checked offline. |
| `license.showOwner` | Show license holder (edit mode) | Afficher le titulaire (mode édition) | toggle | bool | `true` | true / false |  |

### Style (`style`, Format pane)

**Style**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.preset` | Style | Style | dropdown | enumeration | `none` | `none` None; `minimal` Minimal; `blackWhite` Black & White; `press` Newspaper ★; `vintage` Vintage (antique plate) ★; `earth` Earth ★; `nordic` Nordic ★; `executive` Executive ★; `accessible` Accessible (high legibility) ★; `pastel` Pastel ★; `bauhaus` Bauhaus (pop) ★; `climate` Climate ★; `blueprint` Blueprint ★; `unknownPleasures` Unknown Pleasures ★; `dark` Graphite (dark) ★; `neon` Neon ★; `terminal` Terminal (Matrix) ★; `infographic` Infographic ★; `cockpit` Cockpit (HUD) ★; `hologram` Hologram ★ | Complete look shared by all Plume visuals: colors, three palettes, fonts, frame, table header, marks and effects. Customize colors below. |
| `style.themeJson` | Theme JSON ★ | Thème JSON ★ | textarea | text | (empty) |  | Paste a JSON theme: see the 'JSON themes' tutorial on plumevisuals.com |
| `style.followTheme` | Follow report theme | Suivre le thème du rapport | toggle | bool | `false` | true / false | Text, background, accent and data colors come from the Power BI report theme. |
| `style.reverse` | Reverse gradients | Inverser les dégradés | toggle | bool | `false` | true / false |  |

**Custom colors / Couleurs personnalisées**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.customColors` | Customize colors | Personnaliser les couleurs | toggle | bool | `false` | true / false | Start from the style and pick your own colors. A color left empty keeps the style's color. |
| `style.colorBackground` | Background | Fond | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorText` | Text | Texte | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorMuted` | Secondary text | Texte secondaire | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorGrid` | Lines and grid | Traits et grille | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorAccent` | Accent | Accent | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorPositive` | Favorable | Favorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorNegative` | Unfavorable | Défavorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series1` | Series 1 | Série 1 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series2` | Series 2 | Série 2 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series3` | Series 3 | Série 3 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series4` | Series 4 | Série 4 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series5` | Series 5 | Série 5 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series6` | Series 6 | Série 6 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series7` | Series 7 | Série 7 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series8` | Series 8 | Série 8 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.palette` | Gradient palette | Palette du dégradé | dropdown | enumeration | `auto` | `auto` Style or theme palette; `crest` Plume (sequential); `crestDiverging` Plume (diverging); `viridis` Viridis ★; `magma` Magma ★; `inferno` Inferno ★; `cividis` Cividis (colorblind-safe) ★; `warmingStripes` Warming stripes ★; `rdYlBu` Red–Yellow–Blue ★; `brBG` Brown–Teal (drought) ★; `spectral` Spectral ★; `blues` Blues ★; `reds` Reds ★; `grays` Grays ★; `press` Press (ink and paper) ★; `nordic` Nordic ★; `earth` Earth (ochre to umber) ★; `pastel` Pastel ★; `okabeIto` Okabe-Ito (colorblind-safe) ★ | Visible when `style.customColors` = `true`. Gradient from the catalog (Viridis, Magma…). The start, middle and end colors below replace it. |
| `style.scaleLow` | Gradient: start | Dégradé : début | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleMid` | Gradient: middle (diverging) | Dégradé : milieu (écarts) | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleHigh` | Gradient: end | Dégradé : fin | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |

**Text / Texte**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.fontFamily` | Font | Police | font | formatting | `Segoe UI, wf_segoe-ui_normal, helvetica, arial, sans-serif` |  | Used by every text of the visual (title, axes, labels, cells). |

**Animations**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.animate` | Animations | Animations | toggle | bool | `true` | true / false | Smooth transitions when data changes. Automatically disabled when the system asks to reduce motion. |

### Layout / Disposition (`layout`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.mode` | Mode | Mode | dropdown | enumeration | `explore` | `explore` Explore: a click opens the level beneath; `all` All levels always shown | Explore: click a sector to zoom into it (animated), the breadcrumb or the center goes back. All levels: every ring is shown and a click selects (cross-filter). |
| `layout.depth` | Levels shown at once | Niveaux visibles à la fois | number | integer | `2` | 1 to 8 | Visible when `layout.mode` = `explore`. Number of rings shown from the opened sector. The deeper levels open with a click. |
| `layout.view` | Shape | Forme | dropdown | enumeration | `sunburst` | `sunburst` Sunburst (circle); `half` Half circle ★; `icicle` Rectangular partition (icicle) ★ | Icicle: the same hierarchy as nested bars, from left to right; long names stay readable. |
| `layout.innerRadius` | Center hole (% of radius) | Trou central (% du rayon) | number | integer | `30` | 0 to 80 |  |
| `layout.ringSizing` | Ring thickness | Épaisseur des anneaux | dropdown | enumeration | `equal` | `equal` Equal; `area` Comparable areas (outer rings thinner) ★; `inner` First ring thicker ★ | With at least two rings shown. |
| `layout.ringGap` | Space between rings (px) | Espace entre les anneaux (px) | number | numeric | `1.5` | 0 to 10 |  |
| `layout.padding` | Space between sectors (px) | Espace entre les secteurs (px) | number | numeric | `1` | 0 to 6 |  |
| `layout.cornerRadius` | Sector corner radius (px) | Arrondi des secteurs (px) | number | integer | `3` | 0 to 16 |  |
| `layout.startAngle` | Start angle (°) | Angle de départ (°) | number | integer | `0` | -180 to 180 | Visible when `layout.view` = `sunburst` |

### Data colors / Couleurs des données (`dataColors`, Format pane)

Per-item card: Power BI shows it once per series, category, column or KPI (an "Apply settings to" list where relevant). In PBIP `visual.json`, each entry of `objects.dataColors` carries a `selector` (`metadata` = the field's queryRef, or `data` for a category value); an entry without a selector applies to all items.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `dataColors.mode` | Coloring | Coloration | dropdown | enumeration | `auto` | `auto` Automatic (by branch; by the Color or Target field when filled); `branch` By branch (first-level color, lighter outward); `level` One color per level ★; `single` Single color; `measure` Gradient by the Color field (or the size) ★; `target` Variance to target (favorable / unfavorable) ★ |  |
| `dataColors.single` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.fill` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.shade` | Lighten at each level (%) | Éclaircir à chaque niveau (%) | number | integer | `22` | 0 to 60 | By branch and single color: each ring is lighter than the one inside it, so the levels stay readable. |

### Sectors and levels / Secteurs et niveaux (`rings`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `rings.sort` | Sector order | Ordre des secteurs | dropdown | enumeration | `value` | `value` Largest first; `valueAsc` Smallest first; `alpha` Alphabetical; `data` Data order (Sort by column) |  |
| `rings.maxChildren` | Sectors per parent at most (0 = all) | Secteurs par parent au plus (0 = tous) | number | integer | `12` | 0 to 200 | The smallest sectors of a parent beyond this number are grouped in « Others ». |
| `rings.minShare` | Group below (% of parent) ★ | Regrouper sous (% du parent) ★ | number | numeric | `0` | 0 to 25 | Sectors smaller than this share of their parent join « Others » (in addition to the maximum number). |
| `rings.othersLabel` | Grouping label | Libellé du regroupement | text | text | (empty) |  |  |
| `rings.blanks` | Blank values of a level | Valeurs vides d'un niveau | dropdown | enumeration | `hide` | `hide` Stop the branch (ragged hierarchy); `show` Show « (Blank) » | Stop: a country without regions keeps its sector, with nothing outside it. |
| `rings.cue` | Hidden levels cue | Repère des niveaux masqués | toggle | bool | `true` | true / false | Exploration: a thin line outside the sectors that can be opened. |
| `rings.summary` | Summarize hidden levels (thin rings) ★ | Résumer les niveaux masqués (anneaux fins) ★ | toggle | bool | `false` | true / false | Exploration: the levels beyond « Levels shown at once » are drawn as thin rings, so the whole depth stays visible. |

### Data labels / Étiquettes de données (`labels`, Format pane)

The card header toggle is `labels.show`.

**Labels / Étiquettes**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `labels.content` | Content | Contenu | dropdown | enumeration | `name` | `name` Name; `nameValue` Name and value; `namePct` Name and percentage; `value` Value; `pct` Percentage |  |
| `labels.pctOf` | Percentage of | Pourcentage calculé sur | dropdown | enumeration | `parent` | `parent` The parent; `total` The total; `view` The opened sector (center) |  |
| `labels.orientation` | Orientation | Orientation | dropdown | enumeration | `auto` | `auto` Automatic (along the arc, else radial); `curved` Along the arc (curved); `radial` Radial; `tangential` Tangential (straight) | A label that does not fit its sector is shortened (…) or hidden: it stays in the tooltip. |
| `labels.fontSize` | Text size | Taille du texte | number | formatting | `10` | 6 to 24 |  |
| `labels.color` | Color (empty = automatic) | Couleur (vide = automatique) | color | fill | (empty) | hex color | Automatic: white or dark depending on the sector color. |
| `labels.bold` | Bold | Gras | toggle | bool | `false` | true / false |  |

**Numbers / Nombres**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions |  |
| `labels.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 |  |
| `labels.prefix` | Prefix | Préfixe | text | text | (empty) |  |  |
| `labels.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) |  |  |

### Center / Centre (`center`, Format pane)

The card header toggle is `center.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `center.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `center.content` | Content | Contenu | dropdown | enumeration | `auto` | `auto` Opened sector, or hovered one; `view` Opened sector only; `total` Always the total |  |
| `center.text` | Total label | Libellé du total | text | text | (empty) |  |  |
| `center.valueSize` | Value size | Taille de la valeur | number | formatting | `22` | 8 to 72 | Shrinks automatically when the center is small. |
| `center.labelSize` | Label size | Taille du libellé | number | formatting | `11` | 6 to 30 |  |
| `center.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color |  |
| `center.back` | Click the center = go up one level | Clic au centre = remonter d'un niveau | toggle | bool | `true` | true / false |  |

### Breadcrumb / Fil d'Ariane (`nav`, Format pane)

The card header toggle is `nav.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `nav.show` | Show (explore mode) | Afficher (exploration) | toggle | bool | `true` | true / false |  |
| `nav.rootLabel` | First item label | Libellé du premier élément | text | text | (empty) |  |  |
| `nav.hint` | « Click to open » hint | Aide « cliquez pour ouvrir » | toggle | bool | `true` | true / false |  |
| `nav.position` | Position | Position | dropdown | enumeration | `top` | `top` Top; `bottom` Bottom |  |

### Legend / Légende (`legend`, Format pane)

The card header toggle is `legend.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `legend.show` | Show | Afficher | toggle | bool | `false` | true / false | Shown when the chart has several series. |
| `legend.position` | Position | Position | dropdown | enumeration | `right` | `top` Top; `bottom` Bottom; `right` Right; `left` Left |  |
| `legend.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Start; `center` Center; `right` End | Visible when `legend.position` = `top` or `bottom` |
| `legend.showTitle` | Legend title | Titre de la légende | toggle | bool | `false` | true / false |  |
| `legend.titleText` | Title text | Texte du titre | text | text | (empty) |  | Visible when `legend.showTitle` = `true` |
| `legend.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 |  |
| `legend.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color |  |
| `legend.interactive` | Click = select the series | Clic = sélectionner la série | toggle | bool | `true` | true / false |  |

### Comparison and target / Comparaison et objectif (`compare`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `compare.band` | Variance band on the sector edge ★ | Bande d'écart au bord des secteurs ★ | toggle | bool | `true` | true / false | With the Comparison field: a thin band on the outer edge of each sector, favorable or unfavorable, darker when the change is larger. |
| `compare.bandWidth` | Band width (px) | Épaisseur de la bande (px) | number | integer | `4` | 2 to 12 |  |
| `compare.arrows` | ▲▼ and change in labels | ▲▼ et écart dans les étiquettes | toggle | bool | `true` | true / false |  |
| `compare.lowerIsBetter` | A decrease is favorable | Une baisse est favorable | toggle | bool | `false` | true / false | Costs, delays, returns: below the comparison or the target is good. |
| `compare.neutral` | Neutral zone (± %) | Zone neutre (± %) | number | numeric | `2` | 0 to 50 |  |
| `compare.scale` | Change for the strongest color (%) | Écart pour la couleur la plus forte (%) | number | integer | `25` | 2 to 200 |  |
| `compare.compareLabel` | Comparison name | Nom de la comparaison | text | text | (empty) |  |  |

### Playback ★ / Lecture ★ (`play`, Format pane)

This card controls premium features (★): they work without a license key but show the watermark while in use.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `play.start` | Frame shown on opening | Image affichée à l'ouverture | dropdown | enumeration | `last` | `last` The last one (most recent); `first` The first one |  |
| `play.speed` | Duration of a frame (ms) | Durée d'une image (ms) | number | integer | `1000` | 100 to 10000 | At speed ×1; the speed button of the play bar multiplies it (×0.5 to ×4) for the session. |
| `play.loop` | Loop | Lecture en boucle | toggle | bool | `false` | true / false |  |
| `play.autoPlay` | Play automatically on opening | Lecture automatique à l'ouverture | toggle | bool | `false` | true / false | Once, from the first frame. Not when animations are reduced (Style › Animations or the system) nor on a dashboard tile. |
| `play.transition` | Animated transitions | Transitions animées | toggle | bool | `true` | true / false | Values, positions and colors move smoothly from one frame to the next. |
| `play.controls` | Play bar | Barre de lecture | toggle | bool | `true` | true / false |  |
| `play.position` | Bar position | Position de la barre | dropdown | enumeration | `bottom` | `bottom` Bottom; `top` Top | Visible when `play.controls` = `true` |
| `play.ticks` | Tick marks | Graduations | dropdown | enumeration | `auto` | `auto` Automatic; `all` Every frame; `none` None | Visible when `play.controls` = `true` |
| `play.tickLabels` | Tick labels | Étiquettes des graduations | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.stepButtons` | Start and end buttons | Boutons début et fin | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.speedButton` | Speed button | Bouton de vitesse | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.showLabel` | Current value in large type | Valeur en cours en grand | toggle | bool | `true` | true / false |  |
| `play.labelSize` | Large value size | Taille de la valeur en grand | number | formatting | `44` | 12 to 160 | Visible when `play.showLabel` = `true` |
| `play.labelPosition` | Large value position | Position de la valeur en grand | dropdown | enumeration | `bottomRight` | `bottomRight` Bottom right; `topRight` Top right; `topLeft` Top left; `bottomLeft` Bottom left; `center` Center | Visible when `play.showLabel` = `true` |

### Interactions (`interaction`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `interaction.hover` | Highlight on hover | Mettre en avant au survol | toggle | bool | `true` | true / false |  |
| `interaction.dim` | Dimmed items opacity (%) | Opacité des éléments estompés (%) | number | integer | `25` | 5 to 80 |  |
| `interaction.click` | Click on a sector (explore mode) | Clic sur un secteur (exploration) | dropdown | enumeration | `zoom` | `zoom` Open the sector (Ctrl + click: select); `zoomSelect` Open and filter the other visuals; `select` Select only | A sector without a level beneath is always selected. |
| `interaction.trace` | Trace the path on hover | Suivre le chemin au survol | toggle | bool | `true` | true / false | Hovering a sector keeps its parents and its children bright; the rest steps back. |
| `interaction.highlight` | Highlight ★ | Mettre en avant ★ | text | text | (empty) |  | Only these sectors (any level, separated by ;), their parents and their children keep their color. Stays on the page, in PDF exports too. |

### Tooltips / Infobulles (`tooltip`, Format pane)

The card header toggle is `tooltip.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `tooltip.show` | Show | Afficher | toggle | bool | `true` | true / false | Tooltip on hover (with the fields of the "Tooltips" well and report page tooltips). |

### Title / Titre (`title`, Format pane)

The card header toggle is `title.show`.

**Title / Titre**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `title.text` | Text | Texte | text | text | (empty) |  | Leave empty for an automatic title built from the fields. |
| `title.fontSize` | Size | Taille | number | formatting | `14` | 7 to 40 |  |
| `title.bold` | Bold | Gras | toggle | bool | `true` | true / false |  |
| `title.italic` | Italic | Italique | toggle | bool | `false` | true / false |  |
| `title.underline` | Underline | Souligné | toggle | bool | `false` | true / false |  |
| `title.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color |  |
| `title.bgColor` | Background color | Couleur d'arrière-plan | color | fill | (empty) | hex color |  |
| `title.align` | Horizontal alignment | Alignement horizontal | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right |  |
| `title.wrap` | Text wrap | Retour automatique à la ligne | toggle | bool | `true` | true / false |  |

**Subtitle / Sous-titre**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.subtitle` | Subtitle | Sous-titre | text | text | (empty) |  | Several lines allowed: type \n to go to the next line. |
| `title.subFontSize` | Size | Taille | number | formatting | `11` | 7 to 30 | Visible when `title.subtitle` =  |
| `title.subColor` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | Visible when `title.subtitle` =  |
| `title.subItalic` | Italic | Italique | toggle | bool | `false` | true / false | Visible when `title.subtitle` =  |

**Divider / Séparateur**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.divider` | Show divider | Afficher le séparateur | toggle | bool | `false` | true / false |  |
| `title.dividerColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `title.divider` = `true` |
| `title.dividerStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | Visible when `title.divider` = `true` |
| `title.dividerWidth` | Width | Épaisseur | number | integer | `1` | 1 to 6 | Visible when `title.divider` = `true` |

**Spacing / Espacement**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.spaceBelow` | Space below the title (px) | Espace sous le titre (px) | number | integer | `4` | 0 to 40 |  |

### Source note / Note de source (`source`, Format pane)

The card header toggle is `source.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `source.show` | Show | Afficher | toggle | bool | `false` | true / false |  |
| `source.text` | Text | Texte | text | text | (empty) |  |  |
| `source.fontSize` | Size | Taille | number | formatting | `9` | 6 to 20 |  |
| `source.italic` | Italic | Italique | toggle | bool | `false` | true / false |  |
| `source.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color |  |
| `source.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right |  |

### Frame / Cadre (`container`, Format pane)

**Background / Arrière-plan**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.bgShow` | Background | Arrière-plan | toggle | bool | `false` | true / false |  |
| `container.bgColor` | Color | Couleur | color | fill | `#FFFFFF` | hex color | Visible when `container.bgShow` = `true` |
| `container.bgColor2` | Gradient end (optional) | Fin du dégradé (optionnel) | color | fill | (empty) | hex color | Visible when `container.bgShow` = `true` |
| `container.bgTransparency` | Transparency (%) | Transparence (%) | slider | numeric | `0` | 0 to 100 | Visible when `container.bgShow` = `true` |

**Border / Bordure**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.border` | Border | Bordure | toggle | bool | `false` | true / false |  |
| `container.borderColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `container.border` = `true` |
| `container.borderWidth` | Width | Épaisseur | number | integer | `1` | 0 to 6 | Visible when `container.border` = `true` |
| `container.radius` | Rounded corners | Coins arrondis | number | integer | `8` | 0 to 24 |  |

**Shadow / Ombre**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.shadow` | Shadow | Ombre | toggle | bool | `false` | true / false |  |
| `container.shadowColor` | Color (empty = soft) | Couleur (vide = douce) | color | fill | (empty) | hex color | Visible when `container.shadow` = `true` |
| `container.shadowSize` | Blur (px) | Flou (px) | number | integer | `12` | 0 to 40 | Visible when `container.shadow` = `true` |

**Spacing / Marges**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.padding` | Inner padding | Marge intérieure | number | integer | `8` | 0 to 40 |  |

### Language and numbers / Langue et nombres (`texts`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `texts.language` | Interface language | Langue de l'interface | dropdown | enumeration | `auto` | `auto` Same as Power BI; `fr` French; `en` English |  |
| `texts.numberLocale` | Number format locale (e.g. en-GB) | Format des nombres (ex. fr-FR) | text | text | (empty) |  | Thousands and decimal separators. Empty: same as Power BI. |