@openpresentation/opf 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +2 -0
- package/dist/catalogs-x1oFFQnd.d.ts +1198 -0
- package/dist/catalogs.d.ts +2 -32413
- package/dist/catalogs.js +1 -18505
- package/dist/chunk-75N5I6M4.js +229 -0
- package/dist/chunk-EMTMQRX4.js +1007 -0
- package/dist/chunk-GCXOU5MZ.js +6515 -0
- package/dist/chunk-HJNJHB5H.js +454 -0
- package/dist/chunk-OZULJBSG.js +3368 -0
- package/dist/chunk-PIQXLBBJ.js +445 -0
- package/dist/chunk-SOSOBKQ2.js +145 -0
- package/dist/chunk-TWMRZ43O.js +18576 -0
- package/dist/composition.d.ts +190 -0
- package/dist/composition.js +1 -0
- package/dist/data.d.ts +32 -0
- package/dist/data.js +1 -0
- package/dist/docs.js +69 -5
- package/dist/examples.d.ts +1 -1
- package/dist/examples.js +112 -2
- package/dist/index.d.ts +6 -4
- package/dist/index.js +8 -29555
- package/dist/pagination.d.ts +52 -0
- package/dist/pagination.js +5 -0
- package/dist/{presentation-C8BOK0-5.d.ts → presentation-BjP4yTQ1.d.ts} +86 -3
- package/dist/previews.js +1 -447
- package/dist/repo-readme.js +1 -3
- package/dist/schemas-C1DxapX2.d.ts +206 -0
- package/dist/schemas.d.ts +1 -12373
- package/dist/schemas.js +1 -6275
- package/dist/spec/README.md +18 -3
- package/dist/spec/catalogs/audiences/index.json +1 -1
- package/dist/spec/catalogs/chart-types/index.json +1 -1
- package/dist/spec/catalogs/color-schemes/index.json +1 -1
- package/dist/spec/catalogs/font-schemes/index.json +1 -1
- package/dist/spec/catalogs/languages/index.json +1 -1
- package/dist/spec/catalogs/layouts/chart-1x.json +4 -1
- package/dist/spec/catalogs/layouts/chart-2x.json +5 -1
- package/dist/spec/catalogs/layouts/chart-3x.json +5 -1
- package/dist/spec/catalogs/layouts/code-1x.json +4 -1
- package/dist/spec/catalogs/layouts/extract/canonical.json +94 -21
- package/dist/spec/catalogs/layouts/image-1x.json +4 -1
- package/dist/spec/catalogs/layouts/image-2x.json +5 -1
- package/dist/spec/catalogs/layouts/image-3x.json +5 -1
- package/dist/spec/catalogs/layouts/index.json +1 -1
- package/dist/spec/catalogs/layouts/list-2x.json +4 -1
- package/dist/spec/catalogs/layouts/list-3x.json +4 -1
- package/dist/spec/catalogs/layouts/list-4x.json +5 -1
- package/dist/spec/catalogs/layouts/list-5x.json +5 -1
- package/dist/spec/catalogs/layouts/list-6x.json +5 -1
- package/dist/spec/catalogs/layouts/media-1x.json +4 -1
- package/dist/spec/catalogs/layouts/number-2x.json +4 -1
- package/dist/spec/catalogs/layouts/number-3x.json +4 -1
- package/dist/spec/catalogs/layouts/number-4x.json +5 -1
- package/dist/spec/catalogs/layouts/number-5x.json +5 -1
- package/dist/spec/catalogs/layouts/number-6x.json +5 -1
- package/dist/spec/catalogs/layouts/table-1x.json +4 -1
- package/dist/spec/catalogs/layouts/text-2x.json +4 -1
- package/dist/spec/catalogs/layouts/text-3x.json +4 -1
- package/dist/spec/catalogs/narratives/index.json +2 -2
- package/dist/spec/catalogs/purposes/index.json +1 -1
- package/dist/spec/catalogs/social-platforms/index.json +1 -1
- package/dist/spec/catalogs/themes/index.json +1 -1
- package/dist/spec/catalogs/tones/index.json +1 -1
- package/dist/spec/openapi.yaml +54 -14
- package/dist/spec/previews/layouts/index.json +71 -71
- package/dist/spec/schemas/catalog-index.schema.json +53 -0
- package/dist/spec/schemas/layout-preview-index.schema.json +54 -0
- package/dist/spec/schemas/layout.schema.json +63 -0
- package/dist/spec/schemas/opf.schema.json +182 -3
- package/dist/spec-files.d.ts +14 -2391
- package/dist/spec-files.js +1 -3356
- package/dist/types.d.ts +3 -1102
- package/dist/types.js +0 -2
- package/dist/validator.d.ts +3 -10
- package/dist/validator.js +4 -7243
- package/package.json +16 -3
- package/dist/catalogs.js.map +0 -1
- package/dist/docs.js.map +0 -1
- package/dist/examples.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/previews.js.map +0 -1
- package/dist/repo-readme.js.map +0 -1
- package/dist/schemas.js.map +0 -1
- package/dist/spec-files.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validator.js.map +0 -1
package/dist/validator.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/catalogs.ts","../src/generated/catalog-ids.ts","../src/generated/schemas.ts","../src/validator.ts"],"names":["validator"],"mappings":"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","file":"validator.js","sourcesContent":["// Generated by scripts/generate.mjs from spec/catalogs/<catalog-kind>/*.json. Do not edit by hand.\n\n\nexport const audiences = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"executives\",\n \"name\": \"Executives\",\n \"summary\": \"Senior leaders who need the recommendation up front, the evidence behind it, and the ask.\",\n \"description\": \"Executives are time-poor and decision-oriented. Lead with the recommendation, support it with three claims and one number per claim, and end with a clear ask. Avoid drilling into mechanisms unless invited; offer to follow up rather than including everything in the deck.\",\n \"seniority\": \"c-suite\",\n \"technicalFluency\": \"medium\",\n \"decisionPower\": \"decision-maker\",\n \"attentionBudgetMinutes\": 30,\n \"recommendedNarratives\": [\n \"scqa\",\n \"qbr\",\n \"strategic-narrative\",\n \"project-proposal\"\n ],\n \"recommendedTones\": [\n \"formal\",\n \"authoritative\",\n \"persuasive\"\n ],\n \"tags\": [\n \"leadership\",\n \"decision-making\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"board\",\n \"name\": \"Board of Directors\",\n \"summary\": \"Directors with fiduciary responsibility who balance oversight, advice, and approval.\",\n \"description\": \"The board is governance-first. They want a complete picture: financial health, key metrics, functional updates, risks, and forward-looking topics. Surface bad news honestly — under-disclosure erodes trust faster than the problems themselves. Bring specific asks that turn the meeting into a working session rather than a recital.\",\n \"seniority\": \"c-suite\",\n \"technicalFluency\": \"medium\",\n \"decisionPower\": \"decision-maker\",\n \"attentionBudgetMinutes\": 90,\n \"recommendedNarratives\": [\n \"board-meeting\",\n \"qbr\",\n \"scqa\",\n \"strategic-advisory\"\n ],\n \"recommendedTones\": [\n \"formal\",\n \"authoritative\"\n ],\n \"tags\": [\n \"governance\",\n \"oversight\",\n \"leadership\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"engineering-team\",\n \"name\": \"Engineering Team\",\n \"summary\": \"Practitioners building the system; they want depth, mechanism, and tradeoffs.\",\n \"description\": \"Engineers tune out generalities and tune in to specifics. Show benchmarks with conditions, architecture diagrams with constraints, and tradeoffs you actually considered. Internal jargon is fine — assume the room shares it. Leave room for questions; engineering audiences engage best when they can poke at the proposal.\",\n \"seniority\": \"ic\",\n \"technicalFluency\": \"high\",\n \"decisionPower\": \"advisory\",\n \"attentionBudgetMinutes\": 45,\n \"recommendedNarratives\": [\n \"status-update\",\n \"challenge-resolution\",\n \"innovation\",\n \"weekly-progress\"\n ],\n \"recommendedTones\": [\n \"technical\",\n \"casual\",\n \"conversational\"\n ],\n \"tags\": [\n \"internal\",\n \"engineering\",\n \"practitioner\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"investors\",\n \"name\": \"Investors\",\n \"summary\": \"Capital allocators evaluating fit, traction, and risk-adjusted return.\",\n \"description\": \"Investors read pattern-matching against their existing portfolio. They want the story (why this market, why now, why you), the proof (traction, retention, gross margin, growth rate), and the ask (raise size, use of funds, milestones). They will not assume — make the bull case explicit and acknowledge the bear case rather than hide it.\",\n \"seniority\": \"mixed\",\n \"technicalFluency\": \"medium\",\n \"decisionPower\": \"decision-maker\",\n \"attentionBudgetMinutes\": 30,\n \"recommendedNarratives\": [\n \"venture-pitch\",\n \"early-startup-pitch\",\n \"pitch-deck\",\n \"strategic-narrative\"\n ],\n \"recommendedTones\": [\n \"persuasive\",\n \"authoritative\",\n \"inspirational\"\n ],\n \"tags\": [\n \"external\",\n \"capital\",\n \"fundraising\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"customers\",\n \"name\": \"Customers\",\n \"summary\": \"Buyers and users — outcome-focused, allergic to jargon, sensitive to time.\",\n \"description\": \"Customer audiences want to know what changes for them. Lead with their problem in their language; show the solution as a path; demonstrate it with peers they recognize. Keep the technical depth in an appendix unless asked. Always close with the next concrete step (trial, pilot, intro).\",\n \"seniority\": \"mixed\",\n \"technicalFluency\": \"mixed\",\n \"decisionPower\": \"decision-maker\",\n \"attentionBudgetMinutes\": 30,\n \"recommendedNarratives\": [\n \"problem-solution\",\n \"persuasive-sales\",\n \"challenge-resolution\",\n \"company-intro\"\n ],\n \"recommendedTones\": [\n \"persuasive\",\n \"casual\",\n \"authoritative\"\n ],\n \"tags\": [\n \"external\",\n \"customer\",\n \"sales\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"sales-team\",\n \"name\": \"Sales Team\",\n \"summary\": \"Quota-carrying reps who want talk tracks, objection handling, and crisp proof.\",\n \"description\": \"Sales audiences need actionable assets, not strategy framing. Surface the talk tracks they'll repeat, the three objections they'll hear, and the data points that close. Keep slides scannable — much of this content is consumed asynchronously between calls.\",\n \"seniority\": \"mixed\",\n \"technicalFluency\": \"low\",\n \"decisionPower\": \"informational\",\n \"attentionBudgetMinutes\": 30,\n \"recommendedNarratives\": [\n \"marketing-strategy\",\n \"persuasive-sales\",\n \"weekly-progress\",\n \"status-update\"\n ],\n \"recommendedTones\": [\n \"casual\",\n \"persuasive\",\n \"conversational\"\n ],\n \"tags\": [\n \"internal\",\n \"go-to-market\",\n \"enablement\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"marketing-team\",\n \"name\": \"Marketing Team\",\n \"summary\": \"Brand and demand-gen practitioners aligning on positioning, messaging, and campaigns.\",\n \"description\": \"Marketing audiences want positioning, messaging hierarchy, and campaign-level metrics. Tie strategy to specific campaigns and channels. Show the funnel — leads, conversion, velocity — and explain how each campaign moves a stage of it.\",\n \"seniority\": \"mixed\",\n \"technicalFluency\": \"low\",\n \"decisionPower\": \"advisory\",\n \"attentionBudgetMinutes\": 45,\n \"recommendedNarratives\": [\n \"marketing-strategy\",\n \"product-launch\",\n \"qbr\",\n \"weekly-progress\"\n ],\n \"recommendedTones\": [\n \"casual\",\n \"persuasive\",\n \"authoritative\"\n ],\n \"tags\": [\n \"internal\",\n \"go-to-market\",\n \"brand\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"all-hands\",\n \"name\": \"All Hands\",\n \"summary\": \"The full company — mixed roles, mixed seniority, looking for context, signal, and inclusion.\",\n \"description\": \"An all-hands audience spans the whole company. Frame the period in terms anyone can grasp: what we did, what mattered, and what's next. Highlight people and teams; surface successes and challenges; close on a forward-looking note. Avoid lapsing into function-specific jargon.\",\n \"seniority\": \"mixed\",\n \"technicalFluency\": \"mixed\",\n \"decisionPower\": \"informational\",\n \"attentionBudgetMinutes\": 60,\n \"recommendedNarratives\": [\n \"company-intro\",\n \"weekly-progress\",\n \"qbr\",\n \"rags-to-riches\"\n ],\n \"recommendedTones\": [\n \"casual\",\n \"inspirational\",\n \"conversational\"\n ],\n \"tags\": [\n \"internal\",\n \"company-wide\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"candidates\",\n \"name\": \"Candidates\",\n \"summary\": \"Potential hires evaluating company, role, and people.\",\n \"description\": \"Candidates are weighing a major life decision and have many alternatives. Lead with mission and why-now, show the team they'll work with, and be honest about the stage. Avoid generic recruiting copy — specifics build trust faster than polish.\",\n \"seniority\": \"mixed\",\n \"technicalFluency\": \"mixed\",\n \"decisionPower\": \"decision-maker\",\n \"attentionBudgetMinutes\": 45,\n \"recommendedNarratives\": [\n \"company-intro\",\n \"golden-circle\",\n \"rags-to-riches\",\n \"venture-pitch\"\n ],\n \"recommendedTones\": [\n \"inspirational\",\n \"casual\",\n \"authoritative\"\n ],\n \"tags\": [\n \"external\",\n \"hiring\",\n \"recruiting\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"id\": \"regulators\",\n \"name\": \"Regulators\",\n \"summary\": \"Government, agency, and policy reviewers evaluating compliance, risk, and impact.\",\n \"description\": \"Regulator audiences expect precision, completeness, and verifiable claims. Cite frameworks and standards explicitly; quantify risks with named mitigations; avoid promotional framing entirely. Document what you don't know alongside what you do.\",\n \"seniority\": \"mixed\",\n \"technicalFluency\": \"medium\",\n \"decisionPower\": \"decision-maker\",\n \"attentionBudgetMinutes\": 60,\n \"recommendedNarratives\": [\n \"scqa\",\n \"challenge-resolution\",\n \"strategic-advisory\",\n \"performance-improvement-plan\"\n ],\n \"recommendedTones\": [\n \"formal\",\n \"authoritative\",\n \"technical\"\n ],\n \"tags\": [\n \"external\",\n \"compliance\",\n \"policy\"\n ]\n }\n] as const;\n\nexport const purposes = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"inform\",\n \"name\": \"Inform\",\n \"summary\": \"Give the audience clear context, facts, or status without asking for a decision.\",\n \"description\": \"Use when the deck needs to make the audience aware of current state, background, or findings. Prioritize clarity, completeness, and accurate framing over persuasion.\",\n \"outcome\": \"The audience understands the situation and can repeat the important facts.\",\n \"successCriteria\": [\n \"Audience can summarize the key facts\",\n \"No immediate decision is required\",\n \"Follow-up questions are about implications, not basic context\"\n ],\n \"recommendedNarratives\": [\n \"status-update\",\n \"focus\",\n \"educate\"\n ],\n \"recommendedTones\": [\n \"formal\",\n \"conversational\"\n ],\n \"tags\": [\n \"awareness\",\n \"context\",\n \"status\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"decide\",\n \"name\": \"Drive a Decision\",\n \"summary\": \"Frame options, evidence, tradeoffs, and a recommendation so the audience can choose.\",\n \"description\": \"Use when the deck exists to get a yes/no, select among options, approve a recommendation, or resolve ambiguity. Lead with the decision needed and make the ask explicit.\",\n \"outcome\": \"The audience makes or authorizes a clear decision.\",\n \"successCriteria\": [\n \"Decision owner understands the options\",\n \"Recommendation and tradeoffs are explicit\",\n \"The final ask is concrete\"\n ],\n \"recommendedNarratives\": [\n \"scqa\",\n \"board-meeting\",\n \"project-proposal\"\n ],\n \"recommendedTones\": [\n \"formal\",\n \"authoritative\",\n \"persuasive\"\n ],\n \"tags\": [\n \"decision\",\n \"recommendation\",\n \"approval\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"align\",\n \"name\": \"Align\",\n \"summary\": \"Create shared understanding and commitment across people who need to move together.\",\n \"description\": \"Use when stakeholders need a common view of goals, constraints, priorities, or responsibilities. Emphasize shared language, explicit tradeoffs, and next steps.\",\n \"outcome\": \"Stakeholders leave with the same priorities and operating assumptions.\",\n \"successCriteria\": [\n \"Teams agree on priorities\",\n \"Open disagreements are surfaced\",\n \"Owners and next steps are clear\"\n ],\n \"recommendedNarratives\": [\n \"strategic-narrative\",\n \"transformation-arc\",\n \"business-review\"\n ],\n \"recommendedTones\": [\n \"conversational\",\n \"authoritative\"\n ],\n \"tags\": [\n \"alignment\",\n \"strategy\",\n \"coordination\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"persuade\",\n \"name\": \"Persuade\",\n \"summary\": \"Change belief or win support for a specific argument, idea, or recommendation.\",\n \"description\": \"Use when the audience may be skeptical or undecided. Build a crisp thesis, support it with evidence, address objections, and end with a clear action.\",\n \"outcome\": \"The audience accepts the argument or supports the recommendation.\",\n \"successCriteria\": [\n \"Main thesis is memorable\",\n \"Evidence supports the argument\",\n \"Likely objections are handled\"\n ],\n \"recommendedNarratives\": [\n \"problem-solution\",\n \"persuasive-sales\",\n \"golden-circle\"\n ],\n \"recommendedTones\": [\n \"persuasive\",\n \"authoritative\"\n ],\n \"tags\": [\n \"argument\",\n \"support\",\n \"belief-change\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"educate\",\n \"name\": \"Educate\",\n \"summary\": \"Teach a concept, process, product, or domain so the audience can use it correctly.\",\n \"description\": \"Use when the primary job is learning. Structure around concepts, examples, practice, and checks for understanding rather than persuasion or reporting.\",\n \"outcome\": \"The audience understands the material well enough to apply it.\",\n \"successCriteria\": [\n \"Definitions and examples are clear\",\n \"Audience can apply the concept\",\n \"Complexity builds progressively\"\n ],\n \"recommendedNarratives\": [\n \"educate\",\n \"focus\",\n \"company-intro\"\n ],\n \"recommendedTones\": [\n \"conversational\",\n \"technical\"\n ],\n \"tags\": [\n \"learning\",\n \"training\",\n \"enablement\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"report\",\n \"name\": \"Report\",\n \"summary\": \"Summarize performance, progress, or findings with enough context to interpret results.\",\n \"description\": \"Use for business reviews, project updates, research summaries, and recurring operating cadences. Prioritize the metric, the movement, the reason, and the implication.\",\n \"outcome\": \"The audience understands what happened, why it happened, and what it means.\",\n \"successCriteria\": [\n \"Key metrics are easy to scan\",\n \"Variance and drivers are explained\",\n \"Implications are explicit\"\n ],\n \"recommendedNarratives\": [\n \"qbr\",\n \"business-review\",\n \"status-update\",\n \"survey-analysis\"\n ],\n \"recommendedTones\": [\n \"formal\",\n \"technical\"\n ],\n \"tags\": [\n \"performance\",\n \"progress\",\n \"findings\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"pitch\",\n \"name\": \"Pitch\",\n \"summary\": \"Present an opportunity and ask for investment, approval, partnership, or sponsorship.\",\n \"description\": \"Use when the deck needs to create interest and move a high-stakes audience toward backing the opportunity. Lead with the opportunity, prove credibility, and make the ask concrete.\",\n \"outcome\": \"The audience agrees to invest, sponsor, approve, or continue the conversation.\",\n \"successCriteria\": [\n \"Opportunity is clear\",\n \"Evidence builds confidence\",\n \"Ask and next step are explicit\"\n ],\n \"recommendedNarratives\": [\n \"pitch-deck\",\n \"venture-pitch\",\n \"golden-circle\"\n ],\n \"recommendedTones\": [\n \"persuasive\",\n \"authoritative\",\n \"inspirational\"\n ],\n \"tags\": [\n \"fundraising\",\n \"opportunity\",\n \"ask\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"sell\",\n \"name\": \"Sell\",\n \"summary\": \"Move a buyer or evaluator toward purchase, adoption, renewal, or expansion.\",\n \"description\": \"Use for customer-facing decks where the goal is commercial movement. Focus on pain, value, proof, differentiation, and the next buying step.\",\n \"outcome\": \"The buyer advances to the next step in the commercial process.\",\n \"successCriteria\": [\n \"Customer pain is named clearly\",\n \"Value is tied to customer outcomes\",\n \"Next commercial step is clear\"\n ],\n \"recommendedNarratives\": [\n \"persuasive-sales\",\n \"problem-solution\",\n \"challenge-resolution\"\n ],\n \"recommendedTones\": [\n \"persuasive\",\n \"conversational\"\n ],\n \"tags\": [\n \"sales\",\n \"customer\",\n \"commercial\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"id\": \"plan\",\n \"name\": \"Plan\",\n \"summary\": \"Establish a roadmap, operating plan, or sequence of actions with owners and next steps.\",\n \"description\": \"Use when the deck should turn strategy into coordinated action. Make sequencing, ownership, dependencies, risks, and checkpoints visible.\",\n \"outcome\": \"The audience understands the plan and accepts the next actions.\",\n \"successCriteria\": [\n \"Milestones and owners are clear\",\n \"Dependencies and risks are visible\",\n \"Next steps can be executed\"\n ],\n \"recommendedNarratives\": [\n \"project-proposal\",\n \"capacity-planning\",\n \"strategic-advisory\"\n ],\n \"recommendedTones\": [\n \"authoritative\",\n \"technical\"\n ],\n \"tags\": [\n \"roadmap\",\n \"execution\",\n \"planning\"\n ]\n }\n] as const;\n\nexport const tones = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"id\": \"formal\",\n \"name\": \"Formal\",\n \"summary\": \"Polished, restrained voice for board, investor, and regulator audiences.\",\n \"description\": \"Authoritative without being cold. Use third-person constructions, full sentences, and concrete numbers. Avoid hedges and humor that depend on shared in-jokes; rely on clarity and precision to land.\",\n \"voiceCues\": [\n \"Use third person and the corporate 'we' sparingly.\",\n \"Lead with the recommendation, then evidence.\",\n \"Quote concrete numbers; avoid round-tripping ranges.\",\n \"Prefer full sentences to bullet fragments on key claims.\"\n ],\n \"avoid\": [\n \"Slang, idioms, or in-jokes.\",\n \"Hedging language ('maybe', 'sort of', 'I think').\",\n \"Marketing superlatives ('world-class', 'best-in-class').\",\n \"Excessive emoji or exclamation points.\"\n ],\n \"samplePhrases\": [\n \"Q4 revenue grew 18% year over year, led by enterprise expansion.\",\n \"We recommend approving the Series B raise at $30M.\",\n \"Net retention was 124%; gross retention was 96%.\"\n ],\n \"recommendedNarratives\": [\n \"board-meeting\",\n \"qbr\",\n \"scqa\",\n \"strategic-narrative\"\n ],\n \"tags\": [\n \"business\",\n \"executive\",\n \"formal\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"id\": \"casual\",\n \"name\": \"Casual\",\n \"summary\": \"Warm, plain-spoken voice for internal updates and customer storytelling.\",\n \"description\": \"Friendly and direct. Use first- and second-person freely; favor short sentences and contractions. Numbers are still welcome — they just sit alongside human-scale framing rather than leading.\",\n \"voiceCues\": [\n \"Use first and second person.\",\n \"Use contractions ('we're', 'it's', 'don't').\",\n \"Favor short sentences and active voice.\",\n \"Frame metrics with a human-scale anchor when possible.\"\n ],\n \"avoid\": [\n \"Stiff corporate jargon.\",\n \"Long compound sentences.\",\n \"Overuse of superlatives.\",\n \"Bureaucratic passive voice.\"\n ],\n \"samplePhrases\": [\n \"We shipped the new dashboard last week, and customers are already moving over.\",\n \"Here's where we ended up on hiring this quarter.\",\n \"It's been a busy month — here's the recap.\"\n ],\n \"recommendedNarratives\": [\n \"weekly-progress\",\n \"status-update\",\n \"company-intro\",\n \"focus\"\n ],\n \"tags\": [\n \"internal\",\n \"warm\",\n \"conversational\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"id\": \"inspirational\",\n \"name\": \"Inspirational\",\n \"summary\": \"Aspirational, narrative-driven voice for keynotes, founders, and rallying cries.\",\n \"description\": \"Reach for shared belief and possibility, then ground it in something concrete. Use vivid imagery and rhythm; avoid collapsing into hype by always pairing aspiration with a real anchor.\",\n \"voiceCues\": [\n \"Open with belief; close with action.\",\n \"Use rhythm — paired phrases, repetition, deliberate beats.\",\n \"Pair every aspirational claim with a concrete proof point.\",\n \"Speak in present tense to make the future feel inevitable.\"\n ],\n \"avoid\": [\n \"Empty hype without evidence.\",\n \"Stacked superlatives ('the very best, world-changing, revolutionary').\",\n \"Cynical or hedging language.\",\n \"Dense data tables — push numbers into supporting slides.\"\n ],\n \"samplePhrases\": [\n \"We're building the runtime that makes agents feel instant.\",\n \"When latency disappears, what becomes possible?\",\n \"The next decade of software belongs to teams who treat speed as a feature.\"\n ],\n \"recommendedNarratives\": [\n \"golden-circle\",\n \"conference-talk\",\n \"venture-pitch\",\n \"company-intro\"\n ],\n \"tags\": [\n \"motivational\",\n \"keynote\",\n \"founder\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"id\": \"technical\",\n \"name\": \"Technical\",\n \"summary\": \"Precise, evidence-led voice for engineering, research, and product-detail audiences.\",\n \"description\": \"Lead with the question or claim, then walk through the mechanism and the numbers. Use exact terminology; assume the audience can handle and prefers it. Diagrams, tables, and benchmarks are first-class.\",\n \"voiceCues\": [\n \"State the claim, then the mechanism, then the evidence.\",\n \"Use exact terminology — don't soften technical terms for general readability.\",\n \"Quote benchmarks with conditions (cold/warm, p50/p95/p99, dataset, hardware).\",\n \"Prefer diagrams and tables over prose paragraphs for structural information.\"\n ],\n \"avoid\": [\n \"Vague claims ('much faster', 'better', 'easier').\",\n \"Marketing framing without supporting data.\",\n \"Glossing over caveats and tradeoffs.\",\n \"Casual register that obscures precision.\"\n ],\n \"samplePhrases\": [\n \"p95 inference latency is 38ms on a single A100, down from 312ms on the prior runtime.\",\n \"We replaced the streaming serializer with a batched protobuf path; throughput rose 4.2× under load.\",\n \"The result holds for context windows up to 32k tokens; beyond that, see appendix B.\"\n ],\n \"recommendedNarratives\": [\n \"challenge-resolution\",\n \"innovation\",\n \"conference-talk\",\n \"status-update\"\n ],\n \"tags\": [\n \"technical\",\n \"engineering\",\n \"research\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"id\": \"persuasive\",\n \"name\": \"Persuasive\",\n \"summary\": \"Argument-led voice for sales, fundraising, and recommendation-driven decks.\",\n \"description\": \"Frame every section as an argument that builds toward an ask. Surface objections, answer them, and pair claims with the strongest available proof. Read more like a memo than a report.\",\n \"voiceCues\": [\n \"Lead each section with the claim it's making.\",\n \"Surface the strongest counter-argument and address it.\",\n \"Pair every claim with proof — customer, benchmark, or analyst.\",\n \"End on a clear ask with named owner and date.\"\n ],\n \"avoid\": [\n \"Buried leads.\",\n \"Symmetrical 'on one hand / on the other' framing without a verdict.\",\n \"Information for its own sake — every chart should advance the argument.\",\n \"Passive endings without a clear ask.\"\n ],\n \"samplePhrases\": [\n \"Adopting our runtime cuts inference latency 8× while preserving accuracy.\",\n \"The most common objection — 'we'll be locked in' — is addressed by our open OPF spec.\",\n \"We're asking for a $30M Series B to ship into the enterprise tier.\"\n ],\n \"recommendedNarratives\": [\n \"pitch-deck\",\n \"venture-pitch\",\n \"early-startup-pitch\",\n \"persuasive-sales\",\n \"project-proposal\"\n ],\n \"tags\": [\n \"sales\",\n \"pitch\",\n \"argumentative\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"id\": \"authoritative\",\n \"name\": \"Authoritative\",\n \"summary\": \"Expert, declarative voice for category-defining and analyst-style decks.\",\n \"description\": \"Adopt the perspective of someone who's seen the full landscape and is willing to call it. Use plain declaratives — strong claims with the receipts to back them. Step back from internal-only context and frame in terms the wider industry would recognize.\",\n \"voiceCues\": [\n \"Use declarative sentences; trust the reader to follow.\",\n \"Frame in industry-wide terms, not company-internal language.\",\n \"Cite outside sources — analysts, benchmarks, public peers.\",\n \"Take a position; avoid 'on the other hand' symmetry without a verdict.\"\n ],\n \"avoid\": [\n \"Hedging ('we believe', 'in our view') unless deliberately contrasting.\",\n \"Internal jargon and unexplained acronyms.\",\n \"First-person plural overload — speak for the work, not the team.\",\n \"Tentative phrasing that softens strong claims.\"\n ],\n \"samplePhrases\": [\n \"Agent latency is the bottleneck of the next AI cycle.\",\n \"Three categories will absorb 80% of enterprise budget; we're built for the second.\",\n \"The benchmarks are public; the gap holds across every comparable workload.\"\n ],\n \"recommendedNarratives\": [\n \"strategic-narrative\",\n \"pitch-deck\",\n \"conference-talk\",\n \"marketing-strategy\"\n ],\n \"tags\": [\n \"industry\",\n \"category\",\n \"analyst\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"id\": \"conversational\",\n \"name\": \"Conversational\",\n \"summary\": \"Direct, dialog-style voice for podcasts, fireside chats, and small-group reviews.\",\n \"description\": \"Sound like one half of a real conversation. Ask questions on the slide and answer them; keep paragraphs short; lean into examples over abstractions. Useful when the deck is meant to support a discussion rather than to lecture.\",\n \"voiceCues\": [\n \"Ask a question on the slide, then answer it on the next.\",\n \"Use second person — speak to the room, not at it.\",\n \"Lean on stories and concrete examples over abstract framing.\",\n \"Keep each idea to one short paragraph; let the dialog do the rest.\"\n ],\n \"avoid\": [\n \"Lecture-style monologue across many bullets.\",\n \"Hedge-laden academic phrasing.\",\n \"Stuffing slides — leave room for the discussion.\",\n \"Inside-baseball references the room may not share.\"\n ],\n \"samplePhrases\": [\n \"Why now? Two things changed in the last six months.\",\n \"Here's the part that surprised us — and what we did about it.\",\n \"If you take one thing from this section, take this.\"\n ],\n \"recommendedNarratives\": [\n \"focus\",\n \"company-intro\",\n \"weekly-progress\",\n \"performance-review\"\n ],\n \"tags\": [\n \"dialog\",\n \"podcast\",\n \"discussion\"\n ]\n }\n] as const;\n\nexport const themes = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-theme/v1\",\n \"id\": \"bold\",\n \"name\": \"Bold\",\n \"background\": {\n \"type\": \"theme\",\n \"slot\": \"light1\"\n },\n \"colorScheme\": \"burnt-orange\",\n \"description\": \"A vibrant, high-energy theme with bold colors and a dynamic, attention-grabbing style. Great for presentations that need to stand out.\",\n \"fontScheme\": \"impact\",\n \"dimensions\": \"widescreen\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-theme/v1\",\n \"id\": \"classic\",\n \"name\": \"Classic\",\n \"background\": {\n \"type\": \"theme\",\n \"slot\": \"light1\"\n },\n \"colorScheme\": \"cool-horizon\",\n \"description\": \"A timeless, clean, and versatile theme with balanced color contrasts and classic typography. Ideal for professional, readable presentations.\",\n \"fontScheme\": \"tenorite\",\n \"dimensions\": \"widescreen\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-theme/v1\",\n \"id\": \"dark\",\n \"name\": \"Dark\",\n \"background\": {\n \"type\": \"theme\",\n \"slot\": \"dark1\"\n },\n \"colorScheme\": \"boost\",\n \"description\": \"A rich dark-mode theme with bold contrast and modern style. Great for moody, high-impact presentations.\",\n \"fontScheme\": \"seaford\",\n \"dimensions\": \"widescreen\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-theme/v1\",\n \"id\": \"minimal\",\n \"name\": \"Minimal\",\n \"background\": {\n \"type\": \"theme\",\n \"slot\": \"dark2\"\n },\n \"colorScheme\": \"cool-horizon\",\n \"description\": \"A clean, minimalistic theme with a focus on simplicity and readability. Ideal for professional, straightforward presentations.\",\n \"fontScheme\": \"aptos\",\n \"dimensions\": \"widescreen\"\n }\n] as const;\n\nexport const layouts = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"blank\",\n \"name\": \"Blank\",\n \"placeholders\": []\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"chart-1x\",\n \"name\": \"Chart 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"chart\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"chart-2x\",\n \"name\": \"Chart 2x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"chart\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"chart\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"chart-3x\",\n \"name\": \"Chart 3x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"chart\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"chart\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"chart\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"code-1x\",\n \"name\": \"Code 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"code\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"image-1x\",\n \"name\": \"Image 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"picture\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"image-2x\",\n \"name\": \"Image 2x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"picture\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"picture\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"image-3x\",\n \"name\": \"Image 3x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"picture\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"picture\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"picture\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"image-bleed\",\n \"name\": \"Image Bleed\",\n \"placeholders\": [\n {\n \"type\": \"picture\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"list-1x\",\n \"name\": \"List 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"list\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"list-2x\",\n \"name\": \"List 2x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"list-3x\",\n \"name\": \"List 3x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"list-4x\",\n \"name\": \"List 4x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"list-5x\",\n \"name\": \"List 5x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"list-6x\",\n \"name\": \"List 6x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n },\n {\n \"type\": \"list\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"media-1x\",\n \"name\": \"Media 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"media\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"number-1x\",\n \"name\": \"Number 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"number-2x\",\n \"name\": \"Number 2x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"number-3x\",\n \"name\": \"Number 3x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"number-4x\",\n \"name\": \"Number 4x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"number-5x\",\n \"name\": \"Number 5x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"number-6x\",\n \"name\": \"Number 6x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"table-1x\",\n \"name\": \"Table 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"table\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"text-1x\",\n \"name\": \"Text 1x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"text-2x\",\n \"name\": \"Text 2x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"text-3x\",\n \"name\": \"Text 3x\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n },\n {\n \"type\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"title\",\n \"name\": \"Title\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"id\": \"title-subtitle\",\n \"name\": \"Title Subtitle\",\n \"placeholders\": [\n {\n \"type\": \"title\"\n },\n {\n \"type\": \"subtitle\"\n }\n ]\n }\n] as const;\n\nexport const chartTypes = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-bullet-bar\",\n \"name\": \"100PCT_BULLET_BAR\",\n \"label\": \"100% Bullet Bar\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet bars combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"ValueCategory\",\n \"Alpha\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 1,\n \"seriesGroups\": 2,\n \"slideNumber\": 57,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Alpha\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\",\n \"Actual %\",\n \"Target %\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 61,\n 95\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-bullet-bar-2x\",\n \"name\": \"100PCT_BULLET_BAR_2X\",\n \"label\": \"100% Bullet Bar 2x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet bars combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"ValueCategory\",\n \"Alpha\",\n \"Beta\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 2,\n \"seriesGroups\": 2,\n \"slideNumber\": 58,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$I$3\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Alpha\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Beta\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\",\n \"Actual %\",\n \"Target %\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 75,\n 97\n ],\n [\n \"Metric 2\",\n 70,\n 84\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-bullet-bar-3x\",\n \"name\": \"100PCT_BULLET_BAR_3X\",\n \"label\": \"100% Bullet Bar 3x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet bars combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"ValueCategory\",\n \"Alpha\",\n \"Beta\",\n \"Gamma\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 3,\n \"seriesGroups\": 2,\n \"slideNumber\": 59,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$I$4\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Alpha\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Beta\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Gamma\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\",\n \"Actual %\",\n \"Target %\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 95,\n 75\n ],\n [\n \"Metric 2\",\n 95,\n 88\n ],\n [\n \"Metric 3\",\n 65,\n 82\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-bullet-column\",\n \"name\": \"100PCT_BULLET_COLUMN\",\n \"label\": \"100% Bullet Column\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet columns combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"ValueCategory\",\n \"This Year\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 1,\n \"seriesGroups\": 2,\n \"slideNumber\": 51,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"This Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\",\n \"Actual %\",\n \"Target %\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 60,\n 96\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-bullet-column-2x\",\n \"name\": \"100PCT_BULLET_COLUMN_2X\",\n \"label\": \"100% Bullet Colum 2x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet columns combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"ValueCategory\",\n \"Last Year\",\n \"This Year\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 2,\n \"seriesGroups\": 2,\n \"slideNumber\": 52,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$3\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Last Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"This Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\",\n \"Actual %\",\n \"Target %\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 94,\n 89\n ],\n [\n \"Metric 2\",\n 86,\n 76\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-bullet-column-3x\",\n \"name\": \"100PCT_BULLET_COLUMN_3X\",\n \"label\": \"100% Bullet Column 3x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet columns combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"ValueCategory\",\n \"Two Years Ago\",\n \"Last Year\",\n \"This Year\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 3,\n \"seriesGroups\": 2,\n \"slideNumber\": 53,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$4\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Two Years Ago\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Last Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"This Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\",\n \"Actual %\",\n \"Target %\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 72,\n 91\n ],\n [\n \"Metric 2\",\n 83,\n 94\n ],\n [\n \"Metric 3\",\n 91,\n 95\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-progress-bar\",\n \"name\": \"100PCT_PROGRESS_BAR\",\n \"label\": \"100% Progress Bar\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"percentStacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Category\",\n \"Target\",\n \"Actual\"\n ],\n \"group\": \"Bar\",\n \"groupSort\": 4,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 27,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$5\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Target\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Actual\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Remainder\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Progress\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n }\n ],\n \"helperColumns\": [\n \"Remainder\",\n \"Progress\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Target\",\n 93,\n 90,\n 92,\n 89,\n 97,\n 84\n ],\n [\n \"Actual\",\n 62,\n 76,\n 92,\n 74,\n 93,\n 61\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-stacked-area-2x\",\n \"name\": \"100PCT_STACKED_AREA_2X\",\n \"label\": \"100% Stacked Area 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"areaChart\",\n \"grouping\": \"percentStacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Area\",\n \"groupSort\": 5,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 31,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 51588,\n 68008,\n 90301,\n 76162,\n 65933,\n 81810,\n 68446,\n 30861,\n 72216,\n 68991,\n 43972,\n 42406\n ],\n [\n \"Value 2\",\n 93579,\n 46347,\n 78327,\n 73517,\n 92149,\n 41358,\n 45992,\n 67654,\n 20155,\n 47450,\n 40735,\n 45614\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-stacked-area-3x\",\n \"name\": \"100PCT_STACKED_AREA_3X\",\n \"label\": \"100% Stacked Area 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"areaChart\",\n \"grouping\": \"percentStacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Area\",\n \"groupSort\": 5,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 32,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 54020,\n 51904,\n 80798,\n 20561,\n 28136,\n 29769,\n 40311,\n 60205,\n 30028,\n 38043,\n 18418,\n 64377\n ],\n [\n \"Value 2\",\n 63424,\n 53369,\n 81121,\n 71069,\n 64496,\n 18161,\n 37110,\n 65069,\n 61049,\n 86556,\n 12560,\n 85456\n ],\n [\n \"Value 3\",\n 59857,\n 72518,\n 10772,\n 56105,\n 49139,\n 61116,\n 64921,\n 80545,\n 81582,\n 89069,\n 38906,\n 73993\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-stacked-bar-2x\",\n \"name\": \"100PCT_STACKED_BAR_2X\",\n \"label\": \"100% Stacked Bar 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"percentStacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Bar\",\n \"groupSort\": 4,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 25,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 66959,\n 55309,\n 51114,\n 67199,\n 89457,\n 77033\n ],\n [\n \"Value 2\",\n 25157,\n 60488,\n 85574,\n 34914,\n 43386,\n 15817\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-stacked-bar-3x\",\n \"name\": \"100PCT_STACKED_BAR_3X\",\n \"label\": \"100% Stacked Bar 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"percentStacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Bar\",\n \"groupSort\": 4,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 26,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 67154,\n 10221,\n 78146,\n 80575,\n 97900,\n 35825\n ],\n [\n \"Value 2\",\n 57739,\n 66531,\n 19171,\n 97062,\n 53279,\n 91678\n ],\n [\n \"Value 3\",\n 51145,\n 96951,\n 26334,\n 49363,\n 76469,\n 50538\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-stacked-column-2x\",\n \"name\": \"100PCT_STACKED_COLUMN_2X\",\n \"label\": \"100% Stacked Column 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"percentStacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Column\",\n \"groupSort\": 1,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 5,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 20458,\n 40512,\n 23238,\n 59823,\n 46434,\n 69429,\n 93320,\n 57819\n ],\n [\n \"Value 2\",\n 31319,\n 58520,\n 56566,\n 37460,\n 97841,\n 44993,\n 99593,\n 94939\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"100pct-stacked-column-3x\",\n \"name\": \"100PCT_STACKED_COLUMN_3X\",\n \"label\": \"100% Stacked Column 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"percentStacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Column\",\n \"groupSort\": 1,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 6,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 19358,\n 89840,\n 93227,\n 32431,\n 80010,\n 42087,\n 31417,\n 70589\n ],\n [\n \"Value 2\",\n 59735,\n 45382,\n 93886,\n 83000,\n 38785,\n 99733,\n 52504,\n 17331\n ],\n [\n \"Value 3\",\n 40021,\n 14207,\n 51347,\n 62581,\n 45093,\n 18675,\n 37653,\n 84341\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"area\",\n \"name\": \"AREA\",\n \"label\": \"Area\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"areaChart\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Area\",\n \"groupSort\": 5,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 28,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value\",\n 90676,\n 84593,\n 49446,\n 63225,\n 81819,\n 10053,\n 49829,\n 47606,\n 37549,\n 66346,\n 86019,\n 89516\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"australia\",\n \"name\": \"AUSTRALIA\",\n \"label\": \"Australia\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"mapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"State/Territory\",\n \"Value\"\n ],\n \"group\": \"Map\",\n \"groupSort\": 12,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 70,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"State/Territory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"State/Territory\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value\",\n 83889,\n 85952,\n 68838,\n 99277,\n 83989,\n 94278,\n 93269,\n 91857\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"bar\",\n \"name\": \"BAR\",\n \"label\": \"Bar\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"clustered\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Bar\",\n \"groupSort\": 4,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 21,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Value\",\n 30257,\n 41029,\n 31299,\n 33206,\n 64040,\n 13248\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"box-and-whisker\",\n \"name\": \"BOX_AND_WHISKER\",\n \"label\": \"Box & Whisker\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"boxWhiskerChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 22,\n \"columns\": [\n \"Category\",\n \"Series1\"\n ],\n \"group\": \"Other\",\n \"groupSort\": 13,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 71,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$W$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Cat 1\",\n \"Cat 2\",\n \"Cat 3\",\n \"Cat 4\",\n \"Cat 5\",\n \"Cat 6\",\n \"Cat 7\",\n \"Cat 8\",\n \"Cat 9\",\n \"Cat 10\",\n \"Cat 11\",\n \"Cat 12\",\n \"Cat 13\",\n \"Cat 14\",\n \"Cat 15\",\n \"Cat 16\",\n \"Cat 17\",\n \"Cat 18\",\n \"Cat 19\",\n \"Cat 20\",\n \"Cat 21\",\n \"Cat 22\"\n ],\n \"rows\": [\n [\n \"Series1\",\n 52363,\n 92210,\n 51436,\n 29786,\n 67640,\n 18950,\n 71462,\n 67961,\n 92756,\n 49691,\n 46002,\n 87518,\n 17362,\n 56129,\n 76497,\n 19724,\n 50685,\n 70521,\n 69233,\n 14929,\n 17456,\n 58331\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"box-and-whisker-2x\",\n \"name\": \"BOX_AND_WHISKER_2X\",\n \"label\": \"Box & Whisker 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"boxWhiskerChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 22,\n \"columns\": [\n \"Category\",\n \"Series1\",\n \"Series2\"\n ],\n \"group\": \"Other\",\n \"groupSort\": 13,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 72,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$W$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Series2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Cat 1\",\n \"Cat 2\",\n \"Cat 3\",\n \"Cat 4\",\n \"Cat 5\",\n \"Cat 6\",\n \"Cat 7\",\n \"Cat 8\",\n \"Cat 9\",\n \"Cat 10\",\n \"Cat 11\",\n \"Cat 12\",\n \"Cat 13\",\n \"Cat 14\",\n \"Cat 15\",\n \"Cat 16\",\n \"Cat 17\",\n \"Cat 18\",\n \"Cat 19\",\n \"Cat 20\",\n \"Cat 21\",\n \"Cat 22\"\n ],\n \"rows\": [\n [\n \"Series1\",\n 47627,\n 20057,\n 94497,\n 21835,\n 90610,\n 87867,\n 76462,\n 60394,\n 70648,\n 86064,\n 82655,\n 15376,\n 68947,\n 84928,\n 95437,\n 34672,\n 52143,\n 89299,\n 72341,\n 75715,\n 29773,\n 18109\n ],\n [\n \"Series2\",\n 69050,\n 23566,\n 55015,\n 21053,\n 76132,\n 94689,\n 32617,\n 15130,\n 42472,\n 67377,\n 67595,\n 78690,\n 78517,\n 89928,\n 30807,\n 57696,\n 58870,\n 47079,\n 60779,\n 63578,\n 54350,\n 98984\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"box-and-whisker-3x\",\n \"name\": \"BOX_AND_WHISKER_3X\",\n \"label\": \"Box & Whisker 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"boxWhiskerChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 22,\n \"columns\": [\n \"Category\",\n \"Series1\",\n \"Series2\",\n \"Series3\"\n ],\n \"group\": \"Other\",\n \"groupSort\": 13,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 73,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$W$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Series2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Series3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Cat 1\",\n \"Cat 2\",\n \"Cat 3\",\n \"Cat 4\",\n \"Cat 5\",\n \"Cat 6\",\n \"Cat 7\",\n \"Cat 8\",\n \"Cat 9\",\n \"Cat 10\",\n \"Cat 11\",\n \"Cat 12\",\n \"Cat 13\",\n \"Cat 14\",\n \"Cat 15\",\n \"Cat 16\",\n \"Cat 17\",\n \"Cat 18\",\n \"Cat 19\",\n \"Cat 20\",\n \"Cat 21\",\n \"Cat 22\"\n ],\n \"rows\": [\n [\n \"Series1\",\n 88366,\n 16863,\n 92691,\n 94843,\n 53863,\n 18639,\n 53213,\n 22387,\n 83133,\n 98916,\n 60667,\n 47243,\n 43029,\n 96057,\n 88997,\n 29709,\n 53694,\n 20682,\n 86380,\n 96980,\n 28537,\n 55851\n ],\n [\n \"Series2\",\n 50662,\n 95990,\n 96787,\n 61374,\n 26901,\n 87993,\n 21104,\n 50577,\n 83259,\n 59372,\n 94343,\n 53054,\n 26750,\n 97833,\n 99838,\n 78995,\n 22249,\n 94675,\n 97878,\n 65496,\n 76648,\n 57425\n ],\n [\n \"Series3\",\n 12389,\n 57526,\n 50483,\n 33627,\n 38074,\n 54791,\n 73736,\n 35166,\n 39693,\n 28030,\n 30308,\n 20114,\n 48770,\n 23256,\n 76543,\n 80748,\n 79013,\n 14947,\n 96760,\n 54140,\n 91006,\n 27176\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"bullet-bar\",\n \"name\": \"BULLET_BAR\",\n \"label\": \"Bullet Bar\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet bars combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"ValueCategory\",\n \"Alpha\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 1,\n \"seriesGroups\": 2,\n \"slideNumber\": 54,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$G$2\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Alpha\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 88,\n 99\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"bullet-bar-2x\",\n \"name\": \"BULLET_BAR_2X\",\n \"label\": \"Bullet Bar 2x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet bars combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"ValueCategory\",\n \"Alpha\",\n \"Beta\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 2,\n \"seriesGroups\": 2,\n \"slideNumber\": 55,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$G$3\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Alpha\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Beta\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 63,\n 81\n ],\n [\n \"Metric 2\",\n 77,\n 92\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"bullet-bar-3x\",\n \"name\": \"BULLET_BAR_3X\",\n \"label\": \"Bullet Bar 3x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet bars combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"ValueCategory\",\n \"Alpha\",\n \"Beta\",\n \"Gamma\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 3,\n \"seriesGroups\": 2,\n \"slideNumber\": 56,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$G$4\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Alpha\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Beta\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Gamma\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 68,\n 84\n ],\n [\n \"Metric 2\",\n 88,\n 97\n ],\n [\n \"Metric 3\",\n 91,\n 78\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"bullet-column\",\n \"name\": \"BULLET_COLUMN\",\n \"label\": \"Bullet Column\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet columns combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"ValueCategory\",\n \"This Year\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 1,\n \"seriesGroups\": 3,\n \"slideNumber\": 48,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$G$2\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"This Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 85,\n 99\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"bullet-column-2x\",\n \"name\": \"BULLET_COLUMN_2X\",\n \"label\": \"Bullet Column 2x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet columns combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"ValueCategory\",\n \"Last Year\",\n \"This Year\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 2,\n \"seriesGroups\": 3,\n \"slideNumber\": 49,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$G$3\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Last Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"This Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 95,\n 76\n ],\n [\n \"Metric 2\",\n 89,\n 77\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"bullet-column-3x\",\n \"name\": \"BULLET_COLUMN_3X\",\n \"label\": \"Bullet Column 3x\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Bullet columns combine threshold bands with a value marker.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"ValueCategory\",\n \"Two Years Ago\",\n \"Last Year\",\n \"This Year\"\n ],\n \"group\": \"Bullet\",\n \"groupSort\": 10,\n \"series\": 3,\n \"seriesGroups\": 3,\n \"slideNumber\": 50,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$G$4\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"ValueCategory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Two Years Ago\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Last Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"This Year\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"helperColumns\": [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"ValueCategory\",\n \"Actual\",\n \"Target\"\n ],\n \"rows\": [\n [\n \"Metric 1\",\n 80,\n 83\n ],\n [\n \"Metric 2\",\n 80,\n 78\n ],\n [\n \"Metric 3\",\n 85,\n 91\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"canada\",\n \"name\": \"CANADA\",\n \"label\": \"Canada\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"mapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 13,\n \"columns\": [\n \"Province/Territory\",\n \"Value\"\n ],\n \"group\": \"Map\",\n \"groupSort\": 12,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 68,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$N$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Province/Territory\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Province/Territory\",\n \"Cat 1\",\n \"Cat 2\",\n \"Cat 3\",\n \"Cat 4\",\n \"Cat 5\",\n \"Cat 6\",\n \"Cat 7\",\n \"Cat 8\",\n \"Cat 9\",\n \"Cat 10\",\n \"Cat 11\",\n \"Cat 12\",\n \"Cat 13\"\n ],\n \"rows\": [\n [\n \"Value\",\n 56019,\n 94599,\n 29358,\n 40968,\n 23474,\n 29194,\n 43550,\n 35856,\n 32740,\n 88957,\n 30036,\n 95918,\n 19876\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"clustered-bar-2x\",\n \"name\": \"CLUSTERED_BAR_2X\",\n \"label\": \"Clustered Bar 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"clustered\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Bar\",\n \"groupSort\": 4,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 22,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 33509,\n 53540,\n 63964,\n 97806,\n 42527,\n 44970\n ],\n [\n \"Value 2\",\n 30866,\n 24168,\n 60140,\n 15075,\n 71694,\n 39154\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"clustered-column\",\n \"name\": \"CLUSTERED_COLUMN\",\n \"label\": \"Clustered Column\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"clustered\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Column\",\n \"groupSort\": 1,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 2,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 98696,\n 81482,\n 21395,\n 87397,\n 65302,\n 14165,\n 13905,\n 22280\n ],\n [\n \"Value 2\",\n 38657,\n 40495,\n 76237,\n 88907,\n 13478,\n 83563,\n 36062,\n 95181\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"column\",\n \"name\": \"COLUMN\",\n \"label\": \"Column\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"clustered\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Column\",\n \"groupSort\": 1,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 1,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value\",\n 93810,\n 24592,\n 13278,\n 46048,\n 42098,\n 39256,\n 28289,\n 23434\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"dot-plot\",\n \"name\": \"DOT_PLOT\",\n \"label\": \"Dot Plot\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\",\n \"notes\": \"Dot plots render as scatter markers in Open XML.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"2023\"\n ],\n \"group\": \"XY (Scatter)\",\n \"groupSort\": 6,\n \"series\": 1,\n \"seriesGroups\": 2,\n \"slideNumber\": 34,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"2023\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Spacing 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"helperColumns\": [\n \"Spacing 1\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series\",\n \"Item 1\",\n \"Item 2\",\n \"Item 3\",\n \"Item 4\",\n \"Item 5\",\n \"Item 6\",\n \"Item 7\",\n \"Item 8\"\n ],\n \"rows\": [\n [\n \"2020\",\n 691807,\n 128418,\n 188025,\n 549433,\n 242291,\n 584125,\n 290556,\n 152727\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"dot-plot-2x\",\n \"name\": \"DOT_PLOT_2X\",\n \"label\": \"Dot Plot 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\",\n \"notes\": \"Dot plots render as scatter markers in Open XML.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"2023\",\n \"2024\"\n ],\n \"group\": \"XY (Scatter)\",\n \"groupSort\": 6,\n \"series\": 2,\n \"seriesGroups\": 2,\n \"slideNumber\": 35,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$4\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"2023\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"2024\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Spacing 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Spacing 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"helperColumns\": [\n \"Spacing 1\",\n \"Spacing 2\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series\",\n \"Item 1\",\n \"Item 2\",\n \"Item 3\",\n \"Item 4\",\n \"Item 5\",\n \"Item 6\",\n \"Item 7\",\n \"Item 8\"\n ],\n \"rows\": [\n [\n \"2020\",\n 372793,\n 497519,\n 443254,\n 321941,\n 576786,\n 442722,\n 453894,\n 497542\n ],\n [\n \"2021\",\n 391773,\n 542042,\n 364525,\n 185884,\n 593152,\n 120324,\n 665621,\n 154615\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"dot-plot-3x\",\n \"name\": \"DOT_PLOT_3X\",\n \"label\": \"Dot Plot 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\",\n \"notes\": \"Dot plots render as scatter markers in Open XML.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"2023\",\n \"2024\",\n \"2025\"\n ],\n \"group\": \"XY (Scatter)\",\n \"groupSort\": 6,\n \"series\": 3,\n \"seriesGroups\": 2,\n \"slideNumber\": 36,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$6\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"2023\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"2024\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"2025\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Spacing 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Spacing 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Spacing 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n }\n ],\n \"helperColumns\": [\n \"Spacing 1\",\n \"Spacing 2\",\n \"Spacing 3\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series\",\n \"Item 1\",\n \"Item 2\",\n \"Item 3\",\n \"Item 4\",\n \"Item 5\",\n \"Item 6\",\n \"Item 7\",\n \"Item 8\"\n ],\n \"rows\": [\n [\n \"2020\",\n 466960,\n 335113,\n 171951,\n 142213,\n 132537,\n 359295,\n 309044,\n 121369\n ],\n [\n \"2021\",\n 259784,\n 350132,\n 232352,\n 596564,\n 219946,\n 691364,\n 328552,\n 587623\n ],\n [\n \"2022\",\n 368690,\n 486814,\n 275939,\n 220096,\n 271720,\n 426147,\n 213349,\n 126925\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"dot-plot-4x\",\n \"name\": \"DOT_PLOT_4X\",\n \"label\": \"Dot Plot 4x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\",\n \"notes\": \"Dot plots render as scatter markers in Open XML.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"2023\",\n \"2024\",\n \"2025\",\n \"2026\"\n ],\n \"group\": \"XY (Scatter)\",\n \"groupSort\": 6,\n \"series\": 4,\n \"seriesGroups\": 2,\n \"slideNumber\": 37,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$8\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"2023\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"2024\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"2025\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"2026\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Spacing 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Spacing 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"Spacing 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"Spacing 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n }\n ],\n \"helperColumns\": [\n \"Spacing 1\",\n \"Spacing 2\",\n \"Spacing 3\",\n \"Spacing 4\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series\",\n \"Item 1\",\n \"Item 2\",\n \"Item 3\",\n \"Item 4\",\n \"Item 5\",\n \"Item 6\",\n \"Item 7\",\n \"Item 8\"\n ],\n \"rows\": [\n [\n \"2020\",\n 427110,\n 493537,\n 515922,\n 307963,\n 179688,\n 354646,\n 206851,\n 416232\n ],\n [\n \"2021\",\n 226935,\n 693423,\n 143064,\n 464069,\n 658623,\n 549186,\n 488571,\n 172306\n ],\n [\n \"2022\",\n 630538,\n 457806,\n 113266,\n 540463,\n 614013,\n 210665,\n 554582,\n 479781\n ],\n [\n \"2023\",\n 582071,\n 260422,\n 556641,\n 284692,\n 647091,\n 383201,\n 664315,\n 606983\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"dot-plot-5x\",\n \"name\": \"DOT_PLOT_5X\",\n \"label\": \"Dot Plot 5x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\",\n \"notes\": \"Dot plots render as scatter markers in Open XML.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"2023\",\n \"2024\",\n \"2025\",\n \"2026\",\n \"2027\"\n ],\n \"group\": \"XY (Scatter)\",\n \"groupSort\": 6,\n \"series\": 5,\n \"seriesGroups\": 2,\n \"slideNumber\": 38,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$10\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"2023\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"2024\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"2025\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"2026\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"2027\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Spacing 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"Spacing 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"Spacing 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n },\n {\n \"name\": \"Spacing 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row8_col0\"\n },\n {\n \"name\": \"Spacing 5\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row9_col0\"\n }\n ],\n \"helperColumns\": [\n \"Spacing 1\",\n \"Spacing 2\",\n \"Spacing 3\",\n \"Spacing 4\",\n \"Spacing 5\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series\",\n \"Item 1\",\n \"Item 2\",\n \"Item 3\",\n \"Item 4\",\n \"Item 5\",\n \"Item 6\",\n \"Item 7\",\n \"Item 8\"\n ],\n \"rows\": [\n [\n \"2020\",\n 587455,\n 556732,\n 381433,\n 437960,\n 357420,\n 190872,\n 392477,\n 572700\n ],\n [\n \"2021\",\n 355709,\n 587282,\n 697530,\n 497399,\n 452737,\n 130094,\n 618317,\n 440802\n ],\n [\n \"2022\",\n 290672,\n 611233,\n 322423,\n 472060,\n 370902,\n 456871,\n 393243,\n 389688\n ],\n [\n \"2023\",\n 682789,\n 110644,\n 641722,\n 300337,\n 189771,\n 353080,\n 526170,\n 612311\n ],\n [\n \"2024\",\n 682144,\n 351997,\n 599219,\n 614663,\n 569945,\n 118080,\n 197573,\n 408528\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"dot-plot-6x\",\n \"name\": \"DOT_PLOT_6X\",\n \"label\": \"Dot Plot 6x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\",\n \"notes\": \"Dot plots render as scatter markers in Open XML.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"2023\",\n \"2024\",\n \"2025\",\n \"2026\",\n \"2027\",\n \"2028\"\n ],\n \"group\": \"XY (Scatter)\",\n \"groupSort\": 6,\n \"series\": 6,\n \"seriesGroups\": 2,\n \"slideNumber\": 39,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$12\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"2023\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"2024\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"2025\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"2026\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"2027\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"2028\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"Spacing 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"Spacing 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n },\n {\n \"name\": \"Spacing 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row8_col0\"\n },\n {\n \"name\": \"Spacing 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row9_col0\"\n },\n {\n \"name\": \"Spacing 5\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row10_col0\"\n },\n {\n \"name\": \"Spacing 6\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row11_col0\"\n }\n ],\n \"helperColumns\": [\n \"Spacing 1\",\n \"Spacing 2\",\n \"Spacing 3\",\n \"Spacing 4\",\n \"Spacing 5\",\n \"Spacing 6\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series\",\n \"Item 1\",\n \"Item 2\",\n \"Item 3\",\n \"Item 4\",\n \"Item 5\",\n \"Item 6\",\n \"Item 7\",\n \"Item 8\"\n ],\n \"rows\": [\n [\n \"2020\",\n 332360,\n 524045,\n 355123,\n 421080,\n 486945,\n 596249,\n 680358,\n 656711\n ],\n [\n \"2021\",\n 460455,\n 546173,\n 677124,\n 446859,\n 468900,\n 575786,\n 384076,\n 421517\n ],\n [\n \"2022\",\n 363615,\n 341736,\n 226516,\n 301939,\n 430876,\n 225362,\n 661894,\n 294143\n ],\n [\n \"2023\",\n 300845,\n 326895,\n 607719,\n 389930,\n 650121,\n 396745,\n 205409,\n 303547\n ],\n [\n \"2024\",\n 410636,\n 338533,\n 478411,\n 288158,\n 416950,\n 114835,\n 660081,\n 232731\n ],\n [\n \"2025\",\n 387636,\n 147726,\n 157174,\n 680238,\n 406327,\n 232413,\n 614723,\n 207570\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"doughnut\",\n \"name\": \"DOUGHNUT\",\n \"label\": \"Doughnut\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"doughnutChart\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 2,\n \"columns\": [\n \"Segment\",\n \"Value 1\"\n ],\n \"group\": \"Pie\",\n \"groupSort\": 3,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 20,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$C$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Segment\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Segment\",\n \"Q1 2024\",\n \"Q2 2024\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 63264,\n 91351\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"dumbbell\",\n \"name\": \"DUMBBELL\",\n \"label\": \"Dumbbell\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"lineChart\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Dumbbell charts combine point markers with connector lines.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Category\",\n \"Value 1\",\n \"Value 2\",\n \"Y-axis\",\n \"Error bar length 1\",\n \"Error bar length 2\"\n ],\n \"group\": \"Other\",\n \"groupSort\": 13,\n \"series\": 5,\n \"seriesGroups\": 2,\n \"slideNumber\": 76,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$G$6\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Y-axis\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Error bar length 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Error bar length 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n }\n ],\n \"helperColumns\": [\n \"Start\",\n \"End\",\n \"Connector Low\",\n \"Connector High\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 59111,\n 70015,\n 48673,\n 79308,\n 79056,\n 81367\n ],\n [\n \"Value 2\",\n 59420,\n 45335,\n 64996,\n 45674,\n 50281,\n 82993\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"filled-radar\",\n \"name\": \"FILLED_RADAR\",\n \"label\": \"Filled Radar\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"radarChart\",\n \"radarStyle\": \"filled\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Radar\",\n \"groupSort\": 7,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 42,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value\",\n 85631,\n 92502,\n 99974,\n 17026,\n 29887,\n 29555,\n 83772,\n 49824\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"funnel\",\n \"name\": \"FUNNEL\",\n \"label\": \"Funnel\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"funnelChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 5,\n \"columns\": [\n \"Category\",\n \"Series1\"\n ],\n \"group\": \"Other\",\n \"groupSort\": 13,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 75,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$F$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\"\n ],\n \"rows\": [\n [\n \"Series1\",\n 15726,\n 63852,\n 57749,\n 98652,\n 41133\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"histogram\",\n \"name\": \"HISTOGRAM\",\n \"label\": \"Histogram\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"histogramChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 49,\n \"columns\": [\n \"Series1\"\n ],\n \"group\": \"Histogram\",\n \"groupSort\": 9,\n \"series\": 0,\n \"seriesGroups\": 1,\n \"slideNumber\": 46,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$AX$1\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series1\",\n \"Cat 1\",\n \"Cat 2\",\n \"Cat 3\",\n \"Cat 4\",\n \"Cat 5\",\n \"Cat 6\",\n \"Cat 7\",\n \"Cat 8\",\n \"Cat 9\",\n \"Cat 10\",\n \"Cat 11\",\n \"Cat 12\",\n \"Cat 13\",\n \"Cat 14\",\n \"Cat 15\",\n \"Cat 16\",\n \"Cat 17\",\n \"Cat 18\",\n \"Cat 19\",\n \"Cat 20\",\n \"Cat 21\",\n \"Cat 22\",\n \"Cat 23\",\n \"Cat 24\",\n \"Cat 25\",\n \"Cat 26\",\n \"Cat 27\",\n \"Cat 28\",\n \"Cat 29\",\n \"Cat 30\",\n \"Cat 31\",\n \"Cat 32\",\n \"Cat 33\",\n \"Cat 34\",\n \"Cat 35\",\n \"Cat 36\",\n \"Cat 37\",\n \"Cat 38\",\n \"Cat 39\",\n \"Cat 40\",\n \"Cat 41\",\n \"Cat 42\",\n \"Cat 43\",\n \"Cat 44\",\n \"Cat 45\",\n \"Cat 46\",\n \"Cat 47\",\n \"Cat 48\",\n \"Cat 49\"\n ],\n \"rows\": [\n [\n \"Value\",\n 23006,\n 37235,\n 91987,\n 37659,\n 44687,\n 96563,\n 20641,\n 30585,\n 41439,\n 32782,\n 82350,\n 19838,\n 30517,\n 10350,\n 63545,\n 69048,\n 87832,\n 71592,\n 48175,\n 14278,\n 40340,\n 47762,\n 47056,\n 69510,\n 19329,\n 40595,\n 44675,\n 91927,\n 87304,\n 96662,\n 35928,\n 65723,\n 25043,\n 81376,\n 39466,\n 94886,\n 29528,\n 44816,\n 28643,\n 19359,\n 17816,\n 31747,\n 50319,\n 87993,\n 84607,\n 47828,\n 67560,\n 26299,\n 71433\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line\",\n \"name\": \"LINE\",\n \"label\": \"Line\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 9,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value\",\n 74042,\n 12552,\n 24662,\n 57576,\n 50306,\n 41385,\n 17592,\n 41571,\n 84364,\n 20322,\n 21226,\n 73699\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line-2x\",\n \"name\": \"LINE_2X\",\n \"label\": \"Line 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 11,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 37760,\n 80686,\n 36365,\n 50857,\n 62296,\n 98039,\n 95180,\n 58944,\n 67422,\n 77839,\n 69177,\n 25860\n ],\n [\n \"Value 2\",\n 42493,\n 39451,\n 18392,\n 54313,\n 12757,\n 87110,\n 82603,\n 40161,\n 87128,\n 38864,\n 10942,\n 19305\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line-3x\",\n \"name\": \"LINE_3X\",\n \"label\": \"Line 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 15,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 69638,\n 47388,\n 65444,\n 82845,\n 96752,\n 73788,\n 30289,\n 34890,\n 48890,\n 38534,\n 17665,\n 85914\n ],\n [\n \"Value 2\",\n 81066,\n 17989,\n 51104,\n 17492,\n 16572,\n 86569,\n 72493,\n 75909,\n 79615,\n 30635,\n 17455,\n 76562\n ],\n [\n \"Value 3\",\n 20500,\n 34356,\n 18981,\n 87992,\n 18907,\n 98501,\n 40828,\n 62923,\n 25713,\n 84668,\n 42271,\n 85880\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line-with-high-low\",\n \"name\": \"LINE_WITH_HIGH_LOW\",\n \"label\": \"Line with High/Low\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"lineChart\",\n \"marker\": false,\n \"composition\": \"single\"\n },\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"clustered\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"High/low variants combine the main line with auxiliary range series.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value\",\n \"High\",\n \"Low\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 3,\n \"seriesGroups\": 2,\n \"slideNumber\": 7,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$5\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"High\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Low\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Band\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n }\n ],\n \"helperColumns\": [\n \"Band\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value\",\n 76,\n 65,\n 40,\n 33,\n 61,\n 51,\n 45,\n 76,\n 78,\n 61,\n 49,\n 29\n ],\n [\n \"High\",\n 89,\n 74,\n 52,\n 46,\n 79,\n 68,\n 61,\n 88,\n 87,\n 81,\n 56,\n 35\n ],\n [\n \"Low\",\n 70,\n 58,\n 25,\n 26,\n 46,\n 40,\n 31,\n 70,\n 67,\n 50,\n 35,\n 17\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line-with-high-low-and-markers\",\n \"name\": \"LINE_WITH_HIGH_LOW_AND_MARKERS\",\n \"label\": \"Line with High/Low and Markers\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"lineChart\",\n \"marker\": true,\n \"composition\": \"single\"\n },\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"clustered\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"High/low variants combine the main line with auxiliary range series.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value\",\n \"High\",\n \"Low\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 3,\n \"seriesGroups\": 2,\n \"slideNumber\": 8,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$5\",\n \"complexity\": \"calculated\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"High\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Low\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Band\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n }\n ],\n \"helperColumns\": [\n \"Band\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value\",\n 53,\n 36,\n 55,\n 75,\n 80,\n 20,\n 63,\n 66,\n 27,\n 63,\n 76,\n 54\n ],\n [\n \"High\",\n 66,\n 51,\n 63,\n 89,\n 98,\n 30,\n 82,\n 71,\n 40,\n 73,\n 84,\n 68\n ],\n [\n \"Low\",\n 38,\n 23,\n 41,\n 67,\n 73,\n 10,\n 56,\n 53,\n 14,\n 58,\n 62,\n 44\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line-with-markers\",\n \"name\": \"LINE_WITH_MARKERS\",\n \"label\": \"Line with Markers\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"marker\": true,\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 10,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value\",\n 19071,\n 79822,\n 26483,\n 26828,\n 96474,\n 72296,\n 82063,\n 31643,\n 44741,\n 79163,\n 89507,\n 65461\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line-with-markers-2x\",\n \"name\": \"LINE_WITH_MARKERS_2X\",\n \"label\": \"Line with Markers 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"marker\": true,\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 12,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 92719,\n 17716,\n 40007,\n 18834,\n 14117,\n 53309,\n 19287,\n 77391,\n 41195,\n 46500,\n 97684,\n 73624\n ],\n [\n \"Value 2\",\n 38080,\n 80678,\n 27342,\n 84847,\n 85525,\n 71953,\n 41850,\n 71993,\n 63354,\n 34957,\n 22363,\n 22704\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"line-with-markers-3x\",\n \"name\": \"LINE_WITH_MARKERS_3X\",\n \"label\": \"Line with Markers 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"marker\": true,\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 16,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 87924,\n 15209,\n 91183,\n 20745,\n 64948,\n 96163,\n 86503,\n 84085,\n 78522,\n 51467,\n 44179,\n 36772\n ],\n [\n \"Value 2\",\n 97782,\n 51180,\n 41285,\n 44814,\n 61876,\n 27154,\n 98039,\n 94607,\n 49321,\n 69929,\n 51441,\n 19508\n ],\n [\n \"Value 3\",\n 11220,\n 70068,\n 91416,\n 83792,\n 23104,\n 19602,\n 80468,\n 37938,\n 76307,\n 44760,\n 27361,\n 55745\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"pareto\",\n \"name\": \"PARETO\",\n \"label\": \"Pareto\",\n \"mappings\": {\n \"openxml\": {\n \"composition\": \"mixed\",\n \"series\": [\n {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"clustered\",\n \"composition\": \"single\"\n },\n {\n \"element\": \"lineChart\",\n \"composition\": \"single\"\n }\n ],\n \"notes\": \"Pareto charts combine sorted columns with a cumulative-percentage line.\"\n }\n },\n \"categories\": 49,\n \"columns\": [\n \"Category\",\n \"Series1\"\n ],\n \"group\": \"Histogram\",\n \"groupSort\": 9,\n \"series\": 1,\n \"seriesGroups\": 2,\n \"slideNumber\": 47,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$AX$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Cat 1\",\n \"Cat 2\",\n \"Cat 3\",\n \"Cat 4\",\n \"Cat 5\",\n \"Cat 6\",\n \"Cat 7\",\n \"Cat 8\",\n \"Cat 9\",\n \"Cat 10\",\n \"Cat 11\",\n \"Cat 12\",\n \"Cat 13\",\n \"Cat 14\",\n \"Cat 15\",\n \"Cat 16\",\n \"Cat 17\",\n \"Cat 18\",\n \"Cat 19\",\n \"Cat 20\",\n \"Cat 21\",\n \"Cat 22\",\n \"Cat 23\",\n \"Cat 24\",\n \"Cat 25\",\n \"Cat 26\",\n \"Cat 27\",\n \"Cat 28\",\n \"Cat 29\",\n \"Cat 30\",\n \"Cat 31\",\n \"Cat 32\",\n \"Cat 33\",\n \"Cat 34\",\n \"Cat 35\",\n \"Cat 36\",\n \"Cat 37\",\n \"Cat 38\",\n \"Cat 39\",\n \"Cat 40\",\n \"Cat 41\",\n \"Cat 42\",\n \"Cat 43\",\n \"Cat 44\",\n \"Cat 45\",\n \"Cat 46\",\n \"Cat 47\",\n \"Cat 48\",\n \"Cat 49\"\n ],\n \"rows\": [\n [\n \"Series1\",\n 49857,\n 62757,\n 45683,\n 75597,\n 80776,\n 74722,\n 67377,\n 20543,\n 88385,\n 15224,\n 66626,\n 52247,\n 89129,\n 42816,\n 13390,\n 21970,\n 40005,\n 98381,\n 85392,\n 86955,\n 12719,\n 98117,\n 45325,\n 85529,\n 15273,\n 32962,\n 71669,\n 78021,\n 95394,\n 67963,\n 46458,\n 33788,\n 86720,\n 67132,\n 93202,\n 74451,\n 21959,\n 71605,\n 55607,\n 63523,\n 53687,\n 52081,\n 97835,\n 23710,\n 31079,\n 53228,\n 63955,\n 74942,\n 47777\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"pie\",\n \"name\": \"PIE\",\n \"label\": \"Pie\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"pieChart\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 2,\n \"columns\": [\n \"Series 1\",\n \"Value 1\"\n ],\n \"group\": \"Pie\",\n \"groupSort\": 3,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 19,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$C$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 56357,\n 83385\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"radar\",\n \"name\": \"RADAR\",\n \"label\": \"Radar\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"radarChart\",\n \"radarStyle\": \"standard\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Radar\",\n \"groupSort\": 7,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 40,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value\",\n 11607,\n 85243,\n 47268,\n 71524,\n 72746,\n 67733,\n 54657,\n 34164\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"radar-with-markers\",\n \"name\": \"RADAR_WITH_MARKERS\",\n \"label\": \"Radar with Markers\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"radarChart\",\n \"radarStyle\": \"marker\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value\"\n ],\n \"group\": \"Radar\",\n \"groupSort\": 7,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 41,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value\",\n 16734,\n 43092,\n 72616,\n 24953,\n 18564,\n 62521,\n 74454,\n 19710\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"scatter\",\n \"name\": \"SCATTER\",\n \"label\": \"Scatter\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"scatterChart\",\n \"scatterStyle\": \"marker\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 9,\n \"columns\": [\n \"Category\",\n \"X-Values\",\n \"Y-Values\"\n ],\n \"group\": \"XY (Scatter)\",\n \"groupSort\": 6,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 33,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"X-Values\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Y-Values\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\"\n ],\n \"rows\": [\n [\n \"X-Values\",\n 38760,\n 45774,\n 67125,\n 73654,\n 13804,\n 60968,\n 54057,\n 97670,\n 99016\n ],\n [\n \"Y-Values\",\n 62994,\n 31632,\n 71261,\n 26728,\n 91560,\n 80008,\n 13534,\n 61645,\n 87580\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"sparkline\",\n \"name\": \"SPARKLINE\",\n \"label\": \"Sparkline\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\",\n \"notes\": \"Presentation sparklines render as compact line charts.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Period\",\n \"Category 1\"\n ],\n \"group\": \"Sparkline\",\n \"groupSort\": 11,\n \"series\": 1,\n \"seriesGroups\": 2,\n \"slideNumber\": 60,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$M$5\",\n \"complexity\": \"normalized\",\n \"dataColumns\": [\n {\n \"name\": \"Period\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Category 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"y\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"y-Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n }\n ],\n \"helperColumns\": [\n \"y\",\n \"Normalized 1\",\n \"y-Normalized 1\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Period\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n \"rows\": [\n [\n \"Category 1\",\n 234782949,\n 140128302,\n 190588397,\n 199789165,\n 263795306,\n 211391462,\n 304598959,\n 249294712,\n 275548145,\n 147018690,\n 238203096,\n 265921274\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"sparkline-2x\",\n \"name\": \"SPARKLINE_2X\",\n \"label\": \"Sparkline 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\",\n \"notes\": \"Presentation sparklines render as compact line charts.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Period\",\n \"Category 1\",\n \"Category 2\"\n ],\n \"group\": \"Sparkline\",\n \"groupSort\": 11,\n \"series\": 2,\n \"seriesGroups\": 2,\n \"slideNumber\": 61,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$M$8\",\n \"complexity\": \"normalized\",\n \"dataColumns\": [\n {\n \"name\": \"Period\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Category 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Category 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"y\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"y-Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"y-Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n }\n ],\n \"helperColumns\": [\n \"y\",\n \"Normalized 1\",\n \"y-Normalized 1\",\n \"Normalized 2\",\n \"y-Normalized 2\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Period\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n \"rows\": [\n [\n \"Category 1\",\n 127301224,\n 160244644,\n 230927220,\n 209331614,\n 235620392,\n 198005536,\n 271681313,\n 253350193,\n 183354651,\n 223625868,\n 280697637,\n 283835394\n ],\n [\n \"Category 2\",\n 347783209,\n 350482613,\n 294886422,\n 277234281,\n 390601900,\n 364494634,\n 380304637,\n 389986295,\n 263586140,\n 326645109,\n 336897908,\n 406511445\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"sparkline-3x\",\n \"name\": \"SPARKLINE_3X\",\n \"label\": \"Sparkline 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\",\n \"notes\": \"Presentation sparklines render as compact line charts.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Period\",\n \"Category 1\",\n \"Category 2\",\n \"Category 3\"\n ],\n \"group\": \"Sparkline\",\n \"groupSort\": 11,\n \"series\": 3,\n \"seriesGroups\": 2,\n \"slideNumber\": 62,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$M$11\",\n \"complexity\": \"normalized\",\n \"dataColumns\": [\n {\n \"name\": \"Period\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Category 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Category 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Category 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"y\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n },\n {\n \"name\": \"y-Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row8_col0\"\n },\n {\n \"name\": \"y-Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row9_col0\"\n },\n {\n \"name\": \"y-Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row10_col0\"\n }\n ],\n \"helperColumns\": [\n \"y\",\n \"Normalized 1\",\n \"y-Normalized 1\",\n \"Normalized 2\",\n \"y-Normalized 2\",\n \"Normalized 3\",\n \"y-Normalized 3\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Period\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n \"rows\": [\n [\n \"Category 1\",\n 338462295,\n 276932956,\n 400666289,\n 347928219,\n 415971322,\n 310932479,\n 341099445,\n 395630768,\n 338015417,\n 349303356,\n 372387534,\n 399840797\n ],\n [\n \"Category 2\",\n 218545093,\n 280934686,\n 256377435,\n 282303827,\n 229662184,\n 329557775,\n 242959879,\n 233028457,\n 274021564,\n 257568424,\n 244736923,\n 325689941\n ],\n [\n \"Category 3\",\n 309718062,\n 186010334,\n 271920884,\n 366910365,\n 230612761,\n 313191655,\n 320164466,\n 376638873,\n 356200696,\n 380823365,\n 396357729,\n 334149486\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"sparkline-4x\",\n \"name\": \"SPARKLINE_4X\",\n \"label\": \"Sparkline 4x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\",\n \"notes\": \"Presentation sparklines render as compact line charts.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Period\",\n \"Category 1\",\n \"Category 2\",\n \"Category 3\",\n \"Category 4\"\n ],\n \"group\": \"Sparkline\",\n \"groupSort\": 11,\n \"series\": 4,\n \"seriesGroups\": 2,\n \"slideNumber\": 63,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$M$14\",\n \"complexity\": \"normalized\",\n \"dataColumns\": [\n {\n \"name\": \"Period\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Category 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Category 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Category 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Category 4\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"y\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n },\n {\n \"name\": \"Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row8_col0\"\n },\n {\n \"name\": \"Normalized 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row9_col0\"\n },\n {\n \"name\": \"y-Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row10_col0\"\n },\n {\n \"name\": \"y-Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row11_col0\"\n },\n {\n \"name\": \"y-Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row12_col0\"\n },\n {\n \"name\": \"y-Normalized 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row13_col0\"\n }\n ],\n \"helperColumns\": [\n \"y\",\n \"Normalized 1\",\n \"y-Normalized 1\",\n \"Normalized 2\",\n \"y-Normalized 2\",\n \"Normalized 3\",\n \"y-Normalized 3\",\n \"Normalized 4\",\n \"y-Normalized 4\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Period\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n \"rows\": [\n [\n \"Category 1\",\n 351100762,\n 352741011,\n 379496599,\n 387966832,\n 282312384,\n 311282670,\n 452151921,\n 379790805,\n 433333748,\n 384493624,\n 422399875,\n 417323155\n ],\n [\n \"Category 2\",\n 112746904,\n 221229196,\n 183077367,\n 149559096,\n 179550365,\n 213793767,\n 147945453,\n 227710269,\n 229965985,\n 174297265,\n 161163531,\n 183746340\n ],\n [\n \"Category 3\",\n 237548014,\n 134668693,\n 198704600,\n 207612874,\n 201403806,\n 147410128,\n 125604425,\n 201890459,\n 198475165,\n 249611663,\n 269899922,\n 220220298\n ],\n [\n \"Category 4\",\n 151483519,\n 143799732,\n 124809837,\n 255107244,\n 238648426,\n 290700676,\n 206450687,\n 161961806,\n 284636227,\n 166280805,\n 280244757,\n 229378769\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"sparkline-5x\",\n \"name\": \"SPARKLINE_5X\",\n \"label\": \"Sparkline 5x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\",\n \"notes\": \"Presentation sparklines render as compact line charts.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Period\",\n \"Category 1\",\n \"Category 2\",\n \"Category 3\",\n \"Category 4\",\n \"Category 5\"\n ],\n \"group\": \"Sparkline\",\n \"groupSort\": 11,\n \"series\": 5,\n \"seriesGroups\": 2,\n \"slideNumber\": 64,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$M$17\",\n \"complexity\": \"normalized\",\n \"dataColumns\": [\n {\n \"name\": \"Period\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Category 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Category 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Category 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Category 4\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Category 5\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"y\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n },\n {\n \"name\": \"Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row8_col0\"\n },\n {\n \"name\": \"Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row9_col0\"\n },\n {\n \"name\": \"Normalized 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row10_col0\"\n },\n {\n \"name\": \"Normalized 5\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row11_col0\"\n },\n {\n \"name\": \"y-Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row12_col0\"\n },\n {\n \"name\": \"y-Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row13_col0\"\n },\n {\n \"name\": \"y-Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row14_col0\"\n },\n {\n \"name\": \"y-Normalized 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row15_col0\"\n },\n {\n \"name\": \"y-Normalized 5\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row16_col0\"\n }\n ],\n \"helperColumns\": [\n \"y\",\n \"Normalized 1\",\n \"y-Normalized 1\",\n \"Normalized 2\",\n \"y-Normalized 2\",\n \"Normalized 3\",\n \"y-Normalized 3\",\n \"Normalized 4\",\n \"y-Normalized 4\",\n \"Normalized 5\",\n \"y-Normalized 5\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Period\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n \"rows\": [\n [\n \"Category 1\",\n 394192109,\n 298791835,\n 291735757,\n 387547136,\n 285549617,\n 402554736,\n 416691818,\n 370896114,\n 338524862,\n 436475508,\n 450689044,\n 445346510\n ],\n [\n \"Category 2\",\n 184694692,\n 187026655,\n 243832637,\n 215693071,\n 282879921,\n 223502304,\n 262672508,\n 340961425,\n 244063499,\n 269927808,\n 172394131,\n 209079951\n ],\n [\n \"Category 3\",\n 407310440,\n 361244398,\n 363019404,\n 348933300,\n 412854772,\n 455414485,\n 396335652,\n 361436061,\n 448877666,\n 381689431,\n 463288538,\n 442714573\n ],\n [\n \"Category 4\",\n 397995978,\n 514303755,\n 385564250,\n 542703984,\n 525924909,\n 434505855,\n 538801568,\n 531604872,\n 472201924,\n 575190383,\n 462741434,\n 482489022\n ],\n [\n \"Category 5\",\n 191572637,\n 286844139,\n 254728898,\n 315419922,\n 294583213,\n 302197618,\n 204085411,\n 345307584,\n 283404222,\n 355759261,\n 340962092,\n 354360356\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"sparkline-6x\",\n \"name\": \"SPARKLINE_6X\",\n \"label\": \"Sparkline 6x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"composition\": \"single\",\n \"notes\": \"Presentation sparklines render as compact line charts.\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Period\",\n \"Category 1\",\n \"Category 2\",\n \"Category 3\",\n \"Category 4\",\n \"Category 5\",\n \"Category 6\"\n ],\n \"group\": \"Sparkline\",\n \"groupSort\": 11,\n \"series\": 6,\n \"seriesGroups\": 2,\n \"slideNumber\": 65,\n \"useSecondaryCategories\": true,\n \"workbookRange\": \"Sheet1!$A$1:$M$20\",\n \"complexity\": \"normalized\",\n \"dataColumns\": [\n {\n \"name\": \"Period\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Category 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Category 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Category 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n },\n {\n \"name\": \"Category 4\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row4_col0\"\n },\n {\n \"name\": \"Category 5\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row5_col0\"\n },\n {\n \"name\": \"Category 6\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row6_col0\"\n },\n {\n \"name\": \"y\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row7_col0\"\n },\n {\n \"name\": \"Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row8_col0\"\n },\n {\n \"name\": \"Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row9_col0\"\n },\n {\n \"name\": \"Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row10_col0\"\n },\n {\n \"name\": \"Normalized 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row11_col0\"\n },\n {\n \"name\": \"Normalized 5\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row12_col0\"\n },\n {\n \"name\": \"Normalized 6\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row13_col0\"\n },\n {\n \"name\": \"y-Normalized 1\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row14_col0\"\n },\n {\n \"name\": \"y-Normalized 2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row15_col0\"\n },\n {\n \"name\": \"y-Normalized 3\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row16_col0\"\n },\n {\n \"name\": \"y-Normalized 4\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row17_col0\"\n },\n {\n \"name\": \"y-Normalized 5\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row18_col0\"\n },\n {\n \"name\": \"y-Normalized 6\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row19_col0\"\n }\n ],\n \"helperColumns\": [\n \"y\",\n \"Normalized 1\",\n \"y-Normalized 1\",\n \"Normalized 2\",\n \"y-Normalized 2\",\n \"Normalized 3\",\n \"y-Normalized 3\",\n \"Normalized 4\",\n \"y-Normalized 4\",\n \"Normalized 5\",\n \"y-Normalized 5\",\n \"Normalized 6\",\n \"y-Normalized 6\"\n ],\n \"sampleData\": {\n \"headers\": [\n \"Period\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n \"rows\": [\n [\n \"Category 1\",\n 298857152,\n 388866097,\n 343702065,\n 321373221,\n 433801619,\n 315484508,\n 301751511,\n 311629305,\n 415708136,\n 453758040,\n 376922331,\n 346208702\n ],\n [\n \"Category 2\",\n 353367769,\n 282036035,\n 351400930,\n 298937207,\n 426118117,\n 325722321,\n 437696815,\n 332358553,\n 456126030,\n 342310549,\n 370874773,\n 468411591\n ],\n [\n \"Category 3\",\n 448744106,\n 407324740,\n 440175978,\n 454265913,\n 389144215,\n 437646705,\n 352815960,\n 352686817,\n 473015480,\n 426036357,\n 455001536,\n 378358294\n ],\n [\n \"Category 4\",\n 304384905,\n 258205076,\n 260693276,\n 222851728,\n 256622360,\n 351930730,\n 371226049,\n 388657988,\n 351120722,\n 409791559,\n 352554439,\n 298515568\n ],\n [\n \"Category 5\",\n 544744941,\n 512268106,\n 471720280,\n 433756410,\n 454441276,\n 456497460,\n 457594937,\n 476508584,\n 378555903,\n 505462962,\n 416328588,\n 530129839\n ],\n [\n \"Category 6\",\n 307827898,\n 286106077,\n 282459935,\n 217024932,\n 219974599,\n 246698375,\n 342041557,\n 353848075,\n 385024172,\n 303245957,\n 285109236,\n 327442276\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-area-2x\",\n \"name\": \"STACKED_AREA_2X\",\n \"label\": \"Stacked Area 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"areaChart\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Area\",\n \"groupSort\": 5,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 29,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 95813,\n 52237,\n 70946,\n 67905,\n 67954,\n 98555,\n 38010,\n 77000,\n 72021,\n 32241,\n 96356,\n 21114\n ],\n [\n \"Value 2\",\n 47196,\n 77561,\n 97012,\n 92960,\n 91167,\n 53933,\n 22240,\n 40784,\n 98184,\n 50687,\n 39444,\n 36100\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-area-3x\",\n \"name\": \"STACKED_AREA_3X\",\n \"label\": \"Stacked Area 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"areaChart\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Area\",\n \"groupSort\": 5,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 30,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 29313,\n 13201,\n 16057,\n 42092,\n 72277,\n 90120,\n 19545,\n 69692,\n 64321,\n 92544,\n 85454,\n 35485\n ],\n [\n \"Value 2\",\n 60328,\n 74799,\n 62383,\n 41979,\n 29342,\n 95990,\n 10726,\n 23970,\n 65724,\n 38683,\n 33053,\n 77889\n ],\n [\n \"Value 3\",\n 70889,\n 16582,\n 83060,\n 42662,\n 25906,\n 69829,\n 27477,\n 70901,\n 97500,\n 79616,\n 83259,\n 88047\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-bar-2x\",\n \"name\": \"STACKED_BAR_2X\",\n \"label\": \"Stacked Bar 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Bar\",\n \"groupSort\": 4,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 23,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 36158,\n 70332,\n 55830,\n 50001,\n 39831,\n 39219\n ],\n [\n \"Value 2\",\n 13101,\n 96511,\n 35313,\n 62227,\n 53025,\n 46517\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-bar-3x\",\n \"name\": \"STACKED_BAR_3X\",\n \"label\": \"Stacked Bar 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"bar\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Bar\",\n \"groupSort\": 4,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 24,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 19099,\n 46585,\n 56025,\n 94080,\n 76768,\n 62386\n ],\n [\n \"Value 2\",\n 99065,\n 80282,\n 53404,\n 13617,\n 25118,\n 44237\n ],\n [\n \"Value 3\",\n 33405,\n 86099,\n 44795,\n 15014,\n 24208,\n 88193\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-column-2x\",\n \"name\": \"STACKED_COLUMN_2X\",\n \"label\": \"Stacked Column 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Column\",\n \"groupSort\": 1,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 3,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 81426,\n 64987,\n 38893,\n 68878,\n 87236,\n 46463,\n 10851,\n 30926\n ],\n [\n \"Value 2\",\n 65392,\n 54597,\n 46421,\n 30379,\n 38221,\n 54118,\n 23396,\n 22156\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-column-3x\",\n \"name\": \"STACKED_COLUMN_3X\",\n \"label\": \"Stacked Column 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"barChart\",\n \"barDir\": \"col\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Column\",\n \"groupSort\": 1,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 4,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 59797,\n 22676,\n 57052,\n 55082,\n 89131,\n 44671,\n 15695,\n 70217\n ],\n [\n \"Value 2\",\n 80284,\n 26361,\n 59615,\n 20328,\n 82357,\n 48427,\n 92397,\n 91070\n ],\n [\n \"Value 3\",\n 57400,\n 85674,\n 35203,\n 19116,\n 16006,\n 96673,\n 39871,\n 47930\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-line-2x\",\n \"name\": \"STACKED_LINE_2X\",\n \"label\": \"Stacked Line 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 13,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 96374,\n 66498,\n 56438,\n 65519,\n 63883,\n 71213,\n 17100,\n 98259,\n 95649,\n 94696,\n 22899,\n 17944\n ],\n [\n \"Value 2\",\n 62772,\n 54473,\n 24322,\n 42591,\n 35112,\n 34931,\n 80292,\n 68800,\n 28373,\n 65296,\n 34050,\n 46509\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-line-3x\",\n \"name\": \"STACKED_LINE_3X\",\n \"label\": \"Stacked Line 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"grouping\": \"stacked\",\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 17,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 19016,\n 42018,\n 58434,\n 47353,\n 30676,\n 67433,\n 81200,\n 49651,\n 90173,\n 95717,\n 79329,\n 11025\n ],\n [\n \"Value 2\",\n 97538,\n 82692,\n 49240,\n 96951,\n 23577,\n 27601,\n 44664,\n 25129,\n 24029,\n 82512,\n 30374,\n 45697\n ],\n [\n \"Value 3\",\n 46930,\n 89276,\n 37607,\n 54942,\n 36685,\n 93130,\n 44600,\n 76244,\n 74032,\n 42914,\n 16658,\n 22097\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-line-with-markers-2x\",\n \"name\": \"STACKED_LINE_WITH_MARKERS_2X\",\n \"label\": \"Stacked Line with Markers 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"grouping\": \"stacked\",\n \"marker\": true,\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 2,\n \"seriesGroups\": 1,\n \"slideNumber\": 14,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$3\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 70637,\n 42742,\n 19880,\n 68082,\n 82132,\n 22833,\n 16630,\n 95477,\n 80855,\n 11934,\n 22224,\n 40982\n ],\n [\n \"Value 2\",\n 31798,\n 63269,\n 73653,\n 73092,\n 38016,\n 62565,\n 17685,\n 31579,\n 59672,\n 10282,\n 61173,\n 44760\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"stacked-line-with-markers-3x\",\n \"name\": \"STACKED_LINE_WITH_MARKERS_3X\",\n \"label\": \"Stacked Line with Markers 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"lineChart\",\n \"grouping\": \"stacked\",\n \"marker\": true,\n \"composition\": \"single\"\n }\n },\n \"categories\": 12,\n \"columns\": [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\",\n \"Value 3\"\n ],\n \"group\": \"Line\",\n \"groupSort\": 2,\n \"series\": 3,\n \"seriesGroups\": 1,\n \"slideNumber\": 18,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$M$4\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Value 3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\",\n \"Q4 2026\"\n ],\n \"rows\": [\n [\n \"Value 1\",\n 93136,\n 65518,\n 46265,\n 15778,\n 10464,\n 53719,\n 27146,\n 93507,\n 44335,\n 31178,\n 67912,\n 82309\n ],\n [\n \"Value 2\",\n 66057,\n 83519,\n 11267,\n 24663,\n 19862,\n 29536,\n 81511,\n 14722,\n 58393,\n 86350,\n 82420,\n 29410\n ],\n [\n \"Value 3\",\n 66333,\n 26704,\n 15482,\n 50404,\n 57795,\n 15229,\n 56898,\n 37535,\n 99399,\n 42706,\n 97416,\n 23473\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"treemap\",\n \"name\": \"TREEMAP\",\n \"label\": \"Treemap\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"treemapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Level1\",\n \"Series1\"\n ],\n \"group\": \"Treemap\",\n \"groupSort\": 8,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 43,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Level1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Level1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\"\n ],\n \"rows\": [\n [\n \"Series1\",\n 21164,\n 42530,\n 25525,\n 83147,\n 64548,\n 89471\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"treemap-2x\",\n \"name\": \"TREEMAP_2X\",\n \"label\": \"Treemap 2x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"treemapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 6,\n \"columns\": [\n \"Level1\",\n \"Level2\",\n \"Series1\"\n ],\n \"group\": \"Treemap\",\n \"groupSort\": 8,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 44,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$G$3\",\n \"complexity\": \"hierarchical\",\n \"dataColumns\": [\n {\n \"name\": \"Level1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Level2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Level1\",\n \"Level2\",\n \"Value\"\n ],\n \"rows\": [\n [\n \"Technology\",\n \"Software\",\n 96\n ],\n [\n \"Technology\",\n \"Hardware\",\n 99\n ],\n [\n \"Technology\",\n \"Services\",\n 48\n ],\n [\n \"Finance\",\n \"Banking\",\n 86\n ],\n [\n \"Finance\",\n \"Insurance\",\n 68\n ],\n [\n \"Healthcare\",\n \"Pharma\",\n 77\n ],\n [\n \"Healthcare\",\n \"Devices\",\n 76\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"treemap-3x\",\n \"name\": \"TREEMAP_3X\",\n \"label\": \"Treemap 3x\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"treemapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 16,\n \"columns\": [\n \"Level1\",\n \"Level2\",\n \"Level3\",\n \"Series1\"\n ],\n \"group\": \"Treemap\",\n \"groupSort\": 8,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 45,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$Q$4\",\n \"complexity\": \"hierarchical\",\n \"dataColumns\": [\n {\n \"name\": \"Level1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Level2\",\n \"role\": \"helper\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Level3\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row3_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Level1\",\n \"Level2\",\n \"Level3\",\n \"Value\"\n ],\n \"rows\": [\n [\n \"North\",\n \"Tech\",\n \"Software\",\n 58\n ],\n [\n \"North\",\n \"Tech\",\n \"Hardware\",\n 95\n ],\n [\n \"North\",\n \"Finance\",\n \"Banking\",\n 74\n ],\n [\n \"North\",\n \"Finance\",\n \"Insurance\",\n 59\n ],\n [\n \"South\",\n \"Tech\",\n \"Software\",\n 92\n ],\n [\n \"South\",\n \"Tech\",\n \"Hardware\",\n 99\n ],\n [\n \"South\",\n \"Finance\",\n \"Banking\",\n 27\n ],\n [\n \"South\",\n \"Finance\",\n \"Insurance\",\n 98\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"united-kingdom\",\n \"name\": \"UNITED_KINGDOM\",\n \"label\": \"United Kingdom\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"mapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 4,\n \"columns\": [\n \"State\",\n \"Value\"\n ],\n \"group\": \"Map\",\n \"groupSort\": 12,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 69,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$E$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"State\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"State\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\"\n ],\n \"rows\": [\n [\n \"Value\",\n 33218,\n 92306,\n 74764,\n 70811\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"united-states\",\n \"name\": \"UNITED_STATES\",\n \"label\": \"United States\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"mapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 11,\n \"columns\": [\n \"State\",\n \"Value\"\n ],\n \"group\": \"Map\",\n \"groupSort\": 12,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 67,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$L$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"State\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"State\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\",\n \"Q1 2026\",\n \"Q2 2026\",\n \"Q3 2026\"\n ],\n \"rows\": [\n [\n \"Value\",\n 39041,\n 53655,\n 32037,\n 20011,\n 76910,\n 92998,\n 24945,\n 79547,\n 76840,\n 35415,\n 55793\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"waterfall\",\n \"name\": \"WATERFALL\",\n \"label\": \"Waterfall\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"waterfallChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 8,\n \"columns\": [\n \"Category\",\n \"Series1\"\n ],\n \"group\": \"Other\",\n \"groupSort\": 13,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 74,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$I$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Category\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Series1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Category\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ],\n \"rows\": [\n [\n \"Series1\",\n 88282,\n 59377,\n 30218,\n 31266,\n 33703,\n 91885,\n 31697,\n 67366\n ]\n ]\n }\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"id\": \"world\",\n \"name\": \"WORLD\",\n \"label\": \"World\",\n \"mappings\": {\n \"openxml\": {\n \"element\": \"mapChart\",\n \"composition\": \"extension\",\n \"notes\": \"Office extension chart; exact extension markup is renderer-specific.\"\n }\n },\n \"categories\": 14,\n \"columns\": [\n \"Country\",\n \"Value\"\n ],\n \"group\": \"Map\",\n \"groupSort\": 12,\n \"series\": 1,\n \"seriesGroups\": 1,\n \"slideNumber\": 66,\n \"useSecondaryCategories\": false,\n \"workbookRange\": \"Sheet1!$A$1:$O$2\",\n \"complexity\": \"simple\",\n \"dataColumns\": [\n {\n \"name\": \"Country\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n }\n ],\n \"sampleData\": {\n \"headers\": [\n \"Country\",\n \"Cat 1\",\n \"Cat 2\",\n \"Cat 3\",\n \"Cat 4\",\n \"Cat 5\",\n \"Cat 6\",\n \"Cat 7\",\n \"Cat 8\",\n \"Cat 9\",\n \"Cat 10\",\n \"Cat 11\",\n \"Cat 12\",\n \"Cat 13\",\n \"Cat 14\"\n ],\n \"rows\": [\n [\n \"Value\",\n 70305,\n 57428,\n 21551,\n 67240,\n 23875,\n 41891,\n 67104,\n 87184,\n 62487,\n 78676,\n 20308,\n 61873,\n 50668,\n 54500\n ]\n ]\n }\n }\n] as const;\n\nexport const narratives = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"problem-solution\",\n \"name\": \"Problem → Solution\",\n \"summary\": \"Classic business arc: name the pain, raise the stakes, present your fix, show how it works, prove it, ask. The default for sales decks, internal proposals, and most general business presentations.\",\n \"audienceFit\": [\n \"customers\",\n \"stakeholders\",\n \"executives\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"business\",\n \"sales\",\n \"general\",\n \"proposal\"\n ],\n \"beats\": [\n {\n \"id\": \"hook\",\n \"name\": \"Hook\",\n \"description\": \"Open with a striking question, statistic, customer quote, or moment that earns the audience's attention. The goal is to make them want to hear what comes next, not to convey information.\",\n \"layoutHint\": \"title-center\"\n },\n {\n \"id\": \"problem\",\n \"name\": \"The Problem\",\n \"description\": \"Name the pain in concrete terms. Make it visceral and specific — describe who hurts, how, and what they're trying to do today that isn't working. Avoid abstractions; use real examples or scenarios the audience recognizes.\"\n },\n {\n \"id\": \"stakes\",\n \"name\": \"Why It Matters\",\n \"description\": \"Quantify the cost of inaction or the upside of action. Use numbers, trends, customer impact, competitive pressure — whatever makes the audience feel the size of the problem and care about solving it now rather than later.\"\n },\n {\n \"id\": \"solution\",\n \"name\": \"The Solution\",\n \"description\": \"Reveal your approach and what it produces for the customer. Lead with the outcome, not the architecture. Keep it concrete: what does the audience get, and what changes for them?\"\n },\n {\n \"id\": \"mechanism\",\n \"name\": \"How It Works\",\n \"description\": \"Show the moving parts that make the solution credible. Walk through the key mechanism, workflow, or technical insight that explains why this approach succeeds where others have failed. Enough detail to earn trust; not so much that you lose the room.\"\n },\n {\n \"id\": \"evidence\",\n \"name\": \"Proof\",\n \"description\": \"Demonstrate the solution works. Use customer logos, before/after metrics, demos, case studies, third-party validation — whatever de-risks the claim. One strong piece of proof beats three weak ones.\"\n },\n {\n \"id\": \"ask\",\n \"name\": \"The Ask\",\n \"description\": \"State a clear, specific call to action. What do you want the audience to do, decide, or commit to next? Make the smallest credible ask that moves things forward, and make it unambiguous.\",\n \"layoutHint\": \"title-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"scqa\",\n \"name\": \"SCQA (Situation–Complication–Question–Answer)\",\n \"summary\": \"Barbara Minto's pyramid-principle arc: surface the recommendation up front, then layer key arguments and supporting evidence beneath it. The default for executive memos, strategic recommendations, and consulting decks where the audience needs the answer fast.\",\n \"audienceFit\": [\n \"executives\",\n \"boards\",\n \"leadership-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"executive\",\n \"strategy\",\n \"consulting\",\n \"minto\",\n \"pyramid\"\n ],\n \"beats\": [\n {\n \"id\": \"situation\",\n \"name\": \"Situation\",\n \"description\": \"Establish the shared context: what is true today that the audience already agrees on. State only facts the audience accepts without argument. The goal is alignment, not persuasion — you are setting the stage.\"\n },\n {\n \"id\": \"complication\",\n \"name\": \"Complication\",\n \"description\": \"Introduce the disturbance to the situation: what changed, what is at risk, what is no longer working. This is the tension that makes the audience lean in. Be specific and quantify the change where possible.\"\n },\n {\n \"id\": \"question\",\n \"name\": \"Key Question\",\n \"description\": \"Surface the question the complication forces the audience to answer. Frame it explicitly — 'Should we…?', 'How do we…?', 'What changes if…?'. The question should feel inevitable given the complication.\"\n },\n {\n \"id\": \"answer\",\n \"name\": \"Answer\",\n \"description\": \"Deliver the recommendation in a single sentence, up front. No arguments yet, no caveats — just the conclusion the rest of the deck will defend. This is the apex of the Minto pyramid; everything that follows supports it.\",\n \"layoutHint\": \"title-left\"\n },\n {\n \"id\": \"key-arguments\",\n \"name\": \"Key Arguments\",\n \"description\": \"Lay out the two or three top-level reasons the answer is correct. One slide per argument, or one summary slide naming all of them. Each argument should stand alone as a compelling reason; together they should be exhaustive of the case.\"\n },\n {\n \"id\": \"supporting-evidence\",\n \"name\": \"Supporting Evidence\",\n \"description\": \"Present the data, examples, and case studies that ground each argument. Pyramid-principle style: every claim above is backed by something verifiable here. Cite sources; show the numbers; let the evidence carry the weight.\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"strategic-narrative\",\n \"name\": \"Strategic Narrative\",\n \"summary\": \"The change-driven founder/sales arc: a tectonic shift creates winners and losers, the audience must respond, and your product is the only credible way to land in the winners' camp. Used for top-of-funnel sales pitches, board re-positioning, and high-stakes founder talks.\",\n \"audienceFit\": [\n \"customers\",\n \"prospects\",\n \"board\",\n \"investors\",\n \"executives\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"strategic\",\n \"sales\",\n \"positioning\",\n \"category\"\n ],\n \"beats\": [\n {\n \"id\": \"shift\",\n \"name\": \"The Shift\",\n \"description\": \"Open by naming a large, undeniable change in the world that the audience already half-believes. Technology, regulation, customer behavior, economics — pick the shift that recasts the audience's reality. The shift, not your product, is the protagonist of the first half of the deck.\"\n },\n {\n \"id\": \"stakes\",\n \"name\": \"Winners and Losers\",\n \"description\": \"Make the consequences of the shift concrete. Who wins, who loses, by how much, on what timeframe. Use specific examples — companies, products, segments — that have already moved or are about to. The audience should feel that standing still is the riskiest choice.\"\n },\n {\n \"id\": \"promised-land\",\n \"name\": \"Promised Land\",\n \"description\": \"Paint a vivid picture of the future state your audience could occupy if they navigate the shift well. Describe outcomes, not features. The promised land must feel desirable, achievable, and meaningfully different from where they are today.\"\n },\n {\n \"id\": \"obstacles\",\n \"name\": \"Old Game\",\n \"description\": \"Show why the existing playbook can't get the audience to the promised land. Name the legacy approach honestly and credit what it once did, then explain why the shift has rendered it insufficient. Avoid strawmen — the more fairly you state the old game, the more credible your new game becomes.\"\n },\n {\n \"id\": \"mechanism\",\n \"name\": \"New Game\",\n \"description\": \"Introduce your category-defining approach as the way to play the new game. Show the principles or capabilities that make it possible only now. Emphasize what's structurally different from the old game, not what's marginally better.\"\n },\n {\n \"id\": \"evidence\",\n \"name\": \"Evidence\",\n \"description\": \"Prove the new game works. Customer outcomes, named logos, before/after data, third-party validation. Choose evidence that maps directly to the shift you opened with — proof that other audiences in the same boat made it to the promised land.\"\n },\n {\n \"id\": \"ask\",\n \"name\": \"Call to Action\",\n \"description\": \"Close with the single decision you want the audience to make. Frame it as the obvious next move given the shift, the stakes, and the new game. Make it small enough to say yes to today and large enough to start a real engagement.\",\n \"layoutHint\": \"title-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"golden-circle\",\n \"name\": \"Golden Circle (Why / How / What)\",\n \"summary\": \"Simon Sinek's keynote arc: lead with belief, follow with method, finish with proof. Best for brand stories, mission-driven keynotes, and any deck where the audience needs to feel why before they can evaluate what.\",\n \"audienceFit\": [\n \"customers\",\n \"employees\",\n \"general-audience\",\n \"press\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"keynote\",\n \"brand\",\n \"mission\",\n \"sinek\"\n ],\n \"beats\": [\n {\n \"id\": \"why\",\n \"name\": \"Why\",\n \"description\": \"Open with the belief or purpose that animates the work. Why does this exist, and why should anyone care beyond commerce? State it plainly and emotionally — the why is meant to be felt before it is understood.\"\n },\n {\n \"id\": \"how\",\n \"name\": \"How\",\n \"description\": \"Translate the belief into the principles that guide how you operate. The values, decisions, and trade-offs that make your approach distinctive. The 'how' is what people who share your why recognize as familiar.\"\n },\n {\n \"id\": \"what\",\n \"name\": \"What\",\n \"description\": \"Show the products, services, or outputs that the why and how produce. Concrete examples, not abstractions. The what is the artifact of the belief — proof that the why is more than rhetoric.\"\n },\n {\n \"id\": \"proof\",\n \"name\": \"Proof\",\n \"description\": \"Demonstrate the impact in lives, customers, or outcomes. Stories beat statistics here; specific people and moments earn the audience's belief better than aggregate numbers. End with proof that what you do works because of why you do it.\"\n },\n {\n \"id\": \"invitation\",\n \"name\": \"Invitation\",\n \"description\": \"Close by inviting the audience to share the belief — to buy, build, join, or evangelize. The strongest invitations don't argue; they assume alignment and offer a way in.\",\n \"layoutHint\": \"title-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"conference-talk\",\n \"name\": \"Conference Talk\",\n \"summary\": \"Stage-talk arc for a 15–45 minute conference or industry-event session: hook the room, promise a payoff, deliver evidence, expose the underlying mechanism, show how to apply it, and end with a memorable recap. Engineered for audiences that came to learn something they can use Monday.\",\n \"audienceFit\": [\n \"practitioners\",\n \"general-audience\",\n \"industry-peers\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"talk\",\n \"conference\",\n \"keynote\",\n \"education\"\n ],\n \"beats\": [\n {\n \"id\": \"hook\",\n \"name\": \"Hook\",\n \"description\": \"Earn the first sixty seconds with a story, surprising claim, or vivid moment. Make the audience curious enough to put their phones down. Avoid agendas, bios, and 'today I'm going to talk about' openings — those are filler that competes with your real opening.\"\n },\n {\n \"id\": \"promise\",\n \"name\": \"Promise\",\n \"description\": \"Tell the audience exactly what they'll know, feel, or be able to do by the end of the talk. A clear promise sets the implicit contract for the next thirty minutes and lets you redirect attention later when needed.\"\n },\n {\n \"id\": \"evidence\",\n \"name\": \"Evidence\",\n \"description\": \"Deliver the substantive case for your promise. Data, examples, demonstrations, or strong stories — whatever a skeptical attendee would need to update their beliefs. This is the densest section of the talk; pace and visualize accordingly.\"\n },\n {\n \"id\": \"mechanism\",\n \"name\": \"Mechanism\",\n \"description\": \"Reveal the underlying principle or framework that explains why the evidence holds. The mechanism is what audiences quote later — the moment of 'oh, that's why.' Keep it crisp and namable.\"\n },\n {\n \"id\": \"application\",\n \"name\": \"Application\",\n \"description\": \"Show the audience how to use the mechanism in their own work. Concrete, specific, low-friction first steps. The talk earns its keep here — abstract insight without an applied path is forgotten by lunch.\"\n },\n {\n \"id\": \"recap\",\n \"name\": \"Recap\",\n \"description\": \"Restate the promise, the mechanism, and the call to action in a single short slide. Give the audience the line they'll repeat to a colleague and the one image that will stick with them after the lights come up.\",\n \"layoutHint\": \"title-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"transformation-arc\",\n \"name\": \"Transformation Arc (Before / After / Bridge)\",\n \"summary\": \"Marketing-copy arc adapted for slides: paint the painful 'before,' contrast it with a vivid 'after,' then deliver the bridge that gets the audience from one to the other. Tight, persuasive, and ideal for short pitches, landing-page-style decks, and product-marketing teasers.\",\n \"audienceFit\": [\n \"customers\",\n \"prospects\",\n \"marketing-teams\",\n \"general-audience\"\n ],\n \"durationRange\": {\n \"minMinutes\": 3,\n \"maxMinutes\": 15\n },\n \"tags\": [\n \"marketing\",\n \"copywriting\",\n \"pitch\",\n \"persuasive\"\n ],\n \"beats\": [\n {\n \"id\": \"before\",\n \"name\": \"Before\",\n \"description\": \"Describe the audience's current world in the first person they recognize. Specific frustrations, specific costs, specific moments of friction. The clearer the 'before' lands, the more the rest of the deck has to push against.\"\n },\n {\n \"id\": \"after\",\n \"name\": \"After\",\n \"description\": \"Paint the world the audience could be in instead. Concrete outcomes, not feature lists — what a day looks like, what a quarter feels like, what becomes effortless that used to hurt. Make it desirable and credible at the same time.\"\n },\n {\n \"id\": \"bridge\",\n \"name\": \"Bridge\",\n \"description\": \"Show the path from before to after: the product, service, or change that closes the gap. Lead with the simplest user-visible thing they do; the architecture can wait. The bridge must feel proportionate to the transformation it promises.\"\n },\n {\n \"id\": \"evidence\",\n \"name\": \"Evidence\",\n \"description\": \"Prove the bridge has carried others across. One or two strong customer stories, before/after metrics, or named logos with concrete outcomes. Choose proof that maps directly to the 'after' you painted, not generic credibility markers.\"\n },\n {\n \"id\": \"ask\",\n \"name\": \"Ask\",\n \"description\": \"Close with the single low-friction action that starts the audience across the bridge. Make it small enough to act on now and meaningful enough to count as commitment.\",\n \"layoutHint\": \"title-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"pitch-deck\",\n \"name\": \"Startup Pitch Deck\",\n \"summary\": \"The canonical investor-pitch arc, drawn from Sequoia and Y Combinator's templates. Optimized for 10–20 minute meetings with VCs and angels. Each beat answers the question an investor will ask next.\",\n \"audienceFit\": [\n \"investors\",\n \"venture-capitalists\",\n \"angels\",\n \"advisors\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"startup\",\n \"fundraising\",\n \"pitch\",\n \"investor\"\n ],\n \"beats\": [\n {\n \"id\": \"opening\",\n \"name\": \"Opening\",\n \"description\": \"Open with the company name, logo, and a one-line tagline that doubles as a positioning statement. Set the visual tone for the deck. Keep it confident and uncluttered — this is the cover.\",\n \"layoutHint\": \"title-left\"\n },\n {\n \"id\": \"purpose\",\n \"name\": \"Company Purpose\",\n \"description\": \"State in a single sentence what the company does and why it exists. Should be immediately understandable without industry jargon. Often doubles as the answer to 'so what do you do?'\"\n },\n {\n \"id\": \"problem\",\n \"name\": \"Problem\",\n \"description\": \"Describe the pain point you solve. Make it concrete with a specific user or customer scenario. The more visceral and recognizable the problem, the stronger the rest of the pitch lands.\"\n },\n {\n \"id\": \"why-now\",\n \"name\": \"Why Now\",\n \"description\": \"Explain the technological, regulatory, behavioral, or market shift that makes this opportunity possible today and impossible five years ago. Investors want to know why this is a window, not just an idea.\"\n },\n {\n \"id\": \"market\",\n \"name\": \"Market Size\",\n \"description\": \"Size the opportunity. Top-down (TAM/SAM/SOM) or bottom-up (units × price). Show how big the prize is if you win, and why this market is attractive to a venture-scale outcome.\"\n },\n {\n \"id\": \"competition\",\n \"name\": \"Competition\",\n \"description\": \"Map the competitive landscape honestly. A 2x2 matrix or feature-comparison grid is fine; what matters is showing you understand the alternatives and where you uniquely fit. Naïve 'no competition' answers tank credibility.\"\n },\n {\n \"id\": \"solution\",\n \"name\": \"Solution\",\n \"description\": \"Show how you solve the problem and why your approach is uniquely better. Lead with the outcome for the customer, then show the mechanism. This is where you connect problem to product.\"\n },\n {\n \"id\": \"product\",\n \"name\": \"Product\",\n \"description\": \"Give the product its own moment. Screenshots or a key visual that captures what users actually see and feel. Pick one strong frame over a montage of small ones.\"\n },\n {\n \"id\": \"demo\",\n \"name\": \"Demo\",\n \"description\": \"Walk through the core user flow end-to-end. Show real software solving a real problem in a real workflow — not a marketing reel. If a live demo is too risky, use a tightly edited recording with narration.\"\n },\n {\n \"id\": \"traction\",\n \"name\": \"Traction\",\n \"description\": \"Prove momentum with one credible headline metric. Revenue, users, growth rate, customer logos — whatever best shows the business is working. One strong chart beats five vanity numbers.\"\n },\n {\n \"id\": \"growth\",\n \"name\": \"Growth Drivers\",\n \"description\": \"Show how the headline metric got there and where it's going. Cohorts, retention, expansion, channel mix — whatever explains the engine behind the number. Investors back the trajectory, not the snapshot.\"\n },\n {\n \"id\": \"business-model\",\n \"name\": \"Business Model\",\n \"description\": \"Explain how the company makes money. Pricing, unit economics, sales motion, payback period. Should answer: what does it cost to acquire a customer, and what do they pay you?\"\n },\n {\n \"id\": \"team\",\n \"name\": \"Team\",\n \"description\": \"Establish why this team uniquely wins this market. Founder backgrounds, relevant experience, prior outcomes, key advisors. Investors back people first; make the case.\"\n },\n {\n \"id\": \"financials\",\n \"name\": \"Financials\",\n \"description\": \"Show the financial picture: historical revenue, burn, runway, and forward projection. Be conservative-but-credible — investors will discount aggressive numbers and reward defensible ones.\"\n },\n {\n \"id\": \"ask\",\n \"name\": \"The Ask\",\n \"description\": \"State the round size, intended use of funds, and what milestones the capital takes you to. Be specific — investors should leave knowing exactly what you want and what they get.\",\n \"layoutHint\": \"title-left\"\n },\n {\n \"id\": \"closing\",\n \"name\": \"Closing\",\n \"description\": \"Close on a strong final image: logo, contact info, and the one line you most want the investor to remember. Leave space for the conversation that follows.\",\n \"layoutHint\": \"title-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"early-startup-pitch\",\n \"name\": \"Early-Stage Startup Pitch\",\n \"summary\": \"Seed and pre-seed pitch arc tuned for vision-heavy stories where revenue and traction are still thin. Anchors the narrative in market change, founder insight, and credible early signal — not metrics yet.\",\n \"audienceFit\": [\n \"seed-investors\",\n \"angels\",\n \"advisors\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"startup\",\n \"fundraising\",\n \"seed\",\n \"pitch\"\n ],\n \"beats\": [\n {\n \"id\": \"logo\",\n \"name\": \"Logo\",\n \"description\": \"Cover slide with the company name, logo, and one-line positioning. Simple, branded, confident.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Establish presence\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"monumental-change\",\n \"name\": \"Monumental Change\",\n \"description\": \"Open by naming a large, undeniable shift in the world. Tech, regulatory, behavioral. The shift is the reason this company exists — investors should feel its weight before they hear about the product.\",\n \"instructions\": \"Highlight market transformation\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"past-struggle\",\n \"name\": \"Past Struggle\",\n \"description\": \"Show what the world tried to do about the problem before the shift, and why those approaches fell short. Honest credit to predecessors makes the new game more credible.\",\n \"instructions\": \"Emphasize previous challenges\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"innovative-breakthrough\",\n \"name\": \"Innovative Breakthrough\",\n \"description\": \"Present the founding insight or breakthrough that makes a new approach possible. This is the 'secret' the company is built on — name it plainly.\",\n \"instructions\": \"Present innovative solution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"unique-offering\",\n \"name\": \"Unique Offering\",\n \"description\": \"Detail the product or service. Lead with the customer-visible thing they touch; the architecture can wait. Show why this offering is structurally different from the past struggle.\",\n \"instructions\": \"Detail product or service\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"costly-issues\",\n \"name\": \"Costly Issues\",\n \"description\": \"Quantify the pain customers experience without your offering. Time, dollars, opportunity cost. Specific numbers convert sympathy into urgency.\",\n \"instructions\": \"Quantify problems faced\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"effective-solutions\",\n \"name\": \"Effective Solutions\",\n \"description\": \"Demonstrate the customer outcome your offering produces. Before/after numbers from early users, even small N. Early-stage pitches are won by leading indicators, not by trailing ones.\",\n \"instructions\": \"Demonstrate benefits\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"unit-economics\",\n \"name\": \"Unit Economics\",\n \"description\": \"Explain the financial model. Cost to acquire, gross margin, payback. Investors don't expect maturity — they expect that you've thought about it.\",\n \"instructions\": \"Explain financial model\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"talented-team\",\n \"name\": \"Talented Team\",\n \"description\": \"Introduce the founders and key early hires. Show why this team uniquely sees and can execute on this opportunity. Insight beats résumé at the seed stage.\",\n \"instructions\": \"Introduce key players\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"traction\",\n \"name\": \"Traction\",\n \"description\": \"Showcase the early signal: pilots, design partners, waitlist, retention data, anything credible. Frame it honestly — investors at this stage discount inflation aggressively.\",\n \"instructions\": \"Showcase accomplishments\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"investment-opportunity\",\n \"name\": \"Investment Opportunity\",\n \"description\": \"Detail the round size, structure, and use of funds. Tie the raise to specific milestones it takes the company to. Specificity here signals operational maturity.\",\n \"instructions\": \"Detail funding needs\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing-logo\",\n \"name\": \"Closing Logo\",\n \"description\": \"Close on the brand and contact info. Leave the room with the line you most want repeated when the partner pitches you to the rest of the firm.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Leave a lasting impression\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"venture-pitch\",\n \"name\": \"Venture Pitch\",\n \"summary\": \"Series A/B fundraising arc structured around the canonical investor questions.\",\n \"audienceFit\": [\n \"investors\",\n \"venture-capitalists\",\n \"series-a\",\n \"series-b\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"startup\",\n \"fundraising\",\n \"pitch\",\n \"investor\",\n \"series-a\"\n ],\n \"beats\": [\n {\n \"id\": \"opening\",\n \"name\": \"Opening\",\n \"instructions\": \"Establish identity\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"purpose\",\n \"name\": \"Purpose\",\n \"instructions\": \"State your mission\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"problem\",\n \"name\": \"Problem\",\n \"instructions\": \"Present the challenge\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"solution\",\n \"name\": \"Solution\",\n \"instructions\": \"Propose your idea\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"why-now\",\n \"name\": \"Why Now\",\n \"instructions\": \"Explain timing importance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"market-size\",\n \"name\": \"Market Size\",\n \"instructions\": \"Demonstrate potential\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"competition\",\n \"name\": \"Competition\",\n \"instructions\": \"Analyze competitive landscape\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"product\",\n \"name\": \"Product\",\n \"instructions\": \"Showcase features/benefits\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"business-model\",\n \"name\": \"Business Model\",\n \"instructions\": \"Detail revenue streams\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"team\",\n \"name\": \"Team\",\n \"instructions\": \"Highlight key members\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"financials\",\n \"name\": \"Financials\",\n \"instructions\": \"Show projections/needs\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing\",\n \"name\": \"Closing\",\n \"instructions\": \"Reinforce brand\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"persuasive-sales\",\n \"name\": \"Persuasive Sales\",\n \"summary\": \"Top-of-funnel sales arc that creates awareness and alignment with a prospective customer. Anchored in a market change, leading to your unique capabilities, supported by proof, ending with a clear call to action.\",\n \"audienceFit\": [\n \"prospects\",\n \"customers\",\n \"buyers\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"sales\",\n \"go-to-market\",\n \"outbound\",\n \"discovery\"\n ],\n \"beats\": [\n {\n \"id\": \"intro\",\n \"name\": \"Introduction\",\n \"description\": \"Open with a brief framing of who you are and why this conversation is worth the prospect's next thirty minutes. Keep credentials short; the audience cares about their problem, not your résumé.\",\n \"instructions\": \"Name & logo\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"big-change\",\n \"name\": \"Big Change\",\n \"description\": \"Name the market shift the prospect's industry is living through. Make it concrete, recent, and undeniable. The change — not the product — is the reason they should care.\",\n \"instructions\": \"Highlight market shift\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"response-to-change\",\n \"name\": \"Winners and Losers\",\n \"description\": \"Show how the change is creating winners and losers in the prospect's space. Use named examples where you can. The goal is for the prospect to wonder which side they'll end up on.\",\n \"instructions\": \"Show winners & losers\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"benefits\",\n \"name\": \"Benefits\",\n \"description\": \"Paint the outcome a winner experiences: a vivid picture of the prospect's life on the other side of the change. Lead with what changes for them, not with what your product does.\",\n \"instructions\": \"Describe benefits, paint a vivid picture\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"capabilities\",\n \"name\": \"Capabilities\",\n \"description\": \"Reveal the unique capabilities that make those outcomes possible. Frame them as the 'magic gifts' the prospect needs to win the new game. Highlight what's structurally different from the alternatives.\",\n \"instructions\": \"Present unique features as 'magic gifts' to the customer\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"evidence\",\n \"name\": \"Evidence\",\n \"description\": \"Share customer testimonials, case studies, and measurable outcomes from organizations like the prospect's. Pick evidence that maps to the benefits you promised, not generic logos.\",\n \"instructions\": \"Share testimonials\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"call-to-action\",\n \"name\": \"Call to Action\",\n \"description\": \"Ask for the next step in the sales process. Be specific: a pilot, a workshop, a follow-on conversation with a named stakeholder. Make the smallest credible commitment that keeps momentum.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Encourage decision-making\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"close\",\n \"name\": \"Close\",\n \"description\": \"Close with a final image and contact path. Leave the prospect with one line about why they're better off acting now than later, and clear instructions for how to engage.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Logo & contact info\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"company-intro\",\n \"name\": \"Company Intro\",\n \"summary\": \"Standard company-overview deck: who you are, what's distinctive about you, who you serve, and why they win. Built for first-touch sales meetings, partner intros, and 'about us' decks attached to outbound emails.\",\n \"audienceFit\": [\n \"prospects\",\n \"partners\",\n \"press\",\n \"candidates\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"overview\",\n \"go-to-market\",\n \"marketing\",\n \"intro\"\n ],\n \"beats\": [\n {\n \"id\": \"logo\",\n \"name\": \"Logo\",\n \"description\": \"Cover slide with the logo, tagline, and a single line of positioning. Set the visual tone — confident, branded, uncluttered.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Establish brand identity\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"about\",\n \"name\": \"About\",\n \"description\": \"Capture the company in three or four lines: what you do, who you do it for, and how long you've been at it. Avoid jargon; an outsider should grok the business in fifteen seconds.\",\n \"instructions\": \"Capture attention\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"competitive-advantage\",\n \"name\": \"Competitive Advantage\",\n \"description\": \"State the one or two things you do that the alternatives can't. Frame it as a structural advantage, not a feature list. The audience should leave able to repeat the differentiator in their own words.\",\n \"instructions\": \"Stand out\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"company-story\",\n \"name\": \"Company Story\",\n \"description\": \"Share the founding insight or origin moment — why this company exists, told as a short story. Specific people, specific problems, a specific 'aha.' Story beats biography.\",\n \"instructions\": \"Share origin\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"offerings\",\n \"name\": \"Offerings\",\n \"description\": \"Map the products and services into a coherent picture. Show how they fit together rather than listing them flat. The shape of the portfolio is itself a message.\",\n \"instructions\": \"Highlight products/services\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"ideal-customer\",\n \"name\": \"Ideal Customer\",\n \"description\": \"Define who you serve best. Industry, size, role, situation. Specificity here helps the audience self-select and signals you understand the customer well enough to be choosy.\",\n \"instructions\": \"Define target market\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"key-benefits\",\n \"name\": \"Key Benefits\",\n \"description\": \"Translate offerings into three to five customer outcomes. Lead with the result, not the mechanism. Each benefit should answer 'what becomes easier or better for me?'\",\n \"instructions\": \"Emphasize value\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"success-story\",\n \"name\": \"Success Story\",\n \"description\": \"Tell one named customer's story with concrete before/after metrics. A single specific story is more persuasive than a logo grid; pick one that mirrors the audience you're presenting to.\",\n \"instructions\": \"Showcase satisfied customer\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing-cta\",\n \"name\": \"Closing & CTA\",\n \"description\": \"Close with one line of why now and one specific next step — a discovery call, a pilot, a partner program. End with contact info that's easy to act on without searching.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Encourage action\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"marketing-strategy\",\n \"name\": \"Marketing Strategy\",\n \"summary\": \"Comprehensive go-to-market strategy arc structured around the 4Ps. Use for category launches, annual marketing plans, and any deck where the audience needs to see customer, market, competition, and tactics in one coherent picture.\",\n \"audienceFit\": [\n \"marketing-leaders\",\n \"executives\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"go-to-market\",\n \"marketing\",\n \"strategy\",\n \"planning\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Open by establishing the product or service this strategy is for, and what window of time it covers. One slide that tells the audience exactly which world they're being asked to weigh in on.\",\n \"instructions\": \"Establish product/service specifics\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"objective\",\n \"name\": \"Objective\",\n \"description\": \"State the marketing goals in measurable terms: revenue, pipeline, awareness, share. Two or three goals, ranked. Goals without ranking get equal energy and equal mediocrity.\",\n \"instructions\": \"Share marketing goals\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"customer\",\n \"name\": \"Customer\",\n \"description\": \"Detail the target audience. Segments, jobs-to-be-done, decision criteria, where they live in the buying cycle. Specificity here is the foundation everything else stands on.\",\n \"instructions\": \"Detail target audience\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"market\",\n \"name\": \"Market\",\n \"description\": \"Describe the market landscape: size, growth, segments, behavioral trends. Use external data for credibility and your own research for nuance. Show how the market is changing, not just how big it is.\",\n \"instructions\": \"Discuss market landscape\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"competition\",\n \"name\": \"Competition\",\n \"description\": \"Map the competitive set honestly. Direct, indirect, and substitutes. A 2x2 or feature-comparison framework helps; what matters is that the audience trusts your read of the field.\",\n \"instructions\": \"Analyze competitive environment\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"strategy\",\n \"name\": \"Strategy\",\n \"description\": \"Articulate the marketing approach in one sentence and a single supporting frame. Positioning, primary motion, where you choose to play and not play. Clarity here is what makes the tactics that follow coherent.\",\n \"instructions\": \"Elaborate marketing approach\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"product\",\n \"name\": \"Product\",\n \"description\": \"Highlight the unique value the product brings to the strategy. Lead with the customer outcome; tie it directly back to the customer beat. Avoid feature soup.\",\n \"instructions\": \"Highlight unique value\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"price\",\n \"name\": \"Price\",\n \"description\": \"Justify pricing and packaging. Show the logic — cost-plus, value-based, competitor-anchored — and the levers you'll use over the period. Price decisions are strategy decisions.\",\n \"instructions\": \"Justify pricing strategy\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"place\",\n \"name\": \"Place\",\n \"description\": \"Describe distribution channels and the role each plays. Direct, partner, marketplace, retail. Channel mix is often where strategies quietly succeed or fail.\",\n \"instructions\": \"Discuss distribution channels\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"promotion\",\n \"name\": \"Promotion\",\n \"description\": \"Reveal the campaign and content tactics that bring the strategy to market. Pair each tactic with the audience and metric it serves. Avoid listing channels for their own sake.\",\n \"instructions\": \"Reveal promotional tactics\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"summary\",\n \"name\": \"Summary\",\n \"description\": \"Recap the strategy in a single page: customer, position, motion, expected outcome. End with the decision or commitment you need from the audience.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Recap key points\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"product-launch\",\n \"name\": \"Product Launch\",\n \"summary\": \"Persuasive launch arc: open with brand, hook with a promise, set the conflict, raise the stakes, reveal the product, raise stakes again, sell, and call to action. Tuned for keynote-style launches and major announcement decks.\",\n \"audienceFit\": [\n \"customers\",\n \"press\",\n \"general-audience\",\n \"partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"startup\",\n \"launch\",\n \"marketing\",\n \"keynote\"\n ],\n \"beats\": [\n {\n \"id\": \"opening\",\n \"name\": \"Opening\",\n \"description\": \"Open with the company brand and a confident visual. Set the tone — this is a moment, not a meeting. One slide that signals the audience is somewhere worth being.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Show company branding\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"promise\",\n \"name\": \"Promise\",\n \"description\": \"Hook the audience with the promise of the talk. Tell them, in one sentence, what they're about to see and why it matters to them. Specific promises buy patient audiences.\",\n \"instructions\": \"Hook the audience\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"context\",\n \"name\": \"Context\",\n \"description\": \"Set the stage with the world the product enters. The customer reality, the market state, the unmet expectation. Context turns the launch from a product release into a moment in a larger story.\",\n \"instructions\": \"Set the stage\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conflict\",\n \"name\": \"Conflict\",\n \"description\": \"Introduce the villain — the problem, friction, or status quo the product opposes. Make the conflict concrete enough that the audience can name a moment they've felt it themselves.\",\n \"instructions\": \"Introduce villain/problem\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"stakes\",\n \"name\": \"Stakes\",\n \"description\": \"Emphasize what's at risk if the conflict isn't resolved. Quantify, personalize, dramatize. Stakes are what convert a curious audience into an invested one.\",\n \"instructions\": \"Emphasize importance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"reveal\",\n \"name\": \"Reveal\",\n \"description\": \"Showcase the product. One striking visual, one defining capability, one sentence that captures what's new. Earn the applause line; don't bury it under a bullet list.\",\n \"instructions\": \"Showcase the solution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"raise-stakes\",\n \"name\": \"Raise the Stakes\",\n \"description\": \"Highlight where the alternatives fall short and what they cost the customer. Re-energize the room midway by sharpening the contrast with the reveal.\",\n \"instructions\": \"Highlight shortcomings of alternatives\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"raise-stakes-again\",\n \"name\": \"Reinforce the Need\",\n \"description\": \"Reinforce why change is non-negotiable now. A second beat of stakes, framed differently — perhaps a customer voice or a future cost. Cement the reason to act.\",\n \"instructions\": \"Reinforce the need for change\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"sell\",\n \"name\": \"Sell\",\n \"description\": \"Make the audience want the product. Lead with the outcome it produces in their lives. Pricing, packaging, availability go here, but only after the desire is built.\",\n \"instructions\": \"Make them want your solution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"cta\",\n \"name\": \"Call to Action\",\n \"description\": \"Close with the single action you want from the audience. Pre-order, sign up, attend, share. Make it simple, specific, and immediate.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Inspire action\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"strategic-advisory\",\n \"name\": \"Strategic Advisory\",\n \"summary\": \"Consulting-style advisory deck applying Minto's pyramid: title, situation/complication/question, the answer in one sentence, and three argued points with a process. Use when the audience expects a recommendation and the case for it, in that order.\",\n \"audienceFit\": [\n \"executives\",\n \"boards\",\n \"leadership-teams\",\n \"clients\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"consulting\",\n \"advisory\",\n \"strategy\",\n \"minto\"\n ],\n \"beats\": [\n {\n \"id\": \"title\",\n \"name\": \"Title\",\n \"description\": \"Open with a one-line summary statement that captures the recommendation, not the topic. The title slide is the headline of the entire engagement — make it specific enough that someone reading only this slide already understands the position.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Brief summary sentence\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"scq\",\n \"name\": \"Situation, Complication, Question\",\n \"description\": \"Frame the engagement on a single slide: the relevant status quo, what needs to change, and the question that needs to be resolved. This is the SCQ shorthand — context, tension, prompt. Don't yet answer.\"\n },\n {\n \"id\": \"answer\",\n \"name\": \"Answer\",\n \"description\": \"Deliver the recommendation in a single sentence. No arguments yet, no caveats. The answer is the apex of the pyramid; the rest of the deck supports it.\",\n \"instructions\": \"A solution in one sentence, no arguments yet\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"arguments\",\n \"name\": \"Arguments\",\n \"description\": \"Preview the three top-level arguments that defend the answer. One slide naming all three so the audience knows where the deck is going. Each argument should be a complete claim, not a topic.\",\n \"instructions\": \"Support the solution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"argument-1\",\n \"name\": \"Argument 1\",\n \"description\": \"Develop the first argument with supporting data, examples, and reasoning. Lead with the claim, then the evidence — Minto-style. The slide should stand alone if pulled out.\",\n \"instructions\": \"First key point\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"argument-2\",\n \"name\": \"Argument 2\",\n \"description\": \"Develop the second argument the same way. Vary the type of evidence — quantitative, qualitative, comparative — so the audience hears the case from multiple angles.\",\n \"instructions\": \"Second key point\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"argument-3\",\n \"name\": \"Argument 3\",\n \"description\": \"Develop the third argument and walk through the supporting process or methodology. This is often where the 'how' lives — the implementation insight that makes the recommendation feel actionable.\",\n \"instructions\": \"Third key point with a process\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"summary\",\n \"name\": \"Summary\",\n \"description\": \"Recap the answer and arguments in a single slide and point to additional resources. Close with the explicit next step you want the audience to take.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Recap the answer, provide additional resources\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"challenge-resolution\",\n \"name\": \"Challenge → Resolution\",\n \"summary\": \"Identify a current business challenge, trace its origins, and recommend an actionable resolution. Useful for management consulting, internal strategy memos, and any deck where the audience needs a clear path from problem to plan.\",\n \"audienceFit\": [\n \"executives\",\n \"managers\",\n \"stakeholders\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"management\",\n \"strategy\",\n \"consulting\",\n \"advisory\"\n ],\n \"beats\": [\n {\n \"id\": \"hook\",\n \"name\": \"Hook\",\n \"description\": \"Open with a specific, visible signal of the challenge — a metric heading the wrong way, a customer story, a competitive event. The hook should make the audience nod that yes, this matters.\",\n \"instructions\": \"Capture audience attention\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"dilemma\",\n \"name\": \"Dilemma\",\n \"description\": \"State the challenge plainly. What is failing, who is feeling it, and why has it now risen to a level that demands a decision? The dilemma must feel real, not academic.\",\n \"instructions\": \"Present the problem\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"backdrop\",\n \"name\": \"Backdrop\",\n \"description\": \"Provide the context behind the dilemma: how it formed, what's been tried, what constraints exist. Just enough history that the audience trusts your diagnosis without drowning in detail.\",\n \"instructions\": \"Provide context\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"remedy\",\n \"name\": \"Remedy\",\n \"description\": \"Propose the resolution. Lead with the recommendation, then sketch the approach. Be opinionated — vague remedies invite vague responses.\",\n \"instructions\": \"Propose a solution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"evidence\",\n \"name\": \"Evidence\",\n \"description\": \"Demonstrate why the remedy will work. Comparable cases, supporting data, or pilot results. Choose evidence that addresses the audience's most likely objection, not the one easiest to answer.\",\n \"instructions\": \"Demonstrate success\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"motivate\",\n \"name\": \"Motivate\",\n \"description\": \"Make the case for acting now. Quantify the cost of delay and the upside of decisive action. Help the audience picture the room a quarter from now if they say yes.\",\n \"instructions\": \"Encourage action\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conclusion\",\n \"name\": \"Conclusion\",\n \"description\": \"Recap the challenge, the remedy, and the specific decision you need from the audience. End with a clear ask, not a summary slide.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Recap and end powerfully\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"project-proposal\",\n \"name\": \"Project Proposal\",\n \"summary\": \"Internal proposal arc for greenlighting a project: hook, problem, idea, benefits, justification, plan, timeline, risks, outlook, ask. Designed to take a sponsor from 'never heard of this' to 'approved' inside a single meeting.\",\n \"audienceFit\": [\n \"executives\",\n \"sponsors\",\n \"managers\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"management\",\n \"proposal\",\n \"internal\",\n \"planning\"\n ],\n \"beats\": [\n {\n \"id\": \"elevator-pitch\",\n \"name\": \"Elevator Pitch\",\n \"description\": \"Open with the proposal in one slide: the project name, the audience, the goal, and the headline benefit. If a sponsor reads only this slide, they should still know what they're being asked to approve.\",\n \"instructions\": \"Audience hook & objectives\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"problem-statement\",\n \"name\": \"Problem Statement\",\n \"description\": \"Articulate the problem this project solves and why it deserves resources now. Tie it to a known business goal or pain. Vague problems produce vague approvals.\",\n \"instructions\": \"Highlight struggles & project necessity\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"core-concept\",\n \"name\": \"Core Concept\",\n \"description\": \"Describe the central idea of the project in plain language. The 'what' before the 'how.' A reader should be able to repeat the concept in one sentence after this slide.\",\n \"instructions\": \"Share actionable idea\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"benefits\",\n \"name\": \"Benefits\",\n \"description\": \"Quantify the impact: revenue, cost, risk, customer, capability. Use numbers where possible and clear comparisons where not. Each benefit should map to a metric the sponsor cares about.\",\n \"instructions\": \"Spotlight key metrics\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"justification\",\n \"name\": \"Justification\",\n \"description\": \"Connect the project to broader strategy, OKRs, or constraints the audience already cares about. Show why this project is more important than the alternatives competing for the same resources.\",\n \"instructions\": \"Strategic alignment & significance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"approach\",\n \"name\": \"Approach\",\n \"description\": \"Lay out how the project will be executed: the solution, the team shape, the budget envelope. Enough detail to feel credible, not so much that it pre-commits to choices that will mature in flight.\",\n \"instructions\": \"Solution, resources, & budget\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"timeline\",\n \"name\": \"Timeline\",\n \"description\": \"Show the project phases on a timeline, with major milestones and decision points marked. Sponsors are buying a sequence of bets, not a single launch — make those bets visible.\",\n \"instructions\": \"Outline project phases\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"risks\",\n \"name\": \"Risks\",\n \"description\": \"Name the top risks honestly and pair each with a mitigation or open question. Listing risks without mitigations signals you haven't thought it through; hiding risks signals worse.\",\n \"instructions\": \"Consider potential challenges\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"outlook\",\n \"name\": \"Outlook\",\n \"description\": \"Paint the picture of what the organization looks like a quarter or year after the project ships. Stretch beyond the immediate deliverable to the second-order benefits.\",\n \"instructions\": \"Envision project impact\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"wrap-up\",\n \"name\": \"Wrap Up\",\n \"description\": \"Recap the proposal and state the specific decision you're asking for: approval, budget, headcount, sponsorship. Make it easy to say yes today.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Summarize & persuade\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"failure-analysis\",\n \"name\": \"Failure Analysis\",\n \"summary\": \"Walk through what went wrong, why, and what changes — a structured post-mortem for stakeholder reviews. Pairs honest accountability with a credible recovery plan.\",\n \"audienceFit\": [\n \"leadership\",\n \"customers\",\n \"stakeholders\",\n \"partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"postmortem\",\n \"incident\",\n \"review\",\n \"accountability\"\n ],\n \"beats\": [\n {\n \"id\": \"opening-remark\",\n \"name\": \"Opening Remark\",\n \"description\": \"Set an empathetic, accountable tone before any analysis. Acknowledge the impact on the people in the room and the customers affected. Authenticity here earns you the credibility you'll need for the rest of the deck.\",\n \"instructions\": \"Set an empathetic tone\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"incident-breakdown\",\n \"name\": \"Incident Breakdown\",\n \"description\": \"Walk through what happened, in time order. Stick to facts: what systems, what users, what timeline. No causal claims yet — just an accurate, neutral reconstruction the audience can trust.\",\n \"instructions\": \"Detail the failure\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"impact-analysis\",\n \"name\": \"Impact Analysis\",\n \"description\": \"Quantify the damage. Customer-hours lost, revenue at risk, SLA breaches, downstream knock-ons. Be specific and direct; vague impact statements undermine the rest of the post-mortem.\",\n \"instructions\": \"Describe failure's effects\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"root-cause\",\n \"name\": \"Root Cause\",\n \"description\": \"Trace the failure to its underlying cause, not the most visible symptom. Use a 'five whys' or fishbone framing if useful. Distinguish between the proximate trigger and the systemic conditions that allowed it.\",\n \"instructions\": \"Analyze underlying reasons\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"proposed-solutions\",\n \"name\": \"Proposed Solutions\",\n \"description\": \"Present the corrective actions you're taking. Lead with the highest-leverage fix; sequence the rest. For each action, name an owner and a date — solutions without owners are aspirations.\",\n \"instructions\": \"Suggest corrective measures\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"action-plan\",\n \"name\": \"Action Plan\",\n \"description\": \"Lay out the rollout: what ships when, how it's verified, who signs off. Show that 'fixed' has a definition and a deadline, not just intent.\",\n \"instructions\": \"Map out steps\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"evaluate-outcome\",\n \"name\": \"Evaluate Outcome\",\n \"description\": \"Define the metrics that will tell you the fix worked. Pre/post comparisons, monitoring SLOs, error budgets — whatever proves the failure mode is closed and not just deferred.\",\n \"instructions\": \"Assess corrective actions\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"lessons-learned\",\n \"name\": \"Lessons Learned\",\n \"description\": \"Distill the broader lessons that outlive this specific incident. What does the team or organization now know that it didn't before? What patterns will you watch for elsewhere?\",\n \"instructions\": \"Reflect on failure lessons\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"preventive-measures\",\n \"name\": \"Preventive Measures\",\n \"description\": \"List the systemic safeguards being added — process changes, automated checks, on-call procedures, review gates. Show how this category of failure becomes harder to recur, not just this specific instance.\",\n \"instructions\": \"List safeguards\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing-thoughts\",\n \"name\": \"Closing Thoughts\",\n \"description\": \"Close with humility and forward momentum. Re-affirm accountability, thank the audience for their patience, and signal confidence in the path forward without overclaiming.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Empathize, trust, and encourage\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"classic-story\",\n \"name\": \"Classic Story\",\n \"summary\": \"Movie-style narrative arc applied to any topic: open the scene, introduce the villain, raise the stakes, send in the hero, deliver the plan, and close with hope. A versatile go-to when you need to make information feel like a story.\",\n \"audienceFit\": [\n \"general-audience\",\n \"customers\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"storytelling\",\n \"general\",\n \"engagement\"\n ],\n \"beats\": [\n {\n \"id\": \"opening\",\n \"name\": \"Opening\",\n \"description\": \"Capture attention with a vivid moment, image, or question that sets the world of the story. The audience should immediately know what kind of room they're in. Avoid agendas — the opening is the first scene, not a preamble.\",\n \"instructions\": \"Capture audience attention\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"context\",\n \"name\": \"Context\",\n \"description\": \"Establish what's normal in this world before anything goes wrong. Just enough background for the audience to feel the stakes when the villain shows up. Keep it tight; backstory is fuel, not the engine.\",\n \"instructions\": \"Give background & importance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"villain\",\n \"name\": \"Villain\",\n \"description\": \"Introduce the antagonist — a problem, a competitor, a market force, an inertia. Give it a face and a name where you can. The clearer the villain, the more the audience cares about how the story turns out.\",\n \"instructions\": \"Introduce problem\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"despair\",\n \"name\": \"Despair\",\n \"description\": \"Show what's at risk if the villain wins. Emphasize the human or business cost of inaction. Don't rush past this beat — the discomfort here is what makes the resolution land.\",\n \"instructions\": \"Emphasize negative impact\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"hero\",\n \"name\": \"Hero\",\n \"description\": \"Reveal the hero of the story. Often this is the audience themselves, your team, or your product. Frame the hero by what they uniquely bring to the fight, not by their résumé.\",\n \"instructions\": \"Present solution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"plan\",\n \"name\": \"Plan\",\n \"description\": \"Walk through how the hero defeats the villain. Concrete, sequential, credible. Generic plans signal weak heroes; specific plans earn belief that the ending you're promising is reachable.\",\n \"instructions\": \"Detail implementation\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing\",\n \"name\": \"Closing\",\n \"description\": \"End with the resolution and the lesson. Show what the world looks like after the villain loses, and leave the audience with the feeling — and the line — they'll repeat afterwards.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Inspire & conclude\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"business-narrative\",\n \"name\": \"Business Narrative\",\n \"summary\": \"Tell a business strategy or solution as a story: setting, challenge, tension, hero, plan, outcome. Useful for internal alignment decks, town halls, and any audience that responds better to story shape than to bullet lists.\",\n \"audienceFit\": [\n \"internal-teams\",\n \"leadership\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"management\",\n \"storytelling\",\n \"internal\",\n \"strategy\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Engage the audience and set expectations for the next twenty minutes. Tell them you're going to tell them a story — and then start telling it. Avoid a separate agenda slide; the introduction is the first scene.\",\n \"instructions\": \"Engage and set expectations\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"setting\",\n \"name\": \"Setting\",\n \"description\": \"Establish the world the story takes place in: the team, the market, the moment. Just enough context that the challenge will feel meaningful when it arrives.\",\n \"instructions\": \"Establish the environment\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"challenge\",\n \"name\": \"Challenge\",\n \"description\": \"Identify the issue at hand. Concrete, specific, attributable. The challenge is the inciting incident — the thing that pulled the rest of the story into motion.\",\n \"instructions\": \"Identify the issue at hand\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"tension\",\n \"name\": \"Tension\",\n \"description\": \"Raise the stakes. What happens if the challenge isn't met? Quantify the cost, name the people affected, surface the trade-offs that make the choice hard. Tension is what makes the audience lean in.\",\n \"instructions\": \"Emphasize the stakes\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"solution\",\n \"name\": \"Solution\",\n \"description\": \"Reveal the strategy or hero of the story. Lead with what changes for the audience or customer when the solution is in place. This is the turn from problem to promise.\",\n \"instructions\": \"Present the hero/strategy\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"implementation\",\n \"name\": \"Implementation\",\n \"description\": \"Describe the path to success. Phases, owners, milestones, key bets. Show the audience that the solution has weight behind it — not just intent.\",\n \"instructions\": \"Describe the path to success\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"recap\",\n \"name\": \"Recap\",\n \"description\": \"Bring the audience back to the surface with a clear summary of what was said and decided. Echo the language from the opening so the story feels closed.\",\n \"instructions\": \"Review key points and insights\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conclusion\",\n \"name\": \"Conclusion\",\n \"description\": \"Reinforce the key message and the call to action. End on the line you most want repeated in tomorrow's hallway conversations.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Reinforce takeaways and call to action\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"rags-to-riches\",\n \"name\": \"Rags to Riches\",\n \"summary\": \"Underdog journey from initial failure to eventual success. Pulls on resilience, grit, and perseverance — useful for founder stories, brand stories, and any deck where the audience needs to feel the cost behind the win.\",\n \"audienceFit\": [\n \"general-audience\",\n \"customers\",\n \"press\",\n \"candidates\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"storytelling\",\n \"founder\",\n \"brand\",\n \"inspirational\"\n ],\n \"beats\": [\n {\n \"id\": \"origin\",\n \"name\": \"Origin\",\n \"description\": \"Start at the bottom. Describe the humble beginning, the constraint, the moment before anything had been built. Concrete details — a place, a year, a feeling — earn the audience's investment in what follows.\",\n \"instructions\": \"Humble beginning\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"inspiration\",\n \"name\": \"Inspiration\",\n \"description\": \"Show the moment the protagonist found their calling. A conversation, a customer, a problem they couldn't unsee. The inspiration is the engine that pushes the rest of the story uphill.\",\n \"instructions\": \"Discover true calling\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"opportunity\",\n \"name\": \"Opportunity\",\n \"description\": \"Reveal the chance the protagonist took. Why this and not something safer? Make the choice visible — opportunities only count when there was something else they passed up to grab them.\",\n \"instructions\": \"Spot golden chance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"adversity\",\n \"name\": \"Adversity\",\n \"description\": \"Walk through the hardest stretch. Concrete failures, near-misses, moments of doubt. Resist the temptation to skip past the pain — the audience trusts the win more when the loss was real.\",\n \"instructions\": \"Face hardest struggles\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"overcoming\",\n \"name\": \"Overcoming\",\n \"description\": \"Show how the obstacles got beaten. What changed, what was learned, what hard call was made. The transition from 'rags' to 'riches' should feel earned, not granted.\",\n \"instructions\": \"Surmount tough obstacles\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"impactful-change\",\n \"name\": \"Impactful Change\",\n \"description\": \"Describe the moment the world tipped. The customer who said yes, the product that broke through, the metric that turned. One concrete transformation lands harder than a montage.\",\n \"instructions\": \"Alter the status quo\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"lasting-legacy\",\n \"name\": \"Lasting Legacy\",\n \"description\": \"Close on what the journey means for those who come next. The lesson, the people changed, the work that endures. Leave the audience with a takeaway that outlives the story.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Create enduring effect\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"underdog-victory\",\n \"name\": \"Underdog Victory\",\n \"summary\": \"Story arc of someone or something overlooked who triumphs in the end. Useful for founder narratives, brand stories, and team-building decks where the lesson is about resilience and unexpected wins.\",\n \"audienceFit\": [\n \"general-audience\",\n \"internal-teams\",\n \"candidates\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"storytelling\",\n \"inspirational\",\n \"founder\",\n \"team\"\n ],\n \"beats\": [\n {\n \"id\": \"origin\",\n \"name\": \"Origin\",\n \"description\": \"Establish the opening scene: who the underdog is and the world that overlooked them. Specific details make the rest of the journey feel real.\",\n \"instructions\": \"Establish opening scene\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"struggles\",\n \"name\": \"Struggles\",\n \"description\": \"Highlight the early setbacks. What didn't work, who said no, where the path closed up. The audience needs to feel the doubt before they can feel the win.\",\n \"instructions\": \"Highlight initial setbacks\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"determination\",\n \"name\": \"Determination\",\n \"description\": \"Showcase the enduring passion that kept the underdog going. What they refused to give up on, and why. Determination, in this beat, is the only resource the underdog has.\",\n \"instructions\": \"Showcase enduring passion\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"crisis\",\n \"name\": \"Crisis\",\n \"description\": \"Identify the lowest point of the journey. The moment the dream nearly ended. Don't soften — the contrast with the triumph ahead depends on the depth of this slide.\",\n \"instructions\": \"Identify lowest point\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"resolve\",\n \"name\": \"Resolve\",\n \"description\": \"Articulate the choice the underdog made to keep going. The strong will, the small bet, the borrowed faith. Resolve is where the protagonist becomes someone the audience roots for.\",\n \"instructions\": \"Articulate strong will\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"breakthrough\",\n \"name\": \"Breakthrough\",\n \"description\": \"Show the reward of perseverance: the customer who said yes, the door that opened, the fortune that turned. The breakthrough should feel earned, not granted.\",\n \"instructions\": \"Reward of perseverance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"triumph\",\n \"name\": \"Triumph\",\n \"description\": \"Reveal the ultimate success. Concrete outcomes, named milestones. The triumph is the audience's emotional payoff — let it land.\",\n \"instructions\": \"Reveal ultimate success\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"legacy\",\n \"name\": \"Legacy\",\n \"description\": \"Share the lasting impact. What the underdog's victory makes possible for those who come after. The legacy beat is what turns a story into a lesson.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Share long-lasting impact\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"survival-story\",\n \"name\": \"Survival Story\",\n \"summary\": \"Narrative arc of overcoming adversity through determination: catastrophe, backstory, plan, danger, effort, struggle, pivot, breakthrough, legacy, takeaway. For brand stories, founder histories, and leadership talks where the lesson lives in the comeback.\",\n \"audienceFit\": [\n \"general-audience\",\n \"internal-teams\",\n \"press\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"storytelling\",\n \"inspirational\",\n \"founder\",\n \"comeback\"\n ],\n \"beats\": [\n {\n \"id\": \"catastrophe\",\n \"name\": \"Catastrophe\",\n \"description\": \"Open in the middle of the disaster. Specific moment, specific stakes, specific damage. Drop the audience into the worst point of the story before walking them back.\",\n \"instructions\": \"Present initial disaster\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"backstory\",\n \"name\": \"Backstory\",\n \"description\": \"Detail the events that led up to the catastrophe. Just enough for the audience to understand how the disaster could have happened. Avoid moralizing — the story does the work.\",\n \"instructions\": \"Detail past events\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"blueprint\",\n \"name\": \"Blueprint\",\n \"description\": \"Illustrate the recovery plan. Specific moves, specific bets, specific people. The audience should see the strategy as more than 'try hard.'\",\n \"instructions\": \"Illustrate recovery plans\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"danger\",\n \"name\": \"Danger\",\n \"description\": \"Highlight the emerging threats to the recovery plan. New risks, returning ones. Tension here makes the eventual triumph credible.\",\n \"instructions\": \"Highlight emerging threats\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"endeavor\",\n \"name\": \"Endeavor\",\n \"description\": \"Show the determined effort underway. The hours, the trade-offs, the discipline. The audience must feel the work, not just hear about it.\",\n \"instructions\": \"Show determination effort\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"struggles\",\n \"name\": \"Struggles\",\n \"description\": \"Showcase challenging moments along the way: the setbacks, the false starts, the hard calls. Honest setbacks make eventual success feel earned.\",\n \"instructions\": \"Showcase challenging encounters\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"pivot\",\n \"name\": \"Pivot\",\n \"description\": \"Highlight the strategic shift that changed the trajectory. What got reconsidered, what got dropped, what got doubled down on. The pivot is the moment the protagonist became something new.\",\n \"instructions\": \"Highlight strategy shift\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"breakthrough\",\n \"name\": \"Breakthrough\",\n \"description\": \"Emphasize the moment adversity finally broke. Concrete result, concrete date. Let the slide land — the audience came for this turn.\",\n \"instructions\": \"Emphasize overcoming adversity\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"legacy\",\n \"name\": \"Legacy\",\n \"description\": \"Discuss the enduring impact. What survival made possible afterward, who benefited, what was built on top. Survival stories are most powerful when they create more than they restore.\",\n \"instructions\": \"Discuss enduring impact\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"takeaway\",\n \"name\": \"Takeaway\",\n \"description\": \"Share the lesson the audience can carry away. One transferable insight, framed for their own challenges — not a general moral.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Share important lessons\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"educate\",\n \"name\": \"Educate\",\n \"summary\": \"Engaging-explainer arc inspired by Mary Roach: surprise the audience with a fact, walk them through evidence and anecdote, scrutinize the assumptions, then close on a memorable insight. For technical, scientific, or analytical talks that need to feel more like discovery than instruction.\",\n \"audienceFit\": [\n \"general-audience\",\n \"students\",\n \"practitioners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"keynote\",\n \"education\",\n \"explainer\",\n \"science\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Introduce the topic in a way that respects the audience's time and curiosity. Frame why this question is worth asking, and signal the shape of the journey ahead without giving away the destination.\",\n \"instructions\": \"Introduce the topic\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"surprising-fact\",\n \"name\": \"Surprising Fact\",\n \"description\": \"Lead with a single curious fact that recasts how the audience thinks about the topic. The fact should be small, specific, and unforgettable — the cognitive door the rest of the talk walks through.\",\n \"instructions\": \"Share a curious fact\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"experiment\",\n \"name\": \"Experiment\",\n \"description\": \"Walk through a method, study, or thought experiment that probes the surprising fact. Show how knowledge here gets made — the audience should feel like they're shoulder-to-shoulder with the investigator.\",\n \"instructions\": \"Explain a tried method\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"amusing-anecdote\",\n \"name\": \"Amusing Anecdote\",\n \"description\": \"Drop in a story or moment from the field that brings the topic to human scale. Personality and humor here keep the audience leaning forward; technical depth without warmth loses the room.\",\n \"instructions\": \"Relay an interesting story\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"intriguing-information\",\n \"name\": \"Intriguing Information\",\n \"description\": \"Layer in the more complex data or detail. By this point the audience is invested enough to do real work alongside you. Visualize generously — make the numbers tangible.\",\n \"instructions\": \"Share complex data\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"skeptical-scrutiny\",\n \"name\": \"Skeptical Scrutiny\",\n \"description\": \"Question the easy interpretations. Challenge the audience's defaults and your own. Showing where the evidence is contested is what separates a teacher from a publicist.\",\n \"instructions\": \"Encourage questioning of accepted truths\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"extraordinary-explanation\",\n \"name\": \"Extraordinary Explanation\",\n \"description\": \"Present the most counterintuitive or beautiful explanation the topic offers. Take your time here — this is the payoff slide the audience came for.\",\n \"instructions\": \"Break down unusual research findings\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"unconventional-use\",\n \"name\": \"Unconventional Use\",\n \"description\": \"Show an unexpected application or implication of the idea. Surprise reinforces the lesson and gives the audience a story to retell tomorrow.\",\n \"instructions\": \"Expand on unique aspects\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"captivating-conclusion\",\n \"name\": \"Captivating Conclusion\",\n \"description\": \"Close with a thoughtful, slightly poetic wrap-up. Echo the surprising fact, name the lesson, and leave the audience with a new question instead of a tidy answer.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Provide a thoughtful wrap-up\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"persuade\",\n \"name\": \"Persuade\",\n \"summary\": \"Argument-driven keynote arc inspired by Ken Robinson: grip the audience, challenge the status quo, define the problem, anchor it in story and statistic, deliver a major revelation, propose change, and end on a question that stays with them.\",\n \"audienceFit\": [\n \"general-audience\",\n \"policymakers\",\n \"industry-peers\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"keynote\",\n \"persuasive\",\n \"advocacy\",\n \"talk\"\n ],\n \"beats\": [\n {\n \"id\": \"gripping-introduction\",\n \"name\": \"Gripping Introduction\",\n \"description\": \"Open with a moment, image, or claim the audience can't easily look away from. The first sixty seconds buy you the next twenty minutes — spend them on something specific and emotionally charged, not on housekeeping.\",\n \"instructions\": \"Draw in the audience with a compelling opener\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"challenge-status-quo\",\n \"name\": \"Challenge the Status Quo\",\n \"description\": \"Call out the system, norm, or assumption that needs examination. Be precise about what you're disagreeing with so the rest of the talk can be specific in response. Avoid strawmen — name the strongest version of the view you're contesting.\"\n },\n {\n \"id\": \"present-problem\",\n \"name\": \"Present the Problem\",\n \"description\": \"Define the issue the audience needs to care about. Concrete, scoped, attributable. The clearer the problem, the more credible the eventual solution.\"\n },\n {\n \"id\": \"personal-story\",\n \"name\": \"Personal Story\",\n \"description\": \"Anchor the issue in a specific person, place, or moment. Story is what gets the argument past the audience's defenses. Pick a story that personalizes the data without overstating it.\",\n \"instructions\": \"Share significant stories to illuminate the issue\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"statistic-shock\",\n \"name\": \"Statistic Shock\",\n \"description\": \"Drop in a single statistic that recasts the scale of the problem. One number, presented well, lands harder than a dashboard. Cite the source so the audience can repeat it with confidence.\",\n \"instructions\": \"Use impactful stats to highlight the gravity of the issue\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"historical-context\",\n \"name\": \"Historical Context\",\n \"description\": \"Show how the issue evolved. Why it has the shape it does today, what was tried, what was missed. Historical context turns 'this is broken' into 'this stayed broken for these reasons.'\",\n \"instructions\": \"Show the evolution or history of the issue\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"weave-narrative\",\n \"name\": \"Weave a Narrative\",\n \"description\": \"Connect the threads — story, statistic, history — into a single argument. The audience should feel the case clicking together. This is the slide where rhetoric becomes architecture.\"\n },\n {\n \"id\": \"major-revelation\",\n \"name\": \"Major Revelation\",\n \"description\": \"Deliver the surprising or significant turn. The fact, finding, or reframing the rest of the talk has been earning. The revelation should redirect, not merely confirm.\",\n \"instructions\": \"Deliver a surprising or significant discovery\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"propose-solution\",\n \"name\": \"Propose Solution\",\n \"description\": \"Advocate for the change you want. Concrete enough to be acted on, broad enough to inspire. Pair the solution with the smallest credible first step.\",\n \"instructions\": \"Advocate for change or propose an actionable solution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"final-question\",\n \"name\": \"Final Question\",\n \"description\": \"Close on a question rather than a summary. The right closing question follows the audience out of the room and into their conversations afterward.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Finish with a thought-provoking question to stimulate audience thinking\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"reveal\",\n \"name\": \"Reveal\",\n \"summary\": \"Insight-driven keynote arc inspired by Amy Cuddy's 2012 talk on body language: connect through personal story, ground in research, illustrate with anecdote, summarize, break stereotypes, advise, demonstrate authenticity, close with impact. For talks that aim to change how the audience sees something they thought they understood.\",\n \"audienceFit\": [\n \"general-audience\",\n \"academics\",\n \"professionals\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 25\n },\n \"tags\": [\n \"keynote\",\n \"research\",\n \"talk\",\n \"inspirational\"\n ],\n \"beats\": [\n {\n \"id\": \"personal-story\",\n \"name\": \"Personal Story\",\n \"description\": \"Open with a personal experience that establishes why the topic matters to you. Specificity earns intimacy; intimacy earns the audience's permission to be moved.\",\n \"instructions\": \"Share personal experiences to connect with the audience\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"research-exposition\",\n \"name\": \"Research Exposition\",\n \"description\": \"Lay out the scientific or empirical data that backs the premise. Be rigorous but not academic — the audience needs to understand the evidence well enough to defend it later.\",\n \"instructions\": \"Unravel scientific data backing the premise\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"real-life-anecdote\",\n \"name\": \"Real-Life Anecdote\",\n \"description\": \"Illustrate the research with a story from the field. Make the abstract finding feel like something that happens to people the audience could imagine being.\",\n \"instructions\": \"Illustrate with stories to make the point relatable\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"critical-insights\",\n \"name\": \"Critical Insights\",\n \"description\": \"Summarize the two or three findings the audience must walk away with. Distill them into language a non-specialist could repeat without distortion.\",\n \"instructions\": \"Summarize key points\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"break-stereotypes\",\n \"name\": \"Break Stereotypes\",\n \"description\": \"Question redundant norms or beliefs the research undermines. Be specific about what's being challenged so the audience knows what to update.\",\n \"instructions\": \"Question redundant norms and belief systems\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"empowering-advice\",\n \"name\": \"Empowering Advice\",\n \"description\": \"Translate the insights into a small, actionable practice. The advice should be doable today, not only next quarter — the goal is movement, not aspiration.\",\n \"instructions\": \"Motivational message to act upon\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"authenticity\",\n \"name\": \"Authenticity\",\n \"description\": \"Speak honestly about your own struggle with the topic. Vulnerability, used with restraint, is what turns research into a felt truth.\",\n \"instructions\": \"Honest and real communication to demonstrate authenticity\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"close-with-impact\",\n \"name\": \"Close With Impact\",\n \"description\": \"End on a motivational high — the line, image, or invitation you want to follow the audience out of the room. Close the talk where it began, transformed.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"End on a motivational high\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"justice\",\n \"name\": \"Justice\",\n \"summary\": \"Advocacy arc inspired by the rhetorical structure of Martin Luther King Jr.'s 'I Have a Dream' speech: name the inequality, share the dream, build urgency, layer further visions, emphasize unity, call to action, and close on hope. For movement-building keynotes and mission-driven speeches.\",\n \"audienceFit\": [\n \"general-audience\",\n \"advocates\",\n \"policymakers\",\n \"community\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"inspirational\",\n \"advocacy\",\n \"movement\",\n \"keynote\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Set the stage with a moment that earns the audience's full attention. Speak in the moral register the rest of the talk will require. Avoid throat-clearing — open as if the speech were already underway.\",\n \"instructions\": \"Set the stage\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"give-context\",\n \"name\": \"Give Context\",\n \"description\": \"Place the issue in its historical and current context. What promises were made, what has and hasn't been kept. Context turns the speech from opinion into accountability.\",\n \"instructions\": \"Put in historical and current context\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"highlight-inequality\",\n \"name\": \"Highlight Inequality\",\n \"description\": \"Show specific, undeniable examples of the inequality at issue. Concrete moments and people, not abstractions. The audience should feel the gap between what is and what was promised.\",\n \"instructions\": \"Show examples of inequality\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"share-dream\",\n \"name\": \"Share the Dream\",\n \"description\": \"Describe the future you envision in vivid, specific detail. The dream must be both ambitious and recognizable — a world the audience can picture themselves living in.\",\n \"instructions\": \"Describe your vision\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"create-urgency\",\n \"name\": \"Create Urgency\",\n \"description\": \"Explain why the time for change is now. The cost of waiting, the moment that won't return. Urgency converts shared vision into shared movement.\",\n \"instructions\": \"Explain the need for immediate change\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"another-dream\",\n \"name\": \"Continue the Vision\",\n \"description\": \"Layer additional visions of the future in parallel structure. Repetition and rhythm build momentum the way a single image cannot.\",\n \"instructions\": \"Continue to elaborate on your vision\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"emphasize-unity\",\n \"name\": \"Emphasize Unity\",\n \"description\": \"Speak to the collective power of the audience together. Name common ground that crosses lines the issue normally divides. Unity is the engine that turns dream into march.\",\n \"instructions\": \"Talk about collective power\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"last-dream\",\n \"name\": \"Final Vision\",\n \"description\": \"Deliver one more, fully realized vision of the world you're calling for. Specific enough to be remembered, expansive enough to inspire.\",\n \"instructions\": \"Further share dreams of ideal in-depth\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"call-to-action\",\n \"name\": \"Call to Action\",\n \"description\": \"Ask the audience to participate in the change. Be specific about what 'doing something' looks like — show, march, give, vote, organize. Vague CTAs produce vague action.\",\n \"instructions\": \"Ask audience to participate in change\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"show-determination\",\n \"name\": \"Show Determination\",\n \"description\": \"Encourage persistence in the face of resistance. Acknowledge what will be hard. Determination, named honestly, is more durable than easy optimism.\",\n \"instructions\": \"Encourage persistence\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"create-hope\",\n \"name\": \"Create Hope\",\n \"description\": \"Close on hope grounded in evidence: progress already made, victories already won, ground already moved. Hope as a conclusion lands strongest when it sounds like it has been earned.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Inspire hope for future\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"innovation\",\n \"name\": \"Innovation\",\n \"summary\": \"Keynote-style product reveal inspired by Steve Jobs's 2007 iPhone launch: stage-set, reveal, demonstrate, wow, differentiate, reframe the category, build excitement, call to action, and thank the audience. For category-defining product moments.\",\n \"audienceFit\": [\n \"customers\",\n \"press\",\n \"developers\",\n \"general-audience\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"inspirational\",\n \"keynote\",\n \"launch\",\n \"product\"\n ],\n \"beats\": [\n {\n \"id\": \"opening\",\n \"name\": \"Opening\",\n \"description\": \"Set the stage. Tell the audience they're about to see something that matters, without yet showing it. The pause before the reveal is part of the reveal.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Set the stage\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"revelation\",\n \"name\": \"Revelation\",\n \"description\": \"Announce the product. One image, one name, one sentence. Anything more competes with the moment. The slide should feel like the curtain going up.\",\n \"instructions\": \"Announce product\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"demonstration\",\n \"name\": \"Demonstration\",\n \"description\": \"Show the product in real use. Choose a single defining workflow that captures what the product does and how it feels. Live beats canned wherever possible.\",\n \"instructions\": \"Showcase the product\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"wow-factor\",\n \"name\": \"Wow Factor\",\n \"description\": \"Highlight the cutting-edge feature that earns the headline. One thing, presented well — the audience should leave able to repeat it in a sentence.\",\n \"instructions\": \"Highlight cutting-edge features\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"differentiation\",\n \"name\": \"Differentiation\",\n \"description\": \"Make the contrast with existing alternatives unmistakable. Use comparisons that the audience already understands; don't argue against straw versions of the competition.\",\n \"instructions\": \"Distinctive factors\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"revolution\",\n \"name\": \"Revolution\",\n \"description\": \"Reframe the category. Show how the product changes what the playing field looks like, not just where you sit on it. This is the slide pundits will quote.\",\n \"instructions\": \"Change in the playing field\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"excitement\",\n \"name\": \"Excitement\",\n \"description\": \"Build anticipation around what's next: availability, partnerships, what the audience can imagine doing with the product. Excitement is how the room exits the keynote into the world.\",\n \"instructions\": \"Build anticipation\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"call-to-action\",\n \"name\": \"Call to Action\",\n \"description\": \"Give the audience the action that channels the excitement. Pre-order, try it, tell others. Be specific so the energy converts into behavior.\",\n \"instructions\": \"Urge to explore\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"gratitude\",\n \"name\": \"Gratitude\",\n \"description\": \"Thank the team that built it and the audience that came. Brief, sincere, not perfunctory. The closing thanks is the period at the end of the keynote.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Thank the audience\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"focus\",\n \"name\": \"Focus\",\n \"summary\": \"Long-term, principle-driven business arc inspired by Jeff Bezos's 1997 letter to shareholders: name the focus, account for performance, articulate the framework, and commit to the discipline that will keep the company on track. For founder letters, all-hands narratives, and any deck where the audience needs to feel the through-line.\",\n \"audienceFit\": [\n \"shareholders\",\n \"leadership\",\n \"all-hands\",\n \"board\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"inspirational\",\n \"leadership\",\n \"principles\",\n \"all-hands\"\n ],\n \"beats\": [\n {\n \"id\": \"welcome\",\n \"name\": \"Welcome\",\n \"description\": \"Open with a brief framing of what this update is for and what you intend to leave the audience with. Set the tone — long-term, candid, principle-driven.\",\n \"instructions\": \"Overview and objectives\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"accomplishments\",\n \"name\": \"Accomplishments\",\n \"description\": \"Showcase the period's most material wins, briefly. The audience came for what's next; wins earn permission for the harder slides ahead, but they aren't the headline.\",\n \"instructions\": \"Showcase recent achievements\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"potential\",\n \"name\": \"Potential\",\n \"description\": \"Detail the market and customer opportunities ahead. Size them honestly and connect them to the work already underway. Potential without specifics reads as wishful.\",\n \"instructions\": \"Detail market opportunities\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"competitive-edge\",\n \"name\": \"Competitive Edge\",\n \"description\": \"Reveal the strategic positioning that gives the business its advantage. Frame it as a structural moat, not a list of features. The audience should be able to repeat the moat in their own words.\",\n \"instructions\": \"Reveal strategic positioning\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"long-term-vision\",\n \"name\": \"Long-Term Vision\",\n \"description\": \"Emphasize the long-term view that anchors decisions. Quarters serve years; years serve decades. Anchor the audience in the time horizon you actually run the business on.\",\n \"instructions\": \"Emphasize focused future orientation\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"performance-metrics\",\n \"name\": \"Performance Metrics\",\n \"description\": \"Illuminate the indicators that show the long-term thesis is working. Choose metrics that compound — retention, NPS, unit economics — over those that flatter.\",\n \"instructions\": \"Illuminate growth indicators\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"growth-achievement\",\n \"name\": \"Growth Achievement\",\n \"description\": \"Certify the tangible progress against the long-term plan. Year-over-year, cohort behavior, expanded reach. Growth, in this beat, is evidence that the strategy is real.\",\n \"instructions\": \"Certify tangible progress\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"strategic-framework\",\n \"name\": \"Strategic Framework\",\n \"description\": \"Explain the principles that guide decisions. Customer obsession, long-term thinking, frugality, ownership — whatever the actual operating discipline is. Principles are the connective tissue between strategy and behavior.\",\n \"instructions\": \"Explain decision principles\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"expansion\",\n \"name\": \"Expansion\",\n \"description\": \"Detail the next areas of growth: products, segments, geographies. Tie each to the principles above so the audience sees expansion as continuity rather than scatter.\",\n \"instructions\": \"Detail growth potential\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"future-objectives\",\n \"name\": \"Future Objectives\",\n \"description\": \"Forecast the targets and commitments for the period ahead. Be specific enough to be held accountable. Vague objectives are how strategies erode.\",\n \"instructions\": \"Forecast upcoming targets\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"acknowledgment\",\n \"name\": \"Acknowledgment\",\n \"description\": \"Recognize the contributions of teams, customers, and partners that made the period possible. Specific names land harder than blanket thanks.\",\n \"instructions\": \"Recognize contributions and successes\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing-remarks\",\n \"name\": \"Closing Remarks\",\n \"description\": \"Recap the focus, thank the audience, and inspire the work ahead. End with the line you most want quoted in tomorrow's newsletter.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Recap, thank, inspire\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"qbr\",\n \"name\": \"Quarterly Business Review\",\n \"summary\": \"Standard QBR / business-review arc for internal leadership reviews. Recap commitments, show what the numbers say, separate wins from challenges, lay out the plan, surface risks, and request the asks the team needs to execute.\",\n \"audienceFit\": [\n \"leadership\",\n \"executives\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 90\n },\n \"tags\": [\n \"internal\",\n \"review\",\n \"operations\",\n \"reporting\"\n ],\n \"beats\": [\n {\n \"id\": \"objectives\",\n \"name\": \"Objectives\",\n \"description\": \"Open with what this review is for and what decisions you want out of it. Frame the scope and the hour ahead, so the audience knows what they're being asked to weigh in on.\",\n \"layoutHint\": \"title-center\",\n \"instructions\": \"Set the expectations\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"recap\",\n \"name\": \"Recap\",\n \"description\": \"Briefly remind the audience what the team committed to last quarter and the high-level results against those commitments. Keep it terse — this grounds the review in prior context, but the meat is ahead.\"\n },\n {\n \"id\": \"performance-headline\",\n \"name\": \"Performance Headline\",\n \"description\": \"Show the top three to five KPIs with target vs actual and direction-of-travel. One slide that lets a busy executive grasp the quarter's outcome at a glance. Lead with the number, not the methodology.\"\n },\n {\n \"id\": \"performance-detail\",\n \"name\": \"Performance Detail\",\n \"description\": \"Drill into the supporting metrics by area or function. One chart per metric; clear y-axis, clear unit, clear comparison period. Call out anomalies before someone else does.\"\n },\n {\n \"id\": \"wins\",\n \"name\": \"Wins\",\n \"description\": \"Highlight the quarter's biggest wins and who drove them. Be specific — name the deal, the launch, the customer, the team. Recognition belongs in the deck, not just in the meeting.\"\n },\n {\n \"id\": \"challenges\",\n \"name\": \"Challenges\",\n \"description\": \"Name the misses and headwinds honestly. What didn't work, what's still hard, what got harder. Pretending things are fine costs more credibility than acknowledging they aren't.\",\n \"instructions\": \"Address difficulties\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"insights\",\n \"name\": \"Insights\",\n \"description\": \"Translate the numbers into 'so what.' What did the data tell you about customers, the market, your operations, your bets? Insights should be opinions backed by evidence, not restatements of the metrics.\"\n },\n {\n \"id\": \"priorities\",\n \"name\": \"Next-Quarter Priorities\",\n \"description\": \"Lay out the next quarter's top priorities. Each should trace clearly back to an insight or commitment. Three to five priorities, max — laundry lists are a tell that the team hasn't decided what matters most.\"\n },\n {\n \"id\": \"sequencing\",\n \"name\": \"Sequencing\",\n \"description\": \"Show the order in which priorities ship and how they fit together. Dependencies, milestones, target dates. The audience should leave able to predict what comes when, not just what.\"\n },\n {\n \"id\": \"risks\",\n \"name\": \"Risks\",\n \"description\": \"Name the risks to the plan honestly. Dependencies, assumptions, capacity gaps, market factors. For each risk, state the mitigation or the open question the audience can help resolve.\"\n },\n {\n \"id\": \"asks\",\n \"name\": \"Asks\",\n \"description\": \"Specific, named requests of the audience. Decisions needed, resources required, escalations to unblock. End with clarity on what happens next and who owns it.\",\n \"layoutHint\": \"title-left\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"business-review\",\n \"name\": \"Business Review\",\n \"summary\": \"Full-loop review of recent activities to identify achievements, address challenges, and plan improvements. Goes deeper than a status update — closer to a customer-facing or partner-facing relationship review.\",\n \"audienceFit\": [\n \"customers\",\n \"partners\",\n \"stakeholders\",\n \"leadership\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 90\n },\n \"tags\": [\n \"customer-relationship\",\n \"review\",\n \"operations\"\n ],\n \"beats\": [\n {\n \"id\": \"logo\",\n \"name\": \"Logo\",\n \"description\": \"Cover slide with logos and the review period. Establishes brand identity and signals the level of formality the rest of the deck will hold to.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Identity & representation\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"opening\",\n \"name\": \"Opening\",\n \"description\": \"Frame the meeting context and the goals for the next hour. What you'll cover, what decisions you want, what you don't intend to relitigate.\",\n \"instructions\": \"Meeting context & goals\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"review\",\n \"name\": \"Review\",\n \"description\": \"Outline the recent activities in scope: launches, projects, programs. Just enough scope-setting that the rest of the deck has shared vocabulary.\",\n \"instructions\": \"Outline recent activities\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"successes\",\n \"name\": \"Successes\",\n \"description\": \"Recognize the achievements in the review window. Lead with outcomes the audience cares about, not effort. Specific moves earn more credibility than aggregate progress.\",\n \"instructions\": \"Recognize achievements\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"challenges\",\n \"name\": \"Challenges\",\n \"description\": \"Address the problems faced honestly. What didn't work, what's still hard. Naming challenges in front of the audience earns more trust than letting them ask.\",\n \"instructions\": \"Address problems faced\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"solutions\",\n \"name\": \"Solutions\",\n \"description\": \"Discuss the fixes already implemented. Pair each with the result it produced, or, if it's still in flight, with the leading indicator you're watching.\",\n \"instructions\": \"Discuss implemented fixes\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"outcome\",\n \"name\": \"Outcome\",\n \"description\": \"Display the results achieved across the review window. Let the data carry the slide; supporting commentary should explain context, not inflate the numbers.\",\n \"instructions\": \"Display results achieved\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"insights\",\n \"name\": \"Insights\",\n \"description\": \"Highlight the key learnings. What was confirmed, what surprised you, what the audience should take away. Insights are the slides people quote in follow-on meetings.\",\n \"instructions\": \"Highlight key learnings\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"future-strategy\",\n \"name\": \"Future Strategy\",\n \"description\": \"Define the next steps and the strategic direction that follows from the review. Specific enough to sequence; flexible enough to adapt.\",\n \"instructions\": \"Define next steps\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"feedback\",\n \"name\": \"Feedback\",\n \"description\": \"Capture audience thoughts. Two or three explicit prompts where you want input or alignment. The strength of a relationship review is in the conversation it provokes.\",\n \"instructions\": \"Capture audience thoughts\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"next-review\",\n \"name\": \"Next Review\",\n \"description\": \"Plan for follow-up: when the next review happens, what evidence you'll bring, what decisions are deferred until then. Continuity is the point of the cadence.\",\n \"instructions\": \"Plan for follow-up\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing\",\n \"name\": \"Closing\",\n \"description\": \"Recap and express optimism about the path forward. Close with the next concrete step and the people responsible for it.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Recap and express optimism\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"board-meeting\",\n \"name\": \"Board Meeting\",\n \"summary\": \"Comprehensive board update covering CEO commentary, key metrics, financials, functional updates, and forward-looking topics. Designed to keep directors informed, aligned, and ready to advise. Use the full set for in-person quarterly meetings; trim sections for monthly checkpoints.\",\n \"audienceFit\": [\n \"board\",\n \"directors\",\n \"executives\",\n \"investors\"\n ],\n \"durationRange\": {\n \"minMinutes\": 60,\n \"maxMinutes\": 180\n },\n \"tags\": [\n \"rhythm-of-business\",\n \"board\",\n \"governance\",\n \"executive\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Set the tone for the meeting and walk through the agenda in one slide. Signal which sections are for discussion versus information so directors know where their time is most valuable.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Set the tone\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"ceo-update\",\n \"name\": \"CEO Update\",\n \"description\": \"Deliver the CEO's view of the period: what changed, what mattered, where the company stands. Two or three sentences in the speaker's voice — board members read this slide first.\",\n \"instructions\": \"Deliver company insights\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"highlights\",\n \"name\": \"Highlights\",\n \"description\": \"Share major successes across the business. Customer wins, launches, hires, milestones. Specific and brief; this is the slide that sets the tone, not the slide that proves the case.\",\n \"instructions\": \"Share major successes\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"challenges\",\n \"name\": \"Challenges\",\n \"description\": \"Address the obstacles facing the business honestly. Boards earn their value when surfaced to real problems; under-disclosure here erodes trust faster than the problems themselves.\",\n \"instructions\": \"Address potential obstacles\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"company-needs\",\n \"name\": \"Company Needs\",\n \"description\": \"Identify where the business needs the board's help: introductions, decisions, advice. Specific asks turn the meeting from a report into a working session.\",\n \"instructions\": \"Identify support requirements\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"funnel-metrics\",\n \"name\": \"Funnel Metrics\",\n \"description\": \"Discuss the sales pipeline: leads, conversion, velocity, win rate. Use the metrics that match the company's current motion; resist the temptation to show the same chart you showed last quarter for continuity's sake.\",\n \"instructions\": \"Discuss sales progress\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"engagement-metrics\",\n \"name\": \"Engagement Metrics\",\n \"description\": \"Analyze customer interaction: usage, retention, NPS, expansion. Show whether the product is being loved or only being bought.\",\n \"instructions\": \"Analyze customer interaction\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"financial-metrics\",\n \"name\": \"Financial Metrics\",\n \"description\": \"Review fiscal health: revenue, gross margin, burn, runway, cash. One slide directors can scan in twenty seconds and trust the numbers on.\",\n \"instructions\": \"Review fiscal health\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"performance-vs-plan\",\n \"name\": \"Performance vs Plan\",\n \"description\": \"Compare actuals to plan across the metrics that matter most. Variance is the slide directors will probe; show your work, name the drivers, propose adjustments.\",\n \"instructions\": \"Compare objectives and actuals\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"org-chart\",\n \"name\": \"Org Chart\",\n \"description\": \"Present the team structure and any key changes since the last meeting. Directors track org evolution as a leading indicator; help them see hires, departures, and reshapes clearly.\",\n \"instructions\": \"Present team structure\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"product-roadmap\",\n \"name\": \"Product Roadmap\",\n \"description\": \"Highlight the product plan and what ships when. Pair each major bet with the customer or business outcome it serves.\",\n \"instructions\": \"Highlight future plans\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"quality\",\n \"name\": \"Quality\",\n \"description\": \"Showcase the product quality bar: reliability, defect rates, support outcomes. Directors take quality as a proxy for engineering culture; let the data speak.\",\n \"instructions\": \"Showcase product's standards\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"engineering-update\",\n \"name\": \"Engineering Update\",\n \"description\": \"Communicate technical progress, key bets, and platform investments. Translate engineering work into business consequences directors can evaluate.\",\n \"instructions\": \"Communicate technical progress\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"marketing-update\",\n \"name\": \"Marketing Update\",\n \"description\": \"Update on demand-gen, brand, and category-shaping efforts. Connect spend to pipeline and pipeline to revenue; avoid 'campaigns we ran' lists.\",\n \"instructions\": \"Update on promotional efforts\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"business-development-update\",\n \"name\": \"Business Development Update\",\n \"description\": \"Speak to growth initiatives: partnerships, channels, alliances. Each entry should have a stage, an owner, and a credible upside.\",\n \"instructions\": \"Speak on growth initiatives\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"operations-update\",\n \"name\": \"Operations Update\",\n \"description\": \"Discuss day-to-day operations: people ops, finance, legal, IT. Brief but explicit — directors notice when ops is missing.\",\n \"instructions\": \"Discuss day-to-day activities\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"special-topic-1\",\n \"name\": \"Special Topic 1\",\n \"description\": \"Discuss the period's first deep-dive topic. This is where the board does its highest-leverage work; pose the question, show the analysis, ask for their view.\",\n \"instructions\": \"Discuss selected subject\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"special-topic-2\",\n \"name\": \"Special Topic 2\",\n \"description\": \"Cover the second deep-dive topic, framed the same way. Two specials per meeting; more, and the meeting becomes a recital.\",\n \"instructions\": \"Touch on additional topic\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"feedback\",\n \"name\": \"Feedback\",\n \"description\": \"Elicit the board's perspective with concrete prompts. The strength of board governance is in its candor — invite it explicitly.\",\n \"instructions\": \"Elicit board's thoughts\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"formalities\",\n \"name\": \"Formalities\",\n \"description\": \"Conclude with the necessary governance items: votes, approvals, committee reports, document acknowledgments. Run them efficiently and document the outcomes.\",\n \"instructions\": \"Conclude with necessary formalities\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"closing-remarks\",\n \"name\": \"Closing Remarks\",\n \"description\": \"Close with concluding observations and the agenda for the next meeting. End on a forward-looking note; directors should leave knowing what to watch.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Concluding observations\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"weekly-progress\",\n \"name\": \"Weekly Progress\",\n \"summary\": \"Tight rhythm-of-business arc for weekly progress reports: objectives, achievements, progress, challenges, opportunities, recognition, plan, discussion, conclusion. Designed for fifteen-to-thirty-minute team check-ins, not deep dives.\",\n \"audienceFit\": [\n \"managers\",\n \"teams\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"rhythm-of-business\",\n \"weekly\",\n \"internal\",\n \"operations\"\n ],\n \"beats\": [\n {\n \"id\": \"opening\",\n \"name\": \"Opening\",\n \"description\": \"Open with the initiative name, the date, and the one-line headline for the week. Frame the meeting in fifteen seconds so the rest of the time is content.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Initiative name & date\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"objectives\",\n \"name\": \"Objectives\",\n \"description\": \"State what the team set out to do this week. Specific, measurable. The audience should be able to read this slide alone and know what 'on track' would mean.\",\n \"instructions\": \"Set the expectations\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"achievements\",\n \"name\": \"Achievements\",\n \"description\": \"Celebrate the week's wins. Concrete, attributable, dated. Brevity here — the meeting is for what's next, not a victory lap.\",\n \"instructions\": \"Celebrate success\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"overall-progress\",\n \"name\": \"Overall Progress\",\n \"description\": \"Evaluate performance against the objectives. Use a simple status indicator (green/yellow/red) plus the leading metric. Help the audience scan the state in seconds.\",\n \"instructions\": \"Evaluate performance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"challenges\",\n \"name\": \"Challenges\",\n \"description\": \"Address what's hard right now: blockers, slipping items, surfaced risks. Tie each challenge to either an owner working it or a discussion you want this week.\",\n \"instructions\": \"Address difficulties\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"opportunities-for-improvement\",\n \"name\": \"Opportunities for Improvement\",\n \"description\": \"Surface where the team can level up. Process tweaks, tooling needs, ways of working. Improvement opportunities should feel like seeds, not corrections.\",\n \"instructions\": \"Seek growth\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"highlights-recognition\",\n \"name\": \"Highlights & Recognition\",\n \"description\": \"Recognize specific contributions by name. Recognition belongs in the deck, not just in the meeting — written acknowledgment travels further than verbal.\",\n \"instructions\": \"Appreciate efforts\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"goals-next-week\",\n \"name\": \"Goals Next Week\",\n \"description\": \"Plan the week ahead with three to five specific goals. Each should be small enough to finish, large enough to matter, and clearly owned.\",\n \"instructions\": \"Plan ahead\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"discussion-feedback\",\n \"name\": \"Discussion & Feedback\",\n \"description\": \"Open the floor with two or three prompts — decisions you need, opinions you want, blockers you'd like cleared. End the recap actively.\",\n \"instructions\": \"Encourage input\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conclusion\",\n \"name\": \"Conclusion\",\n \"description\": \"Close with one line that motivates the team into the next week. Echo the headline so the meeting feels closed.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Recap & motivate\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"status-update\",\n \"name\": \"Status Update\",\n \"summary\": \"Concise progress-report arc for keeping a stakeholder informed: headline, brief, progress, results, plan, feedback. Optimized for short, repeated updates rather than one-time deep dives.\",\n \"audienceFit\": [\n \"stakeholders\",\n \"managers\",\n \"customers\",\n \"executives\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 15\n },\n \"tags\": [\n \"reporting\",\n \"operations\",\n \"customer-relationship\",\n \"weekly\"\n ],\n \"beats\": [\n {\n \"id\": \"headline\",\n \"name\": \"Headline\",\n \"description\": \"Open with the single most important sentence the audience needs to know — on track, off track, or shifted. The headline replaces 'how's it going' with a clear answer.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Title & date\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"brief\",\n \"name\": \"Brief\",\n \"description\": \"State the objective for the period and what was promised. One slide, three lines. Frames the rest of the update so progress is read against a clear bar.\",\n \"instructions\": \"Summary/objectives\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"progress\",\n \"name\": \"Progress\",\n \"description\": \"Walk through the actions taken since the last update. Specific, attributable, dated. Avoid effort theater — list outcomes and material moves, not activity for its own sake.\",\n \"instructions\": \"Explain actions taken\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"results\",\n \"name\": \"Results\",\n \"description\": \"Show the outcomes those actions produced. Metrics, customer signals, decisions made. Keep the comparison crisp — versus plan, versus last period, versus benchmark.\",\n \"instructions\": \"Show outcomes\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"action-plan\",\n \"name\": \"Action Plan\",\n \"description\": \"Outline the next steps and who owns them. Be specific about the next decision point and what would have to happen to slip the schedule.\",\n \"instructions\": \"Outline next steps\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"feedback\",\n \"name\": \"Feedback\",\n \"description\": \"Invite the audience to weigh in: where you'd like input, where you need a decision, where help would unblock you. End the update with an open hand, not a closed file.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Ask for response\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"performance-review\",\n \"name\": \"Performance Review\",\n \"summary\": \"Analytical review of individual, team, or company performance grounded in metrics. Walks through results, key drivers, wins, challenges, and the adjustments that will shape the next period.\",\n \"audienceFit\": [\n \"leadership\",\n \"managers\",\n \"teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"data-driven\",\n \"review\",\n \"operations\",\n \"metrics\"\n ],\n \"beats\": [\n {\n \"id\": \"briefing\",\n \"name\": \"Briefing\",\n \"description\": \"Frame what this review covers: the period, the unit, the standard you're measuring against. One slide that lets the audience know exactly what they're being asked to evaluate.\",\n \"layoutHint\": \"title-center\",\n \"instructions\": \"Outline presentation objective\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"results\",\n \"name\": \"Results\",\n \"description\": \"Lead with the headline result. On track, ahead, or behind, and by how much. Resist softening — clear numbers up front earn credibility for the analysis that follows.\",\n \"instructions\": \"Summarize performance findings\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"key-metrics\",\n \"name\": \"Key Metrics\",\n \"description\": \"Walk through the pivotal indicators. One chart per metric, clear comparison period, target or benchmark visible on the same frame. Help the audience see the data the way you do.\",\n \"instructions\": \"Review pivotal indicators\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"team-performance\",\n \"name\": \"Team Performance\",\n \"description\": \"Examine collective achievements and how the team contributed. Avoid generic praise; cite specific moves and the people behind them where the audience would expect it.\",\n \"instructions\": \"Examine collective achievements\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"highlight\",\n \"name\": \"Highlight\",\n \"description\": \"Spotlight one standout contribution that defined the period. A landmark deal, a launch, a fix, a hire. One vivid example sticks longer than a list of accomplishments.\",\n \"instructions\": \"Show key contribution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"analysis\",\n \"name\": \"Analysis\",\n \"description\": \"Dig under the metrics. What drove the numbers, what held them back, what's signal versus noise. Analysis is where the audience learns whether you actually understand the system you're reporting on.\",\n \"instructions\": \"Uncover data insights\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"success\",\n \"name\": \"Success\",\n \"description\": \"Reinforce the past triumphs that show the system works. Briefly — the audience came for what's next, not a victory lap. Wins earn permission for the harder slides ahead.\",\n \"instructions\": \"Reinforce past triumphs\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"challenges\",\n \"name\": \"Challenges\",\n \"description\": \"Name the obstacles encountered honestly. What didn't move, what regressed, what the team is still wrestling with. Understated challenges read as missed signal, not modesty.\",\n \"instructions\": \"Highlight encountered obstacles\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"adjustments\",\n \"name\": \"Adjustments\",\n \"description\": \"Identify the changes you're making in response. New tactics, reallocations, sunsets. Each adjustment should map to a challenge above — adjustments without diagnosis feel arbitrary.\",\n \"instructions\": \"Identify necessary changes\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"strategy-evolution\",\n \"name\": \"Strategy Evolution\",\n \"description\": \"Show how the strategy itself evolves heading into the next period. Refinements, sharpened bets, dropped initiatives. The audience should see continuity as well as change.\",\n \"instructions\": \"Plan for improvement\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"discussion\",\n \"name\": \"Discussion\",\n \"description\": \"Open the floor with two or three specific prompts. End the review actively — questions you want answered, decisions you want made — so the meeting yields more than the deck.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Promote active discourse\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"survey-analysis\",\n \"name\": \"Survey Analysis\",\n \"summary\": \"Structured walk-through of survey results: topic, executive summary, methodology, findings, analysis, implications, recommendations. Built so a reader who only sees the second slide already knows the headline insight.\",\n \"audienceFit\": [\n \"executives\",\n \"researchers\",\n \"stakeholders\",\n \"marketing-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"data-driven\",\n \"research\",\n \"insights\",\n \"voice-of-customer\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Open by naming the question the survey was meant to answer. Why this, why now, who commissioned it. Anchor the audience in the decision the survey is designed to inform.\",\n \"instructions\": \"Present survey topic\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"executive-summary\",\n \"name\": \"Executive Summary\",\n \"description\": \"State the top three findings in plain language on a single slide. A reader who only sees this slide should still be able to make the right call. Avoid hedging — synthesis is the point.\",\n \"instructions\": \"Summarize key findings\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"context\",\n \"name\": \"Context\",\n \"description\": \"Detail the situation behind the survey: prior knowledge, related research, the gap this work fills. Just enough to position the findings as new information rather than restated common sense.\",\n \"instructions\": \"Detail survey background\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"data-methodology\",\n \"name\": \"Data & Methodology\",\n \"description\": \"Describe how the data was collected and from whom. Sample size, recruitment, instrument, timing. Be honest about limitations; methodological transparency is what gives the findings their weight.\",\n \"instructions\": \"Discuss sourcing and collection\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"data-summary\",\n \"name\": \"Data Summary\",\n \"description\": \"Give the audience an overview of the dataset before drilling in. Demographics, response rates, distribution of key variables. Help them calibrate what 'most' and 'few' mean in this study.\",\n \"instructions\": \"Provide data overview\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"findings\",\n \"name\": \"Findings\",\n \"description\": \"Present the key insights one at a time. Lead each finding with the claim, then the chart. Avoid burying the point under the visualization — captions should restate the insight in words.\",\n \"instructions\": \"Highlight key insights\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"data-analysis\",\n \"name\": \"Data Analysis\",\n \"description\": \"Break down the data behind each finding: cross-tabs, segment splits, statistical confidence. This is the slide skeptics will scrutinize — make it scrutinizable.\",\n \"instructions\": \"Break down data\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"implications\",\n \"name\": \"Implications\",\n \"description\": \"Translate findings into 'so what.' What changes for product, marketing, ops, the customer? Implications without consequences are interesting trivia, not research.\",\n \"instructions\": \"Discuss survey implications\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"recommendations\",\n \"name\": \"Recommendations\",\n \"description\": \"Provide the actions that follow from the implications. Prioritize, attach owners, mark which require decisions. This is where research becomes useful.\",\n \"instructions\": \"Provide action plans\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conclusion\",\n \"name\": \"Conclusion\",\n \"description\": \"Recap the headline finding and the most important recommendation. End with the next step — a follow-on study, a workshop, a decision — so the work doesn't sit on a shelf.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Recap and finalize\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"trend-analysis\",\n \"name\": \"Trend Analysis\",\n \"summary\": \"Identify and discuss data-driven patterns to understand performance and forecast what's next. Useful for market reviews, strategic outlooks, and any deck where the audience must act on a direction-of-travel call.\",\n \"audienceFit\": [\n \"executives\",\n \"analysts\",\n \"leadership\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"data-driven\",\n \"forecasting\",\n \"strategy\",\n \"analysis\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Open by establishing why this trend matters now. Tie it to a decision on the table or a forecast that's about to be made. Trends without consequences are filler.\",\n \"instructions\": \"Ignite interest, establish significance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"historical-comparison\",\n \"name\": \"Historical Comparison\",\n \"description\": \"Contrast current data with the relevant past. Pick the comparison window that makes the trend visible without cherry-picking. Be honest about base effects.\",\n \"instructions\": \"Contrast current and past data\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"pattern-identification\",\n \"name\": \"Pattern Identification\",\n \"description\": \"Name the recurring outcome you've spotted. Use one or two strong charts that show the pattern unambiguously. Avoid overclaiming significance from a small N.\",\n \"instructions\": \"Point out recurring outcomes\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"future-prediction\",\n \"name\": \"Future Prediction\",\n \"description\": \"Project where the trend leads if it continues. Show the forecast and the confidence interval. State the assumptions that would have to break for the prediction to fail.\",\n \"instructions\": \"Predict using established patterns\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"action-plan\",\n \"name\": \"Action Plan\",\n \"description\": \"Translate the prediction into the strategy it implies. Specific actions, sequenced. Each action should map to a particular reading of the trend, not a generic best practice.\",\n \"instructions\": \"Strategies based on prediction\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"implementation\",\n \"name\": \"Implementation\",\n \"description\": \"Walk through how the actions get executed: owners, milestones, monitoring. The audience should leave understanding what to do tomorrow, not just what to think about.\",\n \"instructions\": \"Discuss strategy execution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conclusion\",\n \"name\": \"Conclusion\",\n \"description\": \"Recap the trend, the forecast, and the recommended action. End with the leading indicator you'll watch to know if the call is right.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Summarize key points\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"employee-review\",\n \"name\": \"Employee Review\",\n \"summary\": \"Constructive performance-review arc that recognizes work, gives candid feedback, and sets growth goals together. For one-on-one performance conversations and formal year-end reviews.\",\n \"audienceFit\": [\n \"employee\",\n \"manager\",\n \"hr-partner\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"workforce\",\n \"hr\",\n \"review\",\n \"manager\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Open with the period covered and the spirit of the conversation: collaborative, honest, growth-focused. Frame the meeting so both sides know what to expect.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Name & date\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"performance\",\n \"name\": \"Performance\",\n \"description\": \"Review job execution against the role's expectations. Specific examples, dated. Avoid characterizing the person; describe the work and its impact.\",\n \"instructions\": \"Review job execution\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"achievements\",\n \"name\": \"Achievements\",\n \"description\": \"Acknowledge what went well. Name the projects, the moves, the moments where the employee made a difference. Specific recognition lands harder than generic praise.\",\n \"instructions\": \"Acknowledge success\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"feedback\",\n \"name\": \"Feedback\",\n \"description\": \"Provide constructive feedback grounded in observation. Distinguish patterns from one-offs. Tell the employee something they can act on, not something they can only feel.\",\n \"instructions\": \"Provide positive remarks\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"constructive-criticism\",\n \"name\": \"Constructive Criticism\",\n \"description\": \"Suggest improvements in language that respects the employee's intelligence. Pair each piece of criticism with a concrete example and a specific behavior change you'd like to see.\",\n \"instructions\": \"Suggest improvements\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"development-opportunities\",\n \"name\": \"Development Opportunities\",\n \"description\": \"Highlight growth areas and the experiences that could stretch the employee. Frame development as an investment, not a fix.\",\n \"instructions\": \"Highlight growth areas\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"goals\",\n \"name\": \"Goals\",\n \"description\": \"Outline next-period goals together. Specific, measurable, with explicit support. The strongest goals are co-authored, not handed down.\",\n \"instructions\": \"Outline next steps\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"mentoring\",\n \"name\": \"Mentoring\",\n \"description\": \"Encourage continued learning through mentorship, training, peer pairings. Close the review with the message that growth is a shared responsibility, not a one-way evaluation.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Encourage continuous learning\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"performance-improvement-plan\",\n \"name\": \"Performance Improvement Plan\",\n \"summary\": \"Structured PIP arc that helps a struggling employee see expectations clearly, understand the gap, and walk into a credible improvement path. Designed to be respectful, specific, and outcome-focused — not punitive.\",\n \"audienceFit\": [\n \"employee\",\n \"manager\",\n \"hr-partner\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"workforce\",\n \"hr\",\n \"performance\",\n \"manager\"\n ],\n \"beats\": [\n {\n \"id\": \"introduction\",\n \"name\": \"Introduction\",\n \"description\": \"Begin respectfully and set a constructive tone. Be clear about what this conversation is and isn't. The opening shouldn't catastrophize or sugarcoat — clarity is kinder than either.\",\n \"instructions\": \"Begin respectfully and positively\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"set-expectations\",\n \"name\": \"Set Expectations\",\n \"description\": \"Detail the level of performance expected in the role. Specific behaviors, deliverables, and standards. Expectations the employee can't quote back are expectations they can't meet.\",\n \"instructions\": \"Detail desired performance\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"identify-problems\",\n \"name\": \"Identify Problems\",\n \"description\": \"Name the gap between expected and observed performance. Use specific examples and dates rather than impressions. Avoid characterizing the person; focus on the work product and the impact.\",\n \"instructions\": \"Highlight struggles and weaknesses\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"possible-solutions\",\n \"name\": \"Possible Solutions\",\n \"description\": \"Suggest improvement strategies tailored to the gaps named above. Behavior changes, structural changes, support structures. Frame them as paths the employee can choose, not orders to follow.\",\n \"instructions\": \"Suggest improvement strategies\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"offer-resources\",\n \"name\": \"Offer Resources\",\n \"description\": \"Make explicit what tools, coaching, training, or peer support is available. Resources demonstrate that the organization is investing in the outcome, not setting the employee up to fail.\",\n \"instructions\": \"Propose help and tools\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"motivate-change\",\n \"name\": \"Motivate Change\",\n \"description\": \"Connect improvement to what the employee values: their growth, their team, their career. Inspire action without minimizing the seriousness of the situation.\",\n \"instructions\": \"Inspire improvement action\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"follow-up\",\n \"name\": \"Follow Up\",\n \"description\": \"Schedule the check-ins. Frequency, format, criteria for progress. Predictable follow-up turns a PIP from a threat into a plan.\",\n \"instructions\": \"Schedule progress check-ins\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conclusion\",\n \"name\": \"Conclusion\",\n \"description\": \"Close with confidence in the path forward and a clear restatement of what success looks like. End the meeting having both raised the bar and reaffirmed the relationship.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Encourage and remind success\",\n \"slideType\": \"text\"\n }\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"id\": \"capacity-planning\",\n \"name\": \"Capacity Planning\",\n \"summary\": \"Workforce and operational capacity-planning arc: kickoff, urgency, current state, projection, tactics, implementation, revision, conclusion. For decks where leadership must decide whether the organization has enough resources to meet upcoming demand.\",\n \"audienceFit\": [\n \"leadership\",\n \"operations\",\n \"hr-partners\",\n \"finance\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"workforce\",\n \"operations\",\n \"planning\",\n \"resource-management\"\n ],\n \"beats\": [\n {\n \"id\": \"kickoff\",\n \"name\": \"Kickoff\",\n \"description\": \"Introduce what the planning exercise covers and the decision you need from the audience. Frame the time horizon and the resources in scope so the rest of the deck stays bounded.\",\n \"layoutHint\": \"title-center\",\n \"instructions\": \"Introduce the topic\",\n \"slideType\": \"text\"\n },\n {\n \"id\": \"urgency\",\n \"name\": \"Urgency\",\n \"description\": \"Show why this is the right moment to plan capacity. Pipeline shifts, hiring freezes, operational stress signals. Urgency turns capacity from an annual ritual into a decision the audience leans into.\",\n \"instructions\": \"Show needs\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"situation\",\n \"name\": \"Situation\",\n \"description\": \"Highlight the current resource picture: people, tools, infrastructure, vendor capacity. Show utilization, not just headcount. The audience should know where slack and stress live today.\",\n \"instructions\": \"Highlight current resources\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"projection\",\n \"name\": \"Projection\",\n \"description\": \"Predict future demand under your base case and a sensitivity case. Tie demand to specific drivers — pipeline, launches, seasonality — so the audience can challenge the assumptions, not just the totals.\",\n \"instructions\": \"Predict future demands\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"tactics\",\n \"name\": \"Tactics\",\n \"description\": \"Suggest the strategies for closing any gap: hiring, automation, outsourcing, prioritization. Each tactic should map to a specific demand driver and a defensible cost.\",\n \"instructions\": \"Suggest coping strategies\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"implementation\",\n \"name\": \"Implementation\",\n \"description\": \"Discuss how the plan gets deployed. Sequencing, owners, dependencies, lead times. Capacity decisions slip the most when the rollout isn't planned with the same rigor as the sizing.\",\n \"instructions\": \"Discuss deployment plans\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"revision\",\n \"name\": \"Revision\",\n \"description\": \"Define the leading indicators that would trigger a re-plan, and the cadence of review. Capacity plans age fast; show the audience how the plan stays alive.\",\n \"instructions\": \"Evaluate and adjust\",\n \"slideType\": \"text\",\n \"layoutHint\": \"text-1x-left\"\n },\n {\n \"id\": \"conclusion\",\n \"name\": \"Conclusion\",\n \"description\": \"Wrap up with the specific recommendations and the decisions you need today. End with the next checkpoint and what evidence will be on the table at it.\",\n \"layoutHint\": \"title-left\",\n \"instructions\": \"Wrap-up & recommendations\",\n \"slideType\": \"text\"\n }\n ]\n }\n] as const;\n\nexport const socialPlatforms = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"linkedin\",\n \"name\": \"LinkedIn\",\n \"summary\": \"Professional social network for individuals and companies.\",\n \"description\": \"LinkedIn distinguishes between member profiles ('/in/<handle>') and company pages ('/company/<handle>'). Renderers should pick the appropriate URL pattern based on whether the parent is an Organization or a Speaker.\",\n \"baseUrl\": \"https://linkedin.com\",\n \"profileUrlPattern\": \"https://linkedin.com/in/{handle}\",\n \"companyUrlPattern\": \"https://linkedin.com/company/{handle}\",\n \"handlePrefix\": \"\",\n \"handleExample\": \"alice-chen\",\n \"brandColor\": \"#0A66C2\",\n \"tags\": [\n \"professional\",\n \"default\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"x\",\n \"name\": \"X\",\n \"summary\": \"Real-time microblog for news, opinions, and discussion. Formerly Twitter.\",\n \"description\": \"X uses a single profile URL pattern for both individuals and organizations. Handles are conventionally rendered with an '@' prefix.\",\n \"baseUrl\": \"https://x.com\",\n \"profileUrlPattern\": \"https://x.com/{handle}\",\n \"handlePrefix\": \"@\",\n \"handleExample\": \"@alicechen\",\n \"brandColor\": \"#000000\",\n \"tags\": [\n \"microblog\",\n \"news\",\n \"default\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"github\",\n \"name\": \"GitHub\",\n \"summary\": \"Code-hosting platform for developers and organizations.\",\n \"description\": \"GitHub uses the same URL pattern for users and organizations ('/<handle>'). Use the companyUrlPattern for organization references for symmetry with platforms that distinguish.\",\n \"baseUrl\": \"https://github.com\",\n \"profileUrlPattern\": \"https://github.com/{handle}\",\n \"companyUrlPattern\": \"https://github.com/{handle}\",\n \"handlePrefix\": \"\",\n \"handleExample\": \"alicechen\",\n \"brandColor\": \"#181717\",\n \"tags\": [\n \"developer\",\n \"code\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"youtube\",\n \"name\": \"YouTube\",\n \"summary\": \"Video-sharing platform with creator and brand channels.\",\n \"description\": \"YouTube channels are addressable via the '@<handle>' form. The handlePrefix is '@' but it is part of the URL itself.\",\n \"baseUrl\": \"https://youtube.com\",\n \"profileUrlPattern\": \"https://youtube.com/@{handle}\",\n \"handlePrefix\": \"@\",\n \"handleExample\": \"@acme\",\n \"brandColor\": \"#FF0000\",\n \"tags\": [\n \"video\",\n \"creator\",\n \"brand\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"instagram\",\n \"name\": \"Instagram\",\n \"summary\": \"Photo and short-form video network from Meta.\",\n \"baseUrl\": \"https://instagram.com\",\n \"profileUrlPattern\": \"https://instagram.com/{handle}\",\n \"handlePrefix\": \"@\",\n \"handleExample\": \"@acme\",\n \"brandColor\": \"#E4405F\",\n \"tags\": [\n \"photo\",\n \"video\",\n \"lifestyle\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"facebook\",\n \"name\": \"Facebook\",\n \"summary\": \"General-purpose social network from Meta.\",\n \"baseUrl\": \"https://facebook.com\",\n \"profileUrlPattern\": \"https://facebook.com/{handle}\",\n \"companyUrlPattern\": \"https://facebook.com/{handle}\",\n \"handlePrefix\": \"\",\n \"handleExample\": \"acme\",\n \"brandColor\": \"#1877F2\",\n \"tags\": [\n \"general\",\n \"brand\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"tiktok\",\n \"name\": \"TikTok\",\n \"summary\": \"Short-form video network with strong recommendation feed.\",\n \"description\": \"TikTok profiles are addressable as '@<handle>'. The handlePrefix is '@' and is included in the URL.\",\n \"baseUrl\": \"https://tiktok.com\",\n \"profileUrlPattern\": \"https://tiktok.com/@{handle}\",\n \"handlePrefix\": \"@\",\n \"handleExample\": \"@acme\",\n \"brandColor\": \"#010101\",\n \"tags\": [\n \"video\",\n \"short-form\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"threads\",\n \"name\": \"Threads\",\n \"summary\": \"Text-first social network from Meta, integrated with Instagram identity.\",\n \"baseUrl\": \"https://threads.net\",\n \"profileUrlPattern\": \"https://threads.net/@{handle}\",\n \"handlePrefix\": \"@\",\n \"handleExample\": \"@alicechen\",\n \"brandColor\": \"#000000\",\n \"tags\": [\n \"microblog\",\n \"text\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"mastodon\",\n \"name\": \"Mastodon\",\n \"summary\": \"Decentralized microblog network across federated instances.\",\n \"description\": \"Mastodon profiles are instance-scoped: the canonical URL form is '<instance>/@<handle>' (e.g. https://hachyderm.io/@acme). The catalog cannot fix a single base URL — store full URLs as values, or '@<handle>@<instance>' as the rendered handle. The profileUrlPattern below is illustrative and assumes mastodon.social as a fallback.\",\n \"baseUrl\": \"https://mastodon.social\",\n \"profileUrlPattern\": \"https://mastodon.social/@{handle}\",\n \"handlePrefix\": \"@\",\n \"handleExample\": \"@alice@hachyderm.io\",\n \"brandColor\": \"#6364FF\",\n \"tags\": [\n \"microblog\",\n \"decentralized\",\n \"fediverse\"\n ]\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"id\": \"bluesky\",\n \"name\": \"Bluesky\",\n \"summary\": \"Decentralized microblog network built on the AT Protocol.\",\n \"description\": \"Bluesky handles are domain-style ('alice.bsky.social'). Profile URLs use the form 'https://bsky.app/profile/<handle>'. Renderers should pass the handle through unchanged.\",\n \"baseUrl\": \"https://bsky.app\",\n \"profileUrlPattern\": \"https://bsky.app/profile/{handle}\",\n \"handlePrefix\": \"\",\n \"handleExample\": \"alice.bsky.social\",\n \"brandColor\": \"#1185FE\",\n \"tags\": [\n \"microblog\",\n \"decentralized\",\n \"atproto\"\n ]\n }\n] as const;\n\nexport const languages = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"afrikaans\",\n \"name\": \"Afrikaans\",\n \"code\": \"AFR\",\n \"bcp47\": \"af\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"albanian\",\n \"name\": \"Albanian\",\n \"code\": \"SQI\",\n \"bcp47\": \"sq\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"amharic\",\n \"name\": \"Amharic\",\n \"code\": \"AMH\",\n \"bcp47\": \"am\",\n \"fontScheme\": \"nyala\",\n \"googleFontScheme\": \"noto-sans-ethiopic\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"arabic\",\n \"name\": \"Arabic\",\n \"code\": \"ARA\",\n \"bcp47\": \"ar\",\n \"fontScheme\": \"arabic-typesetting\",\n \"googleFontScheme\": \"noto-sans-arabic\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"armenian\",\n \"name\": \"Armenian\",\n \"code\": \"HYE\",\n \"bcp47\": \"hy\",\n \"fontScheme\": \"sylfaen\",\n \"googleFontScheme\": \"noto-sans-armenian\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"aymara\",\n \"name\": \"Aymara\",\n \"code\": \"AYM\",\n \"bcp47\": \"ay\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"azerbaijani\",\n \"name\": \"Azerbaijani\",\n \"code\": \"AZE\",\n \"bcp47\": \"az\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"bengali\",\n \"name\": \"Bengali\",\n \"code\": \"BEN\",\n \"bcp47\": \"bn\",\n \"fontScheme\": \"shonar-bangla\",\n \"googleFontScheme\": \"noto-sans-bengali\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"berber-latin\",\n \"name\": \"Berber (Latin)\",\n \"code\": \"BER\",\n \"bcp47\": \"ber-Latn\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"bosnian-latin\",\n \"name\": \"Bosnian (Latin)\",\n \"code\": \"BOS\",\n \"bcp47\": \"bs-Latn\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"bulgarian\",\n \"name\": \"Bulgarian\",\n \"code\": \"BUL\",\n \"bcp47\": \"bg\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"catalan\",\n \"name\": \"Catalan\",\n \"code\": \"CAT\",\n \"bcp47\": \"ca\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"cebuano\",\n \"name\": \"Cebuano\",\n \"code\": \"CEB\",\n \"bcp47\": \"ceb\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"chinese-simplified\",\n \"name\": \"Chinese (Simplified)\",\n \"code\": \"ZHO\",\n \"bcp47\": \"zh-Hans\",\n \"fontScheme\": \"microsoft-yahei\",\n \"googleFontScheme\": \"noto-sans-sc\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"chinese-traditional\",\n \"name\": \"Chinese (Traditional)\",\n \"code\": \"ZHO\",\n \"bcp47\": \"zh-Hant\",\n \"fontScheme\": \"microsoft-jhenghei\",\n \"googleFontScheme\": \"noto-sans-tc\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"chittagonian\",\n \"name\": \"Chittagonian\",\n \"code\": \"CTG\",\n \"bcp47\": \"ctg\",\n \"fontScheme\": \"vrinda\",\n \"googleFontScheme\": \"noto-sans-bengali\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"croatian\",\n \"name\": \"Croatian\",\n \"code\": \"HRV\",\n \"bcp47\": \"hr\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"czech\",\n \"name\": \"Czech\",\n \"code\": \"CES\",\n \"bcp47\": \"cs\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"danish\",\n \"name\": \"Danish\",\n \"code\": \"DAN\",\n \"bcp47\": \"da\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"dutch\",\n \"name\": \"Dutch\",\n \"code\": \"NLD\",\n \"bcp47\": \"nl\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"english\",\n \"name\": \"English\",\n \"code\": \"ENG\",\n \"bcp47\": \"en\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"english-au\",\n \"name\": \"English (Australia)\",\n \"code\": \"ENG\",\n \"bcp47\": \"en-AU\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"english-ca\",\n \"name\": \"English (Canada)\",\n \"code\": \"ENG\",\n \"bcp47\": \"en-CA\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"english-gb\",\n \"name\": \"English (United Kingdom)\",\n \"code\": \"ENG\",\n \"bcp47\": \"en-GB\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"english-in\",\n \"name\": \"English (India)\",\n \"code\": \"ENG\",\n \"bcp47\": \"en-IN\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"english-us\",\n \"name\": \"English (United States)\",\n \"code\": \"ENG\",\n \"bcp47\": \"en-US\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"estonian\",\n \"name\": \"Estonian\",\n \"code\": \"EST\",\n \"bcp47\": \"et\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"filipino\",\n \"name\": \"Filipino\",\n \"code\": \"FIL\",\n \"bcp47\": \"fil\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"finnish\",\n \"name\": \"Finnish\",\n \"code\": \"FIN\",\n \"bcp47\": \"fi\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"french\",\n \"name\": \"French\",\n \"code\": \"FRA\",\n \"bcp47\": \"fr\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"fulfulde\",\n \"name\": \"Fulfulde\",\n \"code\": \"FUL\",\n \"bcp47\": \"ff\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"galician\",\n \"name\": \"Galician\",\n \"code\": \"GLG\",\n \"bcp47\": \"gl\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"georgian\",\n \"name\": \"Georgian\",\n \"code\": \"KAT\",\n \"bcp47\": \"ka\",\n \"fontScheme\": \"sylfaen\",\n \"googleFontScheme\": \"noto-sans-georgian\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"german\",\n \"name\": \"German\",\n \"code\": \"DEU\",\n \"bcp47\": \"de\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"greek\",\n \"name\": \"Greek\",\n \"code\": \"ELL\",\n \"bcp47\": \"el\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"gujarati\",\n \"name\": \"Gujarati\",\n \"code\": \"GUJ\",\n \"bcp47\": \"gu\",\n \"fontScheme\": \"shruti\",\n \"googleFontScheme\": \"noto-sans-gujarati\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"hausa\",\n \"name\": \"Hausa\",\n \"code\": \"HAU\",\n \"bcp47\": \"ha\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"hebrew\",\n \"name\": \"Hebrew\",\n \"code\": \"HEB\",\n \"bcp47\": \"he\",\n \"fontScheme\": \"david\",\n \"googleFontScheme\": \"noto-sans-hebrew\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"hindi\",\n \"name\": \"Hindi\",\n \"code\": \"HIN\",\n \"bcp47\": \"hi\",\n \"fontScheme\": \"mangal\",\n \"googleFontScheme\": \"noto-sans-devangari\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"hungarian\",\n \"name\": \"Hungarian\",\n \"code\": \"HUN\",\n \"bcp47\": \"hu\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"igbo\",\n \"name\": \"Igbo\",\n \"code\": \"IBO\",\n \"bcp47\": \"ig\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"indonesian\",\n \"name\": \"Indonesian\",\n \"code\": \"IND\",\n \"bcp47\": \"id\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"italian\",\n \"name\": \"Italian\",\n \"code\": \"ITA\",\n \"bcp47\": \"it\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"japanese\",\n \"name\": \"Japanese\",\n \"code\": \"JPN\",\n \"bcp47\": \"ja\",\n \"fontScheme\": \"meiryo\",\n \"googleFontScheme\": \"noto-sans-jp\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"kannada\",\n \"name\": \"Kannada\",\n \"code\": \"KAN\",\n \"bcp47\": \"kn\",\n \"fontScheme\": \"tunga\",\n \"googleFontScheme\": \"noto-sans-kannada\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"kazakh\",\n \"name\": \"Kazakh\",\n \"code\": \"KAZ\",\n \"bcp47\": \"kk\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"khmer\",\n \"name\": \"Khmer\",\n \"code\": \"KHM\",\n \"bcp47\": \"km\",\n \"fontScheme\": \"daunpenh\",\n \"googleFontScheme\": \"noto-sans-khmer\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"kinyarwanda\",\n \"name\": \"Kinyarwanda\",\n \"code\": \"KIN\",\n \"bcp47\": \"rw\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"korean\",\n \"name\": \"Korean\",\n \"code\": \"KOR\",\n \"bcp47\": \"ko\",\n \"fontScheme\": \"malgun-gothic\",\n \"googleFontScheme\": \"noto-sans-kr\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"kurmanji\",\n \"name\": \"Kurmanji\",\n \"code\": \"KMR\",\n \"bcp47\": \"kmr\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"latvian\",\n \"name\": \"Latvian\",\n \"code\": \"LAV\",\n \"bcp47\": \"lv\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"lithuanian\",\n \"name\": \"Lithuanian\",\n \"code\": \"LIT\",\n \"bcp47\": \"lt\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"macedonian\",\n \"name\": \"Macedonian\",\n \"code\": \"MKD\",\n \"bcp47\": \"mk\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"malagasy\",\n \"name\": \"Malagasy\",\n \"code\": \"MLG\",\n \"bcp47\": \"mg\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"malay\",\n \"name\": \"Malay\",\n \"code\": \"ZSM\",\n \"bcp47\": \"zsm\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"malayalam\",\n \"name\": \"Malayalam\",\n \"code\": \"MAL\",\n \"bcp47\": \"ml\",\n \"fontScheme\": \"kartika\",\n \"googleFontScheme\": \"noto-sans-malayalam\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"maori\",\n \"name\": \"Māori\",\n \"code\": \"MRI\",\n \"bcp47\": \"mi\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"marathi\",\n \"name\": \"Marathi\",\n \"code\": \"MAR\",\n \"bcp47\": \"mr\",\n \"fontScheme\": \"mangal\",\n \"googleFontScheme\": \"noto-sans-devangari\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"mongolian\",\n \"name\": \"Mongolian\",\n \"code\": \"MON\",\n \"bcp47\": \"mn\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans-mongolian\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"nepali\",\n \"name\": \"Nepali\",\n \"code\": \"NEP\",\n \"bcp47\": \"ne\",\n \"fontScheme\": \"mangal\",\n \"googleFontScheme\": \"noto-sans-devangari\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"norwegian\",\n \"name\": \"Norwegian\",\n \"code\": \"NOR\",\n \"bcp47\": \"no\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"odia\",\n \"name\": \"Odia\",\n \"code\": \"ORI\",\n \"bcp47\": \"or\",\n \"fontScheme\": \"kalinga\",\n \"googleFontScheme\": \"noto-sans-oriya\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"oromo\",\n \"name\": \"Oromo\",\n \"code\": \"ORM\",\n \"bcp47\": \"om\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"pashto\",\n \"name\": \"Pashto\",\n \"code\": \"PUS\",\n \"bcp47\": \"ps\",\n \"fontScheme\": \"arial\",\n \"googleFontScheme\": \"noto-sans-arabic\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"persian\",\n \"name\": \"Persian\",\n \"code\": \"FAS\",\n \"bcp47\": \"fa\",\n \"fontScheme\": \"arabic-typesetting\",\n \"googleFontScheme\": \"noto-naksh-arabic\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"polish\",\n \"name\": \"Polish\",\n \"code\": \"POL\",\n \"bcp47\": \"pl\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"portuguese\",\n \"name\": \"Portuguese\",\n \"code\": \"POR\",\n \"bcp47\": \"pt\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"punjabi-gurmukhi\",\n \"name\": \"Punjabi (Gurmukhi)\",\n \"code\": \"PAN\",\n \"bcp47\": \"pa-Guru\",\n \"fontScheme\": \"raavi\",\n \"googleFontScheme\": \"noto-sans-gurmukhi\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"punjabi-shahmukhi\",\n \"name\": \"Punjabi (Shahmukhi)\",\n \"code\": \"PAN\",\n \"bcp47\": \"pa-Arab\",\n \"fontScheme\": \"arial\",\n \"googleFontScheme\": \"noto-nastaliq-urdu\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"romanian\",\n \"name\": \"Romanian\",\n \"code\": \"RON\",\n \"bcp47\": \"ro\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"russian\",\n \"name\": \"Russian\",\n \"code\": \"RUS\",\n \"bcp47\": \"ru\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"serbian-cyrillic\",\n \"name\": \"Serbian (Cyrillic)\",\n \"code\": \"SRP\",\n \"bcp47\": \"sr-Cyrl\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"serbian-latin\",\n \"name\": \"Serbian (Latin)\",\n \"code\": \"SRP\",\n \"bcp47\": \"sr-Latn\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"shona\",\n \"name\": \"Shona\",\n \"code\": \"SNA\",\n \"bcp47\": \"sn\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"slovak\",\n \"name\": \"Slovak\",\n \"code\": \"SLK\",\n \"bcp47\": \"sk\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"slovenian\",\n \"name\": \"Slovenian\",\n \"code\": \"SLV\",\n \"bcp47\": \"sl\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"somali\",\n \"name\": \"Somali\",\n \"code\": \"SOM\",\n \"bcp47\": \"so\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"spanish\",\n \"name\": \"Spanish\",\n \"code\": \"SPA\",\n \"bcp47\": \"es\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"swahili\",\n \"name\": \"Swahili\",\n \"code\": \"SWA\",\n \"bcp47\": \"sw\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"swedish\",\n \"name\": \"Swedish\",\n \"code\": \"SWE\",\n \"bcp47\": \"sv\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"tagalog\",\n \"name\": \"Tagalog\",\n \"code\": \"TGL\",\n \"bcp47\": \"tl\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"tajik\",\n \"name\": \"Tajik\",\n \"code\": \"TGK\",\n \"bcp47\": \"tg\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"tamil\",\n \"name\": \"Tamil\",\n \"code\": \"TAM\",\n \"bcp47\": \"ta\",\n \"fontScheme\": \"latha\",\n \"googleFontScheme\": \"noto-sans-tamil\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"telugu\",\n \"name\": \"Telugu\",\n \"code\": \"TEL\",\n \"bcp47\": \"te\",\n \"fontScheme\": \"gautami\",\n \"googleFontScheme\": \"noto-sans-telugu\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"thai\",\n \"name\": \"Thai\",\n \"code\": \"THA\",\n \"bcp47\": \"th\",\n \"fontScheme\": \"angsana-new\",\n \"googleFontScheme\": \"noto-sans-thai\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"turkish\",\n \"name\": \"Turkish\",\n \"code\": \"TUR\",\n \"bcp47\": \"tr\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"ukrainian\",\n \"name\": \"Ukrainian\",\n \"code\": \"UKR\",\n \"bcp47\": \"uk\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"noto-sans\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"urdu\",\n \"name\": \"Urdu\",\n \"code\": \"URD\",\n \"bcp47\": \"ur\",\n \"fontScheme\": \"arabic-typesetting\",\n \"googleFontScheme\": \"noto-nastaliq-urdu\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"uzbek-latin\",\n \"name\": \"Uzbek (Latin)\",\n \"code\": \"UZB\",\n \"bcp47\": \"uz-Latn\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"vietnamese-quoc-ngu\",\n \"name\": \"Vietnamese (Quốc Ngữ)\",\n \"code\": \"VIE\",\n \"bcp47\": \"vi-Latn\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"xhosa\",\n \"name\": \"Xhosa\",\n \"code\": \"XHO\",\n \"bcp47\": \"xh\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"yoruba\",\n \"name\": \"Yoruba\",\n \"code\": \"YOR\",\n \"bcp47\": \"yo\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"id\": \"zulu\",\n \"name\": \"Zulu\",\n \"code\": \"ZUL\",\n \"bcp47\": \"zu\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n }\n] as const;\n\nexport const colorSchemes = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"black-and-white\",\n \"name\": \"Black & White\",\n \"accent1\": \"#9E9E9E\",\n \"accent2\": \"#424242\",\n \"accent3\": \"#616161\",\n \"accent4\": \"#757575\",\n \"accent5\": \"#9E9E9E\",\n \"accent6\": \"#212121\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#000000\",\n \"followedHyperlink\": \"#424242\",\n \"hyperlink\": \"#212121\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#FFFFFF\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"bold-red\",\n \"name\": \"Bold Red\",\n \"accent1\": \"#A41410\",\n \"accent2\": \"#2693A1\",\n \"accent3\": \"#EFA517\",\n \"accent4\": \"#E86D1F\",\n \"accent5\": \"#324472\",\n \"accent6\": \"#EFECCA\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#232323\",\n \"followedHyperlink\": \"#2693A1\",\n \"hyperlink\": \"#324472\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#DCDCDC\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"boost\",\n \"name\": \"Boost\",\n \"accent1\": \"#FD3223\",\n \"accent2\": \"#0308DB\",\n \"accent3\": \"#4F4955\",\n \"accent4\": \"#A1DB30\",\n \"accent5\": \"#0682FE\",\n \"accent6\": \"#FC03BE\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#2C2C2C\",\n \"followedHyperlink\": \"#CC00CC\",\n \"hyperlink\": \"#0066CC\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#EFEFEF\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"burnt-orange\",\n \"name\": \"Burnt Orange\",\n \"accent1\": \"#F77F00\",\n \"accent2\": \"#D62828\",\n \"accent3\": \"#003049\",\n \"accent4\": \"#FCBF49\",\n \"accent5\": \"#EAE2B7\",\n \"accent6\": \"#BFBFBF\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#341B00\",\n \"followedHyperlink\": \"#D62828\",\n \"hyperlink\": \"#003049\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#FFFBF7\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"cool-horizon\",\n \"name\": \"Cool Horizon\",\n \"accent1\": \"#2874A6\",\n \"accent2\": \"#1B4F72\",\n \"accent3\": \"#5499C7\",\n \"accent4\": \"#7BDBB2\",\n \"accent5\": \"#3AC67A\",\n \"accent6\": \"#24A89E\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#011842\",\n \"followedHyperlink\": \"#551A8B\",\n \"hyperlink\": \"#0000EE\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#F0F0F0\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"corporate-blue\",\n \"name\": \"Corporate Blue\",\n \"accent1\": \"#015DFE\",\n \"accent2\": \"#0100A6\",\n \"accent3\": \"#02ACFF\",\n \"accent4\": \"#94A1B2\",\n \"accent5\": \"#E3ECF3\",\n \"accent6\": \"#5A82FC\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#011842\",\n \"followedHyperlink\": \"#954F72\",\n \"hyperlink\": \"#0563C1\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#F3F7FF\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"deep-purple\",\n \"name\": \"Deep Purple\",\n \"accent1\": \"#6A1B9A\",\n \"accent2\": \"#7B1FA2\",\n \"accent3\": \"#8E24AA\",\n \"accent4\": \"#9C27B0\",\n \"accent5\": \"#AB47BC\",\n \"accent6\": \"#4A148C\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#2B0B3E\",\n \"followedHyperlink\": \"#6A1B9A\",\n \"hyperlink\": \"#4A148C\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#F8F2FC\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"forest-green\",\n \"name\": \"Forest Green\",\n \"accent1\": \"#4A7C59\",\n \"accent2\": \"#68B0AB\",\n \"accent3\": \"#8FC0A9\",\n \"accent4\": \"#C8D5B9\",\n \"accent5\": \"#FAF3DD\",\n \"accent6\": \"#BFBFBF\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#263F2E\",\n \"followedHyperlink\": \"#68B0AB\",\n \"hyperlink\": \"#4A7C59\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#EEF5F0\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"golden-yellow\",\n \"name\": \"Golden Yellow\",\n \"accent1\": \"#FCC82B\",\n \"accent2\": \"#44ADAD\",\n \"accent3\": \"#3E506B\",\n \"accent4\": \"#E23A59\",\n \"accent5\": \"#0F5E8C\",\n \"accent6\": \"#EFECCA\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#3D2E02\",\n \"followedHyperlink\": \"#44ADAD\",\n \"hyperlink\": \"#E23A59\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#FEFCF0\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"luxury\",\n \"name\": \"Luxury\",\n \"accent1\": \"#997929\",\n \"accent2\": \"#C15937\",\n \"accent3\": \"#951233\",\n \"accent4\": \"#1D483F\",\n \"accent5\": \"#4B6977\",\n \"accent6\": \"#639391\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#2C2C2C\",\n \"followedHyperlink\": \"#CC00CC\",\n \"hyperlink\": \"#0066CC\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#EFEFEF\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"pastel-red\",\n \"name\": \"Pastel Red\",\n \"accent1\": \"#FE938C\",\n \"accent2\": \"#E6B89C\",\n \"accent3\": \"#EAD2AC\",\n \"accent4\": \"#9CAFB7\",\n \"accent5\": \"#4281A4\",\n \"accent6\": \"#BFBFBF\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#0C6268\",\n \"followedHyperlink\": \"#E6B89C\",\n \"hyperlink\": \"#FE938C\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#FFEFEE\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"slate-gray\",\n \"name\": \"Slate Gray\",\n \"accent1\": \"#9E9E9E\",\n \"accent2\": \"#424242\",\n \"accent3\": \"#616161\",\n \"accent4\": \"#757575\",\n \"accent5\": \"#9E9E9E\",\n \"accent6\": \"#212121\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#1B1B1B\",\n \"followedHyperlink\": \"#424242\",\n \"hyperlink\": \"#212121\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#F8F8F8\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"steel-blue\",\n \"name\": \"Steel Blue\",\n \"accent1\": \"#4A66AC\",\n \"accent2\": \"#629DD1\",\n \"accent3\": \"#297FD5\",\n \"accent4\": \"#7F8FA9\",\n \"accent5\": \"#5AA2AE\",\n \"accent6\": \"#9D90A0\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#182238\",\n \"followedHyperlink\": \"#3EBBF0\",\n \"hyperlink\": \"#9454C3\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#EAEDF6\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"id\": \"vibes\",\n \"name\": \"Vibes\",\n \"accent1\": \"#4A1BE4\",\n \"accent2\": \"#B8E109\",\n \"accent3\": \"#95928C\",\n \"accent4\": \"#E48A1B\",\n \"accent5\": \"#9E1BE4\",\n \"accent6\": \"#1BE4A1\",\n \"dark1\": \"#000000\",\n \"dark2\": \"#2C2C2C\",\n \"followedHyperlink\": \"#C30052\",\n \"hyperlink\": \"#0078D7\",\n \"light1\": \"#FFFFFF\",\n \"light2\": \"#EFEFEF\"\n }\n] as const;\n\nexport const fontSchemes = [\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"angsana-new\",\n \"name\": \"Angsana New\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Thai\"\n ],\n \"major\": \"Angsana New\",\n \"minor\": \"Angsana New\",\n \"textSample\": \"ภาษาไทยสวยมาก\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"aparajita\",\n \"name\": \"Aparajita\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hindi\",\n \"Nepali\"\n ],\n \"major\": \"Aparajita\",\n \"minor\": \"Aparajita\",\n \"textSample\": \"यह सुंदर किताब\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"aptos\",\n \"name\": \"Aptos\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Aptos Display\",\n \"minor\": \"Aptos\",\n \"textSample\": \"Modern clean design\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"arabic-typesetting\",\n \"name\": \"Arabic Typesetting\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Arabic\"\n ],\n \"major\": \"Arabic Typesetting\",\n \"minor\": \"Arabic Typesetting\",\n \"textSample\": \"هذا مكتوب بخط الأنواع العربية\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"arial\",\n \"name\": \"Arial\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Arial Black\",\n \"minor\": \"Arial\",\n \"textSample\": \"Simple and clear\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"batang\",\n \"name\": \"Batang\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Korean\"\n ],\n \"major\": \"BatangChe\",\n \"minor\": \"Batang\",\n \"textSample\": \"이것은 바탕 폰트로 쓰여졌습니다\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"bookman\",\n \"name\": \"Bookman\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Bookman Old Style\",\n \"minor\": \"Bookman Old Style\",\n \"textSample\": \"Classic serif style\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"calibri\",\n \"name\": \"Calibri\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Calibri\",\n \"minor\": \"Calibri\",\n \"textSample\": \"Smooth professional look\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"century-schoolbook\",\n \"name\": \"Century Schoolbook\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Century Schoolbook\",\n \"minor\": \"Century Schoolbook\",\n \"textSample\": \"Traditional learning style\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"consolas\",\n \"name\": \"Consolas\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Consolas\",\n \"minor\": \"Consolas\",\n \"textSample\": \"Code block view\",\n \"type\": \"monospace\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"constantia\",\n \"name\": \"Constantia\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Constantia\",\n \"minor\": \"Constantia\",\n \"textSample\": \"Elegant modern serif\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"courier-new\",\n \"name\": \"Courier New\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Courier New\",\n \"minor\": \"Courier New\",\n \"textSample\": \"Typed letter look\",\n \"type\": \"monospace\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"daunpenh\",\n \"name\": \"DaunPenh\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Khmer\"\n ],\n \"major\": \"DaunPenh\",\n \"minor\": \"DaunPenh\",\n \"textSample\": \"ភាសាខ្មែរពិតជាស្រស់ស្អាត\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"david\",\n \"name\": \"David\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hebrew\"\n ],\n \"major\": \"David\",\n \"minor\": \"David\",\n \"textSample\": \"זה כתוב בגופן דוד\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"dilleniaupc\",\n \"name\": \"DilleniaUPC\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Thai\"\n ],\n \"major\": \"DilleniaUPC\",\n \"minor\": \"DilleniaUPC\",\n \"textSample\": \"ราตรีสวัสดิ์นะ\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"fangsong\",\n \"name\": \"FangSong\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (simplified)\"\n ],\n \"major\": \"FangSong\",\n \"minor\": \"FangSong\",\n \"textSample\": \"这是用仿宋字体写的\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"garamond\",\n \"name\": \"Garamond\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Garamond\",\n \"minor\": \"Garamond\",\n \"textSample\": \"Timeless book feel\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"gautami\",\n \"name\": \"Gautami\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Telugu\"\n ],\n \"major\": \"Gautami\",\n \"minor\": \"Gautami\",\n \"textSample\": \"ఇది గౌతమి ఫాంట్లో వ్రాయబడింది\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"georgia\",\n \"name\": \"Georgia\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Georgia\",\n \"minor\": \"Georgia\",\n \"textSample\": \"Warm digital serif\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"gisha\",\n \"name\": \"Gisha\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hebrew\",\n \"Arabic\"\n ],\n \"major\": \"Gisha\",\n \"minor\": \"Gisha\",\n \"textSample\": \"זה נכתב בגופן גישה\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"grandview\",\n \"name\": \"Grandview\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Grandview Display\",\n \"minor\": \"Grandview\",\n \"textSample\": \"Bold road sign\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"gungsuh\",\n \"name\": \"Gungsuh\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Korean\"\n ],\n \"major\": \"GungsuhChe\",\n \"minor\": \"Gungsuh\",\n \"textSample\": \"이것은 궁서 폰트로 쓰여졌습니다\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"impact\",\n \"name\": \"Impact\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Impact\",\n \"minor\": \"Grandview\",\n \"textSample\": \"Strong bold headline\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"kalinga\",\n \"name\": \"Kalinga\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Odia\"\n ],\n \"major\": \"Kalinga\",\n \"minor\": \"Kalinga\",\n \"textSample\": \"ଏହା କଳିଙ୍ଗ ଫଣ୍ଟରେ ଲେଖାଯାଇଛି\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"kartika\",\n \"name\": \"Kartika\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Malayalam\"\n ],\n \"major\": \"Kartika\",\n \"minor\": \"Kartika\",\n \"textSample\": \"ഇത് കാർത്തിക ഫോണ്ടിൽ എഴുതിയിരിക്കുന്നു\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"khmer-ui\",\n \"name\": \"Khmer UI\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Khmer\"\n ],\n \"major\": \"Khmer UI\",\n \"minor\": \"Khmer UI\",\n \"textSample\": \"ភាសាខ្មែរពិតជាស្រស់ស្អាត\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"latha\",\n \"name\": \"Latha\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Tamil\"\n ],\n \"major\": \"Latha\",\n \"minor\": \"Latha\",\n \"textSample\": \"இது லதா எழுத்துருவில் எழுதப்பட்டுள்ளது\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"lucida-sans\",\n \"name\": \"Lucida Sans\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Lucida Sans\",\n \"minor\": \"Lucida Sans\",\n \"textSample\": \"Friendly clear text\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"malgun-gothic\",\n \"name\": \"Malgun Gothic\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Korean\"\n ],\n \"major\": \"Malgun Gothic\",\n \"minor\": \"Malgun Gothic\",\n \"textSample\": \"이것은 맑은 고딕 폰트로 쓰여졌습니다\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"mangal\",\n \"name\": \"Mangal\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hindi\",\n \"Sanskrit\",\n \"Marathi\",\n \"Nepali\"\n ],\n \"major\": \"Mangal\",\n \"minor\": \"Mangal\",\n \"textSample\": \"यह मंगल फ़ॉन्ट में लिखा गया है\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"meiryo\",\n \"name\": \"Meiryo\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Japanese\"\n ],\n \"major\": \"Meiryo\",\n \"minor\": \"Meiryo\",\n \"textSample\": \"これはメイリオフォントで書かれています\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"microsoft-jhenghei\",\n \"name\": \"Microsoft JhengHei\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (traditional)\"\n ],\n \"major\": \"Microsoft JhengHei\",\n \"minor\": \"Microsoft JhengHei\",\n \"textSample\": \"這是用微軟正黑體寫的\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"microsoft-yahei\",\n \"name\": \"Microsoft Yahei\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (simplified)\",\n \"Chinese (traditional)\",\n \"Japanese\",\n \"Korean\"\n ],\n \"major\": \"Microsoft YaHei\",\n \"minor\": \"Microsoft YaHei\",\n \"textSample\": \"这是用微软雅黑字体写的\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"mingliu\",\n \"name\": \"MingLiU\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (traditional)\"\n ],\n \"major\": \"MingLiU\",\n \"minor\": \"MingLiU\",\n \"textSample\": \"這是以明體字型撰寫的\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"miriam\",\n \"name\": \"Miriam\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hebrew\"\n ],\n \"major\": \"Miriam\",\n \"minor\": \"Miriam\",\n \"textSample\": \"זה נכתב בגופן מרים\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"montserrat\",\n \"name\": \"Montserrat\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Montserrat\",\n \"minor\": \"Montserrat\",\n \"textSample\": \"This is beautiful\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"ms-mincho\",\n \"name\": \"MS Mincho\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Japanese\"\n ],\n \"major\": \"MS Mincho\",\n \"minor\": \"MS Mincho\",\n \"textSample\": \"これはMS明朝フォントで書かれています\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"nirmala-ui\",\n \"name\": \"Nirmala UI\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hindi\"\n ],\n \"major\": \"Nirmala UI\",\n \"minor\": \"Nirmala UI\",\n \"textSample\": \"यह निर्मला यूआई फ़ॉन्ट में लिखा गया है\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-naksh-arabic\",\n \"name\": \"Noto Naskh Arabic\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Persian\"\n ],\n \"major\": \"Noto Naskh Arabic\",\n \"minor\": \"Noto Naskh Arabic\",\n \"textSample\": \"هذا نص جميل\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-nastaliq-urdu\",\n \"name\": \"Noto Nastaliq Urdu\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Urdu\",\n \"Punjabi (Shahmukhi)\"\n ],\n \"major\": \"Noto Nastaliq Urdu\",\n \"minor\": \"Noto Nastaliq Urdu\",\n \"textSample\": \"یہ خوبصورت ہے\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans\",\n \"name\": \"Noto Sans\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Russian\",\n \"Ukrainian\",\n \"Serbian (Cyrillic)\",\n \"Tajik\"\n ],\n \"major\": \"Noto Sans\",\n \"minor\": \"Noto Sans\",\n \"textSample\": \"Universal and clear\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-arabic\",\n \"name\": \"Noto Sans Arabic\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Arabic\",\n \"Pashto\",\n \"Punjabi (Shahmukhi)\"\n ],\n \"major\": \"Noto Naskh Arabic\",\n \"minor\": \"Noto Naskh Arabic\",\n \"textSample\": \"نص عربي أنيق\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-armenian\",\n \"name\": \"Noto Sans Armenian\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Armenian\"\n ],\n \"major\": \"Noto Sans Armenian\",\n \"minor\": \"Noto Sans Armenian\",\n \"textSample\": \"Սա հիանալի է\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-bengali\",\n \"name\": \"Noto Sans Bengali\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Bengali\",\n \"Chittagonian\"\n ],\n \"major\": \"Noto Sans Bengali\",\n \"minor\": \"Noto Sans Bengali\",\n \"textSample\": \"এটা সুন্দর বই\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-devangari\",\n \"name\": \"Noto Sans Devanagari\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hindi\",\n \"Nepali\"\n ],\n \"major\": \"Noto Sans Devanagari\",\n \"minor\": \"Noto Sans Devanagari\",\n \"textSample\": \"यह बहुत अच्छा\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-ethiopic\",\n \"name\": \"Noto Sans Ethiopic\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Amharic\"\n ],\n \"major\": \"Noto Sans Ethiopic\",\n \"minor\": \"Noto Sans Ethiopic\",\n \"textSample\": \"አማርኛ ቋንቋ እጅግ ጥሩ ነው።\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-georgian\",\n \"name\": \"Noto Sans Georgian\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Georgian\"\n ],\n \"major\": \"Noto Sans Georgian\",\n \"minor\": \"Noto Sans Georgian\",\n \"textSample\": \"ეს ულამაზესი სახლში\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-gujarati\",\n \"name\": \"Noto Sans Gujarati\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Gujarati\"\n ],\n \"major\": \"Noto Sans Gujarati\",\n \"minor\": \"Noto Sans Gujarati\",\n \"textSample\": \"આ સારી સ્થિતિ છે\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-gurmukhi\",\n \"name\": \"Noto Sans Gurmukhi\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Punjabi (Gurmukhi)\"\n ],\n \"major\": \"Noto Sans Gurmukhi\",\n \"minor\": \"Noto Sans Gurmukhi\",\n \"textSample\": \"ਇਹ ਬਹੁਤ ਸੋਹਣਾ ਹੈ\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-hebrew\",\n \"name\": \"Noto Sans Hebrew\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Hebrew\"\n ],\n \"major\": \"Noto Sans Hebrew\",\n \"minor\": \"Noto Sans Hebrew\",\n \"textSample\": \"זה ספר יפהפה\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-jp\",\n \"name\": \"Noto Sans JP\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Japanese\"\n ],\n \"major\": \"Noto Sans JP\",\n \"minor\": \"Noto Sans JP\",\n \"textSample\": \"これは美しいです\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-kannada\",\n \"name\": \"Noto Sans Kannada\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Kannada\"\n ],\n \"major\": \"Noto Sans Kannada\",\n \"minor\": \"Noto Sans Kannada\",\n \"textSample\": \"ಇದು ಸುಂದರ ಪುಸ್ತಕ\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-khmer\",\n \"name\": \"Noto Sans Khmer\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Khmer\"\n ],\n \"major\": \"Noto Sans Khmer\",\n \"minor\": \"Noto Sans Khmer\",\n \"textSample\": \"ភាសាខ្មែរពិតជាស្រស់ស្អាត\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-kr\",\n \"name\": \"Noto Sans KR\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Korean\"\n ],\n \"major\": \"Noto Sans KR\",\n \"minor\": \"Noto Sans KR\",\n \"textSample\": \"이것은 아름답다\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-malayalam\",\n \"name\": \"Noto Sans Malayalam\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Malayalam\"\n ],\n \"major\": \"Noto Sans Malayalam\",\n \"minor\": \"Noto Sans Malayalam\",\n \"textSample\": \"ഇത് മനോഹരമാണ്\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-mongolian\",\n \"name\": \"Noto Sans Mongolian\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Mongolian\"\n ],\n \"major\": \"Noto Sans Mongolian\",\n \"minor\": \"Noto Sans Mongolian\",\n \"textSample\": \"Энэ маш сайхан\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-oriya\",\n \"name\": \"Noto Sans Oriya\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Odia\"\n ],\n \"major\": \"Noto Sans Oriya\",\n \"minor\": \"Noto Sans Oriya\",\n \"textSample\": \"ଏହା ବହୁତ ସୁନ୍ଦର\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-sc\",\n \"name\": \"Noto Sans SC\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (simplified)\",\n \"Chinese (traditional)\",\n \"Japanese\",\n \"Korean\"\n ],\n \"major\": \"Noto Sans SC\",\n \"minor\": \"Noto Sans SC\",\n \"textSample\": \"这是美丽的\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-tamil\",\n \"name\": \"Noto Sans Tamil\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Tamil\"\n ],\n \"major\": \"Noto Sans Tamil\",\n \"minor\": \"Noto Sans Tamil\",\n \"textSample\": \"இது அழகாக இருக்கிறது\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-tc\",\n \"name\": \"Noto Sans TC\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (traditional)\"\n ],\n \"major\": \"Noto Sans TC\",\n \"minor\": \"Noto Sans TC\",\n \"textSample\": \"這很美麗\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-telugu\",\n \"name\": \"Noto Sans Telugu\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Telugu\"\n ],\n \"major\": \"Noto Sans Telugu\",\n \"minor\": \"Noto Sans Telugu\",\n \"textSample\": \"ఇది చక్కనిది\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"noto-sans-thai\",\n \"name\": \"Noto Sans Thai\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Thai\"\n ],\n \"major\": \"Noto Sans Thai\",\n \"minor\": \"Noto Sans Thai\",\n \"textSample\": \"นี่คือสวยงาม\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"nyala\",\n \"name\": \"Nyala\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Amharic\"\n ],\n \"major\": \"Nyala\",\n \"minor\": \"Nyala\",\n \"textSample\": \"አማርኛ ቋንቋ እጅግ ጥሩ ነው።\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"open-sans\",\n \"name\": \"Open Sans\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Open Sans\",\n \"minor\": \"Open Sans\",\n \"textSample\": \"Modern and sleek\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"pmingliu\",\n \"name\": \"PMingLiU\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (traditional)\"\n ],\n \"major\": \"PMingLiU\",\n \"minor\": \"PMingLiU\",\n \"textSample\": \"這是以新細明體字型撰寫的\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"poppins\",\n \"name\": \"Poppins\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Poppins\",\n \"minor\": \"Poppins\",\n \"textSample\": \"Clean and readable\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"pt-serif\",\n \"name\": \"PT Serif\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"PT Serif\",\n \"minor\": \"PT Serif\",\n \"textSample\": \"Elegant and timeless\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"raavi\",\n \"name\": \"Raavi\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Punjabi\"\n ],\n \"major\": \"Raavi\",\n \"minor\": \"Raavi\",\n \"textSample\": \"ਇਹ ਰਾਵੀ ਫੌਂਟ ਵਿੱਚ ਲਿਖਿਆ ਗਿਆ ਹੈ\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"raleway\",\n \"name\": \"Raleway\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Raleway\",\n \"minor\": \"Raleway\",\n \"textSample\": \"Stylish and modern\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"roboto\",\n \"name\": \"Roboto\",\n \"app\": \"Google Slides\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Roboto\",\n \"minor\": \"Roboto\",\n \"textSample\": \"Perfect for tech\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"rockwell\",\n \"name\": \"Rockwell\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Rockwell\",\n \"minor\": \"Rockwell\",\n \"textSample\": \"Solid slab serif\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"sakkal-majalla\",\n \"name\": \"Sakkal Majalla\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Arabic\",\n \"Urdu\",\n \"Persian\"\n ],\n \"major\": \"Sakkal Majalla\",\n \"minor\": \"Sakkal Majalla\",\n \"textSample\": \"هذا كتاب رائع\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"seaford\",\n \"name\": \"Seaford\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Seaford Display\",\n \"minor\": \"Seaford\",\n \"textSample\": \"Humanist gentle tone\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"segoe-ui\",\n \"name\": \"Segoe UI\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Segoe UI Semibold\",\n \"minor\": \"Segoe UI\",\n \"textSample\": \"Modern interface font\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"segoe-ui-light\",\n \"name\": \"Segoe UI Light\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Segoe UI Semilight\",\n \"minor\": \"Segoe UI Light\",\n \"textSample\": \"Clean airy look\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"shonar-bangla\",\n \"name\": \"Shonar Bangla\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Bengali\",\n \"Chittagonian\"\n ],\n \"major\": \"Shonar Bangla\",\n \"minor\": \"Shonar Bangla\",\n \"textSample\": \"এটা খুব সুন্দর\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"shruti\",\n \"name\": \"Shruti\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Gujarati\"\n ],\n \"major\": \"Shruti\",\n \"minor\": \"Shruti\",\n \"textSample\": \"આ શ્રુતિ ફોન્ટમાં લખાયું છે\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"simsun\",\n \"name\": \"SimSun\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Chinese (simplified)\"\n ],\n \"major\": \"SimSun\",\n \"minor\": \"SimSun\",\n \"textSample\": \"这是用宋体字体写的\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"skeena\",\n \"name\": \"Skeena\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Skeena Display\",\n \"minor\": \"Skeena\",\n \"textSample\": \"Balanced contemporary style\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"sylfaen\",\n \"name\": \"Sylfaen\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Armenian\",\n \"Georgian\"\n ],\n \"major\": \"Sylfaen\",\n \"minor\": \"Sylfaen\",\n \"textSample\": \"ეს ჩემი სახლი\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"tahoma\",\n \"name\": \"Tahoma\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Tahoma\",\n \"minor\": \"Tahoma\",\n \"textSample\": \"Clear screen text\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"tenorite\",\n \"name\": \"Tenorite\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Tenorite Display\",\n \"minor\": \"Tenorite\",\n \"textSample\": \"Rounded modern tone\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"times-new-roman\",\n \"name\": \"Times New Roman\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Times New Roman\",\n \"minor\": \"Times New Roman\",\n \"textSample\": \"Classic newspaper look\",\n \"type\": \"serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"traditional-arabic\",\n \"name\": \"Traditional Arabic\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Arabic\",\n \"Urdu\",\n \"Pashto\"\n ],\n \"major\": \"Traditional Arabic\",\n \"minor\": \"Traditional Arabic\",\n \"textSample\": \"هذه مدرسة جميلة\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"trebuchet-ms\",\n \"name\": \"Trebuchet MS\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Trebuchet MS\",\n \"minor\": \"Trebuchet MS\",\n \"textSample\": \"Casual web style\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"tunga\",\n \"name\": \"Tunga\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Kannada\"\n ],\n \"major\": \"Tunga\",\n \"minor\": \"Tunga\",\n \"textSample\": \"ಇದು ತುಂಗ ಫಾಂಟ್ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"verdana\",\n \"name\": \"Verdana\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"latin\",\n \"languages\": [],\n \"major\": \"Verdana\",\n \"minor\": \"Verdana\",\n \"textSample\": \"Wide readable font\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"vrinda\",\n \"name\": \"Vrinda\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"cs\",\n \"languages\": [\n \"Bengali\"\n ],\n \"major\": \"Vrinda\",\n \"minor\": \"Vrinda\",\n \"textSample\": \"এটি ভ্রিন্দা ফন্টে লেখা হয়েছে।\",\n \"type\": \"sans-serif\"\n },\n {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"id\": \"yu-gothic\",\n \"name\": \"Yu Gothic\",\n \"app\": \"PowerPoint\",\n \"languageFamily\": \"ea\",\n \"languages\": [\n \"Japanese\"\n ],\n \"major\": \"Yu Gothic\",\n \"minor\": \"Yu Gothic\",\n \"textSample\": \"これは游ゴシックフォントで書かれています\",\n \"type\": \"sans-serif\"\n }\n] as const;\n\nexport const catalogs = {\n audiences,\n purposes,\n tones,\n themes,\n layouts,\n chartTypes,\n narratives,\n socialPlatforms,\n languages,\n colorSchemes,\n fontSchemes,\n} as const;\n\nexport const catalogIndexes = {\n audiences: {\n \"$schema\": \"https://openpresentation.org/schema/opf-audience-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of presentation audiences available in the openpresentation.org catalog. Each entry is a lightweight summary; full audience records (seniority, technical fluency, decision power, attention budget, recommended narratives and tones) live in the per-id JSON files alongside this index. Audiences are referenced from OPF documents via audience.\",\n \"records\": [\n {\n \"id\": \"executives\",\n \"name\": \"Executives\",\n \"summary\": \"Senior leaders who need the recommendation up front, the evidence behind it, and the ask.\",\n \"file\": \"executives.json\"\n },\n {\n \"id\": \"board\",\n \"name\": \"Board of Directors\",\n \"summary\": \"Directors with fiduciary responsibility who balance oversight, advice, and approval.\",\n \"file\": \"board.json\"\n },\n {\n \"id\": \"engineering-team\",\n \"name\": \"Engineering Team\",\n \"summary\": \"Practitioners building the system; they want depth, mechanism, and tradeoffs.\",\n \"file\": \"engineering-team.json\"\n },\n {\n \"id\": \"investors\",\n \"name\": \"Investors\",\n \"summary\": \"Capital allocators evaluating fit, traction, and risk-adjusted return.\",\n \"file\": \"investors.json\"\n },\n {\n \"id\": \"customers\",\n \"name\": \"Customers\",\n \"summary\": \"Buyers and users — outcome-focused, allergic to jargon, sensitive to time.\",\n \"file\": \"customers.json\"\n },\n {\n \"id\": \"sales-team\",\n \"name\": \"Sales Team\",\n \"summary\": \"Quota-carrying reps who want talk tracks, objection handling, and crisp proof.\",\n \"file\": \"sales-team.json\"\n },\n {\n \"id\": \"marketing-team\",\n \"name\": \"Marketing Team\",\n \"summary\": \"Brand and demand-gen practitioners aligning on positioning, messaging, and campaigns.\",\n \"file\": \"marketing-team.json\"\n },\n {\n \"id\": \"all-hands\",\n \"name\": \"All Hands\",\n \"summary\": \"The full company — mixed roles, mixed seniority, looking for context, signal, and inclusion.\",\n \"file\": \"all-hands.json\"\n },\n {\n \"id\": \"candidates\",\n \"name\": \"Candidates\",\n \"summary\": \"Potential hires evaluating company, role, and people.\",\n \"file\": \"candidates.json\"\n },\n {\n \"id\": \"regulators\",\n \"name\": \"Regulators\",\n \"summary\": \"Government, agency, and policy reviewers evaluating compliance, risk, and impact.\",\n \"file\": \"regulators.json\"\n }\n ]\n},\n purposes: {\n \"$schema\": \"https://openpresentation.org/schema/opf-purpose-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of presentation purposes available in the openpresentation.org catalog. Each entry is a lightweight summary; full purpose records live in the per-id JSON files alongside this index. Purposes are referenced from OPF documents via purpose.\",\n \"records\": [\n {\n \"id\": \"inform\",\n \"name\": \"Inform\",\n \"summary\": \"Give the audience clear context, facts, or status without asking for a decision.\",\n \"file\": \"inform.json\"\n },\n {\n \"id\": \"decide\",\n \"name\": \"Drive a Decision\",\n \"summary\": \"Frame options, evidence, tradeoffs, and a recommendation so the audience can choose.\",\n \"file\": \"decide.json\"\n },\n {\n \"id\": \"align\",\n \"name\": \"Align\",\n \"summary\": \"Create shared understanding and commitment across people who need to move together.\",\n \"file\": \"align.json\"\n },\n {\n \"id\": \"persuade\",\n \"name\": \"Persuade\",\n \"summary\": \"Change belief or win support for a specific argument, idea, or recommendation.\",\n \"file\": \"persuade.json\"\n },\n {\n \"id\": \"educate\",\n \"name\": \"Educate\",\n \"summary\": \"Teach a concept, process, product, or domain so the audience can use it correctly.\",\n \"file\": \"educate.json\"\n },\n {\n \"id\": \"report\",\n \"name\": \"Report\",\n \"summary\": \"Summarize performance, progress, or findings with enough context to interpret results.\",\n \"file\": \"report.json\"\n },\n {\n \"id\": \"pitch\",\n \"name\": \"Pitch\",\n \"summary\": \"Present an opportunity and ask for investment, approval, partnership, or sponsorship.\",\n \"file\": \"pitch.json\"\n },\n {\n \"id\": \"sell\",\n \"name\": \"Sell\",\n \"summary\": \"Move a buyer or evaluator toward purchase, adoption, renewal, or expansion.\",\n \"file\": \"sell.json\"\n },\n {\n \"id\": \"plan\",\n \"name\": \"Plan\",\n \"summary\": \"Establish a roadmap, operating plan, or sequence of actions with owners and next steps.\",\n \"file\": \"plan.json\"\n }\n ]\n},\n tones: {\n \"$schema\": \"https://openpresentation.org/schema/opf-tone-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of presentation tones available in the openpresentation.org catalog. Each entry is a lightweight summary; full tone records (voice cues, anti-patterns, sample phrases) live in the per-id JSON files alongside this index. Tones are referenced from OPF documents via tone.\",\n \"records\": [\n {\n \"id\": \"formal\",\n \"name\": \"Formal\",\n \"summary\": \"Polished, restrained voice for board, investor, and regulator audiences.\",\n \"file\": \"formal.json\"\n },\n {\n \"id\": \"casual\",\n \"name\": \"Casual\",\n \"summary\": \"Warm, plain-spoken voice for internal updates and customer storytelling.\",\n \"file\": \"casual.json\"\n },\n {\n \"id\": \"inspirational\",\n \"name\": \"Inspirational\",\n \"summary\": \"Aspirational, narrative-driven voice for keynotes, founders, and rallying cries.\",\n \"file\": \"inspirational.json\"\n },\n {\n \"id\": \"technical\",\n \"name\": \"Technical\",\n \"summary\": \"Precise, evidence-led voice for engineering, research, and product-detail audiences.\",\n \"file\": \"technical.json\"\n },\n {\n \"id\": \"persuasive\",\n \"name\": \"Persuasive\",\n \"summary\": \"Argument-led voice for sales, fundraising, and recommendation-driven decks.\",\n \"file\": \"persuasive.json\"\n },\n {\n \"id\": \"authoritative\",\n \"name\": \"Authoritative\",\n \"summary\": \"Expert, declarative voice for category-defining and analyst-style decks.\",\n \"file\": \"authoritative.json\"\n },\n {\n \"id\": \"conversational\",\n \"name\": \"Conversational\",\n \"summary\": \"Direct, dialog-style voice for podcasts, fireside chats, and small-group reviews.\",\n \"file\": \"conversational.json\"\n }\n ]\n},\n themes: {\n \"$schema\": \"https://openpresentation.org/schema/opf-theme-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of themes available in the openpresentation.org catalog. Each entry is a lightweight summary; full theme records live in the per-id JSON files alongside this index.\",\n \"records\": [\n {\n \"id\": \"bold\",\n \"name\": \"Bold\",\n \"description\": \"A vibrant, high-energy theme with bold colors and a dynamic, attention-grabbing style. Great for presentations that need to stand out.\",\n \"file\": \"bold.json\"\n },\n {\n \"id\": \"classic\",\n \"name\": \"Classic\",\n \"description\": \"A timeless, clean, and versatile theme with balanced color contrasts and classic typography. Ideal for professional, readable presentations.\",\n \"file\": \"classic.json\"\n },\n {\n \"id\": \"dark\",\n \"name\": \"Dark\",\n \"description\": \"A rich dark-mode theme with bold contrast and modern style. Great for moody, high-impact presentations.\",\n \"file\": \"dark.json\"\n },\n {\n \"id\": \"minimal\",\n \"name\": \"Minimal\",\n \"description\": \"A clean, minimalistic theme with a focus on simplicity and readability. Ideal for professional, straightforward presentations.\",\n \"file\": \"minimal.json\"\n }\n ]\n},\n layouts: {\n \"$schema\": \"https://openpresentation.org/schema/opf-layout-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of slide layouts available in the openpresentation.org catalog. Each entry is a lightweight summary; full layout records live in the per-id JSON files alongside this index.\",\n \"records\": [\n {\n \"id\": \"blank\",\n \"name\": \"Blank\",\n \"file\": \"blank.json\"\n },\n {\n \"id\": \"chart-1x\",\n \"name\": \"Chart 1x\",\n \"file\": \"chart-1x.json\"\n },\n {\n \"id\": \"chart-2x\",\n \"name\": \"Chart 2x\",\n \"file\": \"chart-2x.json\"\n },\n {\n \"id\": \"chart-3x\",\n \"name\": \"Chart 3x\",\n \"file\": \"chart-3x.json\"\n },\n {\n \"id\": \"code-1x\",\n \"name\": \"Code 1x\",\n \"file\": \"code-1x.json\"\n },\n {\n \"id\": \"image-1x\",\n \"name\": \"Image 1x\",\n \"file\": \"image-1x.json\"\n },\n {\n \"id\": \"image-2x\",\n \"name\": \"Image 2x\",\n \"file\": \"image-2x.json\"\n },\n {\n \"id\": \"image-3x\",\n \"name\": \"Image 3x\",\n \"file\": \"image-3x.json\"\n },\n {\n \"id\": \"image-bleed\",\n \"name\": \"Image Bleed\",\n \"file\": \"image-bleed.json\"\n },\n {\n \"id\": \"list-1x\",\n \"name\": \"List 1x\",\n \"file\": \"list-1x.json\"\n },\n {\n \"id\": \"list-2x\",\n \"name\": \"List 2x\",\n \"file\": \"list-2x.json\"\n },\n {\n \"id\": \"list-3x\",\n \"name\": \"List 3x\",\n \"file\": \"list-3x.json\"\n },\n {\n \"id\": \"list-4x\",\n \"name\": \"List 4x\",\n \"file\": \"list-4x.json\"\n },\n {\n \"id\": \"list-5x\",\n \"name\": \"List 5x\",\n \"file\": \"list-5x.json\"\n },\n {\n \"id\": \"list-6x\",\n \"name\": \"List 6x\",\n \"file\": \"list-6x.json\"\n },\n {\n \"id\": \"media-1x\",\n \"name\": \"Media 1x\",\n \"file\": \"media-1x.json\"\n },\n {\n \"id\": \"number-1x\",\n \"name\": \"Number 1x\",\n \"file\": \"number-1x.json\"\n },\n {\n \"id\": \"number-2x\",\n \"name\": \"Number 2x\",\n \"file\": \"number-2x.json\"\n },\n {\n \"id\": \"number-3x\",\n \"name\": \"Number 3x\",\n \"file\": \"number-3x.json\"\n },\n {\n \"id\": \"number-4x\",\n \"name\": \"Number 4x\",\n \"file\": \"number-4x.json\"\n },\n {\n \"id\": \"number-5x\",\n \"name\": \"Number 5x\",\n \"file\": \"number-5x.json\"\n },\n {\n \"id\": \"number-6x\",\n \"name\": \"Number 6x\",\n \"file\": \"number-6x.json\"\n },\n {\n \"id\": \"table-1x\",\n \"name\": \"Table 1x\",\n \"file\": \"table-1x.json\"\n },\n {\n \"id\": \"text-1x\",\n \"name\": \"Text 1x\",\n \"file\": \"text-1x.json\"\n },\n {\n \"id\": \"text-2x\",\n \"name\": \"Text 2x\",\n \"file\": \"text-2x.json\"\n },\n {\n \"id\": \"text-3x\",\n \"name\": \"Text 3x\",\n \"file\": \"text-3x.json\"\n },\n {\n \"id\": \"title\",\n \"name\": \"Title\",\n \"file\": \"title.json\"\n },\n {\n \"id\": \"title-subtitle\",\n \"name\": \"Title Subtitle\",\n \"file\": \"title-subtitle.json\"\n }\n ]\n},\n chartTypes: {\n \"$schema\": \"https://openpresentation.org/schema/opf-chart-type-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of chart types available in the pptx.gallery catalog. Each entry is a lightweight summary; full chart-type records live in the per-id JSON files alongside this index.\",\n \"records\": [\n {\n \"id\": \"100pct-bullet-bar\",\n \"name\": \"100PCT_BULLET_BAR\",\n \"label\": \"100% Bullet Bar\",\n \"group\": \"Bullet\",\n \"file\": \"100pct-bullet-bar.json\"\n },\n {\n \"id\": \"100pct-bullet-bar-2x\",\n \"name\": \"100PCT_BULLET_BAR_2X\",\n \"label\": \"100% Bullet Bar 2x\",\n \"group\": \"Bullet\",\n \"file\": \"100pct-bullet-bar-2x.json\"\n },\n {\n \"id\": \"100pct-bullet-bar-3x\",\n \"name\": \"100PCT_BULLET_BAR_3X\",\n \"label\": \"100% Bullet Bar 3x\",\n \"group\": \"Bullet\",\n \"file\": \"100pct-bullet-bar-3x.json\"\n },\n {\n \"id\": \"100pct-bullet-column\",\n \"name\": \"100PCT_BULLET_COLUMN\",\n \"label\": \"100% Bullet Column\",\n \"group\": \"Bullet\",\n \"file\": \"100pct-bullet-column.json\"\n },\n {\n \"id\": \"100pct-bullet-column-2x\",\n \"name\": \"100PCT_BULLET_COLUMN_2X\",\n \"label\": \"100% Bullet Colum 2x\",\n \"group\": \"Bullet\",\n \"file\": \"100pct-bullet-column-2x.json\"\n },\n {\n \"id\": \"100pct-bullet-column-3x\",\n \"name\": \"100PCT_BULLET_COLUMN_3X\",\n \"label\": \"100% Bullet Column 3x\",\n \"group\": \"Bullet\",\n \"file\": \"100pct-bullet-column-3x.json\"\n },\n {\n \"id\": \"100pct-progress-bar\",\n \"name\": \"100PCT_PROGRESS_BAR\",\n \"label\": \"100% Progress Bar\",\n \"group\": \"Bar\",\n \"file\": \"100pct-progress-bar.json\"\n },\n {\n \"id\": \"100pct-stacked-area-2x\",\n \"name\": \"100PCT_STACKED_AREA_2X\",\n \"label\": \"100% Stacked Area 2x\",\n \"group\": \"Area\",\n \"file\": \"100pct-stacked-area-2x.json\"\n },\n {\n \"id\": \"100pct-stacked-area-3x\",\n \"name\": \"100PCT_STACKED_AREA_3X\",\n \"label\": \"100% Stacked Area 3x\",\n \"group\": \"Area\",\n \"file\": \"100pct-stacked-area-3x.json\"\n },\n {\n \"id\": \"100pct-stacked-bar-2x\",\n \"name\": \"100PCT_STACKED_BAR_2X\",\n \"label\": \"100% Stacked Bar 2x\",\n \"group\": \"Bar\",\n \"file\": \"100pct-stacked-bar-2x.json\"\n },\n {\n \"id\": \"100pct-stacked-bar-3x\",\n \"name\": \"100PCT_STACKED_BAR_3X\",\n \"label\": \"100% Stacked Bar 3x\",\n \"group\": \"Bar\",\n \"file\": \"100pct-stacked-bar-3x.json\"\n },\n {\n \"id\": \"100pct-stacked-column-2x\",\n \"name\": \"100PCT_STACKED_COLUMN_2X\",\n \"label\": \"100% Stacked Column 2x\",\n \"group\": \"Column\",\n \"file\": \"100pct-stacked-column-2x.json\"\n },\n {\n \"id\": \"100pct-stacked-column-3x\",\n \"name\": \"100PCT_STACKED_COLUMN_3X\",\n \"label\": \"100% Stacked Column 3x\",\n \"group\": \"Column\",\n \"file\": \"100pct-stacked-column-3x.json\"\n },\n {\n \"id\": \"area\",\n \"name\": \"AREA\",\n \"label\": \"Area\",\n \"group\": \"Area\",\n \"file\": \"area.json\"\n },\n {\n \"id\": \"australia\",\n \"name\": \"AUSTRALIA\",\n \"label\": \"Australia\",\n \"group\": \"Map\",\n \"file\": \"australia.json\"\n },\n {\n \"id\": \"bar\",\n \"name\": \"BAR\",\n \"label\": \"Bar\",\n \"group\": \"Bar\",\n \"file\": \"bar.json\"\n },\n {\n \"id\": \"box-and-whisker\",\n \"name\": \"BOX_AND_WHISKER\",\n \"label\": \"Box & Whisker\",\n \"group\": \"Other\",\n \"file\": \"box-and-whisker.json\"\n },\n {\n \"id\": \"box-and-whisker-2x\",\n \"name\": \"BOX_AND_WHISKER_2X\",\n \"label\": \"Box & Whisker 2x\",\n \"group\": \"Other\",\n \"file\": \"box-and-whisker-2x.json\"\n },\n {\n \"id\": \"box-and-whisker-3x\",\n \"name\": \"BOX_AND_WHISKER_3X\",\n \"label\": \"Box & Whisker 3x\",\n \"group\": \"Other\",\n \"file\": \"box-and-whisker-3x.json\"\n },\n {\n \"id\": \"bullet-bar\",\n \"name\": \"BULLET_BAR\",\n \"label\": \"Bullet Bar\",\n \"group\": \"Bullet\",\n \"file\": \"bullet-bar.json\"\n },\n {\n \"id\": \"bullet-bar-2x\",\n \"name\": \"BULLET_BAR_2X\",\n \"label\": \"Bullet Bar 2x\",\n \"group\": \"Bullet\",\n \"file\": \"bullet-bar-2x.json\"\n },\n {\n \"id\": \"bullet-bar-3x\",\n \"name\": \"BULLET_BAR_3X\",\n \"label\": \"Bullet Bar 3x\",\n \"group\": \"Bullet\",\n \"file\": \"bullet-bar-3x.json\"\n },\n {\n \"id\": \"bullet-column\",\n \"name\": \"BULLET_COLUMN\",\n \"label\": \"Bullet Column\",\n \"group\": \"Bullet\",\n \"file\": \"bullet-column.json\"\n },\n {\n \"id\": \"bullet-column-2x\",\n \"name\": \"BULLET_COLUMN_2X\",\n \"label\": \"Bullet Column 2x\",\n \"group\": \"Bullet\",\n \"file\": \"bullet-column-2x.json\"\n },\n {\n \"id\": \"bullet-column-3x\",\n \"name\": \"BULLET_COLUMN_3X\",\n \"label\": \"Bullet Column 3x\",\n \"group\": \"Bullet\",\n \"file\": \"bullet-column-3x.json\"\n },\n {\n \"id\": \"canada\",\n \"name\": \"CANADA\",\n \"label\": \"Canada\",\n \"group\": \"Map\",\n \"file\": \"canada.json\"\n },\n {\n \"id\": \"clustered-bar-2x\",\n \"name\": \"CLUSTERED_BAR_2X\",\n \"label\": \"Clustered Bar 2x\",\n \"group\": \"Bar\",\n \"file\": \"clustered-bar-2x.json\"\n },\n {\n \"id\": \"clustered-column\",\n \"name\": \"CLUSTERED_COLUMN\",\n \"label\": \"Clustered Column\",\n \"group\": \"Column\",\n \"file\": \"clustered-column.json\"\n },\n {\n \"id\": \"column\",\n \"name\": \"COLUMN\",\n \"label\": \"Column\",\n \"group\": \"Column\",\n \"file\": \"column.json\"\n },\n {\n \"id\": \"dot-plot\",\n \"name\": \"DOT_PLOT\",\n \"label\": \"Dot Plot\",\n \"group\": \"XY (Scatter)\",\n \"file\": \"dot-plot.json\"\n },\n {\n \"id\": \"dot-plot-2x\",\n \"name\": \"DOT_PLOT_2X\",\n \"label\": \"Dot Plot 2x\",\n \"group\": \"XY (Scatter)\",\n \"file\": \"dot-plot-2x.json\"\n },\n {\n \"id\": \"dot-plot-3x\",\n \"name\": \"DOT_PLOT_3X\",\n \"label\": \"Dot Plot 3x\",\n \"group\": \"XY (Scatter)\",\n \"file\": \"dot-plot-3x.json\"\n },\n {\n \"id\": \"dot-plot-4x\",\n \"name\": \"DOT_PLOT_4X\",\n \"label\": \"Dot Plot 4x\",\n \"group\": \"XY (Scatter)\",\n \"file\": \"dot-plot-4x.json\"\n },\n {\n \"id\": \"dot-plot-5x\",\n \"name\": \"DOT_PLOT_5X\",\n \"label\": \"Dot Plot 5x\",\n \"group\": \"XY (Scatter)\",\n \"file\": \"dot-plot-5x.json\"\n },\n {\n \"id\": \"dot-plot-6x\",\n \"name\": \"DOT_PLOT_6X\",\n \"label\": \"Dot Plot 6x\",\n \"group\": \"XY (Scatter)\",\n \"file\": \"dot-plot-6x.json\"\n },\n {\n \"id\": \"doughnut\",\n \"name\": \"DOUGHNUT\",\n \"label\": \"Doughnut\",\n \"group\": \"Pie\",\n \"file\": \"doughnut.json\"\n },\n {\n \"id\": \"dumbbell\",\n \"name\": \"DUMBBELL\",\n \"label\": \"Dumbbell\",\n \"group\": \"Other\",\n \"file\": \"dumbbell.json\"\n },\n {\n \"id\": \"filled-radar\",\n \"name\": \"FILLED_RADAR\",\n \"label\": \"Filled Radar\",\n \"group\": \"Radar\",\n \"file\": \"filled-radar.json\"\n },\n {\n \"id\": \"funnel\",\n \"name\": \"FUNNEL\",\n \"label\": \"Funnel\",\n \"group\": \"Other\",\n \"file\": \"funnel.json\"\n },\n {\n \"id\": \"histogram\",\n \"name\": \"HISTOGRAM\",\n \"label\": \"Histogram\",\n \"group\": \"Histogram\",\n \"file\": \"histogram.json\"\n },\n {\n \"id\": \"line\",\n \"name\": \"LINE\",\n \"label\": \"Line\",\n \"group\": \"Line\",\n \"file\": \"line.json\"\n },\n {\n \"id\": \"line-2x\",\n \"name\": \"LINE_2X\",\n \"label\": \"Line 2x\",\n \"group\": \"Line\",\n \"file\": \"line-2x.json\"\n },\n {\n \"id\": \"line-3x\",\n \"name\": \"LINE_3X\",\n \"label\": \"Line 3x\",\n \"group\": \"Line\",\n \"file\": \"line-3x.json\"\n },\n {\n \"id\": \"line-with-high-low\",\n \"name\": \"LINE_WITH_HIGH_LOW\",\n \"label\": \"Line with High/Low\",\n \"group\": \"Line\",\n \"file\": \"line-with-high-low.json\"\n },\n {\n \"id\": \"line-with-high-low-and-markers\",\n \"name\": \"LINE_WITH_HIGH_LOW_AND_MARKERS\",\n \"label\": \"Line with High/Low and Markers\",\n \"group\": \"Line\",\n \"file\": \"line-with-high-low-and-markers.json\"\n },\n {\n \"id\": \"line-with-markers\",\n \"name\": \"LINE_WITH_MARKERS\",\n \"label\": \"Line with Markers\",\n \"group\": \"Line\",\n \"file\": \"line-with-markers.json\"\n },\n {\n \"id\": \"line-with-markers-2x\",\n \"name\": \"LINE_WITH_MARKERS_2X\",\n \"label\": \"Line with Markers 2x\",\n \"group\": \"Line\",\n \"file\": \"line-with-markers-2x.json\"\n },\n {\n \"id\": \"line-with-markers-3x\",\n \"name\": \"LINE_WITH_MARKERS_3X\",\n \"label\": \"Line with Markers 3x\",\n \"group\": \"Line\",\n \"file\": \"line-with-markers-3x.json\"\n },\n {\n \"id\": \"pareto\",\n \"name\": \"PARETO\",\n \"label\": \"Pareto\",\n \"group\": \"Histogram\",\n \"file\": \"pareto.json\"\n },\n {\n \"id\": \"pie\",\n \"name\": \"PIE\",\n \"label\": \"Pie\",\n \"group\": \"Pie\",\n \"file\": \"pie.json\"\n },\n {\n \"id\": \"radar\",\n \"name\": \"RADAR\",\n \"label\": \"Radar\",\n \"group\": \"Radar\",\n \"file\": \"radar.json\"\n },\n {\n \"id\": \"radar-with-markers\",\n \"name\": \"RADAR_WITH_MARKERS\",\n \"label\": \"Radar with Markers\",\n \"group\": \"Radar\",\n \"file\": \"radar-with-markers.json\"\n },\n {\n \"id\": \"scatter\",\n \"name\": \"SCATTER\",\n \"label\": \"Scatter\",\n \"group\": \"XY (Scatter)\",\n \"file\": \"scatter.json\"\n },\n {\n \"id\": \"sparkline\",\n \"name\": \"SPARKLINE\",\n \"label\": \"Sparkline\",\n \"group\": \"Sparkline\",\n \"file\": \"sparkline.json\"\n },\n {\n \"id\": \"sparkline-2x\",\n \"name\": \"SPARKLINE_2X\",\n \"label\": \"Sparkline 2x\",\n \"group\": \"Sparkline\",\n \"file\": \"sparkline-2x.json\"\n },\n {\n \"id\": \"sparkline-3x\",\n \"name\": \"SPARKLINE_3X\",\n \"label\": \"Sparkline 3x\",\n \"group\": \"Sparkline\",\n \"file\": \"sparkline-3x.json\"\n },\n {\n \"id\": \"sparkline-4x\",\n \"name\": \"SPARKLINE_4X\",\n \"label\": \"Sparkline 4x\",\n \"group\": \"Sparkline\",\n \"file\": \"sparkline-4x.json\"\n },\n {\n \"id\": \"sparkline-5x\",\n \"name\": \"SPARKLINE_5X\",\n \"label\": \"Sparkline 5x\",\n \"group\": \"Sparkline\",\n \"file\": \"sparkline-5x.json\"\n },\n {\n \"id\": \"sparkline-6x\",\n \"name\": \"SPARKLINE_6X\",\n \"label\": \"Sparkline 6x\",\n \"group\": \"Sparkline\",\n \"file\": \"sparkline-6x.json\"\n },\n {\n \"id\": \"stacked-area-2x\",\n \"name\": \"STACKED_AREA_2X\",\n \"label\": \"Stacked Area 2x\",\n \"group\": \"Area\",\n \"file\": \"stacked-area-2x.json\"\n },\n {\n \"id\": \"stacked-area-3x\",\n \"name\": \"STACKED_AREA_3X\",\n \"label\": \"Stacked Area 3x\",\n \"group\": \"Area\",\n \"file\": \"stacked-area-3x.json\"\n },\n {\n \"id\": \"stacked-bar-2x\",\n \"name\": \"STACKED_BAR_2X\",\n \"label\": \"Stacked Bar 2x\",\n \"group\": \"Bar\",\n \"file\": \"stacked-bar-2x.json\"\n },\n {\n \"id\": \"stacked-bar-3x\",\n \"name\": \"STACKED_BAR_3X\",\n \"label\": \"Stacked Bar 3x\",\n \"group\": \"Bar\",\n \"file\": \"stacked-bar-3x.json\"\n },\n {\n \"id\": \"stacked-column-2x\",\n \"name\": \"STACKED_COLUMN_2X\",\n \"label\": \"Stacked Column 2x\",\n \"group\": \"Column\",\n \"file\": \"stacked-column-2x.json\"\n },\n {\n \"id\": \"stacked-column-3x\",\n \"name\": \"STACKED_COLUMN_3X\",\n \"label\": \"Stacked Column 3x\",\n \"group\": \"Column\",\n \"file\": \"stacked-column-3x.json\"\n },\n {\n \"id\": \"stacked-line-2x\",\n \"name\": \"STACKED_LINE_2X\",\n \"label\": \"Stacked Line 2x\",\n \"group\": \"Line\",\n \"file\": \"stacked-line-2x.json\"\n },\n {\n \"id\": \"stacked-line-3x\",\n \"name\": \"STACKED_LINE_3X\",\n \"label\": \"Stacked Line 3x\",\n \"group\": \"Line\",\n \"file\": \"stacked-line-3x.json\"\n },\n {\n \"id\": \"stacked-line-with-markers-2x\",\n \"name\": \"STACKED_LINE_WITH_MARKERS_2X\",\n \"label\": \"Stacked Line with Markers 2x\",\n \"group\": \"Line\",\n \"file\": \"stacked-line-with-markers-2x.json\"\n },\n {\n \"id\": \"stacked-line-with-markers-3x\",\n \"name\": \"STACKED_LINE_WITH_MARKERS_3X\",\n \"label\": \"Stacked Line with Markers 3x\",\n \"group\": \"Line\",\n \"file\": \"stacked-line-with-markers-3x.json\"\n },\n {\n \"id\": \"treemap\",\n \"name\": \"TREEMAP\",\n \"label\": \"Treemap\",\n \"group\": \"Treemap\",\n \"file\": \"treemap.json\"\n },\n {\n \"id\": \"treemap-2x\",\n \"name\": \"TREEMAP_2X\",\n \"label\": \"Treemap 2x\",\n \"group\": \"Treemap\",\n \"file\": \"treemap-2x.json\"\n },\n {\n \"id\": \"treemap-3x\",\n \"name\": \"TREEMAP_3X\",\n \"label\": \"Treemap 3x\",\n \"group\": \"Treemap\",\n \"file\": \"treemap-3x.json\"\n },\n {\n \"id\": \"united-kingdom\",\n \"name\": \"UNITED_KINGDOM\",\n \"label\": \"United Kingdom\",\n \"group\": \"Map\",\n \"file\": \"united-kingdom.json\"\n },\n {\n \"id\": \"united-states\",\n \"name\": \"UNITED_STATES\",\n \"label\": \"United States\",\n \"group\": \"Map\",\n \"file\": \"united-states.json\"\n },\n {\n \"id\": \"waterfall\",\n \"name\": \"WATERFALL\",\n \"label\": \"Waterfall\",\n \"group\": \"Other\",\n \"file\": \"waterfall.json\"\n },\n {\n \"id\": \"world\",\n \"name\": \"WORLD\",\n \"label\": \"World\",\n \"group\": \"Map\",\n \"file\": \"world.json\"\n }\n ]\n},\n narratives: {\n \"$schema\": \"https://openpresentation.org/schema/opf-narrative-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of narrative templates available in the openpresentation.org catalog. Each entry is a lightweight summary; full beat definitions live in the per-template JSON files alongside this index. Entries are grouped by usage: foundational arcs first, then pitches, sales and GTM, strategy and consulting, storytelling, keynotes and inspiration, rhythm-of-business reviews, data-driven analyses, and workforce reviews.\",\n \"templates\": [\n {\n \"id\": \"problem-solution\",\n \"name\": \"Problem → Solution\",\n \"summary\": \"Classic business arc: name the pain, raise the stakes, present your fix, show how it works, prove it, ask.\",\n \"audienceFit\": [\n \"customers\",\n \"stakeholders\",\n \"executives\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"business\",\n \"sales\",\n \"general\",\n \"proposal\"\n ],\n \"file\": \"problem-solution.json\"\n },\n {\n \"id\": \"scqa\",\n \"name\": \"SCQA (Situation–Complication–Question–Answer)\",\n \"summary\": \"Minto's pyramid principle: surface the recommendation up front, then layer key arguments and supporting evidence beneath it.\",\n \"audienceFit\": [\n \"executives\",\n \"boards\",\n \"leadership-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"executive\",\n \"strategy\",\n \"consulting\",\n \"minto\",\n \"pyramid\"\n ],\n \"file\": \"scqa.json\"\n },\n {\n \"id\": \"strategic-narrative\",\n \"name\": \"Strategic Narrative\",\n \"summary\": \"Change-driven sales/founder arc: a tectonic shift creates winners and losers, and your product is the way to land in the winners' camp.\",\n \"audienceFit\": [\n \"customers\",\n \"prospects\",\n \"board\",\n \"investors\",\n \"executives\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"strategic\",\n \"sales\",\n \"positioning\",\n \"category\"\n ],\n \"file\": \"strategic-narrative.json\"\n },\n {\n \"id\": \"golden-circle\",\n \"name\": \"Golden Circle (Why / How / What)\",\n \"summary\": \"Sinek's keynote arc: lead with belief, follow with method, finish with proof.\",\n \"audienceFit\": [\n \"customers\",\n \"employees\",\n \"general-audience\",\n \"press\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"keynote\",\n \"brand\",\n \"mission\",\n \"sinek\"\n ],\n \"file\": \"golden-circle.json\"\n },\n {\n \"id\": \"conference-talk\",\n \"name\": \"Conference Talk\",\n \"summary\": \"Stage-talk arc for industry events: hook, promise, evidence, mechanism, application, recap.\",\n \"audienceFit\": [\n \"practitioners\",\n \"general-audience\",\n \"industry-peers\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"talk\",\n \"conference\",\n \"keynote\",\n \"education\"\n ],\n \"file\": \"conference-talk.json\"\n },\n {\n \"id\": \"transformation-arc\",\n \"name\": \"Transformation Arc (Before / After / Bridge)\",\n \"summary\": \"Marketing-copy arc adapted for slides: paint the painful before, contrast the vivid after, deliver the bridge between them.\",\n \"audienceFit\": [\n \"customers\",\n \"prospects\",\n \"marketing-teams\",\n \"general-audience\"\n ],\n \"durationRange\": {\n \"minMinutes\": 3,\n \"maxMinutes\": 15\n },\n \"tags\": [\n \"marketing\",\n \"copywriting\",\n \"pitch\",\n \"persuasive\"\n ],\n \"file\": \"transformation-arc.json\"\n },\n {\n \"id\": \"pitch-deck\",\n \"name\": \"Startup Pitch Deck\",\n \"summary\": \"Canonical investor-pitch arc drawn from Sequoia and YC templates; optimized for 10–20 minute meetings.\",\n \"audienceFit\": [\n \"investors\",\n \"venture-capitalists\",\n \"angels\",\n \"advisors\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"startup\",\n \"fundraising\",\n \"pitch\",\n \"investor\"\n ],\n \"file\": \"pitch-deck.json\"\n },\n {\n \"id\": \"early-startup-pitch\",\n \"name\": \"Early-Stage Startup Pitch\",\n \"summary\": \"Seed and pre-seed pitch arc tuned for vision-heavy stories where revenue and traction are still thin.\",\n \"audienceFit\": [\n \"seed-investors\",\n \"angels\",\n \"advisors\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"startup\",\n \"fundraising\",\n \"seed\",\n \"pitch\"\n ],\n \"file\": \"early-startup-pitch.json\"\n },\n {\n \"id\": \"venture-pitch\",\n \"name\": \"Venture Pitch\",\n \"summary\": \"Series A/B fundraising arc structured around the canonical investor questions.\",\n \"audienceFit\": [\n \"investors\",\n \"venture-capitalists\",\n \"series-a\",\n \"series-b\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"startup\",\n \"fundraising\",\n \"pitch\",\n \"investor\",\n \"series-a\"\n ],\n \"file\": \"venture-pitch.json\"\n },\n {\n \"id\": \"persuasive-sales\",\n \"name\": \"Persuasive Sales\",\n \"summary\": \"Top-of-funnel sales arc anchored in market change, leading to your unique capabilities, supported by proof, ending with a clear ask.\",\n \"audienceFit\": [\n \"prospects\",\n \"customers\",\n \"buyers\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"sales\",\n \"go-to-market\",\n \"outbound\",\n \"discovery\"\n ],\n \"file\": \"persuasive-sales.json\"\n },\n {\n \"id\": \"company-intro\",\n \"name\": \"Company Intro\",\n \"summary\": \"Standard company-overview deck: who you are, what's distinctive, who you serve, why they win.\",\n \"audienceFit\": [\n \"prospects\",\n \"partners\",\n \"press\",\n \"candidates\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"overview\",\n \"go-to-market\",\n \"marketing\",\n \"intro\"\n ],\n \"file\": \"company-intro.json\"\n },\n {\n \"id\": \"marketing-strategy\",\n \"name\": \"Marketing Strategy\",\n \"summary\": \"Comprehensive go-to-market strategy arc structured around the 4Ps; for category launches and annual plans.\",\n \"audienceFit\": [\n \"marketing-leaders\",\n \"executives\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"go-to-market\",\n \"marketing\",\n \"strategy\",\n \"planning\"\n ],\n \"file\": \"marketing-strategy.json\"\n },\n {\n \"id\": \"product-launch\",\n \"name\": \"Product Launch\",\n \"summary\": \"Persuasive launch arc: brand, promise, conflict, stakes, reveal, raised stakes, sell, call to action.\",\n \"audienceFit\": [\n \"customers\",\n \"press\",\n \"general-audience\",\n \"partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"startup\",\n \"launch\",\n \"marketing\",\n \"keynote\"\n ],\n \"file\": \"product-launch.json\"\n },\n {\n \"id\": \"strategic-advisory\",\n \"name\": \"Strategic Advisory\",\n \"summary\": \"Consulting-style advisory deck applying Minto's pyramid: title, SCQ, answer, three argued points, summary.\",\n \"audienceFit\": [\n \"executives\",\n \"boards\",\n \"leadership-teams\",\n \"clients\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"consulting\",\n \"advisory\",\n \"strategy\",\n \"minto\"\n ],\n \"file\": \"strategic-advisory.json\"\n },\n {\n \"id\": \"challenge-resolution\",\n \"name\": \"Challenge → Resolution\",\n \"summary\": \"Identify a current business challenge, trace its origins, and recommend an actionable resolution.\",\n \"audienceFit\": [\n \"executives\",\n \"managers\",\n \"stakeholders\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"management\",\n \"strategy\",\n \"consulting\",\n \"advisory\"\n ],\n \"file\": \"challenge-resolution.json\"\n },\n {\n \"id\": \"project-proposal\",\n \"name\": \"Project Proposal\",\n \"summary\": \"Internal proposal arc for greenlighting a project: hook, problem, idea, benefits, justification, plan, timeline, risks, outlook, ask.\",\n \"audienceFit\": [\n \"executives\",\n \"sponsors\",\n \"managers\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"management\",\n \"proposal\",\n \"internal\",\n \"planning\"\n ],\n \"file\": \"project-proposal.json\"\n },\n {\n \"id\": \"failure-analysis\",\n \"name\": \"Failure Analysis\",\n \"summary\": \"Walk through what went wrong, why, and what changes — a structured post-mortem for stakeholder reviews.\",\n \"audienceFit\": [\n \"leadership\",\n \"customers\",\n \"stakeholders\",\n \"partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"postmortem\",\n \"incident\",\n \"review\",\n \"accountability\"\n ],\n \"file\": \"failure-analysis.json\"\n },\n {\n \"id\": \"classic-story\",\n \"name\": \"Classic Story\",\n \"summary\": \"Movie-style narrative arc applied to any topic: open the scene, introduce the villain, raise the stakes, send in the hero, deliver the plan, close with hope.\",\n \"audienceFit\": [\n \"general-audience\",\n \"customers\",\n \"internal-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"storytelling\",\n \"general\",\n \"engagement\"\n ],\n \"file\": \"classic-story.json\"\n },\n {\n \"id\": \"business-narrative\",\n \"name\": \"Business Narrative\",\n \"summary\": \"Tell a business strategy or solution as a story: setting, challenge, tension, hero, plan, outcome.\",\n \"audienceFit\": [\n \"internal-teams\",\n \"leadership\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"management\",\n \"storytelling\",\n \"internal\",\n \"strategy\"\n ],\n \"file\": \"business-narrative.json\"\n },\n {\n \"id\": \"rags-to-riches\",\n \"name\": \"Rags to Riches\",\n \"summary\": \"Underdog journey from initial failure to eventual success — for founder stories and brand stories where the lesson is grit.\",\n \"audienceFit\": [\n \"general-audience\",\n \"customers\",\n \"press\",\n \"candidates\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"storytelling\",\n \"founder\",\n \"brand\",\n \"inspirational\"\n ],\n \"file\": \"rags-to-riches.json\"\n },\n {\n \"id\": \"underdog-victory\",\n \"name\": \"Underdog Victory\",\n \"summary\": \"Story arc of someone or something overlooked who triumphs in the end — for founder narratives and team-building decks.\",\n \"audienceFit\": [\n \"general-audience\",\n \"internal-teams\",\n \"candidates\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 20\n },\n \"tags\": [\n \"storytelling\",\n \"inspirational\",\n \"founder\",\n \"team\"\n ],\n \"file\": \"underdog-victory.json\"\n },\n {\n \"id\": \"survival-story\",\n \"name\": \"Survival Story\",\n \"summary\": \"Narrative arc of overcoming adversity through determination — for brand stories and leadership talks where the lesson lives in the comeback.\",\n \"audienceFit\": [\n \"general-audience\",\n \"internal-teams\",\n \"press\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"storytelling\",\n \"inspirational\",\n \"founder\",\n \"comeback\"\n ],\n \"file\": \"survival-story.json\"\n },\n {\n \"id\": \"educate\",\n \"name\": \"Educate\",\n \"summary\": \"Engaging-explainer arc inspired by Mary Roach: surprise, evidence, anecdote, scrutiny, memorable insight.\",\n \"audienceFit\": [\n \"general-audience\",\n \"students\",\n \"practitioners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"keynote\",\n \"education\",\n \"explainer\",\n \"science\"\n ],\n \"file\": \"educate.json\"\n },\n {\n \"id\": \"persuade\",\n \"name\": \"Persuade\",\n \"summary\": \"Argument-driven keynote arc inspired by Ken Robinson: grip, challenge, story, statistic, revelation, proposal, question.\",\n \"audienceFit\": [\n \"general-audience\",\n \"policymakers\",\n \"industry-peers\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"keynote\",\n \"persuasive\",\n \"advocacy\",\n \"talk\"\n ],\n \"file\": \"persuade.json\"\n },\n {\n \"id\": \"reveal\",\n \"name\": \"Reveal\",\n \"summary\": \"Insight-driven keynote arc inspired by Amy Cuddy: connect through story, ground in research, advise, demonstrate authenticity.\",\n \"audienceFit\": [\n \"general-audience\",\n \"academics\",\n \"professionals\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 25\n },\n \"tags\": [\n \"keynote\",\n \"research\",\n \"talk\",\n \"inspirational\"\n ],\n \"file\": \"reveal.json\"\n },\n {\n \"id\": \"justice\",\n \"name\": \"Justice\",\n \"summary\": \"Advocacy arc inspired by 'I Have a Dream': inequality, dream, urgency, unity, call to action, hope.\",\n \"audienceFit\": [\n \"general-audience\",\n \"advocates\",\n \"policymakers\",\n \"community\"\n ],\n \"durationRange\": {\n \"minMinutes\": 10,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"inspirational\",\n \"advocacy\",\n \"movement\",\n \"keynote\"\n ],\n \"file\": \"justice.json\"\n },\n {\n \"id\": \"innovation\",\n \"name\": \"Innovation\",\n \"summary\": \"Keynote-style product reveal inspired by Steve Jobs's 2007 iPhone launch: stage, reveal, demonstrate, wow, differentiate, recategorize.\",\n \"audienceFit\": [\n \"customers\",\n \"press\",\n \"developers\",\n \"general-audience\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"inspirational\",\n \"keynote\",\n \"launch\",\n \"product\"\n ],\n \"file\": \"innovation.json\"\n },\n {\n \"id\": \"focus\",\n \"name\": \"Focus\",\n \"summary\": \"Long-term, principle-driven business arc inspired by Bezos's 1997 shareholder letter: focus, performance, framework, discipline.\",\n \"audienceFit\": [\n \"shareholders\",\n \"leadership\",\n \"all-hands\",\n \"board\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"inspirational\",\n \"leadership\",\n \"principles\",\n \"all-hands\"\n ],\n \"file\": \"focus.json\"\n },\n {\n \"id\": \"qbr\",\n \"name\": \"Quarterly Business Review\",\n \"summary\": \"Standard internal QBR arc: recap, performance, wins, challenges, insights, plan, risks, asks.\",\n \"audienceFit\": [\n \"leadership\",\n \"executives\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 90\n },\n \"tags\": [\n \"internal\",\n \"review\",\n \"operations\",\n \"reporting\"\n ],\n \"file\": \"qbr.json\"\n },\n {\n \"id\": \"business-review\",\n \"name\": \"Business Review\",\n \"summary\": \"Full-loop review of recent activities — closer to a customer-facing or partner-facing relationship review than a status update.\",\n \"audienceFit\": [\n \"customers\",\n \"partners\",\n \"stakeholders\",\n \"leadership\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 90\n },\n \"tags\": [\n \"customer-relationship\",\n \"review\",\n \"operations\"\n ],\n \"file\": \"business-review.json\"\n },\n {\n \"id\": \"board-meeting\",\n \"name\": \"Board Meeting\",\n \"summary\": \"Comprehensive board update covering CEO commentary, key metrics, financials, functional updates, and forward-looking topics.\",\n \"audienceFit\": [\n \"board\",\n \"directors\",\n \"executives\",\n \"investors\"\n ],\n \"durationRange\": {\n \"minMinutes\": 60,\n \"maxMinutes\": 180\n },\n \"tags\": [\n \"rhythm-of-business\",\n \"board\",\n \"governance\",\n \"executive\"\n ],\n \"file\": \"board-meeting.json\"\n },\n {\n \"id\": \"weekly-progress\",\n \"name\": \"Weekly Progress\",\n \"summary\": \"Tight rhythm-of-business arc for weekly progress reports — designed for fifteen-to-thirty-minute team check-ins.\",\n \"audienceFit\": [\n \"managers\",\n \"teams\",\n \"cross-functional-partners\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 30\n },\n \"tags\": [\n \"rhythm-of-business\",\n \"weekly\",\n \"internal\",\n \"operations\"\n ],\n \"file\": \"weekly-progress.json\"\n },\n {\n \"id\": \"status-update\",\n \"name\": \"Status Update\",\n \"summary\": \"Concise progress-report arc for keeping a stakeholder informed: headline, brief, progress, results, plan, feedback.\",\n \"audienceFit\": [\n \"stakeholders\",\n \"managers\",\n \"customers\",\n \"executives\"\n ],\n \"durationRange\": {\n \"minMinutes\": 5,\n \"maxMinutes\": 15\n },\n \"tags\": [\n \"reporting\",\n \"operations\",\n \"customer-relationship\",\n \"weekly\"\n ],\n \"file\": \"status-update.json\"\n },\n {\n \"id\": \"performance-review\",\n \"name\": \"Performance Review\",\n \"summary\": \"Analytical review of individual, team, or company performance grounded in metrics and adjustments for the next period.\",\n \"audienceFit\": [\n \"leadership\",\n \"managers\",\n \"teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"data-driven\",\n \"review\",\n \"operations\",\n \"metrics\"\n ],\n \"file\": \"performance-review.json\"\n },\n {\n \"id\": \"survey-analysis\",\n \"name\": \"Survey Analysis\",\n \"summary\": \"Structured walk-through of survey results: topic, executive summary, methodology, findings, analysis, implications, recommendations.\",\n \"audienceFit\": [\n \"executives\",\n \"researchers\",\n \"stakeholders\",\n \"marketing-teams\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"data-driven\",\n \"research\",\n \"insights\",\n \"voice-of-customer\"\n ],\n \"file\": \"survey-analysis.json\"\n },\n {\n \"id\": \"trend-analysis\",\n \"name\": \"Trend Analysis\",\n \"summary\": \"Identify and discuss data-driven patterns to understand performance and forecast what's next.\",\n \"audienceFit\": [\n \"executives\",\n \"analysts\",\n \"leadership\"\n ],\n \"durationRange\": {\n \"minMinutes\": 15,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"data-driven\",\n \"forecasting\",\n \"strategy\",\n \"analysis\"\n ],\n \"file\": \"trend-analysis.json\"\n },\n {\n \"id\": \"employee-review\",\n \"name\": \"Employee Review\",\n \"summary\": \"Constructive performance-review arc that recognizes work, gives candid feedback, and sets growth goals together.\",\n \"audienceFit\": [\n \"employee\",\n \"manager\",\n \"hr-partner\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"workforce\",\n \"hr\",\n \"review\",\n \"manager\"\n ],\n \"file\": \"employee-review.json\"\n },\n {\n \"id\": \"performance-improvement-plan\",\n \"name\": \"Performance Improvement Plan\",\n \"summary\": \"Structured PIP arc that helps a struggling employee see expectations, understand the gap, and walk a credible improvement path.\",\n \"audienceFit\": [\n \"employee\",\n \"manager\",\n \"hr-partner\"\n ],\n \"durationRange\": {\n \"minMinutes\": 30,\n \"maxMinutes\": 60\n },\n \"tags\": [\n \"workforce\",\n \"hr\",\n \"performance\",\n \"manager\"\n ],\n \"file\": \"performance-improvement-plan.json\"\n },\n {\n \"id\": \"capacity-planning\",\n \"name\": \"Capacity Planning\",\n \"summary\": \"Workforce and operational capacity-planning arc: kickoff, urgency, current state, projection, tactics, implementation, revision.\",\n \"audienceFit\": [\n \"leadership\",\n \"operations\",\n \"hr-partners\",\n \"finance\"\n ],\n \"durationRange\": {\n \"minMinutes\": 20,\n \"maxMinutes\": 45\n },\n \"tags\": [\n \"workforce\",\n \"operations\",\n \"planning\",\n \"resource-management\"\n ],\n \"file\": \"capacity-planning.json\"\n }\n ]\n},\n socialPlatforms: {\n \"$schema\": \"https://openpresentation.org/schema/opf-social-platform-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of social-media platforms available in the openpresentation.org catalog. Each entry is a lightweight summary; full platform records live in the per-id JSON files alongside this index. The property keys of any Socials object on Organization or Speaker resolve to ids in this catalog.\",\n \"records\": [\n {\n \"id\": \"linkedin\",\n \"name\": \"LinkedIn\",\n \"summary\": \"Professional social network for individuals and companies.\",\n \"file\": \"linkedin.json\"\n },\n {\n \"id\": \"x\",\n \"name\": \"X\",\n \"summary\": \"Real-time microblog for news, opinions, and discussion. Formerly Twitter.\",\n \"file\": \"x.json\"\n },\n {\n \"id\": \"github\",\n \"name\": \"GitHub\",\n \"summary\": \"Code-hosting platform for developers and organizations.\",\n \"file\": \"github.json\"\n },\n {\n \"id\": \"youtube\",\n \"name\": \"YouTube\",\n \"summary\": \"Video-sharing platform with creator and brand channels.\",\n \"file\": \"youtube.json\"\n },\n {\n \"id\": \"instagram\",\n \"name\": \"Instagram\",\n \"summary\": \"Photo and short-form video network from Meta.\",\n \"file\": \"instagram.json\"\n },\n {\n \"id\": \"facebook\",\n \"name\": \"Facebook\",\n \"summary\": \"General-purpose social network from Meta.\",\n \"file\": \"facebook.json\"\n },\n {\n \"id\": \"tiktok\",\n \"name\": \"TikTok\",\n \"summary\": \"Short-form video network with strong recommendation feed.\",\n \"file\": \"tiktok.json\"\n },\n {\n \"id\": \"threads\",\n \"name\": \"Threads\",\n \"summary\": \"Text-first social network from Meta, integrated with Instagram identity.\",\n \"file\": \"threads.json\"\n },\n {\n \"id\": \"mastodon\",\n \"name\": \"Mastodon\",\n \"summary\": \"Decentralized microblog network across federated instances.\",\n \"file\": \"mastodon.json\"\n },\n {\n \"id\": \"bluesky\",\n \"name\": \"Bluesky\",\n \"summary\": \"Decentralized microblog network built on the AT Protocol.\",\n \"file\": \"bluesky.json\"\n }\n ]\n},\n languages: {\n \"$schema\": \"https://openpresentation.org/schema/opf-language-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of languages available in the openpresentation.org catalog. Each entry is a lightweight summary with the canonical BCP-47 tag; full language records live in the per-id JSON files alongside this index.\",\n \"records\": [\n {\n \"id\": \"afrikaans\",\n \"name\": \"Afrikaans\",\n \"bcp47\": \"af\",\n \"file\": \"afrikaans.json\"\n },\n {\n \"id\": \"albanian\",\n \"name\": \"Albanian\",\n \"bcp47\": \"sq\",\n \"file\": \"albanian.json\"\n },\n {\n \"id\": \"amharic\",\n \"name\": \"Amharic\",\n \"bcp47\": \"am\",\n \"file\": \"amharic.json\"\n },\n {\n \"id\": \"arabic\",\n \"name\": \"Arabic\",\n \"bcp47\": \"ar\",\n \"file\": \"arabic.json\"\n },\n {\n \"id\": \"armenian\",\n \"name\": \"Armenian\",\n \"bcp47\": \"hy\",\n \"file\": \"armenian.json\"\n },\n {\n \"id\": \"aymara\",\n \"name\": \"Aymara\",\n \"bcp47\": \"ay\",\n \"file\": \"aymara.json\"\n },\n {\n \"id\": \"azerbaijani\",\n \"name\": \"Azerbaijani\",\n \"bcp47\": \"az\",\n \"file\": \"azerbaijani.json\"\n },\n {\n \"id\": \"bengali\",\n \"name\": \"Bengali\",\n \"bcp47\": \"bn\",\n \"file\": \"bengali.json\"\n },\n {\n \"id\": \"berber-latin\",\n \"name\": \"Berber (Latin)\",\n \"bcp47\": \"ber-Latn\",\n \"file\": \"berber-latin.json\"\n },\n {\n \"id\": \"bosnian-latin\",\n \"name\": \"Bosnian (Latin)\",\n \"bcp47\": \"bs-Latn\",\n \"file\": \"bosnian-latin.json\"\n },\n {\n \"id\": \"bulgarian\",\n \"name\": \"Bulgarian\",\n \"bcp47\": \"bg\",\n \"file\": \"bulgarian.json\"\n },\n {\n \"id\": \"catalan\",\n \"name\": \"Catalan\",\n \"bcp47\": \"ca\",\n \"file\": \"catalan.json\"\n },\n {\n \"id\": \"cebuano\",\n \"name\": \"Cebuano\",\n \"bcp47\": \"ceb\",\n \"file\": \"cebuano.json\"\n },\n {\n \"id\": \"chinese-simplified\",\n \"name\": \"Chinese (Simplified)\",\n \"bcp47\": \"zh-Hans\",\n \"file\": \"chinese-simplified.json\"\n },\n {\n \"id\": \"chinese-traditional\",\n \"name\": \"Chinese (Traditional)\",\n \"bcp47\": \"zh-Hant\",\n \"file\": \"chinese-traditional.json\"\n },\n {\n \"id\": \"chittagonian\",\n \"name\": \"Chittagonian\",\n \"bcp47\": \"ctg\",\n \"file\": \"chittagonian.json\"\n },\n {\n \"id\": \"croatian\",\n \"name\": \"Croatian\",\n \"bcp47\": \"hr\",\n \"file\": \"croatian.json\"\n },\n {\n \"id\": \"czech\",\n \"name\": \"Czech\",\n \"bcp47\": \"cs\",\n \"file\": \"czech.json\"\n },\n {\n \"id\": \"danish\",\n \"name\": \"Danish\",\n \"bcp47\": \"da\",\n \"file\": \"danish.json\"\n },\n {\n \"id\": \"dutch\",\n \"name\": \"Dutch\",\n \"bcp47\": \"nl\",\n \"file\": \"dutch.json\"\n },\n {\n \"id\": \"english\",\n \"name\": \"English\",\n \"bcp47\": \"en\",\n \"file\": \"english.json\"\n },\n {\n \"id\": \"english-au\",\n \"name\": \"English (Australia)\",\n \"bcp47\": \"en-AU\",\n \"file\": \"english-au.json\"\n },\n {\n \"id\": \"english-ca\",\n \"name\": \"English (Canada)\",\n \"bcp47\": \"en-CA\",\n \"file\": \"english-ca.json\"\n },\n {\n \"id\": \"english-gb\",\n \"name\": \"English (United Kingdom)\",\n \"bcp47\": \"en-GB\",\n \"file\": \"english-gb.json\"\n },\n {\n \"id\": \"english-in\",\n \"name\": \"English (India)\",\n \"bcp47\": \"en-IN\",\n \"file\": \"english-in.json\"\n },\n {\n \"id\": \"english-us\",\n \"name\": \"English (United States)\",\n \"bcp47\": \"en-US\",\n \"file\": \"english-us.json\"\n },\n {\n \"id\": \"estonian\",\n \"name\": \"Estonian\",\n \"bcp47\": \"et\",\n \"file\": \"estonian.json\"\n },\n {\n \"id\": \"filipino\",\n \"name\": \"Filipino\",\n \"bcp47\": \"fil\",\n \"file\": \"filipino.json\"\n },\n {\n \"id\": \"finnish\",\n \"name\": \"Finnish\",\n \"bcp47\": \"fi\",\n \"file\": \"finnish.json\"\n },\n {\n \"id\": \"french\",\n \"name\": \"French\",\n \"bcp47\": \"fr\",\n \"file\": \"french.json\"\n },\n {\n \"id\": \"fulfulde\",\n \"name\": \"Fulfulde\",\n \"bcp47\": \"ff\",\n \"file\": \"fulfulde.json\"\n },\n {\n \"id\": \"galician\",\n \"name\": \"Galician\",\n \"bcp47\": \"gl\",\n \"file\": \"galician.json\"\n },\n {\n \"id\": \"georgian\",\n \"name\": \"Georgian\",\n \"bcp47\": \"ka\",\n \"file\": \"georgian.json\"\n },\n {\n \"id\": \"german\",\n \"name\": \"German\",\n \"bcp47\": \"de\",\n \"file\": \"german.json\"\n },\n {\n \"id\": \"greek\",\n \"name\": \"Greek\",\n \"bcp47\": \"el\",\n \"file\": \"greek.json\"\n },\n {\n \"id\": \"gujarati\",\n \"name\": \"Gujarati\",\n \"bcp47\": \"gu\",\n \"file\": \"gujarati.json\"\n },\n {\n \"id\": \"hausa\",\n \"name\": \"Hausa\",\n \"bcp47\": \"ha\",\n \"file\": \"hausa.json\"\n },\n {\n \"id\": \"hebrew\",\n \"name\": \"Hebrew\",\n \"bcp47\": \"he\",\n \"file\": \"hebrew.json\"\n },\n {\n \"id\": \"hindi\",\n \"name\": \"Hindi\",\n \"bcp47\": \"hi\",\n \"file\": \"hindi.json\"\n },\n {\n \"id\": \"hungarian\",\n \"name\": \"Hungarian\",\n \"bcp47\": \"hu\",\n \"file\": \"hungarian.json\"\n },\n {\n \"id\": \"igbo\",\n \"name\": \"Igbo\",\n \"bcp47\": \"ig\",\n \"file\": \"igbo.json\"\n },\n {\n \"id\": \"indonesian\",\n \"name\": \"Indonesian\",\n \"bcp47\": \"id\",\n \"file\": \"indonesian.json\"\n },\n {\n \"id\": \"italian\",\n \"name\": \"Italian\",\n \"bcp47\": \"it\",\n \"file\": \"italian.json\"\n },\n {\n \"id\": \"japanese\",\n \"name\": \"Japanese\",\n \"bcp47\": \"ja\",\n \"file\": \"japanese.json\"\n },\n {\n \"id\": \"kannada\",\n \"name\": \"Kannada\",\n \"bcp47\": \"kn\",\n \"file\": \"kannada.json\"\n },\n {\n \"id\": \"kazakh\",\n \"name\": \"Kazakh\",\n \"bcp47\": \"kk\",\n \"file\": \"kazakh.json\"\n },\n {\n \"id\": \"khmer\",\n \"name\": \"Khmer\",\n \"bcp47\": \"km\",\n \"file\": \"khmer.json\"\n },\n {\n \"id\": \"kinyarwanda\",\n \"name\": \"Kinyarwanda\",\n \"bcp47\": \"rw\",\n \"file\": \"kinyarwanda.json\"\n },\n {\n \"id\": \"korean\",\n \"name\": \"Korean\",\n \"bcp47\": \"ko\",\n \"file\": \"korean.json\"\n },\n {\n \"id\": \"kurmanji\",\n \"name\": \"Kurmanji\",\n \"bcp47\": \"kmr\",\n \"file\": \"kurmanji.json\"\n },\n {\n \"id\": \"latvian\",\n \"name\": \"Latvian\",\n \"bcp47\": \"lv\",\n \"file\": \"latvian.json\"\n },\n {\n \"id\": \"lithuanian\",\n \"name\": \"Lithuanian\",\n \"bcp47\": \"lt\",\n \"file\": \"lithuanian.json\"\n },\n {\n \"id\": \"macedonian\",\n \"name\": \"Macedonian\",\n \"bcp47\": \"mk\",\n \"file\": \"macedonian.json\"\n },\n {\n \"id\": \"malagasy\",\n \"name\": \"Malagasy\",\n \"bcp47\": \"mg\",\n \"file\": \"malagasy.json\"\n },\n {\n \"id\": \"malay\",\n \"name\": \"Malay\",\n \"bcp47\": \"zsm\",\n \"file\": \"malay.json\"\n },\n {\n \"id\": \"malayalam\",\n \"name\": \"Malayalam\",\n \"bcp47\": \"ml\",\n \"file\": \"malayalam.json\"\n },\n {\n \"id\": \"maori\",\n \"name\": \"Māori\",\n \"bcp47\": \"mi\",\n \"file\": \"maori.json\"\n },\n {\n \"id\": \"marathi\",\n \"name\": \"Marathi\",\n \"bcp47\": \"mr\",\n \"file\": \"marathi.json\"\n },\n {\n \"id\": \"mongolian\",\n \"name\": \"Mongolian\",\n \"bcp47\": \"mn\",\n \"file\": \"mongolian.json\"\n },\n {\n \"id\": \"nepali\",\n \"name\": \"Nepali\",\n \"bcp47\": \"ne\",\n \"file\": \"nepali.json\"\n },\n {\n \"id\": \"norwegian\",\n \"name\": \"Norwegian\",\n \"bcp47\": \"no\",\n \"file\": \"norwegian.json\"\n },\n {\n \"id\": \"odia\",\n \"name\": \"Odia\",\n \"bcp47\": \"or\",\n \"file\": \"odia.json\"\n },\n {\n \"id\": \"oromo\",\n \"name\": \"Oromo\",\n \"bcp47\": \"om\",\n \"file\": \"oromo.json\"\n },\n {\n \"id\": \"pashto\",\n \"name\": \"Pashto\",\n \"bcp47\": \"ps\",\n \"file\": \"pashto.json\"\n },\n {\n \"id\": \"persian\",\n \"name\": \"Persian\",\n \"bcp47\": \"fa\",\n \"file\": \"persian.json\"\n },\n {\n \"id\": \"polish\",\n \"name\": \"Polish\",\n \"bcp47\": \"pl\",\n \"file\": \"polish.json\"\n },\n {\n \"id\": \"portuguese\",\n \"name\": \"Portuguese\",\n \"bcp47\": \"pt\",\n \"file\": \"portuguese.json\"\n },\n {\n \"id\": \"punjabi-gurmukhi\",\n \"name\": \"Punjabi (Gurmukhi)\",\n \"bcp47\": \"pa-Guru\",\n \"file\": \"punjabi-gurmukhi.json\"\n },\n {\n \"id\": \"punjabi-shahmukhi\",\n \"name\": \"Punjabi (Shahmukhi)\",\n \"bcp47\": \"pa-Arab\",\n \"file\": \"punjabi-shahmukhi.json\"\n },\n {\n \"id\": \"romanian\",\n \"name\": \"Romanian\",\n \"bcp47\": \"ro\",\n \"file\": \"romanian.json\"\n },\n {\n \"id\": \"russian\",\n \"name\": \"Russian\",\n \"bcp47\": \"ru\",\n \"file\": \"russian.json\"\n },\n {\n \"id\": \"serbian-cyrillic\",\n \"name\": \"Serbian (Cyrillic)\",\n \"bcp47\": \"sr-Cyrl\",\n \"file\": \"serbian-cyrillic.json\"\n },\n {\n \"id\": \"serbian-latin\",\n \"name\": \"Serbian (Latin)\",\n \"bcp47\": \"sr-Latn\",\n \"file\": \"serbian-latin.json\"\n },\n {\n \"id\": \"shona\",\n \"name\": \"Shona\",\n \"bcp47\": \"sn\",\n \"file\": \"shona.json\"\n },\n {\n \"id\": \"slovak\",\n \"name\": \"Slovak\",\n \"bcp47\": \"sk\",\n \"file\": \"slovak.json\"\n },\n {\n \"id\": \"slovenian\",\n \"name\": \"Slovenian\",\n \"bcp47\": \"sl\",\n \"file\": \"slovenian.json\"\n },\n {\n \"id\": \"somali\",\n \"name\": \"Somali\",\n \"bcp47\": \"so\",\n \"file\": \"somali.json\"\n },\n {\n \"id\": \"spanish\",\n \"name\": \"Spanish\",\n \"bcp47\": \"es\",\n \"file\": \"spanish.json\"\n },\n {\n \"id\": \"swahili\",\n \"name\": \"Swahili\",\n \"bcp47\": \"sw\",\n \"file\": \"swahili.json\"\n },\n {\n \"id\": \"swedish\",\n \"name\": \"Swedish\",\n \"bcp47\": \"sv\",\n \"file\": \"swedish.json\"\n },\n {\n \"id\": \"tagalog\",\n \"name\": \"Tagalog\",\n \"bcp47\": \"tl\",\n \"file\": \"tagalog.json\"\n },\n {\n \"id\": \"tajik\",\n \"name\": \"Tajik\",\n \"bcp47\": \"tg\",\n \"file\": \"tajik.json\"\n },\n {\n \"id\": \"tamil\",\n \"name\": \"Tamil\",\n \"bcp47\": \"ta\",\n \"file\": \"tamil.json\"\n },\n {\n \"id\": \"telugu\",\n \"name\": \"Telugu\",\n \"bcp47\": \"te\",\n \"file\": \"telugu.json\"\n },\n {\n \"id\": \"thai\",\n \"name\": \"Thai\",\n \"bcp47\": \"th\",\n \"file\": \"thai.json\"\n },\n {\n \"id\": \"turkish\",\n \"name\": \"Turkish\",\n \"bcp47\": \"tr\",\n \"file\": \"turkish.json\"\n },\n {\n \"id\": \"ukrainian\",\n \"name\": \"Ukrainian\",\n \"bcp47\": \"uk\",\n \"file\": \"ukrainian.json\"\n },\n {\n \"id\": \"urdu\",\n \"name\": \"Urdu\",\n \"bcp47\": \"ur\",\n \"file\": \"urdu.json\"\n },\n {\n \"id\": \"uzbek-latin\",\n \"name\": \"Uzbek (Latin)\",\n \"bcp47\": \"uz-Latn\",\n \"file\": \"uzbek-latin.json\"\n },\n {\n \"id\": \"vietnamese-quoc-ngu\",\n \"name\": \"Vietnamese (Quốc Ngữ)\",\n \"bcp47\": \"vi-Latn\",\n \"file\": \"vietnamese-quoc-ngu.json\"\n },\n {\n \"id\": \"xhosa\",\n \"name\": \"Xhosa\",\n \"bcp47\": \"xh\",\n \"file\": \"xhosa.json\"\n },\n {\n \"id\": \"yoruba\",\n \"name\": \"Yoruba\",\n \"bcp47\": \"yo\",\n \"file\": \"yoruba.json\"\n },\n {\n \"id\": \"zulu\",\n \"name\": \"Zulu\",\n \"bcp47\": \"zu\",\n \"file\": \"zulu.json\"\n }\n ]\n},\n colorSchemes: {\n \"$schema\": \"https://openpresentation.org/schema/opf-color-scheme-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of color schemes available in the openpresentation.org catalog. Each entry is a lightweight summary; full color-scheme records live in the per-id JSON files alongside this index.\",\n \"records\": [\n {\n \"id\": \"black-and-white\",\n \"name\": \"Black & White\",\n \"file\": \"black-and-white.json\"\n },\n {\n \"id\": \"bold-red\",\n \"name\": \"Bold Red\",\n \"file\": \"bold-red.json\"\n },\n {\n \"id\": \"boost\",\n \"name\": \"Boost\",\n \"file\": \"boost.json\"\n },\n {\n \"id\": \"burnt-orange\",\n \"name\": \"Burnt Orange\",\n \"file\": \"burnt-orange.json\"\n },\n {\n \"id\": \"cool-horizon\",\n \"name\": \"Cool Horizon\",\n \"file\": \"cool-horizon.json\"\n },\n {\n \"id\": \"corporate-blue\",\n \"name\": \"Corporate Blue\",\n \"file\": \"corporate-blue.json\"\n },\n {\n \"id\": \"deep-purple\",\n \"name\": \"Deep Purple\",\n \"file\": \"deep-purple.json\"\n },\n {\n \"id\": \"forest-green\",\n \"name\": \"Forest Green\",\n \"file\": \"forest-green.json\"\n },\n {\n \"id\": \"golden-yellow\",\n \"name\": \"Golden Yellow\",\n \"file\": \"golden-yellow.json\"\n },\n {\n \"id\": \"luxury\",\n \"name\": \"Luxury\",\n \"file\": \"luxury.json\"\n },\n {\n \"id\": \"pastel-red\",\n \"name\": \"Pastel Red\",\n \"file\": \"pastel-red.json\"\n },\n {\n \"id\": \"slate-gray\",\n \"name\": \"Slate Gray\",\n \"file\": \"slate-gray.json\"\n },\n {\n \"id\": \"steel-blue\",\n \"name\": \"Steel Blue\",\n \"file\": \"steel-blue.json\"\n },\n {\n \"id\": \"vibes\",\n \"name\": \"Vibes\",\n \"file\": \"vibes.json\"\n }\n ]\n},\n fontSchemes: {\n \"$schema\": \"https://openpresentation.org/schema/opf-font-scheme-index/v1\",\n \"version\": \"1\",\n \"description\": \"Catalog of font schemes available in the openpresentation.org catalog. Each entry is a lightweight summary; full font-scheme records live in the per-id JSON files alongside this index.\",\n \"records\": [\n {\n \"id\": \"angsana-new\",\n \"name\": \"Angsana New\",\n \"file\": \"angsana-new.json\"\n },\n {\n \"id\": \"aparajita\",\n \"name\": \"Aparajita\",\n \"file\": \"aparajita.json\"\n },\n {\n \"id\": \"aptos\",\n \"name\": \"Aptos\",\n \"file\": \"aptos.json\"\n },\n {\n \"id\": \"arabic-typesetting\",\n \"name\": \"Arabic Typesetting\",\n \"file\": \"arabic-typesetting.json\"\n },\n {\n \"id\": \"arial\",\n \"name\": \"Arial\",\n \"file\": \"arial.json\"\n },\n {\n \"id\": \"batang\",\n \"name\": \"Batang\",\n \"file\": \"batang.json\"\n },\n {\n \"id\": \"bookman\",\n \"name\": \"Bookman\",\n \"file\": \"bookman.json\"\n },\n {\n \"id\": \"calibri\",\n \"name\": \"Calibri\",\n \"file\": \"calibri.json\"\n },\n {\n \"id\": \"century-schoolbook\",\n \"name\": \"Century Schoolbook\",\n \"file\": \"century-schoolbook.json\"\n },\n {\n \"id\": \"consolas\",\n \"name\": \"Consolas\",\n \"file\": \"consolas.json\"\n },\n {\n \"id\": \"constantia\",\n \"name\": \"Constantia\",\n \"file\": \"constantia.json\"\n },\n {\n \"id\": \"courier-new\",\n \"name\": \"Courier New\",\n \"file\": \"courier-new.json\"\n },\n {\n \"id\": \"daunpenh\",\n \"name\": \"DaunPenh\",\n \"file\": \"daunpenh.json\"\n },\n {\n \"id\": \"david\",\n \"name\": \"David\",\n \"file\": \"david.json\"\n },\n {\n \"id\": \"dilleniaupc\",\n \"name\": \"DilleniaUPC\",\n \"file\": \"dilleniaupc.json\"\n },\n {\n \"id\": \"fangsong\",\n \"name\": \"FangSong\",\n \"file\": \"fangsong.json\"\n },\n {\n \"id\": \"garamond\",\n \"name\": \"Garamond\",\n \"file\": \"garamond.json\"\n },\n {\n \"id\": \"gautami\",\n \"name\": \"Gautami\",\n \"file\": \"gautami.json\"\n },\n {\n \"id\": \"georgia\",\n \"name\": \"Georgia\",\n \"file\": \"georgia.json\"\n },\n {\n \"id\": \"gisha\",\n \"name\": \"Gisha\",\n \"file\": \"gisha.json\"\n },\n {\n \"id\": \"grandview\",\n \"name\": \"Grandview\",\n \"file\": \"grandview.json\"\n },\n {\n \"id\": \"gungsuh\",\n \"name\": \"Gungsuh\",\n \"file\": \"gungsuh.json\"\n },\n {\n \"id\": \"impact\",\n \"name\": \"Impact\",\n \"file\": \"impact.json\"\n },\n {\n \"id\": \"kalinga\",\n \"name\": \"Kalinga\",\n \"file\": \"kalinga.json\"\n },\n {\n \"id\": \"kartika\",\n \"name\": \"Kartika\",\n \"file\": \"kartika.json\"\n },\n {\n \"id\": \"khmer-ui\",\n \"name\": \"Khmer UI\",\n \"file\": \"khmer-ui.json\"\n },\n {\n \"id\": \"latha\",\n \"name\": \"Latha\",\n \"file\": \"latha.json\"\n },\n {\n \"id\": \"lucida-sans\",\n \"name\": \"Lucida Sans\",\n \"file\": \"lucida-sans.json\"\n },\n {\n \"id\": \"malgun-gothic\",\n \"name\": \"Malgun Gothic\",\n \"file\": \"malgun-gothic.json\"\n },\n {\n \"id\": \"mangal\",\n \"name\": \"Mangal\",\n \"file\": \"mangal.json\"\n },\n {\n \"id\": \"meiryo\",\n \"name\": \"Meiryo\",\n \"file\": \"meiryo.json\"\n },\n {\n \"id\": \"microsoft-jhenghei\",\n \"name\": \"Microsoft JhengHei\",\n \"file\": \"microsoft-jhenghei.json\"\n },\n {\n \"id\": \"microsoft-yahei\",\n \"name\": \"Microsoft Yahei\",\n \"file\": \"microsoft-yahei.json\"\n },\n {\n \"id\": \"mingliu\",\n \"name\": \"MingLiU\",\n \"file\": \"mingliu.json\"\n },\n {\n \"id\": \"miriam\",\n \"name\": \"Miriam\",\n \"file\": \"miriam.json\"\n },\n {\n \"id\": \"montserrat\",\n \"name\": \"Montserrat\",\n \"file\": \"montserrat.json\"\n },\n {\n \"id\": \"ms-mincho\",\n \"name\": \"MS Mincho\",\n \"file\": \"ms-mincho.json\"\n },\n {\n \"id\": \"nirmala-ui\",\n \"name\": \"Nirmala UI\",\n \"file\": \"nirmala-ui.json\"\n },\n {\n \"id\": \"noto-naksh-arabic\",\n \"name\": \"Noto Naskh Arabic\",\n \"file\": \"noto-naksh-arabic.json\"\n },\n {\n \"id\": \"noto-nastaliq-urdu\",\n \"name\": \"Noto Nastaliq Urdu\",\n \"file\": \"noto-nastaliq-urdu.json\"\n },\n {\n \"id\": \"noto-sans\",\n \"name\": \"Noto Sans\",\n \"file\": \"noto-sans.json\"\n },\n {\n \"id\": \"noto-sans-arabic\",\n \"name\": \"Noto Sans Arabic\",\n \"file\": \"noto-sans-arabic.json\"\n },\n {\n \"id\": \"noto-sans-armenian\",\n \"name\": \"Noto Sans Armenian\",\n \"file\": \"noto-sans-armenian.json\"\n },\n {\n \"id\": \"noto-sans-bengali\",\n \"name\": \"Noto Sans Bengali\",\n \"file\": \"noto-sans-bengali.json\"\n },\n {\n \"id\": \"noto-sans-devangari\",\n \"name\": \"Noto Sans Devanagari\",\n \"file\": \"noto-sans-devangari.json\"\n },\n {\n \"id\": \"noto-sans-ethiopic\",\n \"name\": \"Noto Sans Ethiopic\",\n \"file\": \"noto-sans-ethiopic.json\"\n },\n {\n \"id\": \"noto-sans-georgian\",\n \"name\": \"Noto Sans Georgian\",\n \"file\": \"noto-sans-georgian.json\"\n },\n {\n \"id\": \"noto-sans-gujarati\",\n \"name\": \"Noto Sans Gujarati\",\n \"file\": \"noto-sans-gujarati.json\"\n },\n {\n \"id\": \"noto-sans-gurmukhi\",\n \"name\": \"Noto Sans Gurmukhi\",\n \"file\": \"noto-sans-gurmukhi.json\"\n },\n {\n \"id\": \"noto-sans-hebrew\",\n \"name\": \"Noto Sans Hebrew\",\n \"file\": \"noto-sans-hebrew.json\"\n },\n {\n \"id\": \"noto-sans-jp\",\n \"name\": \"Noto Sans JP\",\n \"file\": \"noto-sans-jp.json\"\n },\n {\n \"id\": \"noto-sans-kannada\",\n \"name\": \"Noto Sans Kannada\",\n \"file\": \"noto-sans-kannada.json\"\n },\n {\n \"id\": \"noto-sans-khmer\",\n \"name\": \"Noto Sans Khmer\",\n \"file\": \"noto-sans-khmer.json\"\n },\n {\n \"id\": \"noto-sans-kr\",\n \"name\": \"Noto Sans KR\",\n \"file\": \"noto-sans-kr.json\"\n },\n {\n \"id\": \"noto-sans-malayalam\",\n \"name\": \"Noto Sans Malayalam\",\n \"file\": \"noto-sans-malayalam.json\"\n },\n {\n \"id\": \"noto-sans-mongolian\",\n \"name\": \"Noto Sans Mongolian\",\n \"file\": \"noto-sans-mongolian.json\"\n },\n {\n \"id\": \"noto-sans-oriya\",\n \"name\": \"Noto Sans Oriya\",\n \"file\": \"noto-sans-oriya.json\"\n },\n {\n \"id\": \"noto-sans-sc\",\n \"name\": \"Noto Sans SC\",\n \"file\": \"noto-sans-sc.json\"\n },\n {\n \"id\": \"noto-sans-tamil\",\n \"name\": \"Noto Sans Tamil\",\n \"file\": \"noto-sans-tamil.json\"\n },\n {\n \"id\": \"noto-sans-tc\",\n \"name\": \"Noto Sans TC\",\n \"file\": \"noto-sans-tc.json\"\n },\n {\n \"id\": \"noto-sans-telugu\",\n \"name\": \"Noto Sans Telugu\",\n \"file\": \"noto-sans-telugu.json\"\n },\n {\n \"id\": \"noto-sans-thai\",\n \"name\": \"Noto Sans Thai\",\n \"file\": \"noto-sans-thai.json\"\n },\n {\n \"id\": \"nyala\",\n \"name\": \"Nyala\",\n \"file\": \"nyala.json\"\n },\n {\n \"id\": \"open-sans\",\n \"name\": \"Open Sans\",\n \"file\": \"open-sans.json\"\n },\n {\n \"id\": \"pmingliu\",\n \"name\": \"PMingLiU\",\n \"file\": \"pmingliu.json\"\n },\n {\n \"id\": \"poppins\",\n \"name\": \"Poppins\",\n \"file\": \"poppins.json\"\n },\n {\n \"id\": \"pt-serif\",\n \"name\": \"PT Serif\",\n \"file\": \"pt-serif.json\"\n },\n {\n \"id\": \"raavi\",\n \"name\": \"Raavi\",\n \"file\": \"raavi.json\"\n },\n {\n \"id\": \"raleway\",\n \"name\": \"Raleway\",\n \"file\": \"raleway.json\"\n },\n {\n \"id\": \"roboto\",\n \"name\": \"Roboto\",\n \"file\": \"roboto.json\"\n },\n {\n \"id\": \"rockwell\",\n \"name\": \"Rockwell\",\n \"file\": \"rockwell.json\"\n },\n {\n \"id\": \"sakkal-majalla\",\n \"name\": \"Sakkal Majalla\",\n \"file\": \"sakkal-majalla.json\"\n },\n {\n \"id\": \"seaford\",\n \"name\": \"Seaford\",\n \"file\": \"seaford.json\"\n },\n {\n \"id\": \"segoe-ui\",\n \"name\": \"Segoe UI\",\n \"file\": \"segoe-ui.json\"\n },\n {\n \"id\": \"segoe-ui-light\",\n \"name\": \"Segoe UI Light\",\n \"file\": \"segoe-ui-light.json\"\n },\n {\n \"id\": \"shonar-bangla\",\n \"name\": \"Shonar Bangla\",\n \"file\": \"shonar-bangla.json\"\n },\n {\n \"id\": \"shruti\",\n \"name\": \"Shruti\",\n \"file\": \"shruti.json\"\n },\n {\n \"id\": \"simsun\",\n \"name\": \"SimSun\",\n \"file\": \"simsun.json\"\n },\n {\n \"id\": \"skeena\",\n \"name\": \"Skeena\",\n \"file\": \"skeena.json\"\n },\n {\n \"id\": \"sylfaen\",\n \"name\": \"Sylfaen\",\n \"file\": \"sylfaen.json\"\n },\n {\n \"id\": \"tahoma\",\n \"name\": \"Tahoma\",\n \"file\": \"tahoma.json\"\n },\n {\n \"id\": \"tenorite\",\n \"name\": \"Tenorite\",\n \"file\": \"tenorite.json\"\n },\n {\n \"id\": \"times-new-roman\",\n \"name\": \"Times New Roman\",\n \"file\": \"times-new-roman.json\"\n },\n {\n \"id\": \"traditional-arabic\",\n \"name\": \"Traditional Arabic\",\n \"file\": \"traditional-arabic.json\"\n },\n {\n \"id\": \"trebuchet-ms\",\n \"name\": \"Trebuchet MS\",\n \"file\": \"trebuchet-ms.json\"\n },\n {\n \"id\": \"tunga\",\n \"name\": \"Tunga\",\n \"file\": \"tunga.json\"\n },\n {\n \"id\": \"verdana\",\n \"name\": \"Verdana\",\n \"file\": \"verdana.json\"\n },\n {\n \"id\": \"vrinda\",\n \"name\": \"Vrinda\",\n \"file\": \"vrinda.json\"\n },\n {\n \"id\": \"yu-gothic\",\n \"name\": \"Yu Gothic\",\n \"file\": \"yu-gothic.json\"\n }\n ]\n},\n} as const;\n\nexport const catalogSchemaNames = {\n audiences: \"audience\",\n purposes: \"purpose\",\n tones: \"tone\",\n themes: \"theme\",\n layouts: \"layout\",\n chartTypes: \"chartType\",\n narratives: \"narrative\",\n socialPlatforms: \"socialPlatform\",\n languages: \"language\",\n colorSchemes: \"colorScheme\",\n fontSchemes: \"fontScheme\",\n} as const;\n\nexport const catalogKinds = [\n \"audiences\",\n \"purposes\",\n \"tones\",\n \"themes\",\n \"layouts\",\n \"chartTypes\",\n \"narratives\",\n \"socialPlatforms\",\n \"languages\",\n \"colorSchemes\",\n \"fontSchemes\"\n] as const;\n\nexport const catalogEntries = [\n { kind: \"audiences\", schemaName: \"audience\", dir: \"catalogs/audiences\", files: [\n \"executives.json\",\n \"board.json\",\n \"engineering-team.json\",\n \"investors.json\",\n \"customers.json\",\n \"sales-team.json\",\n \"marketing-team.json\",\n \"all-hands.json\",\n \"candidates.json\",\n \"regulators.json\"\n], records: audiences, index: catalogIndexes.audiences },\n { kind: \"purposes\", schemaName: \"purpose\", dir: \"catalogs/purposes\", files: [\n \"inform.json\",\n \"decide.json\",\n \"align.json\",\n \"persuade.json\",\n \"educate.json\",\n \"report.json\",\n \"pitch.json\",\n \"sell.json\",\n \"plan.json\"\n], records: purposes, index: catalogIndexes.purposes },\n { kind: \"tones\", schemaName: \"tone\", dir: \"catalogs/tones\", files: [\n \"formal.json\",\n \"casual.json\",\n \"inspirational.json\",\n \"technical.json\",\n \"persuasive.json\",\n \"authoritative.json\",\n \"conversational.json\"\n], records: tones, index: catalogIndexes.tones },\n { kind: \"themes\", schemaName: \"theme\", dir: \"catalogs/themes\", files: [\n \"bold.json\",\n \"classic.json\",\n \"dark.json\",\n \"minimal.json\"\n], records: themes, index: catalogIndexes.themes },\n { kind: \"layouts\", schemaName: \"layout\", dir: \"catalogs/layouts\", files: [\n \"blank.json\",\n \"chart-1x.json\",\n \"chart-2x.json\",\n \"chart-3x.json\",\n \"code-1x.json\",\n \"image-1x.json\",\n \"image-2x.json\",\n \"image-3x.json\",\n \"image-bleed.json\",\n \"list-1x.json\",\n \"list-2x.json\",\n \"list-3x.json\",\n \"list-4x.json\",\n \"list-5x.json\",\n \"list-6x.json\",\n \"media-1x.json\",\n \"number-1x.json\",\n \"number-2x.json\",\n \"number-3x.json\",\n \"number-4x.json\",\n \"number-5x.json\",\n \"number-6x.json\",\n \"table-1x.json\",\n \"text-1x.json\",\n \"text-2x.json\",\n \"text-3x.json\",\n \"title.json\",\n \"title-subtitle.json\"\n], records: layouts, index: catalogIndexes.layouts },\n { kind: \"chartTypes\", schemaName: \"chartType\", dir: \"catalogs/chart-types\", files: [\n \"100pct-bullet-bar.json\",\n \"100pct-bullet-bar-2x.json\",\n \"100pct-bullet-bar-3x.json\",\n \"100pct-bullet-column.json\",\n \"100pct-bullet-column-2x.json\",\n \"100pct-bullet-column-3x.json\",\n \"100pct-progress-bar.json\",\n \"100pct-stacked-area-2x.json\",\n \"100pct-stacked-area-3x.json\",\n \"100pct-stacked-bar-2x.json\",\n \"100pct-stacked-bar-3x.json\",\n \"100pct-stacked-column-2x.json\",\n \"100pct-stacked-column-3x.json\",\n \"area.json\",\n \"australia.json\",\n \"bar.json\",\n \"box-and-whisker.json\",\n \"box-and-whisker-2x.json\",\n \"box-and-whisker-3x.json\",\n \"bullet-bar.json\",\n \"bullet-bar-2x.json\",\n \"bullet-bar-3x.json\",\n \"bullet-column.json\",\n \"bullet-column-2x.json\",\n \"bullet-column-3x.json\",\n \"canada.json\",\n \"clustered-bar-2x.json\",\n \"clustered-column.json\",\n \"column.json\",\n \"dot-plot.json\",\n \"dot-plot-2x.json\",\n \"dot-plot-3x.json\",\n \"dot-plot-4x.json\",\n \"dot-plot-5x.json\",\n \"dot-plot-6x.json\",\n \"doughnut.json\",\n \"dumbbell.json\",\n \"filled-radar.json\",\n \"funnel.json\",\n \"histogram.json\",\n \"line.json\",\n \"line-2x.json\",\n \"line-3x.json\",\n \"line-with-high-low.json\",\n \"line-with-high-low-and-markers.json\",\n \"line-with-markers.json\",\n \"line-with-markers-2x.json\",\n \"line-with-markers-3x.json\",\n \"pareto.json\",\n \"pie.json\",\n \"radar.json\",\n \"radar-with-markers.json\",\n \"scatter.json\",\n \"sparkline.json\",\n \"sparkline-2x.json\",\n \"sparkline-3x.json\",\n \"sparkline-4x.json\",\n \"sparkline-5x.json\",\n \"sparkline-6x.json\",\n \"stacked-area-2x.json\",\n \"stacked-area-3x.json\",\n \"stacked-bar-2x.json\",\n \"stacked-bar-3x.json\",\n \"stacked-column-2x.json\",\n \"stacked-column-3x.json\",\n \"stacked-line-2x.json\",\n \"stacked-line-3x.json\",\n \"stacked-line-with-markers-2x.json\",\n \"stacked-line-with-markers-3x.json\",\n \"treemap.json\",\n \"treemap-2x.json\",\n \"treemap-3x.json\",\n \"united-kingdom.json\",\n \"united-states.json\",\n \"waterfall.json\",\n \"world.json\"\n], records: chartTypes, index: catalogIndexes.chartTypes },\n { kind: \"narratives\", schemaName: \"narrative\", dir: \"catalogs/narratives\", files: [\n \"problem-solution.json\",\n \"scqa.json\",\n \"strategic-narrative.json\",\n \"golden-circle.json\",\n \"conference-talk.json\",\n \"transformation-arc.json\",\n \"pitch-deck.json\",\n \"early-startup-pitch.json\",\n \"venture-pitch.json\",\n \"persuasive-sales.json\",\n \"company-intro.json\",\n \"marketing-strategy.json\",\n \"product-launch.json\",\n \"strategic-advisory.json\",\n \"challenge-resolution.json\",\n \"project-proposal.json\",\n \"failure-analysis.json\",\n \"classic-story.json\",\n \"business-narrative.json\",\n \"rags-to-riches.json\",\n \"underdog-victory.json\",\n \"survival-story.json\",\n \"educate.json\",\n \"persuade.json\",\n \"reveal.json\",\n \"justice.json\",\n \"innovation.json\",\n \"focus.json\",\n \"qbr.json\",\n \"business-review.json\",\n \"board-meeting.json\",\n \"weekly-progress.json\",\n \"status-update.json\",\n \"performance-review.json\",\n \"survey-analysis.json\",\n \"trend-analysis.json\",\n \"employee-review.json\",\n \"performance-improvement-plan.json\",\n \"capacity-planning.json\"\n], records: narratives, index: catalogIndexes.narratives },\n { kind: \"socialPlatforms\", schemaName: \"socialPlatform\", dir: \"catalogs/social-platforms\", files: [\n \"linkedin.json\",\n \"x.json\",\n \"github.json\",\n \"youtube.json\",\n \"instagram.json\",\n \"facebook.json\",\n \"tiktok.json\",\n \"threads.json\",\n \"mastodon.json\",\n \"bluesky.json\"\n], records: socialPlatforms, index: catalogIndexes.socialPlatforms },\n { kind: \"languages\", schemaName: \"language\", dir: \"catalogs/languages\", files: [\n \"afrikaans.json\",\n \"albanian.json\",\n \"amharic.json\",\n \"arabic.json\",\n \"armenian.json\",\n \"aymara.json\",\n \"azerbaijani.json\",\n \"bengali.json\",\n \"berber-latin.json\",\n \"bosnian-latin.json\",\n \"bulgarian.json\",\n \"catalan.json\",\n \"cebuano.json\",\n \"chinese-simplified.json\",\n \"chinese-traditional.json\",\n \"chittagonian.json\",\n \"croatian.json\",\n \"czech.json\",\n \"danish.json\",\n \"dutch.json\",\n \"english.json\",\n \"english-au.json\",\n \"english-ca.json\",\n \"english-gb.json\",\n \"english-in.json\",\n \"english-us.json\",\n \"estonian.json\",\n \"filipino.json\",\n \"finnish.json\",\n \"french.json\",\n \"fulfulde.json\",\n \"galician.json\",\n \"georgian.json\",\n \"german.json\",\n \"greek.json\",\n \"gujarati.json\",\n \"hausa.json\",\n \"hebrew.json\",\n \"hindi.json\",\n \"hungarian.json\",\n \"igbo.json\",\n \"indonesian.json\",\n \"italian.json\",\n \"japanese.json\",\n \"kannada.json\",\n \"kazakh.json\",\n \"khmer.json\",\n \"kinyarwanda.json\",\n \"korean.json\",\n \"kurmanji.json\",\n \"latvian.json\",\n \"lithuanian.json\",\n \"macedonian.json\",\n \"malagasy.json\",\n \"malay.json\",\n \"malayalam.json\",\n \"maori.json\",\n \"marathi.json\",\n \"mongolian.json\",\n \"nepali.json\",\n \"norwegian.json\",\n \"odia.json\",\n \"oromo.json\",\n \"pashto.json\",\n \"persian.json\",\n \"polish.json\",\n \"portuguese.json\",\n \"punjabi-gurmukhi.json\",\n \"punjabi-shahmukhi.json\",\n \"romanian.json\",\n \"russian.json\",\n \"serbian-cyrillic.json\",\n \"serbian-latin.json\",\n \"shona.json\",\n \"slovak.json\",\n \"slovenian.json\",\n \"somali.json\",\n \"spanish.json\",\n \"swahili.json\",\n \"swedish.json\",\n \"tagalog.json\",\n \"tajik.json\",\n \"tamil.json\",\n \"telugu.json\",\n \"thai.json\",\n \"turkish.json\",\n \"ukrainian.json\",\n \"urdu.json\",\n \"uzbek-latin.json\",\n \"vietnamese-quoc-ngu.json\",\n \"xhosa.json\",\n \"yoruba.json\",\n \"zulu.json\"\n], records: languages, index: catalogIndexes.languages },\n { kind: \"colorSchemes\", schemaName: \"colorScheme\", dir: \"catalogs/color-schemes\", files: [\n \"black-and-white.json\",\n \"bold-red.json\",\n \"boost.json\",\n \"burnt-orange.json\",\n \"cool-horizon.json\",\n \"corporate-blue.json\",\n \"deep-purple.json\",\n \"forest-green.json\",\n \"golden-yellow.json\",\n \"luxury.json\",\n \"pastel-red.json\",\n \"slate-gray.json\",\n \"steel-blue.json\",\n \"vibes.json\"\n], records: colorSchemes, index: catalogIndexes.colorSchemes },\n { kind: \"fontSchemes\", schemaName: \"fontScheme\", dir: \"catalogs/font-schemes\", files: [\n \"angsana-new.json\",\n \"aparajita.json\",\n \"aptos.json\",\n \"arabic-typesetting.json\",\n \"arial.json\",\n \"batang.json\",\n \"bookman.json\",\n \"calibri.json\",\n \"century-schoolbook.json\",\n \"consolas.json\",\n \"constantia.json\",\n \"courier-new.json\",\n \"daunpenh.json\",\n \"david.json\",\n \"dilleniaupc.json\",\n \"fangsong.json\",\n \"garamond.json\",\n \"gautami.json\",\n \"georgia.json\",\n \"gisha.json\",\n \"grandview.json\",\n \"gungsuh.json\",\n \"impact.json\",\n \"kalinga.json\",\n \"kartika.json\",\n \"khmer-ui.json\",\n \"latha.json\",\n \"lucida-sans.json\",\n \"malgun-gothic.json\",\n \"mangal.json\",\n \"meiryo.json\",\n \"microsoft-jhenghei.json\",\n \"microsoft-yahei.json\",\n \"mingliu.json\",\n \"miriam.json\",\n \"montserrat.json\",\n \"ms-mincho.json\",\n \"nirmala-ui.json\",\n \"noto-naksh-arabic.json\",\n \"noto-nastaliq-urdu.json\",\n \"noto-sans.json\",\n \"noto-sans-arabic.json\",\n \"noto-sans-armenian.json\",\n \"noto-sans-bengali.json\",\n \"noto-sans-devangari.json\",\n \"noto-sans-ethiopic.json\",\n \"noto-sans-georgian.json\",\n \"noto-sans-gujarati.json\",\n \"noto-sans-gurmukhi.json\",\n \"noto-sans-hebrew.json\",\n \"noto-sans-jp.json\",\n \"noto-sans-kannada.json\",\n \"noto-sans-khmer.json\",\n \"noto-sans-kr.json\",\n \"noto-sans-malayalam.json\",\n \"noto-sans-mongolian.json\",\n \"noto-sans-oriya.json\",\n \"noto-sans-sc.json\",\n \"noto-sans-tamil.json\",\n \"noto-sans-tc.json\",\n \"noto-sans-telugu.json\",\n \"noto-sans-thai.json\",\n \"nyala.json\",\n \"open-sans.json\",\n \"pmingliu.json\",\n \"poppins.json\",\n \"pt-serif.json\",\n \"raavi.json\",\n \"raleway.json\",\n \"roboto.json\",\n \"rockwell.json\",\n \"sakkal-majalla.json\",\n \"seaford.json\",\n \"segoe-ui.json\",\n \"segoe-ui-light.json\",\n \"shonar-bangla.json\",\n \"shruti.json\",\n \"simsun.json\",\n \"skeena.json\",\n \"sylfaen.json\",\n \"tahoma.json\",\n \"tenorite.json\",\n \"times-new-roman.json\",\n \"traditional-arabic.json\",\n \"trebuchet-ms.json\",\n \"tunga.json\",\n \"verdana.json\",\n \"vrinda.json\",\n \"yu-gothic.json\"\n], records: fontSchemes, index: catalogIndexes.fontSchemes },\n] as const;\n\nexport type CatalogKind = keyof typeof catalogs;\n","// Generated by scripts/generate.mjs from spec/catalogs/<catalog-kind>/*.json. Do not edit by hand.\n\n\nexport const catalogIds = {\n audiences: [\n \"executives\",\n \"board\",\n \"engineering-team\",\n \"investors\",\n \"customers\",\n \"sales-team\",\n \"marketing-team\",\n \"all-hands\",\n \"candidates\",\n \"regulators\"\n],\n purposes: [\n \"inform\",\n \"decide\",\n \"align\",\n \"persuade\",\n \"educate\",\n \"report\",\n \"pitch\",\n \"sell\",\n \"plan\"\n],\n tones: [\n \"formal\",\n \"casual\",\n \"inspirational\",\n \"technical\",\n \"persuasive\",\n \"authoritative\",\n \"conversational\"\n],\n themes: [\n \"bold\",\n \"classic\",\n \"dark\",\n \"minimal\"\n],\n layouts: [\n \"blank\",\n \"chart-1x\",\n \"chart-2x\",\n \"chart-3x\",\n \"code-1x\",\n \"image-1x\",\n \"image-2x\",\n \"image-3x\",\n \"image-bleed\",\n \"list-1x\",\n \"list-2x\",\n \"list-3x\",\n \"list-4x\",\n \"list-5x\",\n \"list-6x\",\n \"media-1x\",\n \"number-1x\",\n \"number-2x\",\n \"number-3x\",\n \"number-4x\",\n \"number-5x\",\n \"number-6x\",\n \"table-1x\",\n \"text-1x\",\n \"text-2x\",\n \"text-3x\",\n \"title\",\n \"title-subtitle\"\n],\n chartTypes: [\n \"100pct-bullet-bar\",\n \"100pct-bullet-bar-2x\",\n \"100pct-bullet-bar-3x\",\n \"100pct-bullet-column\",\n \"100pct-bullet-column-2x\",\n \"100pct-bullet-column-3x\",\n \"100pct-progress-bar\",\n \"100pct-stacked-area-2x\",\n \"100pct-stacked-area-3x\",\n \"100pct-stacked-bar-2x\",\n \"100pct-stacked-bar-3x\",\n \"100pct-stacked-column-2x\",\n \"100pct-stacked-column-3x\",\n \"area\",\n \"australia\",\n \"bar\",\n \"box-and-whisker\",\n \"box-and-whisker-2x\",\n \"box-and-whisker-3x\",\n \"bullet-bar\",\n \"bullet-bar-2x\",\n \"bullet-bar-3x\",\n \"bullet-column\",\n \"bullet-column-2x\",\n \"bullet-column-3x\",\n \"canada\",\n \"clustered-bar-2x\",\n \"clustered-column\",\n \"column\",\n \"dot-plot\",\n \"dot-plot-2x\",\n \"dot-plot-3x\",\n \"dot-plot-4x\",\n \"dot-plot-5x\",\n \"dot-plot-6x\",\n \"doughnut\",\n \"dumbbell\",\n \"filled-radar\",\n \"funnel\",\n \"histogram\",\n \"line\",\n \"line-2x\",\n \"line-3x\",\n \"line-with-high-low\",\n \"line-with-high-low-and-markers\",\n \"line-with-markers\",\n \"line-with-markers-2x\",\n \"line-with-markers-3x\",\n \"pareto\",\n \"pie\",\n \"radar\",\n \"radar-with-markers\",\n \"scatter\",\n \"sparkline\",\n \"sparkline-2x\",\n \"sparkline-3x\",\n \"sparkline-4x\",\n \"sparkline-5x\",\n \"sparkline-6x\",\n \"stacked-area-2x\",\n \"stacked-area-3x\",\n \"stacked-bar-2x\",\n \"stacked-bar-3x\",\n \"stacked-column-2x\",\n \"stacked-column-3x\",\n \"stacked-line-2x\",\n \"stacked-line-3x\",\n \"stacked-line-with-markers-2x\",\n \"stacked-line-with-markers-3x\",\n \"treemap\",\n \"treemap-2x\",\n \"treemap-3x\",\n \"united-kingdom\",\n \"united-states\",\n \"waterfall\",\n \"world\"\n],\n narratives: [\n \"problem-solution\",\n \"scqa\",\n \"strategic-narrative\",\n \"golden-circle\",\n \"conference-talk\",\n \"transformation-arc\",\n \"pitch-deck\",\n \"early-startup-pitch\",\n \"venture-pitch\",\n \"persuasive-sales\",\n \"company-intro\",\n \"marketing-strategy\",\n \"product-launch\",\n \"strategic-advisory\",\n \"challenge-resolution\",\n \"project-proposal\",\n \"failure-analysis\",\n \"classic-story\",\n \"business-narrative\",\n \"rags-to-riches\",\n \"underdog-victory\",\n \"survival-story\",\n \"educate\",\n \"persuade\",\n \"reveal\",\n \"justice\",\n \"innovation\",\n \"focus\",\n \"qbr\",\n \"business-review\",\n \"board-meeting\",\n \"weekly-progress\",\n \"status-update\",\n \"performance-review\",\n \"survey-analysis\",\n \"trend-analysis\",\n \"employee-review\",\n \"performance-improvement-plan\",\n \"capacity-planning\"\n],\n socialPlatforms: [\n \"linkedin\",\n \"x\",\n \"github\",\n \"youtube\",\n \"instagram\",\n \"facebook\",\n \"tiktok\",\n \"threads\",\n \"mastodon\",\n \"bluesky\"\n],\n languages: [\n \"afrikaans\",\n \"albanian\",\n \"amharic\",\n \"arabic\",\n \"armenian\",\n \"aymara\",\n \"azerbaijani\",\n \"bengali\",\n \"berber-latin\",\n \"bosnian-latin\",\n \"bulgarian\",\n \"catalan\",\n \"cebuano\",\n \"chinese-simplified\",\n \"chinese-traditional\",\n \"chittagonian\",\n \"croatian\",\n \"czech\",\n \"danish\",\n \"dutch\",\n \"english\",\n \"english-au\",\n \"english-ca\",\n \"english-gb\",\n \"english-in\",\n \"english-us\",\n \"estonian\",\n \"filipino\",\n \"finnish\",\n \"french\",\n \"fulfulde\",\n \"galician\",\n \"georgian\",\n \"german\",\n \"greek\",\n \"gujarati\",\n \"hausa\",\n \"hebrew\",\n \"hindi\",\n \"hungarian\",\n \"igbo\",\n \"indonesian\",\n \"italian\",\n \"japanese\",\n \"kannada\",\n \"kazakh\",\n \"khmer\",\n \"kinyarwanda\",\n \"korean\",\n \"kurmanji\",\n \"latvian\",\n \"lithuanian\",\n \"macedonian\",\n \"malagasy\",\n \"malay\",\n \"malayalam\",\n \"maori\",\n \"marathi\",\n \"mongolian\",\n \"nepali\",\n \"norwegian\",\n \"odia\",\n \"oromo\",\n \"pashto\",\n \"persian\",\n \"polish\",\n \"portuguese\",\n \"punjabi-gurmukhi\",\n \"punjabi-shahmukhi\",\n \"romanian\",\n \"russian\",\n \"serbian-cyrillic\",\n \"serbian-latin\",\n \"shona\",\n \"slovak\",\n \"slovenian\",\n \"somali\",\n \"spanish\",\n \"swahili\",\n \"swedish\",\n \"tagalog\",\n \"tajik\",\n \"tamil\",\n \"telugu\",\n \"thai\",\n \"turkish\",\n \"ukrainian\",\n \"urdu\",\n \"uzbek-latin\",\n \"vietnamese-quoc-ngu\",\n \"xhosa\",\n \"yoruba\",\n \"zulu\"\n],\n colorSchemes: [\n \"black-and-white\",\n \"bold-red\",\n \"boost\",\n \"burnt-orange\",\n \"cool-horizon\",\n \"corporate-blue\",\n \"deep-purple\",\n \"forest-green\",\n \"golden-yellow\",\n \"luxury\",\n \"pastel-red\",\n \"slate-gray\",\n \"steel-blue\",\n \"vibes\"\n],\n fontSchemes: [\n \"angsana-new\",\n \"aparajita\",\n \"aptos\",\n \"arabic-typesetting\",\n \"arial\",\n \"batang\",\n \"bookman\",\n \"calibri\",\n \"century-schoolbook\",\n \"consolas\",\n \"constantia\",\n \"courier-new\",\n \"daunpenh\",\n \"david\",\n \"dilleniaupc\",\n \"fangsong\",\n \"garamond\",\n \"gautami\",\n \"georgia\",\n \"gisha\",\n \"grandview\",\n \"gungsuh\",\n \"impact\",\n \"kalinga\",\n \"kartika\",\n \"khmer-ui\",\n \"latha\",\n \"lucida-sans\",\n \"malgun-gothic\",\n \"mangal\",\n \"meiryo\",\n \"microsoft-jhenghei\",\n \"microsoft-yahei\",\n \"mingliu\",\n \"miriam\",\n \"montserrat\",\n \"ms-mincho\",\n \"nirmala-ui\",\n \"noto-naksh-arabic\",\n \"noto-nastaliq-urdu\",\n \"noto-sans\",\n \"noto-sans-arabic\",\n \"noto-sans-armenian\",\n \"noto-sans-bengali\",\n \"noto-sans-devangari\",\n \"noto-sans-ethiopic\",\n \"noto-sans-georgian\",\n \"noto-sans-gujarati\",\n \"noto-sans-gurmukhi\",\n \"noto-sans-hebrew\",\n \"noto-sans-jp\",\n \"noto-sans-kannada\",\n \"noto-sans-khmer\",\n \"noto-sans-kr\",\n \"noto-sans-malayalam\",\n \"noto-sans-mongolian\",\n \"noto-sans-oriya\",\n \"noto-sans-sc\",\n \"noto-sans-tamil\",\n \"noto-sans-tc\",\n \"noto-sans-telugu\",\n \"noto-sans-thai\",\n \"nyala\",\n \"open-sans\",\n \"pmingliu\",\n \"poppins\",\n \"pt-serif\",\n \"raavi\",\n \"raleway\",\n \"roboto\",\n \"rockwell\",\n \"sakkal-majalla\",\n \"seaford\",\n \"segoe-ui\",\n \"segoe-ui-light\",\n \"shonar-bangla\",\n \"shruti\",\n \"simsun\",\n \"skeena\",\n \"sylfaen\",\n \"tahoma\",\n \"tenorite\",\n \"times-new-roman\",\n \"traditional-arabic\",\n \"trebuchet-ms\",\n \"tunga\",\n \"verdana\",\n \"vrinda\",\n \"yu-gothic\"\n],\n} as const;\n","// Generated by scripts/generate.mjs from spec/schemas/*.schema.json. Do not edit by hand.\n\n\nimport type { JsonSchema } from \"../json.js\";\n\nexport const presentation = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf/v1\",\n \"title\": \"Presentation\",\n \"description\": \"Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\\n\\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\\n\\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.\",\n \"type\": \"object\",\n \"required\": [\n \"slides\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf/v1\",\n \"description\": \"Optional OPF schema version. When omitted, validators and engines should assume the latest supported OPF schema.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Display name of the presentation for GUI/TUI lists, library/search indexing, OS-level metadata, and default export filenames. This is deck identity, not slide content. Use slides[].title and slides[].subtitle for text that should appear on presented slides.\",\n \"examples\": [\n \"Q4 2026 Business Review\",\n \"Series B Pitch — Acme\",\n \"The Future of Agentic Workflows\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).\",\n \"examples\": [\n \"Quarterly business review covering revenue, product, and hiring milestones for the executive team.\"\n ]\n },\n \"filename\": {\n \"type\": \"string\",\n \"description\": \"Optional base filename for exports (without extension). Engine strips a trailing .pptx, .pdf, .png, or .svg (case-insensitive) and appends the target format's extension. When omitted, the engine slugifies name when present. See /docs/opf for full validation rules.\",\n \"examples\": [\n \"q4-2026-business-review\",\n \"acme-series-b-pitch\"\n ]\n },\n \"organization\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/Organization\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Organization\"\n },\n \"minItems\": 1\n }\n ],\n \"description\": \"Organization associated with the presentation, usually the presenting company. Array form supports hosts, partners, clients, and sponsors. The primary organization (declared via Organization.role or, if no role is set, the first item) drives default branding such as cover-slide logo.\"\n },\n \"speaker\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/Speaker\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Speaker\"\n },\n \"minItems\": 1\n }\n ],\n \"description\": \"Person presenting the deck. Array form supports panels and multi-speaker decks. Used for cover slides, bio slides, footers, and panel attribution.\"\n },\n \"author\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n }\n ],\n \"description\": \"Optional credit for the person who authored or contributed to the deck, distinct from speaker. Array form supports multiple contributors. Round-trips to OOXML 'docProps/core.xml' as '<dc:creator>' (semicolon-joined when multiple) and seeds '<cp:lastModifiedBy>' on first write; subsequent edits in PowerPoint overwrite '<cp:lastModifiedBy>' with the editing user.\",\n \"examples\": [\n \"Bob Lee\",\n [\n \"Bob Lee\",\n \"Carla Diaz\"\n ]\n ]\n },\n \"audience\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Audience\"\n }\n ]\n },\n \"minItems\": 1\n }\n ],\n \"description\": \"Intended audiences for the presentation. Accepts either:\\n- A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\\n- An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\\n\\nResolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.\",\n \"examples\": [\n \"executives\",\n \"Biology Students and Wildlife Enthusiasts\",\n [\n \"executives\"\n ],\n [\n \"board\",\n \"c-suite\"\n ],\n [\n \"Series B investors\",\n \"https://acme.com/decks/audiences/acme-board.json\"\n ],\n [\n {\n \"id\": \"executives\",\n \"attentionBudgetMinutes\": 20\n },\n {\n \"name\": \"Regional Sales Leaders\",\n \"seniority\": \"director\",\n \"technicalFluency\": \"medium\",\n \"decisionPower\": \"advisory\"\n }\n ]\n ]\n },\n \"purpose\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Purpose\"\n }\n ],\n \"description\": \"Primary goal of the presentation. Accepts either:\\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\\n\\nResolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.\",\n \"examples\": [\n \"Raise a Series B round of $30M\",\n \"align\",\n \"educate\",\n \"https://acme.com/decks/purposes/fundraise.json\",\n \"pkg:@acme/decks/purposes/fundraise\",\n {\n \"id\": \"decide\",\n \"outcome\": \"Approve the Q4 hiring plan\"\n },\n {\n \"name\": \"Secure renewal\",\n \"outcome\": \"Customer signs a 12-month renewal\"\n }\n ]\n },\n \"language\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Language\"\n }\n ],\n \"description\": \"Language for the presentation content. Accepts either:\\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\\n\\nResolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.\",\n \"examples\": [\n \"en-US\",\n \"en-GB\",\n \"es-MX\",\n \"ja-JP\",\n \"fr\",\n \"english\",\n \"japanese\",\n \"https://acme.com/decks/languages/en-acme.json\",\n \"pkg:@acme/decks/languages/en-acme\",\n {\n \"id\": \"english\",\n \"bcp47\": \"en-US\",\n \"fontScheme\": \"aptos\",\n \"googleFontScheme\": \"roboto\"\n },\n {\n \"bcp47\": \"ar-SA\",\n \"name\": \"Arabic (Saudi Arabia)\",\n \"direction\": \"rtl\",\n \"script\": \"Arab\"\n }\n ]\n },\n \"tone\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Tone\"\n }\n ],\n \"description\": \"Desired tone for the presentation. Accepts either:\\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\\n\\nResolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.\",\n \"examples\": [\n \"formal\",\n \"casual\",\n \"inspirational\",\n \"technical\",\n \"persuasive\",\n \"https://acme.com/decks/tones/acme-voice.json\",\n \"pkg:@acme/decks/tones/acme-voice\",\n {\n \"id\": \"formal\",\n \"voiceCues\": [\n \"Use precise, concise language.\"\n ]\n },\n {\n \"name\": \"Founder direct\",\n \"voiceCues\": [\n \"Use first person sparingly.\",\n \"Make the ask concrete.\"\n ]\n }\n ]\n },\n \"takeaway\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n }\n ],\n \"description\": \"Audience-facing takeaway the presentation should leave behind. Array form supports multiple takeaways. Deck-level intent used by AI to seed and pressure-test slide content.\",\n \"examples\": [\n \"Agent latency is the new bottleneck for AI products.\",\n [\n \"Agent latency is the new bottleneck for AI products.\",\n \"Our runtime is 8x faster than the next-best option.\",\n \"Customers see ROI within the first quarter.\"\n ]\n ]\n },\n \"duration\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Target presentation duration, as an integer number of minutes. Used by AI to set pace and depth, and to compare against the resolved narrative's durationRange.\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels used for categorization, search, and filtering. Lowercase kebab-case is recommended for consistency across a deck library.\",\n \"examples\": [\n [\n \"qbr\",\n \"internal\",\n \"fy26-q4\"\n ],\n [\n \"pitch\",\n \"fundraising\",\n \"confidential\"\n ]\n ]\n },\n \"design\": {\n \"$ref\": \"#/$defs/Design\",\n \"description\": \"Optional design system covering theme, color scheme, font scheme, dimensions, background, logo, watermark, header, and footer applied to the deck. When omitted, engines use their default design configuration.\"\n },\n \"narrative\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Narrative\"\n }\n ],\n \"description\": \"Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record.\\n\\nAccepts two forms:\\n- String shorthand for the common case: 'narrative = \\\"classic-story\\\"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.\\n- Object form for inline overrides or fully custom narratives: 'narrative = { id: \\\"classic-story\\\", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\\n\\nResolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.\\n\\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.\",\n \"examples\": [\n \"classic-story\",\n \"problem-solution\",\n \"scqa\",\n \"pitch-deck\",\n {\n \"id\": \"custom-pitch\",\n \"name\": \"Custom Pitch\",\n \"beats\": [\n {\n \"id\": \"hook\",\n \"name\": \"Hook\"\n },\n {\n \"id\": \"ask\",\n \"name\": \"Ask\"\n }\n ]\n },\n \"https://acme.com/decks/narratives/founder-pitch.json\",\n \"pkg:@acme/decks/narratives/founder-pitch\"\n ]\n },\n \"slides\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Slide\"\n },\n \"minItems\": 1,\n \"description\": \"Ordered array of slides that make up the presentation.\"\n },\n \"assets\": {\n \"$ref\": \"#/$defs/Assets\",\n \"description\": \"Optional reusable asset registry for images, data files, videos, documents, fonts, and other resources referenced elsewhere in the deck via 'asset:<id>' strings.\"\n },\n \"catalogs\": {\n \"$ref\": \"#/$defs/Catalogs\",\n \"description\": \"Optional per-kind catalog overrides. Each kind may declare a non-default 'source' and/or inline 'records' that override or supplement the default catalog at https://www.pptx.gallery/<kind>. References elsewhere in the document (e.g. design.theme, narrative) resolve through this section before falling back to the default catalog.\"\n },\n \"extensions\": {\n \"type\": \"object\",\n \"description\": \"Custom data passthrough for agent workflows; ignored by the engine but preserved across read/write round-trips.\"\n }\n },\n \"$defs\": {\n \"Assets\": {\n \"type\": \"object\",\n \"description\": \"Reusable asset registry for resources used by slides, charts, metadata, and design. Keys are stable asset ids referenced elsewhere as 'asset:<id>'. Each asset can be a source string or an object with src plus optional metadata.\",\n \"propertyNames\": {\n \"pattern\": \"^[a-zA-Z0-9][a-zA-Z0-9._-]*$\"\n },\n \"additionalProperties\": {\n \"$ref\": \"#/$defs/Asset\"\n },\n \"examples\": [\n {\n \"acme-logo\": \"./assets/acme-logo.svg\",\n \"watermark\": {\n \"src\": \"./assets/watermark.png\",\n \"alt\": \"Acme watermark\"\n },\n \"revenue\": {\n \"src\": \"./data/revenue.csv\",\n \"format\": \"csv\"\n }\n }\n ]\n },\n \"Asset\": {\n \"description\": \"Reusable or inline resource. A string is shorthand for { \\\"src\\\": value }. Source strings accept 'asset:<id>' references, HTTPS URLs, data URIs, relative paths resolved against the OPF file location, or local filesystem paths. Use object form when metadata such as alt text, title, mediaType, or format matters.\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"examples\": [\n \"asset:acme-logo\",\n \"https://cdn.acme.com/image.png\",\n \"./assets/image.png\",\n \"data:image/png;base64,...\"\n ]\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"src\"\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"description\": \"Resource source. Accepts an 'asset:<id>' reference, HTTPS URL, data URI, relative path resolved against the OPF file location, or local filesystem path.\",\n \"examples\": [\n \"asset:acme-logo\",\n \"./assets/logo.svg\",\n \"https://cdn.acme.com/logo.png\",\n \"data:image/svg+xml;base64,...\",\n \"/Users/alice/decks/data/revenue.csv\"\n ]\n },\n \"alt\": {\n \"type\": \"string\",\n \"description\": \"Alternative text for images and other visual assets.\"\n },\n \"title\": {\n \"type\": \"string\",\n \"description\": \"Human-readable asset title for editors and asset pickers.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Optional notes about the asset's contents, provenance, or intended use.\"\n },\n \"mediaType\": {\n \"type\": \"string\",\n \"description\": \"Optional MIME media type when it cannot be inferred from src.\",\n \"examples\": [\n \"image/svg+xml\",\n \"image/png\",\n \"text/csv\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ]\n },\n \"format\": {\n \"type\": \"string\",\n \"description\": \"Optional authoring/parsing format hint. Useful when format is more convenient than a full MIME media type.\",\n \"examples\": [\n \"csv\",\n \"tsv\",\n \"json\",\n \"xlsx\",\n \"svg\",\n \"png\",\n \"jpg\",\n \"webp\"\n ]\n }\n }\n }\n ]\n },\n \"Audience\": {\n \"type\": \"object\",\n \"description\": \"Inline audience metadata for the presentation. Use 'id' to reference an audiences catalog record and override selected fields, or use 'name' for a custom inline audience.\",\n \"anyOf\": [\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"name\"\n ]\n }\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Optional audiences catalog id to resolve before applying inline overrides.\",\n \"examples\": [\n \"executives\",\n \"board\",\n \"engineering-team\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable audience name shown in pickers.\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the audience.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the audience and how to address them.\"\n },\n \"seniority\": {\n \"type\": \"string\",\n \"enum\": [\n \"ic\",\n \"manager\",\n \"director\",\n \"vp\",\n \"c-suite\",\n \"mixed\"\n ],\n \"description\": \"Typical seniority level of the audience.\"\n },\n \"technicalFluency\": {\n \"type\": \"string\",\n \"enum\": [\n \"low\",\n \"medium\",\n \"high\",\n \"mixed\"\n ],\n \"description\": \"Typical technical fluency of the audience.\"\n },\n \"decisionPower\": {\n \"type\": \"string\",\n \"enum\": [\n \"informational\",\n \"advisory\",\n \"decision-maker\"\n ],\n \"description\": \"Whether the audience is expected to be informed, advise, or decide.\"\n },\n \"attentionBudgetMinutes\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0,\n \"description\": \"Realistic upper bound on focused attention for a single presentation, in minutes.\"\n },\n \"recommendedNarratives\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: narrative-catalog ids that work well for this audience.\"\n },\n \"recommendedTones\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: tone-catalog ids that work well for this audience.\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\"\n }\n }\n },\n \"Purpose\": {\n \"type\": \"object\",\n \"description\": \"Inline purpose metadata for the presentation. Use 'id' to reference a purposes catalog record and override selected fields, or use 'name' for a custom inline purpose.\",\n \"anyOf\": [\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"name\"\n ]\n }\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Optional purposes catalog id to resolve before applying inline overrides.\",\n \"examples\": [\n \"inform\",\n \"decide\",\n \"align\",\n \"persuade\",\n \"educate\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable purpose name shown in pickers.\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the purpose.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing when to use this purpose and how it should shape a deck.\"\n },\n \"outcome\": {\n \"type\": \"string\",\n \"description\": \"Desired audience outcome after the presentation.\"\n },\n \"successCriteria\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Observable signals that the deck accomplished this purpose.\"\n },\n \"recommendedNarratives\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: narrative-catalog ids that work well for this purpose.\"\n },\n \"recommendedTones\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: tone-catalog ids that work well for this purpose.\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\"\n }\n }\n },\n \"Language\": {\n \"type\": \"object\",\n \"description\": \"Inline language metadata for the presentation. Use 'id' to reference a languages catalog record and override selected fields, or use 'bcp47' for a custom language tag without a catalog record.\",\n \"anyOf\": [\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"bcp47\"\n ]\n }\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Optional languages catalog id to resolve before applying inline overrides.\",\n \"examples\": [\n \"english\",\n \"japanese\",\n \"chinese-simplified\",\n \"english-uk\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable language name.\",\n \"examples\": [\n \"English\",\n \"English (United Kingdom)\",\n \"Arabic (Saudi Arabia)\"\n ]\n },\n \"bcp47\": {\n \"type\": \"string\",\n \"description\": \"BCP-47 language tag used for locale-aware rendering, proofing, and accessibility metadata. Use 'en-GB' for UK English; 'en-UK' is not a valid BCP-47 region form.\",\n \"examples\": [\n \"en\",\n \"en-US\",\n \"en-GB\",\n \"ar-SA\",\n \"zh-Hans\"\n ]\n },\n \"code\": {\n \"type\": \"string\",\n \"description\": \"ISO 639-3 or 639-2 language code carried for engines that prefer ISO codes.\",\n \"examples\": [\n \"ENG\",\n \"ARA\",\n \"JPN\",\n \"ZHO\"\n ]\n },\n \"direction\": {\n \"type\": \"string\",\n \"enum\": [\n \"ltr\",\n \"rtl\"\n ],\n \"description\": \"Base text direction for the language.\"\n },\n \"script\": {\n \"type\": \"string\",\n \"description\": \"ISO 15924 script code when the writing system should be explicit.\",\n \"examples\": [\n \"Latn\",\n \"Arab\",\n \"Cyrl\",\n \"Hans\",\n \"Hant\"\n ]\n },\n \"fontScheme\": {\n \"type\": \"string\",\n \"description\": \"Default font-scheme id for this language when targeting PowerPoint output.\"\n },\n \"googleFontScheme\": {\n \"type\": \"string\",\n \"description\": \"Default font-scheme id for this language when targeting Google Slides output.\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence note about coverage or font defaults.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the language record and any font-pairing rationale.\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\"\n }\n }\n },\n \"Tone\": {\n \"type\": \"object\",\n \"description\": \"Inline tone metadata for the presentation. Use 'id' to reference a tones catalog record and override selected fields, or use 'name' for a custom inline tone.\",\n \"anyOf\": [\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"name\"\n ]\n }\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Optional tones catalog id to resolve before applying inline overrides.\",\n \"examples\": [\n \"formal\",\n \"casual\",\n \"technical\",\n \"persuasive\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable tone name shown in pickers.\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the tone.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the tone and the kinds of decks it suits.\"\n },\n \"voiceCues\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Short directives that shape AI generation toward this tone.\"\n },\n \"avoid\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Anti-patterns that AI generation should not produce when this tone is active.\"\n },\n \"samplePhrases\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Short example phrases that exemplify this tone.\"\n },\n \"recommendedNarratives\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: narrative-catalog ids this tone pairs well with.\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\"\n }\n }\n },\n \"Organization\": {\n \"type\": \"object\",\n \"description\": \"An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.\",\n \"required\": [\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-zA-Z0-9_-]+$\",\n \"description\": \"Stable identifier for the organization, used to reference it from Speaker.organizationId. Must be unique within the deck.\",\n \"examples\": [\n \"acme\",\n \"acme-corp\",\n \"devconf-2026\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Display name shown on slides.\",\n \"examples\": [\n \"Acme Corp\",\n \"DevConf 2026\",\n \"Beta Industries\"\n ]\n },\n \"legalName\": {\n \"type\": \"string\",\n \"description\": \"Optional legal entity name when it differs from the display name.\",\n \"examples\": [\n \"Acme Corporation, Inc.\",\n \"Beta Industries, LLC\"\n ]\n },\n \"logo\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Source for the organization's logo image. Accepts an HTTPS URL, data URI, relative path (resolved against the OPF file location), local path, or 'asset:<id>' reference. Common formats are SVG (preferred for vector logos), PNG (with transparency), or JPG. The primary organization's logo is used by default for cover-slide and footer branding; design.logo overrides the source.\",\n \"examples\": [\n \"https://cdn.acme.com/logo.svg\",\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9V3iWggAAAAASUVORK5CYII=\",\n \"./assets/logo.jpg\",\n \"asset:acme-logo\"\n ]\n },\n \"domain\": {\n \"type\": \"string\",\n \"description\": \"Bare internet domain for the organization. Used for footers, contact slides, and engine-driven asset lookups (e.g., favicon-based brand defaults).\",\n \"examples\": [\n \"acme.com\",\n \"beta-industries.io\",\n \"devconf.org\"\n ]\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"General contact email for the organization. Used on contact slides and footer attribution.\",\n \"examples\": [\n \"hello@acme.com\",\n \"sales@acme.com\",\n \"info@beta-industries.io\"\n ]\n },\n \"phone\": {\n \"type\": \"string\",\n \"description\": \"Main contact phone number for the organization. E.164 format is recommended.\",\n \"examples\": [\n \"+14155551234\",\n \"+442071838750\"\n ]\n },\n \"tagline\": {\n \"type\": \"string\",\n \"description\": \"Short tagline rendered alongside the organization name on cover slides.\",\n \"examples\": [\n \"Build the future of work\",\n \"Infrastructure for AI agents\",\n \"Where teams ship faster\"\n ]\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"primary\",\n \"partner\",\n \"client\",\n \"sponsor\",\n \"host\"\n ],\n \"description\": \"Role of the organization relative to the presentation. When omitted, the single organization or first organization in array form is treated as primary.\"\n },\n \"socials\": {\n \"$ref\": \"#/$defs/Socials\",\n \"description\": \"Optional social media handles or URLs for the organization.\"\n }\n }\n },\n \"Speaker\": {\n \"type\": \"object\",\n \"description\": \"A person presenting the deck. Used for cover slides, bio/intro slides, footer attribution, and panel formats with multiple presenters.\",\n \"required\": [\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-zA-Z0-9_-]+$\",\n \"description\": \"Stable identifier for the speaker, used for cross-references within the deck. Must be unique within the deck.\",\n \"examples\": [\n \"alice\",\n \"alice-chen\",\n \"speaker-1\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Display name.\",\n \"examples\": [\n \"Alice Chen\",\n \"Bob Lee\",\n \"Dr. Carla Diaz\"\n ]\n },\n \"title\": {\n \"type\": \"string\",\n \"description\": \"Role or title. Often paired with the speaker's organization on cover slides.\",\n \"examples\": [\n \"VP of Engineering\",\n \"Founder & CEO\",\n \"Chief Product Officer\",\n \"Senior Staff Engineer\"\n ]\n },\n \"photo\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Source for the speaker's headshot image. Accepts an HTTPS URL, data URI, relative path (resolved against the OPF file location), local path, or 'asset:<id>' reference. Common formats are JPG or PNG; SVG is not appropriate for photographic content. Used on cover and bio slides.\",\n \"examples\": [\n \"https://cdn.acme.com/headshots/alice.jpg\",\n \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAr/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AJ//2Q==\",\n \"./assets/photos/alice.png\",\n \"asset:photo-alice\"\n ]\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"Contact email, used on contact slides or footer attribution when appropriate.\",\n \"examples\": [\n \"alice@acme.com\",\n \"alice.chen@acme.com\"\n ]\n },\n \"phone\": {\n \"type\": \"string\",\n \"description\": \"Contact phone number for the speaker. E.164 format is recommended.\",\n \"examples\": [\n \"+14155551234\",\n \"+442071838750\"\n ]\n },\n \"bio\": {\n \"type\": \"string\",\n \"description\": \"Short biographical paragraph for bio or 'about the speaker' slides.\",\n \"examples\": [\n \"Alice leads engineering at Acme, where she's spent the last six years scaling distributed systems from prototype to billions of requests per day. Previously, she was a staff engineer at Google.\"\n ]\n },\n \"organizationId\": {\n \"type\": \"string\",\n \"description\": \"Reference to an Organization.id in organization. Lets a speaker be attributed to their org in panel or multi-org decks without repeating organization details.\",\n \"examples\": [\n \"acme\",\n \"beta\",\n \"devconf-2026\"\n ]\n },\n \"socials\": {\n \"$ref\": \"#/$defs/Socials\",\n \"description\": \"Optional social media handles or URLs for the speaker.\"\n }\n }\n },\n \"Socials\": {\n \"type\": \"object\",\n \"description\": \"Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\\n\\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"Handle or URL for the platform identified by the property key.\"\n },\n \"examples\": [\n {\n \"linkedin\": \"https://linkedin.com/in/alice-chen\",\n \"x\": \"@alicechen\",\n \"github\": \"alicechen\"\n },\n {\n \"linkedin\": \"https://linkedin.com/company/acme\",\n \"bluesky\": \"acme.bsky.social\",\n \"mastodon\": \"https://hachyderm.io/@acme\"\n }\n ],\n \"propertyNames\": {\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Platform id (lowercase kebab-case). Common ids include 'linkedin', 'x', 'github', 'youtube', 'instagram', 'facebook', 'tiktok', 'threads', 'mastodon', 'bluesky'.\"\n }\n },\n \"Narrative\": {\n \"type\": \"object\",\n \"description\": \"Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\\n\\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\\n\\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\\n\\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug identifying this narrative. When it matches a record in the resolved 'narratives' catalog, the catalog record's beats and metadata seed this narrative; inline fields override per-key. When it doesn't match, this is a fully custom inline narrative. Lowercase kebab-case.\",\n \"examples\": [\n \"classic-story\",\n \"problem-solution\",\n \"scqa\",\n \"pitch-deck\",\n \"qbr\",\n \"weekly-progress\",\n \"custom-pitch\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable narrative name.\",\n \"examples\": [\n \"Classic Story\",\n \"Problem → Solution\",\n \"SCQA\",\n \"Founder Pitch\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence description of when and why to use this narrative.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the narrative arc and ideal use cases. Used by AI-driven generation to seed deck-level direction.\",\n \"examples\": [\n \"Open with the cost of slow agentic workflows, contrast with what becomes possible at sub-second latency, then walk through our architecture and benchmark results, ending with a concrete adoption ask.\"\n ]\n },\n \"audienceFit\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Audiences this narrative works well for. Free-form strings or 'audiences' catalog ids.\",\n \"examples\": [\n [\n \"executives\",\n \"investors\",\n \"customers\"\n ]\n ]\n },\n \"durationRange\": {\n \"type\": \"object\",\n \"description\": \"Typical talk-length window this narrative suits. Compared by validators against duration.\",\n \"properties\": {\n \"minMinutes\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maxMinutes\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"business\",\n \"pitch\",\n \"internal\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the narrative, used by picker UIs and inline rendering. All sub-fields are optional.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG).\"\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview for dense grid views.\"\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\"\n }\n }\n },\n \"beats\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/NarrativeBeat\"\n },\n \"description\": \"Ordered list of beats that make up the narrative arc. When 'id' matches a catalog record, beats here override or extend matching catalog beats by their own 'id'. Beat IDs must be unique within the narrative.\"\n }\n }\n },\n \"NarrativeBeat\": {\n \"type\": \"object\",\n \"description\": \"A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\\n\\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.\",\n \"required\": [\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by Slide.beat to reference this beat. Lowercase kebab-case.\",\n \"examples\": [\n \"hook\",\n \"problem\",\n \"evidence\",\n \"ask\",\n \"next-steps\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable beat name.\",\n \"examples\": [\n \"The Hook\",\n \"The Problem\",\n \"Why Now\",\n \"The Ask\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Curator-written prose that explains what this beat should accomplish.\",\n \"examples\": [\n \"Quantify the pain customers feel today, with one striking stat the audience can repeat afterward.\"\n ]\n },\n \"instructions\": {\n \"type\": \"string\",\n \"description\": \"Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.\",\n \"examples\": [\n \"Capture audience attention\",\n \"Introduce problem\",\n \"Detail implementation\",\n \"Inspire & conclude\"\n ]\n },\n \"slideCount\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Optional explicit slide count for this beat. Defaults to 1 when omitted; values >1 are reserved for beats that intentionally span multiple slides. Prefer decomposing a heavy beat into multiple beats over setting a high slideCount. The validator emits a warning if the deck's actual count differs significantly.\"\n },\n \"slideType\": {\n \"type\": \"string\",\n \"enum\": [\n \"text\",\n \"list\",\n \"image\",\n \"chart\",\n \"table\",\n \"video\",\n \"code\",\n \"metric\",\n \"quote\",\n \"timeline\"\n ],\n \"description\": \"Default content kind for the beat's slide. Mirrors ContentPayload.type and helps engines choose a sensible layout when only the beat is specified.\"\n },\n \"layoutHint\": {\n \"type\": \"string\",\n \"description\": \"Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.\",\n \"examples\": [\n \"section-divider\",\n \"title-slide\",\n \"title-left\",\n \"two-column\",\n \"text-left\"\n ]\n },\n \"thoughtCues\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional speaker or thinking cues attached to the beat. Surfaced in presenter notes.\",\n \"examples\": [\n [\n \"What pain is the audience feeling right now?\",\n \"Why hasn't anyone solved this yet?\"\n ]\n ]\n }\n }\n },\n \"Design\": {\n \"type\": \"object\",\n \"description\": \"Visual design system applied to the presentation; individual slides may override fields via Slide.design.\",\n \"properties\": {\n \"theme\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Theme\"\n }\n ],\n \"description\": \"Theme for the deck. Accepts two forms:\\n- String shorthand: 'design.theme = \\\"minimal\\\"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'themes' catalog record.\\n- Object form: a Theme with an optional 'id' base reference plus theme-level overrides.\\n\\nInline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over the resolved theme.\\n\\nResolution order: inline catalogs.themes.records[] -> catalogs.themes.source -> default catalog at https://www.pptx.gallery/themes.\",\n \"examples\": [\n \"minimal\",\n \"classic\",\n \"dark\",\n \"bold\",\n \"corporate-minimal\",\n \"ocean-depth\",\n \"https://acme.com/decks/themes/acme-brand.json\",\n \"pkg:@acme/decks/themes/acme-brand\",\n {\n \"id\": \"minimal\",\n \"background\": \"dark1\",\n \"dimensions\": \"widescreen\"\n }\n ]\n },\n \"colorScheme\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/ColorScheme\"\n }\n ],\n \"description\": \"Color scheme for the presentation. Accepts two forms:\\n- String shorthand: 'design.colorScheme = \\\"cool-horizon\\\"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'colorSchemes' catalog record.\\n- Object form: a ColorScheme with an optional 'id' base reference plus slot/role overrides.\\n\\nResolution order: inline catalogs.colorSchemes.records[] -> catalogs.colorSchemes.source -> default catalog at https://www.pptx.gallery/color-schemes.\",\n \"examples\": [\n \"cool-horizon\",\n \"boost\",\n \"burnt-orange\",\n {\n \"id\": \"cool-horizon\",\n \"accent1\": \"#FF6F61\"\n }\n ]\n },\n \"fontScheme\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/FontScheme\"\n }\n ],\n \"description\": \"Font scheme for heading, body, accent, and code text. Accepts two forms:\\n- String shorthand: 'design.fontScheme = \\\"aptos\\\"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'fontSchemes' catalog record.\\n- Object form: a FontScheme with an optional 'id' base reference plus pair/role overrides.\\n\\nResolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.source -> default catalog at https://www.pptx.gallery/font-schemes.\",\n \"examples\": [\n \"aptos\",\n \"tenorite\",\n {\n \"id\": \"aptos\",\n \"heading\": {\n \"family\": \"Inter\",\n \"weight\": 700\n }\n }\n ]\n },\n \"dimensions\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/DimensionPreset\"\n },\n {\n \"$ref\": \"#/$defs/Dimensions\"\n }\n ],\n \"description\": \"Slide dimensions and aspect ratio. String shorthand such as 'widescreen' is equivalent to { preset: 'widescreen' }.\",\n \"examples\": [\n \"widescreen\",\n \"16:9\",\n {\n \"preset\": \"16:10\"\n }\n ]\n },\n \"background\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/BackgroundShortcut\"\n },\n {\n \"$ref\": \"#/$defs/Background\"\n }\n ],\n \"description\": \"Default slide background applied across the deck unless overridden on a slide. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2') or hex colors; object forms support theme, solid, gradient, image, or pattern fills.\",\n \"examples\": [\n \"dark1\",\n \"#ffff00\",\n {\n \"type\": \"theme\",\n \"slot\": \"light1\"\n }\n ]\n },\n \"logo\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/Asset\"\n },\n {\n \"$ref\": \"#/$defs/LogoSet\"\n }\n ],\n \"description\": \"Deck logo assets used by layouts, covers, section dividers, headers, and footers. A string is the default logo source; object form provides light/dark, stacked, icon, and wordmark variants. When omitted, the renderer falls back to the primary organization logo.\",\n \"examples\": [\n \"asset:acme-logo\",\n {\n \"default\": \"asset:acme-logo\",\n \"light\": \"asset:acme-logo-white\",\n \"icon\": \"asset:acme-icon\"\n }\n ]\n },\n \"watermark\": {\n \"oneOf\": [\n {\n \"type\": \"boolean\",\n \"const\": false\n },\n {\n \"$ref\": \"#/$defs/Asset\"\n },\n {\n \"$ref\": \"#/$defs/Watermark\"\n }\n ],\n \"description\": \"Optional decorative watermark applied across slides. Use false to suppress an inherited watermark in slide-level design; a string is equivalent to { src: value }.\",\n \"examples\": [\n false,\n \"asset:watermark\",\n {\n \"src\": \"asset:watermark\",\n \"opacity\": 0.08\n }\n ]\n },\n \"header\": {\n \"oneOf\": [\n {\n \"type\": \"boolean\",\n \"const\": false\n },\n {\n \"$ref\": \"#/$defs/HeaderFooter\"\n }\n ],\n \"description\": \"Repeated header furniture rendered outside the main slide content. Use false to suppress an inherited header.\",\n \"examples\": [\n false,\n {\n \"left\": {\n \"section\": true\n },\n \"right\": {\n \"image\": \"asset:acme-logo\"\n }\n }\n ]\n },\n \"footer\": {\n \"oneOf\": [\n {\n \"type\": \"boolean\",\n \"const\": false\n },\n {\n \"$ref\": \"#/$defs/HeaderFooter\"\n }\n ],\n \"description\": \"Repeated footer furniture rendered outside the main slide content. Use false to suppress an inherited footer.\",\n \"examples\": [\n false,\n {\n \"left\": {\n \"image\": \"asset:acme-logo\"\n },\n \"center\": {\n \"text\": \"Confidential\"\n },\n \"right\": {\n \"slideNumber\": true\n }\n }\n ]\n },\n \"titleAlignment\": {\n \"type\": \"string\",\n \"enum\": [\n \"left\",\n \"center\",\n \"right\"\n ],\n \"description\": \"Default horizontal alignment for title placeholders in resolved layouts.\"\n },\n \"contentAlignment\": {\n \"type\": \"string\",\n \"enum\": [\n \"left\",\n \"center\",\n \"right\"\n ],\n \"description\": \"Default horizontal alignment for body/content regions in resolved layouts.\"\n },\n \"contentBox\": {\n \"type\": \"boolean\",\n \"description\": \"Whether body/content regions are rendered inside a visible card or surface.\"\n },\n \"slideImage\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/Asset\"\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"position\"\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"description\": \"Source for the slide-level image. When omitted in a design override, the object only configures how a slide-level image should be placed when one is supplied by a content payload, asset, or renderer convention.\"\n },\n \"position\": {\n \"type\": \"string\",\n \"enum\": [\n \"background\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\"\n ],\n \"description\": \"Where the slide-level image sits relative to the content. 'background' is a full-bleed image behind the content.\"\n }\n }\n }\n ],\n \"description\": \"Optional slide-level image treatment used by layouts that support a decorative or editorial image separate from content images.\"\n },\n \"contentDirection\": {\n \"type\": \"string\",\n \"enum\": [\n \"horizontal\",\n \"vertical\"\n ],\n \"description\": \"Axis along which parallel body/content regions are arranged.\"\n },\n \"chartPrimary\": {\n \"type\": \"string\",\n \"enum\": [\n \"none\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\"\n ],\n \"description\": \"For chart layouts, where the primary chart sits relative to supporting content. 'none' means chart regions have equal weight.\"\n },\n \"imageFill\": {\n \"type\": \"string\",\n \"enum\": [\n \"crop\",\n \"fit\"\n ],\n \"description\": \"How picture placeholders fill their allocated region.\"\n },\n \"listBullet\": {\n \"type\": \"string\",\n \"enum\": [\n \"character\",\n \"image\"\n ],\n \"description\": \"Default bullet rendering style for list layouts.\"\n }\n }\n },\n \"Theme\": {\n \"type\": \"object\",\n \"description\": \"Theme bundle used by the design system. In design.theme, 'id' resolves a themes catalog record as the base; any sibling fields override the resolved theme. The string shorthand on design.theme is equivalent to setting only 'id'.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Theme reference. Resolves to the 'id' of a 'themes' catalog record. Accepts a bare id (lowercase kebab-case, e.g. 'minimal'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Field overrides on the surrounding Theme object take precedence over the resolved theme.\\n\\nResolution order: inline catalogs.themes.records[] -> catalogs.themes.source -> default catalog at https://www.pptx.gallery/themes.\",\n \"examples\": [\n \"minimal\",\n \"classic\",\n \"dark\",\n \"bold\",\n \"https://acme.com/decks/themes/acme-brand.json\",\n \"pkg:@acme/decks/themes/acme-brand\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable theme name shown in pickers.\",\n \"examples\": [\n \"Minimal\",\n \"Classic\",\n \"Dark\",\n \"Bold\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the theme - when to reach for it.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing what the theme looks and feels like and the kinds of decks it suits.\"\n },\n \"colorScheme\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/ColorScheme\"\n }\n ],\n \"description\": \"Default color scheme for this theme. A string resolves against catalogs.colorSchemes; an object may provide an 'id' base reference plus overrides.\",\n \"examples\": [\n \"cool-horizon\",\n {\n \"id\": \"cool-horizon\",\n \"accent1\": \"#FF6F61\"\n }\n ]\n },\n \"fontScheme\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/FontScheme\"\n }\n ],\n \"description\": \"Default font scheme for this theme. A string resolves against catalogs.fontSchemes; an object may provide an 'id' base reference plus overrides.\",\n \"examples\": [\n \"aptos\",\n {\n \"id\": \"aptos\",\n \"heading\": {\n \"family\": \"Inter\",\n \"weight\": 700\n }\n }\n ]\n },\n \"background\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/BackgroundShortcut\"\n },\n {\n \"$ref\": \"#/$defs/Background\"\n }\n ],\n \"description\": \"Default background for this theme. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2') or hex colors.\",\n \"examples\": [\n \"dark1\",\n \"#ffff00\",\n {\n \"type\": \"theme\",\n \"slot\": \"dark2\"\n }\n ]\n },\n \"dimensions\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/DimensionPreset\"\n },\n {\n \"$ref\": \"#/$defs/Dimensions\"\n }\n ],\n \"description\": \"Default slide size for this theme. A string preset is equivalent to { preset: value }.\",\n \"examples\": [\n \"widescreen\",\n {\n \"preset\": \"16:9\"\n }\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\"\n }\n }\n },\n \"ColorScheme\": {\n \"type\": \"object\",\n \"description\": \"Color palette used by the design system. The slot fields (accent1-accent6, dark1, dark2, light1, light2, hyperlink, followedHyperlink) mirror color-scheme.schema.json (https://openpresentation.org/schema/opf-color-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\\n\\nTwo parallel models are supported and may be mixed:\\n- OOXML slots - the 12-slot PowerPoint theme model that round-trips directly to OOXML. Use these for full control over the palette as PowerPoint sees it.\\n- Abstract roles (primary, secondary, accent, background, surface, text, textSecondary, custom) - OPF-specific semantic aliases the engine maps onto the OOXML slots. Convenient for inline overrides without thinking in slot numbers; not part of the catalog record schema.\\n\\nIn design.colorScheme, 'id' resolves a colorSchemes catalog record as the base; slot and role overrides on the same object take precedence over the resolved scheme. The string shorthand on design.colorScheme is equivalent to setting only 'id'.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Color scheme reference. Resolves to the 'id' of a 'colorSchemes' catalog record. Accepts a bare id (lowercase kebab-case, e.g. 'cool-horizon'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Slot and role overrides on the surrounding ColorScheme object take precedence over the resolved scheme.\\n\\nResolution order: inline catalogs.colorSchemes.records[] -> catalogs.colorSchemes.source -> default catalog at https://www.pptx.gallery/color-schemes.\",\n \"examples\": [\n \"cool-horizon\",\n \"boost\",\n \"burnt-orange\",\n \"ocean-depth\",\n \"corporate-blue\",\n \"https://acme.com/decks/color-schemes/acme.json\",\n \"pkg:@acme/decks/color-schemes/acme\"\n ]\n },\n \"accent1\": {\n \"type\": \"string\",\n \"description\": \"Accent 1 color (hex). Mirrors the OOXML accent1 slot.\",\n \"examples\": [\n \"#2874A6\",\n \"#FD3223\",\n \"#F77F00\"\n ]\n },\n \"accent2\": {\n \"type\": \"string\",\n \"description\": \"Accent 2 color (hex). Mirrors the OOXML accent2 slot.\",\n \"examples\": [\n \"#1B4F72\",\n \"#0308DB\",\n \"#D62828\"\n ]\n },\n \"accent3\": {\n \"type\": \"string\",\n \"description\": \"Accent 3 color (hex). Mirrors the OOXML accent3 slot.\",\n \"examples\": [\n \"#5499C7\",\n \"#4F4955\",\n \"#003049\"\n ]\n },\n \"accent4\": {\n \"type\": \"string\",\n \"description\": \"Accent 4 color (hex). Mirrors the OOXML accent4 slot.\",\n \"examples\": [\n \"#7BDBB2\",\n \"#A1DB30\",\n \"#FCBF49\"\n ]\n },\n \"accent5\": {\n \"type\": \"string\",\n \"description\": \"Accent 5 color (hex). Mirrors the OOXML accent5 slot.\",\n \"examples\": [\n \"#3AC67A\",\n \"#0682FE\",\n \"#EAE2B7\"\n ]\n },\n \"accent6\": {\n \"type\": \"string\",\n \"description\": \"Accent 6 color (hex). Mirrors the OOXML accent6 slot.\",\n \"examples\": [\n \"#24A89E\",\n \"#FC03BE\",\n \"#BFBFBF\"\n ]\n },\n \"dark1\": {\n \"type\": \"string\",\n \"description\": \"Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.\",\n \"examples\": [\n \"#000000\"\n ]\n },\n \"dark2\": {\n \"type\": \"string\",\n \"description\": \"Dark 2 color (hex). Secondary dark; OOXML dark2.\",\n \"examples\": [\n \"#011842\",\n \"#2C2C2C\"\n ]\n },\n \"light1\": {\n \"type\": \"string\",\n \"description\": \"Light 1 color (hex). Typically the slide canvas; OOXML lt1.\",\n \"examples\": [\n \"#FFFFFF\"\n ]\n },\n \"light2\": {\n \"type\": \"string\",\n \"description\": \"Light 2 color (hex). Secondary light surface; OOXML lt2.\",\n \"examples\": [\n \"#F0F0F0\",\n \"#F3F7FF\"\n ]\n },\n \"hyperlink\": {\n \"type\": \"string\",\n \"description\": \"Hyperlink color (hex). OOXML hlink.\",\n \"examples\": [\n \"#0563C1\",\n \"#0066CC\"\n ]\n },\n \"followedHyperlink\": {\n \"type\": \"string\",\n \"description\": \"Followed-hyperlink color (hex). OOXML folHlink.\",\n \"examples\": [\n \"#954F72\",\n \"#551A8B\"\n ]\n },\n \"primary\": {\n \"type\": \"string\",\n \"description\": \"Abstract role: primary brand color (hex). The engine maps this onto an OOXML accent slot when serializing.\",\n \"examples\": [\n \"#1E40AF\",\n \"#0F172A\"\n ]\n },\n \"secondary\": {\n \"type\": \"string\",\n \"description\": \"Abstract role: secondary brand color (hex).\",\n \"examples\": [\n \"#3B82F6\",\n \"#64748B\"\n ]\n },\n \"accent\": {\n \"type\": \"string\",\n \"description\": \"Abstract role: accent color used for highlights and emphasis (hex).\",\n \"examples\": [\n \"#F59E0B\",\n \"#22D3EE\"\n ]\n },\n \"background\": {\n \"type\": \"string\",\n \"description\": \"Abstract role: default slide background color (hex). The engine maps this to one of light1 / light2 / dark1 / dark2 when serializing.\",\n \"examples\": [\n \"#FFFFFF\",\n \"#0B1220\"\n ]\n },\n \"surface\": {\n \"type\": \"string\",\n \"description\": \"Abstract role: color for elevated surfaces such as cards and panels (hex).\",\n \"examples\": [\n \"#F8FAFC\",\n \"#1E293B\"\n ]\n },\n \"text\": {\n \"type\": \"string\",\n \"description\": \"Abstract role: primary body text color (hex).\",\n \"examples\": [\n \"#0F172A\",\n \"#F8FAFC\"\n ]\n },\n \"textSecondary\": {\n \"type\": \"string\",\n \"description\": \"Abstract role: secondary or muted text color used for captions and supporting copy (hex).\",\n \"examples\": [\n \"#475569\",\n \"#94A3B8\"\n ]\n },\n \"custom\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of custom named colors for advanced or theme-specific use.\",\n \"examples\": [\n {\n \"success\": \"#10B981\",\n \"warning\": \"#F59E0B\",\n \"danger\": \"#EF4444\"\n }\n ]\n }\n }\n },\n \"FontScheme\": {\n \"type\": \"object\",\n \"description\": \"Typography selections used by the design system. The pair fields (major, minor) and refinement fields (type, app, languageFamily) mirror font-scheme.schema.json (https://openpresentation.org/schema/opf-font-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\\n\\nTwo parallel models are supported and may be mixed:\\n- OOXML pairs (major, minor) - heading and body family names that round-trip directly to PowerPoint majorFont/minorFont entries.\\n- Abstract roles (heading, body, accent, code) - OPF-specific Font objects the engine maps onto the OOXML pair when serializing. Convenient for inline overrides and for adding accent/code roles that don't have a direct OOXML slot; not part of the catalog record schema.\\n\\nIn design.fontScheme, 'id' resolves a fontSchemes catalog record as the base; pair and role overrides on the same object take precedence over the resolved scheme. The string shorthand on design.fontScheme is equivalent to setting only 'id'.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Font scheme reference. Resolves to the 'id' of a 'fontSchemes' catalog record. Accepts a bare id (lowercase kebab-case, e.g. 'aptos'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Field overrides on the surrounding FontScheme object take precedence over the resolved scheme.\\n\\nResolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.source -> default catalog at https://www.pptx.gallery/font-schemes.\",\n \"examples\": [\n \"aptos\",\n \"tenorite\",\n \"seaford\",\n \"noto-sans\",\n \"modern-sans\",\n \"classic-serif\",\n \"https://acme.com/decks/font-schemes/acme.json\",\n \"pkg:@acme/decks/font-schemes/acme\"\n ]\n },\n \"major\": {\n \"type\": \"string\",\n \"description\": \"Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.\",\n \"examples\": [\n \"Aptos Display\",\n \"Calibri\",\n \"Microsoft YaHei\",\n \"Arial Black\"\n ]\n },\n \"minor\": {\n \"type\": \"string\",\n \"description\": \"Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.\",\n \"examples\": [\n \"Aptos\",\n \"Calibri\",\n \"Microsoft YaHei\",\n \"Arial\"\n ]\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"sans-serif\",\n \"serif\",\n \"monospace\"\n ],\n \"description\": \"High-level typographic class of the scheme.\"\n },\n \"app\": {\n \"type\": \"string\",\n \"enum\": [\n \"PowerPoint\",\n \"Google Slides\"\n ],\n \"description\": \"Target application this font pairing is intended for.\"\n },\n \"languageFamily\": {\n \"type\": \"string\",\n \"enum\": [\n \"latin\",\n \"ea\",\n \"cs\"\n ],\n \"description\": \"OOXML font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' for East Asian scripts, 'cs' for Complex Scripts.\"\n },\n \"heading\": {\n \"$ref\": \"#/$defs/Font\",\n \"description\": \"Abstract role: font used for slide titles and headings. Maps onto the OOXML major slot when serializing.\"\n },\n \"body\": {\n \"$ref\": \"#/$defs/Font\",\n \"description\": \"Abstract role: font used for body copy. Maps onto the OOXML minor slot when serializing.\"\n },\n \"accent\": {\n \"$ref\": \"#/$defs/Font\",\n \"description\": \"Abstract role: font used for accent text such as quotes or callouts. No direct OOXML slot.\"\n },\n \"code\": {\n \"$ref\": \"#/$defs/Font\",\n \"description\": \"Abstract role: monospaced font used for code blocks. No direct OOXML slot.\"\n }\n }\n },\n \"Font\": {\n \"type\": \"object\",\n \"description\": \"Specification for a single font role.\",\n \"required\": [\n \"family\"\n ],\n \"properties\": {\n \"family\": {\n \"type\": \"string\",\n \"description\": \"Font family name.\",\n \"examples\": [\n \"Inter\",\n \"Roboto\",\n \"Source Serif Pro\",\n \"JetBrains Mono\"\n ]\n },\n \"weight\": {\n \"type\": \"number\",\n \"description\": \"Numeric font weight (e.g., 400 for regular, 700 for bold).\"\n },\n \"style\": {\n \"type\": \"string\",\n \"enum\": [\n \"normal\",\n \"italic\"\n ],\n \"description\": \"Font style.\"\n },\n \"letterSpacing\": {\n \"type\": \"number\",\n \"description\": \"Letter spacing (tracking) in ems.\"\n }\n }\n },\n \"DimensionPreset\": {\n \"type\": \"string\",\n \"enum\": [\n \"16:9\",\n \"4:3\",\n \"16:10\",\n \"letter\",\n \"a4\",\n \"widescreen\",\n \"standard\"\n ],\n \"description\": \"Named dimension preset; chooses both aspect ratio and physical size. 'widescreen' is an alias for 16:9 in PowerPoint widescreen size; 'standard' is an alias for 4:3 in PowerPoint standard size.\"\n },\n \"Dimensions\": {\n \"type\": \"object\",\n \"description\": \"Slide dimensions; either pick a preset or specify custom inches.\",\n \"properties\": {\n \"preset\": {\n \"$ref\": \"#/$defs/DimensionPreset\"\n },\n \"widthInches\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0,\n \"description\": \"Custom slide width in inches; overrides the preset width when provided.\"\n },\n \"heightInches\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0,\n \"description\": \"Custom slide height in inches; overrides the preset height when provided.\"\n }\n }\n },\n \"ThemeBackgroundSlot\": {\n \"type\": \"string\",\n \"description\": \"PowerPoint theme-controlled slide background slot from the active color scheme. These are slots, not assumptions about actual colors: light1 is usually white and dark1 is usually black by convention, but the color scheme controls the real values.\",\n \"enum\": [\n \"light1\",\n \"light2\",\n \"dark1\",\n \"dark2\"\n ]\n },\n \"HexColor\": {\n \"type\": \"string\",\n \"pattern\": \"^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$\",\n \"description\": \"Hex color shorthand accepted by selected string fields.\",\n \"examples\": [\n \"#fff\",\n \"#ffff00\",\n \"#0F172AFF\"\n ]\n },\n \"BackgroundShortcut\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/ThemeBackgroundSlot\"\n },\n {\n \"$ref\": \"#/$defs/HexColor\"\n }\n ],\n \"description\": \"String shorthand for a background. Theme slots ('light1', 'light2', 'dark1', 'dark2') are equivalent to { type: 'theme', slot: value }; hex colors are equivalent to { type: 'solid', color: value }.\",\n \"examples\": [\n \"dark1\",\n \"light2\",\n \"#ffff00\"\n ]\n },\n \"Background\": {\n \"description\": \"Background fill applied to slides. Theme backgrounds preserve PowerPoint's color-scheme background choice; other variants represent fixed background fills.\",\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/ThemeBackground\"\n },\n {\n \"$ref\": \"#/$defs/SolidBackground\"\n },\n {\n \"$ref\": \"#/$defs/GradientBackground\"\n },\n {\n \"$ref\": \"#/$defs/ImageBackground\"\n },\n {\n \"$ref\": \"#/$defs/PatternBackground\"\n }\n ]\n },\n \"ThemeBackground\": {\n \"type\": \"object\",\n \"description\": \"Theme-controlled PowerPoint slide background. The slot is resolved through the active color scheme and remains theme-aware.\",\n \"required\": [\n \"type\",\n \"slot\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"theme\",\n \"description\": \"Theme-controlled background fill.\"\n },\n \"slot\": {\n \"$ref\": \"#/$defs/ThemeBackgroundSlot\"\n }\n }\n },\n \"SolidBackground\": {\n \"type\": \"object\",\n \"description\": \"Fixed solid slide background fill.\",\n \"required\": [\n \"type\",\n \"color\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"solid\",\n \"description\": \"Fixed solid background fill.\"\n },\n \"color\": {\n \"type\": \"string\",\n \"description\": \"Fixed solid fill color, usually a hex string. Use { type: 'theme', slot: ... } for PowerPoint's four theme-controlled background choices.\",\n \"examples\": [\n \"#FFFFFF\",\n \"#0F172A\",\n \"#F8FAFC\"\n ]\n },\n \"opacity\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"Background opacity from 0 (fully transparent) to 1 (fully opaque).\"\n }\n }\n },\n \"GradientBackground\": {\n \"type\": \"object\",\n \"description\": \"Fixed gradient slide background fill.\",\n \"required\": [\n \"type\",\n \"gradient\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"gradient\",\n \"description\": \"Fixed gradient background fill.\"\n },\n \"gradient\": {\n \"type\": \"object\",\n \"description\": \"Gradient fill definition.\",\n \"properties\": {\n \"angle\": {\n \"type\": \"number\",\n \"description\": \"Gradient angle in degrees (0 = left-to-right, 90 = top-to-bottom).\"\n },\n \"stops\": {\n \"type\": \"array\",\n \"description\": \"Ordered list of color stops along the gradient.\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"Color stop along the gradient.\",\n \"required\": [\n \"color\",\n \"position\"\n ],\n \"properties\": {\n \"color\": {\n \"type\": \"string\",\n \"description\": \"Stop color as a hex string.\",\n \"examples\": [\n \"#1E40AF\",\n \"#22D3EE\"\n ]\n },\n \"position\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"Stop position along the gradient, from 0 (start) to 1 (end).\"\n }\n }\n }\n }\n }\n },\n \"opacity\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"Background opacity from 0 (fully transparent) to 1 (fully opaque).\"\n }\n }\n },\n \"ImageBackground\": {\n \"type\": \"object\",\n \"description\": \"Fixed image slide background fill.\",\n \"required\": [\n \"type\",\n \"image\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"image\",\n \"description\": \"Fixed image background fill.\"\n },\n \"image\": {\n \"type\": \"object\",\n \"description\": \"Image fill definition.\",\n \"required\": [\n \"src\"\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"description\": \"Source for the background image.\",\n \"examples\": [\n \"https://cdn.acme.com/backgrounds/cover.jpg\",\n \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA...\",\n \"./backgrounds/cover.jpg\",\n \"asset:bg-cover\"\n ]\n },\n \"fit\": {\n \"type\": \"string\",\n \"enum\": [\n \"cover\",\n \"contain\",\n \"tile\"\n ],\n \"description\": \"How the image fills the slide background.\"\n }\n }\n },\n \"opacity\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"Background opacity from 0 (fully transparent) to 1 (fully opaque).\"\n }\n }\n },\n \"PatternBackground\": {\n \"type\": \"object\",\n \"description\": \"Fixed pattern slide background fill.\",\n \"required\": [\n \"type\",\n \"pattern\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"pattern\",\n \"description\": \"Fixed pattern background fill.\"\n },\n \"pattern\": {\n \"type\": \"object\",\n \"description\": \"Pattern fill definition.\",\n \"required\": [\n \"preset\"\n ],\n \"properties\": {\n \"preset\": {\n \"type\": \"string\",\n \"description\": \"Pattern preset or engine-defined pattern id.\",\n \"examples\": [\n \"pct5\",\n \"ltHorz\",\n \"diagStripe\"\n ]\n },\n \"foregroundColor\": {\n \"type\": \"string\",\n \"description\": \"Foreground color for the pattern, usually a hex string.\",\n \"examples\": [\n \"#0F172A\"\n ]\n },\n \"backgroundColor\": {\n \"type\": \"string\",\n \"description\": \"Background color behind the pattern, usually a hex string.\",\n \"examples\": [\n \"#FFFFFF\"\n ]\n }\n }\n },\n \"opacity\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"Background opacity from 0 (fully transparent) to 1 (fully opaque).\"\n }\n }\n },\n \"LogoSet\": {\n \"type\": \"object\",\n \"description\": \"Deck logo variants surfaced by layouts, covers, section dividers, headers, and footers. Organization identity lives in organization; this object only controls visual rendering assets. Renderer convention: on dark backgrounds prefer the 'light' variant, on light backgrounds prefer the 'dark' variant, and in square/vertical slots prefer the stacked family when present.\",\n \"additionalProperties\": false,\n \"properties\": {\n \"default\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Default full-lockup logo. Used as fallback when no more specific variant is set.\"\n },\n \"light\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Light-colored full-lockup logo intended for rendering on dark backgrounds.\"\n },\n \"dark\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Dark-colored full-lockup logo intended for rendering on light backgrounds.\"\n },\n \"stacked\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Stacked vertical logo lockup, suited to portrait or square brand-mark slots.\"\n },\n \"stackedLight\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Light-colored stacked logo variant intended for rendering on dark backgrounds.\"\n },\n \"stackedDark\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Dark-colored stacked logo variant intended for rendering on light backgrounds.\"\n },\n \"icon\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Default icon, mark, or symbol without wordmark. Useful for tight spaces such as footers, badges, and slide-corner marks.\"\n },\n \"iconLight\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Light-colored icon variant intended for rendering on dark backgrounds.\"\n },\n \"iconDark\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Dark-colored icon variant intended for rendering on light backgrounds.\"\n },\n \"wordmark\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Default wordmark: the organization name set in branded typography, without icon.\"\n },\n \"wordmarkLight\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Light-colored wordmark variant intended for rendering on dark backgrounds.\"\n },\n \"wordmarkDark\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Dark-colored wordmark variant intended for rendering on light backgrounds.\"\n }\n }\n },\n \"Watermark\": {\n \"type\": \"object\",\n \"description\": \"Decorative watermark image and rendering options. Use design.watermark = false to disable an inherited watermark.\",\n \"additionalProperties\": false,\n \"required\": [\n \"opacity\"\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"description\": \"Source for the watermark image.\"\n },\n \"opacity\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"Watermark opacity from 0 (fully transparent) to 1 (fully opaque).\"\n }\n }\n },\n \"HeaderFooter\": {\n \"type\": \"object\",\n \"description\": \"Repeated header or footer content split into left, center, and right zones. Header/footer content is slide furniture, separate from the main slide content payloads.\",\n \"properties\": {\n \"left\": {\n \"$ref\": \"#/$defs/HeaderFooterItem\",\n \"description\": \"Left-aligned header/footer content.\"\n },\n \"center\": {\n \"$ref\": \"#/$defs/HeaderFooterItem\",\n \"description\": \"Centered header/footer content.\"\n },\n \"right\": {\n \"$ref\": \"#/$defs/HeaderFooterItem\",\n \"description\": \"Right-aligned header/footer content.\"\n }\n }\n },\n \"HeaderFooterItem\": {\n \"type\": \"object\",\n \"description\": \"One header/footer zone. Fields may be combined when the renderer supports it; otherwise renderers should prefer image, then text-like generated content.\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\",\n \"description\": \"Literal text rendered in this zone.\",\n \"examples\": [\n \"Confidential\",\n \"Q4 Business Review\"\n ]\n },\n \"image\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Generic image rendered in this zone, such as a logo, partner mark, certification badge, or icon.\",\n \"examples\": [\n \"asset:acme-logo\",\n \"./assets/footer-badge.svg\"\n ]\n },\n \"slideNumber\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to render the current slide number in this zone.\"\n },\n \"date\": {\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Whether to render the presentation date, or a literal date string to render.\"\n },\n \"organization\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to render the primary organization name from organization.\"\n },\n \"section\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to render the current slide section label.\"\n }\n }\n },\n \"Slide\": {\n \"type\": \"object\",\n \"description\": \"A single slide. Content can be authored as a full-slide root payload, or inside promoted named region keys such as 'left', 'center+right', and 'top:left'.\",\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Optional stable identifier for the slide within the document. Use when another system needs to reference a slide across edits, comments, generation state, exports, or narrative tooling. Slide order is defined by the slides array, so simple decks may omit this.\",\n \"examples\": [\n \"s1\",\n \"cover\",\n \"problem-1\",\n \"ask\"\n ]\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"text\",\n \"list\",\n \"image\",\n \"chart\",\n \"table\",\n \"video\",\n \"code\",\n \"metric\",\n \"quote\",\n \"timeline\"\n ],\n \"description\": \"Optional full-slide content kind. When omitted, engines infer the kind from root payload fields.\"\n },\n \"beat\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n ],\n \"description\": \"Optional reference to one or more narrative beats (each value matches an id from narrative.beats or the resolved template). A single string declares the slide's primary beat; an array declares that one slide covers multiple beats. Declares the slide's role in the story arc; does not constrain ordering or structure. Slides without a beat are valid; multiple slides may share a beat.\"\n },\n \"layout\": {\n \"type\": \"string\",\n \"description\": \"Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\\n\\nResolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.\",\n \"examples\": [\n \"title\",\n \"title-subtitle\",\n \"text-2x\",\n \"chart-3x\",\n \"image-bleed\",\n \"blank\",\n \"https://acme.com/decks/layouts/cover.json\",\n \"pkg:@acme/decks/layouts/cover\"\n ]\n },\n \"title\": {\n \"type\": \"string\",\n \"description\": \"Slide-level title content. When the resolved layout exposes a 'title' placeholder, the engine renders this value there.\",\n \"examples\": [\n \"Quarterly Review\",\n \"Why Now\",\n \"Next Steps\"\n ]\n },\n \"subtitle\": {\n \"type\": \"string\",\n \"description\": \"Slide-level subtitle or supporting line. When the resolved layout exposes a 'subtitle' placeholder, the engine renders this value there.\",\n \"examples\": [\n \"Prepared for the board\",\n \"Three signals changed this quarter\"\n ]\n },\n \"tag\": {\n \"type\": \"string\",\n \"description\": \"Small slide-level label or badge. When the resolved layout exposes a 'tag' placeholder, the engine renders this value there.\",\n \"examples\": [\n \"Intro\",\n \"Confidential\",\n \"Appendix\"\n ]\n },\n \"text\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TextRun\"\n }\n }\n ],\n \"description\": \"Full-slide text payload. Use a string for plain text or TextRun[] for inline rich text. TextRun items may be plain strings or formatted run objects.\"\n },\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/ListItem\"\n },\n \"description\": \"Full-slide generic list payload. Presence of this field infers type 'list'. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks.\"\n },\n \"bullets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/BulletItem\"\n },\n \"description\": \"Full-slide text-style bullet payload. Presence of this field infers type 'text'.\"\n },\n \"image\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Full-slide image source. Presence of this field infers type 'image'.\"\n },\n \"video\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Full-slide video source. Presence of this field infers type 'video'.\"\n },\n \"chart\": {\n \"$ref\": \"#/$defs/Chart\",\n \"description\": \"Full-slide chart payload. Presence of this field infers type 'chart'.\"\n },\n \"table\": {\n \"$ref\": \"#/$defs/Table\",\n \"description\": \"Full-slide table payload. Presence of this field infers type 'table'.\"\n },\n \"code\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Code\"\n }\n ],\n \"description\": \"Full-slide code payload. A string is shorthand for { \\\"source\\\": value }; object form carries optional syntax language and filename metadata.\"\n },\n \"metric\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"$ref\": \"#/$defs/Metric\"\n }\n ],\n \"description\": \"Full-slide metric payload. A string or number is shorthand for { \\\"value\\\": value }; object form carries optional label, description, unit, delta, and trend metadata. Numeric values remain numbers; renderers format them for display. Presence of this field infers type 'metric'.\"\n },\n \"quote\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Quote\"\n }\n ],\n \"description\": \"Full-slide quote payload. A string is shorthand for { \\\"text\\\": value }; object form carries optional attribution and source metadata. Presence of this field infers type 'quote'.\"\n },\n \"timeline\": {\n \"$ref\": \"#/$defs/Timeline\",\n \"description\": \"Full-slide timeline payload. An array is shorthand for { \\\"events\\\": value }; object form carries optional name and description metadata. Presence of this field infers type 'timeline'.\"\n },\n \"blocks\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"description\": \"Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for equivalent blocks.\"\n },\n \"design\": {\n \"$ref\": \"#/$defs/Design\",\n \"description\": \"Slide-level design applied on top of the deck-wide design.\"\n },\n \"left\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"left+center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"left+center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"bottom\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle+bottom\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle+bottom\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top:left\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top:center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top:right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top:left+center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top:center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top:left+center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle:left\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle:center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle:right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle:left+center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle:center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle:left+center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"bottom:left\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"bottom:center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"bottom:right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"bottom:left+center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"bottom:center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"bottom:left+center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle:left\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle:center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle:right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle:left+center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle:center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle:left+center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle+bottom:left\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle+bottom:center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle+bottom:right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle+bottom:left+center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle+bottom:center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"middle+bottom:left+center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle+bottom:left\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle+bottom:center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle+bottom:right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle+bottom:left+center\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle+bottom:center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"top+middle+bottom:left+center+right\": {\n \"$ref\": \"#/$defs/ContentPayload\"\n },\n \"notes\": {\n \"type\": \"string\",\n \"description\": \"Speaker notes shown in presenter view.\",\n \"examples\": [\n \"Open with the customer story; pause for questions before moving to the architecture slide.\"\n ]\n },\n \"section\": {\n \"type\": \"string\",\n \"description\": \"PowerPoint-style slide section label. Consecutive slides with the same value belong to the same section in presenter view, outlines, and PowerPoint section-aware exports.\",\n \"examples\": [\n \"Intro\",\n \"Problem\",\n \"Solution\",\n \"Ask\",\n \"Appendix\"\n ]\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the slide is hidden from the presented sequence.\"\n }\n }\n },\n \"ContentPayload\": {\n \"type\": \"object\",\n \"description\": \"A single content payload. The optional 'type' discriminator can make intent explicit, but validators and engines infer it from fields such as text, bullets, items, image, video, chart, table, code, metric, quote, or timeline.\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"text\",\n \"list\",\n \"image\",\n \"chart\",\n \"table\",\n \"video\",\n \"code\",\n \"metric\",\n \"quote\",\n \"timeline\"\n ],\n \"description\": \"Optional content kind. When omitted, engines infer the kind from the fields present.\"\n },\n \"text\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TextRun\"\n }\n }\n ],\n \"description\": \"Text payload. Use a string for plain text or TextRun[] for inline rich text. TextRun items may be plain strings or formatted run objects.\",\n \"examples\": [\n \"Hello, world\",\n [\n \"Revenue grew \",\n {\n \"text\": \"42%\",\n \"bold\": true,\n \"color\": \"#16A34A\"\n },\n \" year over year.\"\n ]\n ]\n },\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/ListItem\"\n },\n \"description\": \"Generic list payload. Each item is either a plain string, a TextRun[] rich text sequence, or a ListItem object. List nesting uses item.level rather than nested content payloads.\",\n \"examples\": [\n [\n \"Sub-second agent latency\",\n [\n \"Drop-in compatible with \",\n {\n \"text\": \"OpenAI tool-calling\",\n \"bold\": true\n }\n ],\n {\n \"text\": \"SOC 2 Type II\",\n \"description\": \"Security review ready for enterprise procurement.\"\n }\n ]\n ]\n },\n \"bullets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/BulletItem\"\n },\n \"description\": \"Text-style bullet payload. Presence of this field infers type 'text'.\",\n \"examples\": [\n [\n \"Sub-second agent latency\",\n \"Drop-in compatible with OpenAI tool-calling\",\n \"SOC 2 Type II\"\n ]\n ]\n },\n \"image\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Source for an image item.\",\n \"examples\": [\n \"https://cdn.acme.com/images/diagram.png\",\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9V3iWggAAAAASUVORK5CYII=\",\n \"./images/diagram.png\",\n \"asset:img-diagram\"\n ]\n },\n \"video\": {\n \"$ref\": \"#/$defs/Asset\",\n \"description\": \"Source for a video item.\",\n \"examples\": [\n \"asset:demo-video\",\n \"./media/demo.mp4\"\n ]\n },\n \"chart\": {\n \"$ref\": \"#/$defs/Chart\",\n \"description\": \"Chart payload. Presence of this field infers type 'chart'.\"\n },\n \"table\": {\n \"$ref\": \"#/$defs/Table\",\n \"description\": \"Table payload. Presence of this field infers type 'table'.\"\n },\n \"code\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Code\"\n }\n ],\n \"description\": \"Code payload. A string is shorthand for { \\\"source\\\": value }; object form carries optional syntax language and filename metadata.\",\n \"examples\": [\n \"def greet(name: str) -> str:\\n return f\\\"Hello, {name}!\\\"\",\n {\n \"source\": \"export function greet(name: string) {\\n return `Hello, ${name}`;\\n}\",\n \"language\": \"ts\",\n \"filename\": \"greet.ts\"\n }\n ]\n },\n \"metric\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"$ref\": \"#/$defs/Metric\"\n }\n ],\n \"description\": \"Metric payload. A string or number is shorthand for { \\\"value\\\": value }; object form carries optional label, description, unit, delta, and trend metadata. Numeric values remain numbers; renderers format them for display.\",\n \"examples\": [\n \"98%\",\n 42,\n {\n \"value\": \"$12.4M\",\n \"label\": \"Revenue\",\n \"description\": \"Recognized revenue for the quarter.\",\n \"delta\": \"+12%\",\n \"trend\": \"up\"\n }\n ]\n },\n \"quote\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"#/$defs/Quote\"\n }\n ],\n \"description\": \"Quote payload. A string is shorthand for { \\\"text\\\": value }; object form carries optional attribution and source metadata.\",\n \"examples\": [\n \"This changed how our team handles reviews.\",\n {\n \"text\": \"This changed how our team handles reviews.\",\n \"attribution\": \"VP Operations, Acme Corp\",\n \"source\": \"Customer interview, March 2026\"\n }\n ]\n },\n \"timeline\": {\n \"$ref\": \"#/$defs/Timeline\",\n \"description\": \"Timeline payload ordered by narrative or chronology.\",\n \"examples\": [\n [\n {\n \"when\": \"2026-01\",\n \"what\": \"Pilot\",\n \"description\": \"Launch with the first operations team.\"\n },\n {\n \"when\": \"2026-04\",\n \"what\": \"Rollout\",\n \"description\": \"Expand to all regions.\"\n }\n ],\n {\n \"name\": \"Rollout Plan\",\n \"description\": \"Major milestones for the regional rollout.\",\n \"events\": [\n {\n \"when\": \"Q1\",\n \"what\": \"Pilot\"\n },\n {\n \"when\": \"Q2\",\n \"what\": \"Rollout\"\n }\n ]\n }\n ]\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"list\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"items\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"image\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"image\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"chart\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"chart\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"table\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"table\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"video\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"video\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"code\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"code\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"metric\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"metric\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"quote\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"quote\"\n ]\n }\n },\n {\n \"if\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"const\": \"timeline\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"timeline\"\n ]\n }\n }\n ]\n },\n \"Quote\": {\n \"type\": \"object\",\n \"description\": \"Quote content with optional attribution metadata. Use 'text' for the quoted text, 'attribution' for the credited person or organization, and 'source' for a citation or URL. A string value in a quote field is shorthand for { \\\"text\\\": value }.\",\n \"additionalProperties\": false,\n \"required\": [\n \"text\"\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\",\n \"description\": \"Quoted text.\",\n \"examples\": [\n \"This changed how our team handles reviews.\"\n ]\n },\n \"attribution\": {\n \"type\": \"string\",\n \"description\": \"Person or organization credited for the quote.\",\n \"examples\": [\n \"VP Operations, Acme Corp\"\n ]\n },\n \"source\": {\n \"type\": \"string\",\n \"description\": \"Optional quote source, citation, or URL.\",\n \"examples\": [\n \"Customer interview, March 2026\",\n \"https://acme.com/case-study\"\n ]\n }\n }\n },\n \"Code\": {\n \"type\": \"object\",\n \"description\": \"Code content with optional rendering metadata. Use 'source' for the code text, 'language' for syntax highlighting, and 'filename' when the rendered block should show a file label. A string value in a code field is shorthand for { \\\"source\\\": value }.\",\n \"additionalProperties\": false,\n \"required\": [\n \"source\"\n ],\n \"properties\": {\n \"source\": {\n \"type\": \"string\",\n \"description\": \"Source code text to display.\",\n \"examples\": [\n \"def greet(name: str) -> str:\\n return f\\\"Hello, {name}!\\\"\"\n ]\n },\n \"language\": {\n \"type\": \"string\",\n \"description\": \"Language identifier used for syntax highlighting.\",\n \"examples\": [\n \"python\",\n \"ts\",\n \"tsx\",\n \"rust\",\n \"go\",\n \"bash\",\n \"json\",\n \"yaml\"\n ]\n },\n \"filename\": {\n \"type\": \"string\",\n \"description\": \"Optional file label shown with the code block.\",\n \"examples\": [\n \"app.py\",\n \"components/Button.tsx\",\n \"terraform/main.tf\"\n ]\n }\n }\n },\n \"Metric\": {\n \"type\": \"object\",\n \"description\": \"Metric content with optional display metadata. Use 'value' for the primary value, 'label' for the metric name, 'description' for supporting context, 'unit' for a suffix/currency marker, 'delta' for change, and 'trend' for direction. A string or number value in a metric field is shorthand for { \\\"value\\\": value }; numeric values remain numbers and are formatted by renderers.\",\n \"additionalProperties\": false,\n \"required\": [\n \"value\"\n ],\n \"properties\": {\n \"value\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ],\n \"description\": \"Primary metric value.\",\n \"examples\": [\n 42,\n \"$12.4M\",\n \"98%\"\n ]\n },\n \"label\": {\n \"type\": \"string\",\n \"description\": \"Metric label.\",\n \"examples\": [\n \"Revenue\",\n \"Retention\",\n \"Latency\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Optional supporting context for the metric.\",\n \"examples\": [\n \"Recognized revenue for the quarter.\",\n \"Median API latency across production traffic.\"\n ]\n },\n \"unit\": {\n \"type\": \"string\",\n \"description\": \"Metric unit, suffix, or currency marker.\",\n \"examples\": [\n \"%\",\n \"ms\",\n \"$M\"\n ]\n },\n \"delta\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ],\n \"description\": \"Metric change value.\",\n \"examples\": [\n \"+12%\",\n -4.2\n ]\n },\n \"trend\": {\n \"type\": \"string\",\n \"enum\": [\n \"up\",\n \"down\",\n \"flat\"\n ],\n \"description\": \"Metric trend direction.\"\n }\n }\n },\n \"Timeline\": {\n \"description\": \"Timeline content. An array is shorthand for { \\\"events\\\": value }; object form carries optional name and description metadata.\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TimelineEvent\"\n },\n \"minItems\": 1\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"events\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Short timeline label.\",\n \"examples\": [\n \"Rollout Plan\",\n \"Migration Path\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Optional timeline-level context.\",\n \"examples\": [\n \"Major milestones for the regional rollout.\"\n ]\n },\n \"events\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TimelineEvent\"\n },\n \"minItems\": 1,\n \"description\": \"Timeline events ordered by narrative, sequence, or chronology.\"\n }\n }\n }\n ]\n },\n \"TimelineEvent\": {\n \"type\": \"object\",\n \"description\": \"A single event inside a timeline content payload.\",\n \"required\": [\n \"what\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"when\": {\n \"type\": \"string\",\n \"description\": \"Event time, date, or sequence label. Use ISO-like values when possible, but human labels are allowed for quarters, eras, and relative milestones.\",\n \"examples\": [\n \"2026-01\",\n \"Q2 2026\",\n \"Launch week\"\n ]\n },\n \"what\": {\n \"type\": \"string\",\n \"description\": \"Short event label.\",\n \"examples\": [\n \"Pilot\",\n \"Rollout\",\n \"Scale\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Optional event detail.\",\n \"examples\": [\n \"Launch with the first operations team.\"\n ]\n }\n }\n },\n \"ListItem\": {\n \"description\": \"A flat item inside a list. Strings cover the common case, TextRun[] supports inline rich text without an object wrapper, and object form adds description and nesting depth without creating nested slide content payloads.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TextRun\"\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"text\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"text\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TextRun\"\n }\n }\n ],\n \"description\": \"Text for the list item. Use a string for plain text or TextRun[] for inline rich text. TextRun items may be plain strings or formatted run objects.\",\n \"examples\": [\n \"Improve retention by 12 points\",\n [\n \"Improve retention by \",\n {\n \"text\": \"12 points\",\n \"bold\": true\n }\n ]\n ]\n },\n \"description\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TextRun\"\n }\n }\n ],\n \"description\": \"Optional supporting detail for the list item. Use a string for plain text or TextRun[] for inline rich text.\",\n \"examples\": [\n \"Focused on activation and first-value time.\",\n [\n \"Focused on \",\n {\n \"text\": \"activation\",\n \"bold\": true\n },\n \" and first-value time.\"\n ]\n ]\n },\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Zero-based nesting level for the list item.\"\n }\n }\n }\n ]\n },\n \"BulletItem\": {\n \"description\": \"A flat bullet item. Strings cover the common case, TextRun[] supports inline rich text without an object wrapper, and object form adds nesting depth without list-item descriptions.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TextRun\"\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"text\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"text\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TextRun\"\n }\n }\n ],\n \"description\": \"Text for the bullet. Use a string for plain text or TextRun[] for inline rich text. TextRun items may be plain strings or formatted run objects.\",\n \"examples\": [\n \"Improve retention by 12 points\",\n [\n \"Improve retention by \",\n {\n \"text\": \"12 points\",\n \"bold\": true\n }\n ]\n ]\n },\n \"level\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Zero-based nesting level for the bullet.\"\n }\n }\n }\n ]\n },\n \"TextRun\": {\n \"description\": \"A contiguous run of text. Strings cover unformatted spans; object form adds character formatting.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"text\"\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\",\n \"description\": \"Text for this run.\",\n \"examples\": [\n \"Hello, \",\n \"world\"\n ]\n },\n \"bold\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the run is rendered in bold.\"\n },\n \"italic\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the run is rendered in italic.\"\n },\n \"underline\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the run is underlined.\"\n },\n \"strikethrough\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the run is rendered with a strikethrough line.\"\n },\n \"color\": {\n \"type\": \"string\",\n \"description\": \"Run text color as a hex string.\",\n \"examples\": [\n \"#0F172A\",\n \"#1E40AF\"\n ]\n },\n \"fontSize\": {\n \"type\": \"number\",\n \"description\": \"Run font size in points.\"\n },\n \"fontFamily\": {\n \"type\": \"string\",\n \"description\": \"Run font family override.\",\n \"examples\": [\n \"Inter\",\n \"Source Serif Pro\",\n \"JetBrains Mono\"\n ]\n },\n \"link\": {\n \"type\": \"string\",\n \"description\": \"URL to link the run text to.\",\n \"examples\": [\n \"https://acme.com\",\n \"https://acme.com/case-studies/beta\"\n ]\n },\n \"superscript\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the run is rendered as superscript.\"\n },\n \"subscript\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the run is rendered as subscript.\"\n }\n }\n }\n ]\n },\n \"Chart\": {\n \"type\": \"object\",\n \"description\": \"Chart content. The chart object keeps chart-specific fields together so slides and regions do not expose loose chart fields.\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"data\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"Chart type id. Resolves to the id of a chartTypes catalog record; renderers map that record through mappings.openxml and any renderer-specific mapping they understand.\",\n \"examples\": [\n \"bar\",\n \"column\",\n \"line\",\n \"pie\",\n \"donut\",\n \"doughnut\",\n \"area\",\n \"scatter\",\n \"radar\",\n \"waterfall\",\n \"funnel\",\n \"treemap\",\n \"combo\"\n ]\n },\n \"data\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/ChartData\"\n },\n {\n \"$ref\": \"#/$defs/ChartDataSource\"\n }\n ],\n \"description\": \"Chart data. Inline data uses a tabular columns/rows shape; renderers convert rows to chart series internally.\"\n }\n }\n },\n \"Table\": {\n \"type\": \"object\",\n \"description\": \"Table content. Columns are optional; rows are the only required field.\",\n \"additionalProperties\": false,\n \"required\": [\n \"rows\"\n ],\n \"properties\": {\n \"columns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional column labels rendered above table rows.\",\n \"examples\": [\n [\n \"Region\",\n \"Q3 Revenue\",\n \"Q4 Revenue\",\n \"YoY %\"\n ]\n ]\n },\n \"rows\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/TableCell\"\n }\n },\n \"description\": \"Two-dimensional table row data; each row aligns by index with columns when columns are supplied.\",\n \"examples\": [\n [\n [\n \"North America\",\n 12.4,\n 18.1,\n \"46%\"\n ],\n [\n \"EMEA\",\n 8.2,\n 11.5,\n \"40%\"\n ]\n ]\n ]\n }\n }\n },\n \"ChartData\": {\n \"type\": \"object\",\n \"description\": \"Inline tabular data driving a chart. The first column usually supplies category/x-axis labels; subsequent columns are plotted measures unless a chart type or renderer maps them differently.\",\n \"additionalProperties\": false,\n \"required\": [\n \"columns\",\n \"rows\"\n ],\n \"properties\": {\n \"columns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"description\": \"Ordered column labels for the chart data table.\",\n \"examples\": [\n [\n \"Quarter\",\n \"Revenue\"\n ],\n [\n \"Quarter\",\n \"Revenue\",\n \"Costs\"\n ]\n ]\n },\n \"rows\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/ChartDataCell\"\n }\n },\n \"minItems\": 1,\n \"description\": \"Tabular chart rows. Each row aligns by index with columns.\",\n \"examples\": [\n [\n [\n \"Q1\",\n 12\n ],\n [\n \"Q2\",\n 18\n ],\n [\n \"Q3\",\n 24\n ],\n [\n \"Q4\",\n 31\n ]\n ]\n ]\n }\n }\n },\n \"ChartDataSource\": {\n \"type\": \"object\",\n \"description\": \"Chart data sourced from an asset reference, URL, data URI, relative path, or local path such as CSV, TSV, JSON, or XLSX. The source is interpreted as a table; optional columns select or order fields from that table.\",\n \"additionalProperties\": false,\n \"required\": [\n \"src\"\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"description\": \"Data source. Use 'asset:<id>' to reference the top-level assets registry, or provide an HTTPS URL, data URI, relative path, or local filesystem path.\",\n \"examples\": [\n \"asset:revenue\",\n \"asset:pipeline-csv\",\n \"./data/revenue.csv\",\n \"https://cdn.acme.com/data/revenue.csv\"\n ]\n },\n \"sheet\": {\n \"type\": \"string\",\n \"description\": \"Optional sheet name or table name for spreadsheet-like assets.\",\n \"examples\": [\n \"Sheet1\",\n \"Revenue\"\n ]\n },\n \"range\": {\n \"type\": \"string\",\n \"description\": \"Optional A1-style range or engine-defined range selector for spreadsheet-like assets.\",\n \"examples\": [\n \"A1:D8\",\n \"Revenue!A1:D8\"\n ]\n },\n \"columns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional ordered columns or fields to read from the source. When omitted, renderers may use the source's own header row or schema.\",\n \"examples\": [\n [\n \"Quarter\",\n \"Revenue\"\n ],\n [\n \"Month\",\n \"Revenue\",\n \"Costs\"\n ]\n ]\n }\n }\n },\n \"ChartDataCell\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"A cell in inline chart data.\"\n },\n \"TableCell\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"A cell in table content.\"\n },\n \"Catalogs\": {\n \"type\": \"object\",\n \"description\": \"Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\\n\\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.\",\n \"properties\": {\n \"narratives\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of narrative templates. Records validate against https://openpresentation.org/schema/opf-narrative/v1. Default source: https://www.pptx.gallery/narratives.\"\n },\n \"themes\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of themes. Records validate against https://openpresentation.org/schema/opf-theme/v1. Default source: https://www.pptx.gallery/themes.\"\n },\n \"colorSchemes\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of color schemes. Records validate against https://openpresentation.org/schema/opf-color-scheme/v1. Default source: https://www.pptx.gallery/color-schemes.\"\n },\n \"fontSchemes\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of font schemes. Records validate against https://openpresentation.org/schema/opf-font-scheme/v1. Default source: https://www.pptx.gallery/font-schemes.\"\n },\n \"languages\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of languages. Records validate against https://openpresentation.org/schema/opf-language/v1. Default source: https://www.pptx.gallery/languages.\"\n },\n \"layouts\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of slide layouts. Records validate against https://openpresentation.org/schema/opf-layout/v1. Default source: https://www.pptx.gallery/layouts.\"\n },\n \"chartTypes\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of chart types. Records validate against https://openpresentation.org/schema/opf-chart-type/v1. Default source: https://www.pptx.gallery/chart-types.\"\n },\n \"tones\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of presentation tones. Records validate against https://openpresentation.org/schema/opf-tone/v1. Default source: https://www.pptx.gallery/tones. Referenced from tone.\"\n },\n \"purposes\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of presentation purposes. Records validate against https://openpresentation.org/schema/opf-purpose/v1. Default source: https://www.pptx.gallery/purposes. Referenced from purpose.\"\n },\n \"audiences\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of presentation audiences. Records validate against https://openpresentation.org/schema/opf-audience/v1. Default source: https://www.pptx.gallery/audiences. Referenced from audience.\"\n },\n \"socialPlatforms\": {\n \"$ref\": \"#/$defs/CatalogEntry\",\n \"description\": \"Catalog of social-media platforms. Records validate against https://openpresentation.org/schema/opf-social-platform/v1. Default source: https://www.pptx.gallery/social-platforms. Referenced via the property keys of any Socials object (Organization.socials, Speaker.socials).\"\n }\n }\n },\n \"CatalogEntry\": {\n \"type\": \"object\",\n \"description\": \"A catalog override for one record kind. 'source' replaces the default registry; 'records' adds inline records that take precedence over anything fetched from a source. Either or both may be provided; both omitted means the kind uses its default catalog.\",\n \"properties\": {\n \"source\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/CatalogSource\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/CatalogSource\"\n },\n \"minItems\": 1,\n \"description\": \"Ordered search path of sources. The engine tries each in order; first match wins. The default catalog for the kind is appended implicitly at the end.\"\n }\n ],\n \"description\": \"Single source or an ordered search path of sources. When omitted, the engine falls back to https://www.pptx.gallery/<kind>.\"\n },\n \"records\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n },\n \"description\": \"Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.\"\n }\n }\n },\n \"CatalogSource\": {\n \"type\": \"string\",\n \"description\": \"Catalog source location. Accepts:\\n- A bare URL pointing at a catalog directory (e.g. 'https://acme.com/decks/narratives'); record ids resolve to '<base>/<id>.json'.\\n- A URL pointing at an index file (e.g. 'https://acme.com/decks/narratives/index.json'); records are resolved relative to the index file's directory and the index entries describe what's available.\\n- A package reference of the form 'pkg:<package>[/<subpath>]'; resolved through a locally-installed package on the engine's package path.\",\n \"examples\": [\n \"https://www.pptx.gallery/narratives\",\n \"https://acme.com/decks/narratives/index.json\",\n \"pkg:@acme/decks/narratives\",\n \"pkg:pptx-gallery\"\n ]\n }\n }\n} as const satisfies JsonSchema;\n\nexport const audience = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"title\": \"Audience\",\n \"description\": \"Schema for audience records in the pptx.gallery library. Each record names an audience archetype (e.g. 'executives', 'engineering-team', 'investors') and carries seniority, technical-fluency, decision-power, and attention-budget hints used by AI-driven generation. Audiences are referenced from OPF documents via audience; the engine resolves the reference against catalogs.audiences (inline) → catalogs.audiences.source → the default catalog at https://www.pptx.gallery/audiences. The audience field also accepts free-form strings; this catalog is for engine-aware audience archetypes that carry generation hints.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-audience/v1\",\n \"description\": \"Identifies this record as an audience in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this audience via audience. Lowercase kebab-case.\",\n \"examples\": [\n \"executives\",\n \"board\",\n \"engineering-team\",\n \"investors\",\n \"customers\",\n \"sales-team\",\n \"marketing-team\",\n \"all-hands\",\n \"candidates\",\n \"regulators\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable audience name shown in pickers.\",\n \"examples\": [\n \"Executives\",\n \"Board of Directors\",\n \"Engineering Team\",\n \"Investors\",\n \"Customers\",\n \"Sales Team\",\n \"Marketing Team\",\n \"All Hands\",\n \"Candidates\",\n \"Regulators\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the audience — who they are and what they care about.\",\n \"examples\": [\n \"Senior leaders who need the recommendation up front, the evidence behind it, and the ask.\",\n \"Practitioners building the system; they want depth, mechanism, and tradeoffs.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the audience archetype and how to address them.\",\n \"examples\": [\n \"Executives are time-poor and decision-oriented. Lead with the recommendation, support it with three claims and one number per claim, and end with a clear ask. Avoid drilling into mechanisms unless invited; offer to follow up rather than including everything in the deck.\"\n ]\n },\n \"seniority\": {\n \"type\": \"string\",\n \"enum\": [\n \"ic\",\n \"manager\",\n \"director\",\n \"vp\",\n \"c-suite\",\n \"mixed\"\n ],\n \"description\": \"Typical seniority level of the audience. Engines use this as a hint for default depth and pacing.\"\n },\n \"technicalFluency\": {\n \"type\": \"string\",\n \"enum\": [\n \"low\",\n \"medium\",\n \"high\",\n \"mixed\"\n ],\n \"description\": \"Typical technical fluency of the audience. AI generation uses this to decide whether to expand or assume technical terminology.\"\n },\n \"decisionPower\": {\n \"type\": \"string\",\n \"enum\": [\n \"informational\",\n \"advisory\",\n \"decision-maker\"\n ],\n \"description\": \"Whether the audience is expected to be informed, to advise, or to actually decide. Shapes the strength of the closing ask.\"\n },\n \"attentionBudgetMinutes\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0,\n \"description\": \"Realistic upper bound on this audience's focused attention for a single presentation, in minutes. Used as a hint when comparing against duration and the resolved narrative's durationRange.\"\n },\n \"recommendedNarratives\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: narrative-catalog ids that work well for this audience. Used by picker UIs to suggest narratives once an audience is chosen. Validators warn on unknown ids; never error.\",\n \"examples\": [\n [\n \"scqa\",\n \"board-meeting\",\n \"qbr\"\n ]\n ]\n },\n \"recommendedTones\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: tone-catalog ids that work well for this audience.\",\n \"examples\": [\n [\n \"formal\",\n \"authoritative\"\n ]\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"leadership\",\n \"external\"\n ],\n [\n \"internal\",\n \"engineering\"\n ],\n [\n \"external\",\n \"customer\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG).\"\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\"\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\"\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const purpose = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"title\": \"Purpose\",\n \"description\": \"Schema for purpose records in the pptx.gallery library. Each record names a presentation objective such as informing, aligning, persuading, driving a decision, or selling. Purposes are referenced from OPF documents via purpose; the engine resolves the reference against catalogs.purposes (inline) → catalogs.purposes.source → the default catalog at https://www.pptx.gallery/purposes. The purpose field also accepts free-form strings and inline Purpose objects.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-purpose/v1\",\n \"description\": \"Identifies this record as a purpose in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this purpose via purpose. Lowercase kebab-case.\",\n \"examples\": [\n \"inform\",\n \"decide\",\n \"align\",\n \"persuade\",\n \"educate\",\n \"report\",\n \"pitch\",\n \"sell\",\n \"plan\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable purpose name shown in pickers.\",\n \"examples\": [\n \"Inform\",\n \"Drive a Decision\",\n \"Align\",\n \"Persuade\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the purpose — what this deck is trying to accomplish.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing when to use this purpose and how it should shape a deck.\"\n },\n \"outcome\": {\n \"type\": \"string\",\n \"description\": \"Desired audience outcome after the presentation.\",\n \"examples\": [\n \"Approve the recommendation\",\n \"Understand the status\",\n \"Adopt the plan\"\n ]\n },\n \"successCriteria\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Observable signals that the deck accomplished this purpose.\"\n },\n \"recommendedNarratives\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: narrative-catalog ids that work well for this purpose.\"\n },\n \"recommendedTones\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: tone-catalog ids that work well for this purpose.\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\"\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG).\"\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\"\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\"\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const tone = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"title\": \"Tone\",\n \"description\": \"Schema for tone records in the pptx.gallery library. Each record names a presentation tone (e.g. 'formal', 'casual', 'inspirational') and carries voice cues, anti-patterns, and sample phrases that AI-driven generation uses to shape output. Tones are referenced from OPF documents via tone; the engine resolves the reference against catalogs.tones (inline) → catalogs.tones.source → the default catalog at https://www.pptx.gallery/tones.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-tone/v1\",\n \"description\": \"Identifies this record as a tone in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this tone via tone. Lowercase kebab-case.\",\n \"examples\": [\n \"formal\",\n \"casual\",\n \"inspirational\",\n \"technical\",\n \"persuasive\",\n \"authoritative\",\n \"conversational\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable tone name shown in pickers.\",\n \"examples\": [\n \"Formal\",\n \"Casual\",\n \"Inspirational\",\n \"Technical\",\n \"Persuasive\",\n \"Authoritative\",\n \"Conversational\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the tone — when to reach for it.\",\n \"examples\": [\n \"Polished, restrained voice for board, investor, and regulator audiences.\",\n \"Warm, plain-spoken voice for internal updates and customer storytelling.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the tone and the kinds of decks it suits.\",\n \"examples\": [\n \"Authoritative without being cold. Use third-person constructions, full sentences, and concrete numbers. Avoid hedges and humor that depend on shared in-jokes; rely on clarity and precision to land.\"\n ]\n },\n \"voiceCues\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Short directives that shape AI generation toward this tone. Phrased as imperatives, e.g. 'use second-person', 'favor short sentences', 'lead with the recommendation'.\",\n \"examples\": [\n [\n \"Use third person.\",\n \"Lead with the recommendation, then evidence.\",\n \"Quote concrete numbers; avoid round-tripping ranges.\"\n ]\n ]\n },\n \"avoid\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Anti-patterns that AI generation should not produce when this tone is active.\",\n \"examples\": [\n [\n \"Slang, idioms, or in-jokes.\",\n \"Hedging language ('maybe', 'sort of', 'I think').\",\n \"Marketing superlatives ('world-class', 'best-in-class').\"\n ]\n ]\n },\n \"samplePhrases\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Short example phrases that exemplify this tone. Used by picker UIs and as few-shot examples for AI generation.\",\n \"examples\": [\n [\n \"Q4 revenue grew 18% year over year, led by enterprise expansion.\",\n \"We recommend approving the Series B raise at $30M.\",\n \"Net retention was 124%; gross retention was 96%.\"\n ]\n ]\n },\n \"recommendedNarratives\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Soft cross-link: narrative-catalog ids this tone pairs well with. Used by picker UIs to suggest narratives once a tone is chosen. Validators warn on unknown ids; never error.\",\n \"examples\": [\n [\n \"board-meeting\",\n \"qbr\",\n \"scqa\"\n ]\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"business\",\n \"executive\"\n ],\n [\n \"internal\",\n \"warm\"\n ],\n [\n \"motivational\",\n \"keynote\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG).\"\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\"\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\"\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const theme = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-theme/v1\",\n \"title\": \"Theme\",\n \"description\": \"Schema for theme records in the pptx.gallery library. Each theme is a small, named bundle that pairs a color scheme, a font scheme, a default theme-controlled background, and a slide size. Themes are referenced from OPF documents via design.theme or design.theme.id; the engine resolves the reference against catalogs.themes (inline) → catalogs.themes.source → the default catalog at https://www.pptx.gallery/themes. Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over a resolved theme.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-theme/v1\",\n \"description\": \"Identifies this record as a theme in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this theme via design.theme. Lowercase kebab-case.\",\n \"examples\": [\n \"minimal\",\n \"classic\",\n \"dark\",\n \"bold\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable theme name shown in pickers.\",\n \"examples\": [\n \"Minimal\",\n \"Classic\",\n \"Dark\",\n \"Bold\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the theme — when to reach for it.\",\n \"examples\": [\n \"A clean, minimalist theme for professional, straightforward presentations.\",\n \"A rich dark-mode theme with bold contrast and modern style.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing what the theme looks and feels like and the kinds of decks it suits.\",\n \"examples\": [\n \"A clean, minimalistic theme with a focus on simplicity and readability. Ideal for professional, straightforward presentations.\"\n ]\n },\n \"colorScheme\": {\n \"type\": \"string\",\n \"description\": \"Catalog reference to the theme's default color scheme — resolved against catalogs.colorSchemes the same way design.colorScheme or design.colorScheme.id is. Accepts a bare id, HTTPS URL, or 'pkg:' reference.\",\n \"examples\": [\n \"cool-horizon\",\n \"boost\",\n \"burnt-orange\"\n ]\n },\n \"fontScheme\": {\n \"type\": \"string\",\n \"description\": \"Catalog reference to the theme's default font scheme — resolved against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id is. Accepts a bare id, HTTPS URL, or 'pkg:' reference.\",\n \"examples\": [\n \"aptos\",\n \"tenorite\",\n \"seaford\",\n \"impact\"\n ]\n },\n \"background\": {\n \"$ref\": \"#/$defs/ThemeBackground\"\n },\n \"dimensions\": {\n \"type\": \"string\",\n \"enum\": [\n \"16:9\",\n \"4:3\",\n \"16:10\",\n \"letter\",\n \"a4\",\n \"widescreen\",\n \"standard\"\n ],\n \"description\": \"Default slide size for this theme. Accepts the same preset values as design.dimensions.preset.\",\n \"examples\": [\n \"16:9\",\n \"4:3\",\n \"16:10\",\n \"letter\",\n \"a4\",\n \"widescreen\",\n \"standard\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"minimal\",\n \"professional\"\n ],\n [\n \"bold\",\n \"high-impact\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.\",\n \"examples\": [\n \"https://www.pptx.gallery/themes/minimal.png\"\n ]\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\",\n \"examples\": [\n \"https://www.pptx.gallery/themes/minimal.thumbnail.png\"\n ]\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\",\n \"examples\": [\n \"https://www.pptx.gallery/themes/minimal.svg\"\n ]\n }\n }\n }\n },\n \"$defs\": {\n \"ThemeBackgroundSlot\": {\n \"type\": \"string\",\n \"description\": \"PowerPoint theme-controlled slide background slot from the active color scheme. These are slots, not assumptions about actual colors: light1 is usually white and dark1 is usually black by convention, but the color scheme controls the real values.\",\n \"enum\": [\n \"light1\",\n \"light2\",\n \"dark1\",\n \"dark2\"\n ]\n },\n \"ThemeBackground\": {\n \"type\": \"object\",\n \"description\": \"Theme-controlled PowerPoint slide background. The slot is resolved through the active color scheme and remains theme-aware.\",\n \"required\": [\n \"type\",\n \"slot\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"const\": \"theme\",\n \"description\": \"Theme-controlled background fill.\"\n },\n \"slot\": {\n \"$ref\": \"#/$defs/ThemeBackgroundSlot\"\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const layout = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"title\": \"Slide Layout\",\n \"description\": \"Schema for slide-layout records in the pptx.gallery library. Each record describes a semantic slide layout — what regions it exposes and what content kinds those regions are intended to hold. Layouts are referenced from OPF documents via Slide.layout; the engine resolves the reference against catalogs.layouts (inline) → catalogs.layouts.source → the default catalog at https://www.pptx.gallery/layouts. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-layout/v1\",\n \"description\": \"Identifies this record as a slide layout in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this layout via Slide.layout. Lowercase kebab-case.\",\n \"examples\": [\n \"title\",\n \"title-subtitle\",\n \"chart-1x\",\n \"image-bleed\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable layout name shown in layout pickers.\",\n \"examples\": [\n \"Title\",\n \"Title Subtitle\",\n \"Chart 1x\",\n \"Image Bleed\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the layout — when to reach for it.\",\n \"examples\": [\n \"Slide title aligned left over a single content area — flexible workhorse layout.\",\n \"Title plus a single chart on the left and supporting copy on the right.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the layout structure and ideal use cases.\",\n \"examples\": [\n \"Two equal-width columns under a left-aligned slide title. Use when comparing two ideas, before/after pairs, or paired text + image content.\"\n ]\n },\n \"contentType\": {\n \"type\": \"string\",\n \"enum\": [\n \"Title\",\n \"Text\",\n \"List\",\n \"Image\",\n \"Number\",\n \"Chart\"\n ],\n \"description\": \"Primary kind of content the layout holds. Drives pickers and AI placement decisions.\"\n },\n \"contentMultiple\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"1x\",\n \"2x\",\n \"3x\",\n \"4x\",\n \"5x\",\n \"6x\"\n ],\n \"description\": \"How many parallel content blocks the layout exposes ('2x' = two-column, '3x' = three-up, etc.).\"\n },\n \"contentAlignment\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"Left\",\n \"Center\"\n ],\n \"description\": \"Default horizontal alignment of the content area.\"\n },\n \"contentBox\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the content area is rendered inside a visible box / card.\",\n \"examples\": [\n false,\n true\n ]\n },\n \"contentTypeChartPrimary\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"Top\",\n \"Bottom\",\n \"Left\",\n \"Right\"\n ],\n \"description\": \"For chart layouts, where the primary chart sits relative to the rest of the content.\"\n },\n \"contentTypeImageFill\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"Crop\",\n \"Fit\"\n ],\n \"description\": \"For image layouts, how the image fills its slot.\"\n },\n \"contentTypeListBullet\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"Character\",\n \"Image\"\n ],\n \"description\": \"For list layouts, how bullets are rendered.\"\n },\n \"contentTypeListHeading\": {\n \"type\": \"boolean\",\n \"description\": \"For list layouts, whether each list item carries a heading.\",\n \"examples\": [\n false,\n true\n ]\n },\n \"slideTag\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the layout includes a small slide-level tag / label region above or near the title.\",\n \"examples\": [\n false,\n true\n ]\n },\n \"slideTitle\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the layout includes a slide title region.\",\n \"examples\": [\n true,\n false\n ]\n },\n \"slideSubtitle\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the layout includes a slide-level subtitle or supporting-description region. When placeholders is present, this is true exactly when the layout exposes a placeholder with type 'subtitle'.\",\n \"examples\": [\n false,\n true\n ]\n },\n \"slideTitleAlignment\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"Left\",\n \"Center\"\n ],\n \"description\": \"Horizontal alignment of the slide title region.\"\n },\n \"slideImage\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the layout includes a dedicated slide-level image region (separate from any content image).\",\n \"examples\": [\n false,\n true\n ]\n },\n \"slideImageAlignment\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"Top\",\n \"Bottom\",\n \"Left\",\n \"Right\",\n \"Background\"\n ],\n \"description\": \"Where the slide-level image sits relative to the content.\"\n },\n \"slideLayoutDirection\": {\n \"type\": \"string\",\n \"enum\": [\n \"None\",\n \"Horizontal\",\n \"Vertical\"\n ],\n \"description\": \"Axis along which the layout's primary regions are arranged.\"\n },\n \"placeholders\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Placeholder\"\n },\n \"description\": \"Ordered regions the layout exposes. The engine fills 'title', 'subtitle', and 'tag' placeholders from Slide.title, Slide.subtitle, and Slide.tag. Other placeholders are content-kind hints for renderers and pickers. Slide content itself lives either in root payload fields or promoted region keys on Slide. Chrome — slide number, footer, date — is not included here; it is owned by Design.header / Design.footer.\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"title\",\n \"minimal\"\n ],\n [\n \"chart\",\n \"kpi\"\n ],\n [\n \"two-column\",\n \"comparison\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.\",\n \"examples\": [\n \"https://www.pptx.gallery/layouts/title-left.png\"\n ]\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\",\n \"examples\": [\n \"https://www.pptx.gallery/layouts/title-left.thumbnail.png\"\n ]\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\",\n \"examples\": [\n \"https://www.pptx.gallery/layouts/title-left.svg\"\n ]\n }\n }\n }\n },\n \"$defs\": {\n \"Placeholder\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"description\": \"A single region inside a slide layout. Title, subtitle, and tag placeholders bind to the corresponding Slide fields; other placeholders describe the intended content kind for that region. The array order in the surrounding 'placeholders' field preserves layout region order.\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"title\",\n \"subtitle\",\n \"tag\",\n \"text\",\n \"list\",\n \"chart\",\n \"picture\",\n \"table\",\n \"media\",\n \"diagram\",\n \"code\"\n ],\n \"description\": \"OPF placeholder kind. 'text' and 'list' are flexible textual content regions. The named kinds describe a specific content role used by pickers, AI generation, and engine defaulting.\"\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const chartType = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"title\": \"Chart Type\",\n \"description\": \"Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\",\n \"mappings\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-chart-type/v1\",\n \"description\": \"Identifies this record as a chart type in the open presentation catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this chart type. Lowercase kebab-case. Chart type ids may start with a digit (e.g., '100pct-stacked-column', '3d-column') to mirror conventional chart naming.\",\n \"examples\": [\n \"column\",\n \"clustered-column\",\n \"stacked-column\",\n \"doughnut\",\n \"bullet-column\",\n \"100pct-stacked-column\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Stable display/programmatic name for this chart type.\",\n \"examples\": [\n \"COLUMN\",\n \"CLUSTERED_COLUMN\",\n \"DOUGHNUT\",\n \"BULLET_COLUMN\"\n ]\n },\n \"label\": {\n \"type\": \"string\",\n \"description\": \"Human-readable label shown in chart pickers.\",\n \"examples\": [\n \"Column\",\n \"Clustered Column\",\n \"Doughnut\",\n \"Bullet Column\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning: when to reach for this chart variant.\",\n \"examples\": [\n \"Single-series vertical column chart for comparing values across categories.\",\n \"Bullet chart that benchmarks one value against ranked threshold bands.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the chart and ideal use cases.\",\n \"examples\": [\n \"Use a clustered column when you want to compare a small number of series across the same categories — e.g., revenue by quarter for two product lines. Best with 2–4 series and ≤12 categories.\"\n ]\n },\n \"mappings\": {\n \"$ref\": \"#/$defs/ChartTypeMappings\",\n \"description\": \"Canonical and optional renderer-specific mappings used by engines to render this chart type.\"\n },\n \"group\": {\n \"type\": \"string\",\n \"description\": \"Top-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.).\",\n \"examples\": [\n \"Column\",\n \"Bar\",\n \"Line\",\n \"Area\",\n \"Pie\",\n \"Radar\",\n \"Histogram\",\n \"XY (Scatter)\",\n \"Treemap\",\n \"Bullet\",\n \"Sparkline\",\n \"Map\",\n \"Other\"\n ]\n },\n \"groupSort\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Display ordering hint within the chart group.\",\n \"examples\": [\n 1,\n 2,\n 10\n ]\n },\n \"complexity\": {\n \"type\": \"string\",\n \"enum\": [\n \"simple\",\n \"calculated\",\n \"hierarchical\",\n \"normalized\"\n ],\n \"description\": \"Shape of the underlying data: a flat series ('simple'), one with engine-side calculation ('calculated'), parent-child rows ('hierarchical'), or pre-normalized rows ('normalized').\"\n },\n \"series\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Number of data series this chart type expects.\",\n \"examples\": [\n 1,\n 2,\n 3,\n 4\n ]\n },\n \"categories\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Number of category labels this chart type expects on the primary axis.\",\n \"examples\": [\n 4,\n 6,\n 8,\n 12\n ]\n },\n \"seriesGroups\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Number of series groups (axis bands) this chart type uses; >1 for combo or banded charts.\",\n \"examples\": [\n 1,\n 2,\n 3\n ]\n },\n \"useSecondaryCategories\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the chart type uses a secondary category axis.\",\n \"examples\": [\n false,\n true\n ]\n },\n \"workbookRange\": {\n \"type\": \"string\",\n \"description\": \"A1 reference to the source range in the embedded workbook.\",\n \"examples\": [\n \"Sheet1!$A$1:$I$2\",\n \"Sheet1!$A$1:$G$3\"\n ]\n },\n \"columns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Column header names of the embedded workbook, in left-to-right order.\",\n \"examples\": [\n [\n \"Series 1\",\n \"Value\"\n ],\n [\n \"Series 1\",\n \"Value 1\",\n \"Value 2\"\n ]\n ]\n },\n \"dataColumns\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/ChartDataColumn\"\n },\n \"description\": \"Per-column metadata describing the role and position of each column in the workbook source.\",\n \"examples\": [\n [\n {\n \"name\": \"Series 1\",\n \"role\": \"categoryLabel\",\n \"type\": \"string\",\n \"position\": \"row0_col0\"\n },\n {\n \"name\": \"Value 1\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row1_col0\"\n },\n {\n \"name\": \"Value 2\",\n \"role\": \"series\",\n \"type\": \"number\",\n \"position\": \"row2_col0\"\n }\n ]\n ]\n },\n \"helperColumns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional auxiliary column names used by calculated or banded charts (e.g., 'Excellent', 'Good', 'Fair', 'Poor' for a bullet chart).\",\n \"examples\": [\n [\n \"Excellent\",\n \"Good\",\n \"Fair\",\n \"Poor\"\n ],\n [\n \"Band\"\n ]\n ]\n },\n \"sampleData\": {\n \"$ref\": \"#/$defs/ChartSampleData\",\n \"description\": \"Inline sample dataset for previews and pickers.\",\n \"examples\": [\n {\n \"headers\": [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\"\n ],\n \"rows\": [\n [\n \"Value\",\n 93810,\n 24592,\n 13278,\n 46048\n ]\n ]\n }\n ]\n },\n \"slideNumber\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Source slide number in the original chart-gallery deck. Carried for traceability.\",\n \"examples\": [\n 1,\n 2,\n 48\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"column\",\n \"comparison\"\n ],\n [\n \"bullet\",\n \"kpi\",\n \"benchmark\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.\",\n \"examples\": [\n \"https://www.pptx.gallery/chart-types/clustered-column.png\"\n ]\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\",\n \"examples\": [\n \"https://www.pptx.gallery/chart-types/clustered-column.thumbnail.png\"\n ]\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\",\n \"examples\": [\n \"https://www.pptx.gallery/chart-types/clustered-column.svg\"\n ]\n }\n }\n }\n },\n \"$defs\": {\n \"ChartTypeMappings\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"openxml\"\n ],\n \"properties\": {\n \"openxml\": {\n \"$ref\": \"#/$defs/OpenXmlChartMapping\",\n \"description\": \"Canonical mapping to Open XML chart structures.\"\n },\n \"renderers\": {\n \"type\": \"object\",\n \"description\": \"Optional renderer-specific mappings. Keys are renderer ids; values are intentionally opaque to OPF.\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n }\n }\n },\n \"OpenXmlChartMapping\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"element\": {\n \"type\": \"string\",\n \"description\": \"Primary Open XML chart element or extension chart element, such as 'barChart', 'lineChart', 'pieChart', 'treemapChart', or 'waterfallChart'.\",\n \"examples\": [\n \"barChart\",\n \"lineChart\",\n \"pieChart\"\n ]\n },\n \"barDir\": {\n \"type\": \"string\",\n \"enum\": [\n \"bar\",\n \"col\"\n ],\n \"description\": \"Bar direction for Open XML barChart mappings.\"\n },\n \"grouping\": {\n \"type\": \"string\",\n \"enum\": [\n \"standard\",\n \"clustered\",\n \"stacked\",\n \"percentStacked\"\n ],\n \"description\": \"Open XML chart grouping value when the chart family supports grouping.\"\n },\n \"marker\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the chart type expects visible data markers.\"\n },\n \"radarStyle\": {\n \"type\": \"string\",\n \"enum\": [\n \"standard\",\n \"marker\",\n \"filled\"\n ],\n \"description\": \"Open XML radarStyle value for radarChart mappings.\"\n },\n \"scatterStyle\": {\n \"type\": \"string\",\n \"enum\": [\n \"line\",\n \"lineMarker\",\n \"marker\",\n \"smooth\",\n \"smoothMarker\"\n ],\n \"description\": \"Open XML scatterStyle value for scatterChart mappings.\"\n },\n \"composition\": {\n \"type\": \"string\",\n \"enum\": [\n \"single\",\n \"mixed\",\n \"extension\"\n ],\n \"description\": \"Whether the chart maps to one standard chart element, multiple combined chart elements, or an Open XML extension chart.\"\n },\n \"extension\": {\n \"type\": \"string\",\n \"description\": \"Optional Open XML extension namespace or element hint for extension charts.\",\n \"examples\": [\n \"cx:treemapChart\",\n \"cx:waterfallChart\"\n ]\n },\n \"series\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/OpenXmlChartMapping\"\n },\n \"description\": \"Open XML chart elements used by mixed/composite chart types.\"\n },\n \"notes\": {\n \"type\": \"string\",\n \"description\": \"Short implementation note for mappings that need renderer interpretation.\"\n }\n }\n },\n \"ChartDataColumn\": {\n \"type\": \"object\",\n \"description\": \"One column of the embedded chart workbook, annotated with its role and grid position.\",\n \"required\": [\n \"name\",\n \"role\",\n \"type\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Column header name (e.g. 'Series 1', 'Value', 'Level1', 'Level2').\",\n \"examples\": [\n \"Series 1\",\n \"Value\",\n \"Level1\",\n \"Level2\"\n ]\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"categoryLabel\",\n \"series\",\n \"helper\"\n ],\n \"description\": \"Role this column plays: a category label (axis tick), a series (plotted values), or a helper (calculated/auxiliary).\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\"\n ],\n \"description\": \"Cell value type for the column.\"\n },\n \"position\": {\n \"type\": \"string\",\n \"pattern\": \"^row[0-9]+_col[0-9]+$\",\n \"description\": \"Grid position of the column header in the source workbook, as 'row<N>_col<M>' (zero-indexed).\",\n \"examples\": [\n \"row0_col0\",\n \"row1_col0\",\n \"row2_col0\"\n ]\n }\n }\n },\n \"ChartSampleData\": {\n \"type\": \"object\",\n \"description\": \"Inline sample dataset for previews. Mirrors a small workbook with header row plus data rows.\",\n \"required\": [\n \"headers\",\n \"rows\"\n ],\n \"properties\": {\n \"headers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Header row labels. The first cell typically labels the series column; the rest are category labels.\",\n \"examples\": [\n [\n \"Series 1\",\n \"Q1 2024\",\n \"Q2 2024\",\n \"Q3 2024\",\n \"Q4 2024\",\n \"Q1 2025\",\n \"Q2 2025\",\n \"Q3 2025\",\n \"Q4 2025\"\n ]\n ]\n },\n \"rows\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": [\n \"string\",\n \"number\"\n ]\n }\n },\n \"description\": \"Two-dimensional sample data. Each row aligns by index with the headers — first cell is the row label, remaining cells are values.\",\n \"examples\": [\n [\n [\n \"Value\",\n 93810,\n 24592,\n 13278,\n 46048,\n 42098,\n 39256,\n 28289,\n 23434\n ]\n ],\n [\n [\n \"Value 1\",\n 98696,\n 81482,\n 21395,\n 87397\n ],\n [\n \"Value 2\",\n 38657,\n 40495,\n 76237,\n 88907\n ]\n ]\n ]\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const narrative = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-narrative/v1\",\n \"title\": \"Narrative Template\",\n \"description\": \"Schema for narrative template files in the openpresentation.org catalog. Each template describes a named story arc (e.g. 'problem-solution', 'scqa') as an ordered list of beats. Templates are referenced from OPF documents via narrative — either as a bare id string (e.g. 'classic-story') or as an inline object whose shape matches this schema (sans '$schema').\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\",\n \"beats\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-narrative/v1\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this template, e.g. 'problem-solution'. Lowercase kebab-case.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable template name, e.g. 'Problem → Solution'.\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence description of when and why to use this narrative.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the narrative arc and ideal use cases. Used by AI-driven generation to seed deck-level direction.\",\n \"examples\": [\n \"Open with the cost of slow agentic workflows, contrast with what becomes possible at sub-second latency, then walk through our architecture and benchmark results, ending with a concrete adoption ask.\"\n ]\n },\n \"audienceFit\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Audiences this narrative works well for, e.g. ['executives', 'investors', 'customers'].\"\n },\n \"durationRange\": {\n \"type\": \"object\",\n \"description\": \"Typical talk-length window this narrative suits.\",\n \"properties\": {\n \"minMinutes\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maxMinutes\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search, e.g. ['business', 'pitch', 'internal'].\"\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.\",\n \"examples\": [\n \"https://www.pptx.gallery/narratives/classic-story.png\"\n ]\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\",\n \"examples\": [\n \"https://www.pptx.gallery/narratives/classic-story.thumbnail.png\"\n ]\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\",\n \"examples\": [\n \"https://www.pptx.gallery/narratives/classic-story.svg\"\n ]\n }\n }\n },\n \"beats\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"$ref\": \"#/$defs/Beat\"\n },\n \"description\": \"Ordered list of beats that make up the narrative arc.\"\n }\n },\n \"$defs\": {\n \"Beat\": {\n \"type\": \"object\",\n \"description\": \"A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose. Mirrors the NarrativeBeat definition in opf.schema.json so library entries and inline OPF beats are interchangeable.\",\n \"required\": [\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by Slide.beat to reference this beat. Lowercase kebab-case.\",\n \"examples\": [\n \"opening\",\n \"problem\",\n \"evidence\",\n \"ask\",\n \"next-steps\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable beat name, e.g. 'The Problem'.\",\n \"examples\": [\n \"Opening\",\n \"The Problem\",\n \"Why Now\",\n \"The Ask\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Curator-written prose that explains what this beat should accomplish.\",\n \"examples\": [\n \"Quantify the pain customers feel today, with one striking stat the audience can repeat afterward.\"\n ]\n },\n \"instructions\": {\n \"type\": \"string\",\n \"description\": \"Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.\",\n \"examples\": [\n \"Capture audience attention\",\n \"Introduce problem\",\n \"Detail implementation\",\n \"Inspire & conclude\"\n ]\n },\n \"slideCount\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Optional explicit slide count for this beat. Defaults to 1 when omitted; values >1 are reserved for beats that intentionally span multiple slides. Prefer decomposing a heavy beat into multiple beats over setting a high slideCount. The validator emits a warning if the deck's actual count differs significantly.\",\n \"examples\": [\n 1,\n 2,\n 3\n ]\n },\n \"slideType\": {\n \"type\": \"string\",\n \"enum\": [\n \"text\",\n \"list\",\n \"image\",\n \"shape\",\n \"chart\",\n \"table\",\n \"video\",\n \"code\",\n \"metric\",\n \"quote\",\n \"timeline\"\n ],\n \"description\": \"Default content kind for the beat's slide. Mirrors ContentPayload.type and helps engines choose a sensible layout when only the beat is specified.\"\n },\n \"layoutHint\": {\n \"type\": \"string\",\n \"description\": \"Suggested layout id for the beat's opening slide, e.g. 'section-divider', 'title-slide', 'text-left'. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.\",\n \"examples\": [\n \"section-divider\",\n \"title-slide\",\n \"title-left\",\n \"two-column\",\n \"text-left\"\n ]\n },\n \"thoughtCues\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional speaker or thinking cues attached to the beat. Surfaced in presenter notes.\",\n \"examples\": [\n [\n \"What pain is the audience feeling right now?\",\n \"Why hasn't anyone solved this yet?\"\n ]\n ]\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const socialPlatform = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"title\": \"Social Platform\",\n \"description\": \"Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-social-platform/v1\",\n \"description\": \"Identifies this record as a social-platform entry in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.\",\n \"examples\": [\n \"linkedin\",\n \"x\",\n \"github\",\n \"youtube\",\n \"instagram\",\n \"facebook\",\n \"tiktok\",\n \"threads\",\n \"mastodon\",\n \"bluesky\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable platform name shown in pickers and footers.\",\n \"examples\": [\n \"LinkedIn\",\n \"X\",\n \"GitHub\",\n \"YouTube\",\n \"Instagram\",\n \"Facebook\",\n \"TikTok\",\n \"Threads\",\n \"Mastodon\",\n \"Bluesky\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the platform — what it's used for and who's on it.\",\n \"examples\": [\n \"Professional social network for individuals and companies.\",\n \"Real-time microblog for news, opinions, and discussion.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the platform and any rendering conventions (e.g., handle prefixes, distributed instances).\",\n \"examples\": [\n \"LinkedIn distinguishes between member profiles ('/in/<handle>') and company pages ('/company/<handle>'). Renderers should pick the appropriate URL pattern based on whether the parent is an Organization or a Speaker.\"\n ]\n },\n \"baseUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.\",\n \"examples\": [\n \"https://linkedin.com\",\n \"https://x.com\",\n \"https://github.com\",\n \"https://youtube.com\"\n ]\n },\n \"profileUrlPattern\": {\n \"type\": \"string\",\n \"description\": \"URL pattern for individual member profiles. Use '{handle}' as the placeholder for the handle (with the prefix already stripped).\",\n \"examples\": [\n \"https://linkedin.com/in/{handle}\",\n \"https://x.com/{handle}\",\n \"https://github.com/{handle}\",\n \"https://youtube.com/@{handle}\"\n ]\n },\n \"companyUrlPattern\": {\n \"type\": \"string\",\n \"description\": \"Optional URL pattern for organization / company pages, when the platform distinguishes them from member profiles. Use '{handle}' as the placeholder.\",\n \"examples\": [\n \"https://linkedin.com/company/{handle}\",\n \"https://github.com/{handle}\",\n \"https://facebook.com/{handle}\"\n ]\n },\n \"handlePrefix\": {\n \"type\": \"string\",\n \"description\": \"Conventional prefix character displayed before the handle (e.g. '@' for X / Mastodon / Threads / TikTok). Empty string when no prefix is used. Renderers strip it before substituting into URL patterns.\",\n \"examples\": [\n \"@\",\n \"\"\n ]\n },\n \"handleExample\": {\n \"type\": \"string\",\n \"description\": \"Example handle in its conventional rendered form, used by picker UIs and validation hints.\",\n \"examples\": [\n \"alice-chen\",\n \"@alicechen\",\n \"alicechen\",\n \"alice.bsky.social\",\n \"@alice@hachyderm.io\"\n ]\n },\n \"brandColor\": {\n \"type\": \"string\",\n \"description\": \"Brand color (hex) used for branded icon chips, link styling, or section accents.\",\n \"examples\": [\n \"#0A66C2\",\n \"#000000\",\n \"#181717\",\n \"#FF0000\"\n ]\n },\n \"icon\": {\n \"type\": \"string\",\n \"description\": \"Default icon source. Accepts an HTTPS URL, data URI, relative path, or asset reference. Used as the fallback when a themed (Light/Dark) variant isn't set.\",\n \"examples\": [\n \"https://www.pptx.gallery/social-platforms/linkedin.svg\",\n \"./assets/social-platforms/linkedin.svg\",\n \"asset:social-linkedin\"\n ]\n },\n \"iconLight\": {\n \"type\": \"string\",\n \"description\": \"Light-colored icon variant intended for rendering on dark backgrounds.\",\n \"examples\": [\n \"https://www.pptx.gallery/social-platforms/linkedin-light.svg\",\n \"./assets/social-platforms/linkedin-light.svg\"\n ]\n },\n \"iconDark\": {\n \"type\": \"string\",\n \"description\": \"Dark-colored icon variant intended for rendering on light backgrounds.\",\n \"examples\": [\n \"https://www.pptx.gallery/social-platforms/linkedin-dark.svg\",\n \"./assets/social-platforms/linkedin-dark.svg\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"professional\",\n \"default\"\n ],\n [\n \"microblog\",\n \"news\"\n ],\n [\n \"developer\",\n \"code\"\n ],\n [\n \"video\"\n ],\n [\n \"decentralized\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG).\"\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\"\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\"\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const language = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"title\": \"Language\",\n \"description\": \"Schema for language records in the pptx.gallery library. Each record names a presentation language, carries a BCP-47 language tag, and pairs it with sensible default font schemes for PowerPoint and Google Slides output. Languages are referenced from OPF documents via language; the engine resolves the reference against catalogs.languages (inline) → catalogs.languages.source → the default catalog at https://www.pptx.gallery/languages. The presentation language field also accepts BCP-47 tags directly or inline Language objects for engine-aware language records that carry default-font hints.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\",\n \"bcp47\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-language/v1\",\n \"description\": \"Identifies this record as a language in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this language via language. Lowercase kebab-case.\",\n \"examples\": [\n \"english\",\n \"spanish\",\n \"japanese\",\n \"chinese-simplified\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable language name.\",\n \"examples\": [\n \"English\",\n \"Spanish\",\n \"Japanese\",\n \"Chinese (simplified)\"\n ]\n },\n \"code\": {\n \"type\": \"string\",\n \"description\": \"ISO 639-3 (or 639-2) three-letter language code. Carried for engines that prefer ISO codes.\",\n \"examples\": [\n \"ENG\",\n \"SPA\",\n \"FRA\",\n \"JPN\",\n \"CHI\"\n ]\n },\n \"bcp47\": {\n \"type\": \"string\",\n \"description\": \"BCP-47 language tag for this record. Use 'en-GB' for UK English; 'en-UK' is not a valid BCP-47 region form.\",\n \"examples\": [\n \"en\",\n \"en-US\",\n \"en-GB\",\n \"es-MX\",\n \"ja-JP\",\n \"zh-Hans\"\n ]\n },\n \"direction\": {\n \"type\": \"string\",\n \"enum\": [\n \"ltr\",\n \"rtl\"\n ],\n \"description\": \"Base text direction for the language.\",\n \"examples\": [\n \"ltr\",\n \"rtl\"\n ]\n },\n \"script\": {\n \"type\": \"string\",\n \"description\": \"ISO 15924 script code when the writing system should be explicit.\",\n \"examples\": [\n \"Latn\",\n \"Arab\",\n \"Cyrl\",\n \"Hans\",\n \"Hant\"\n ]\n },\n \"fontScheme\": {\n \"type\": \"string\",\n \"description\": \"Default font-scheme id for this language when targeting PowerPoint output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does.\",\n \"examples\": [\n \"aptos\",\n \"microsoft-yahei\",\n \"nirmala-ui\"\n ]\n },\n \"googleFontScheme\": {\n \"type\": \"string\",\n \"description\": \"Default font-scheme id for this language when targeting Google Slides output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does.\",\n \"examples\": [\n \"roboto\",\n \"noto-sans\",\n \"noto-sans-sc\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence note about coverage or font defaults.\",\n \"examples\": [\n \"English language preset using a Latin-script font scheme.\",\n \"Japanese language preset paired with a Microsoft YaHei East-Asian scheme.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the language record and any font-pairing rationale.\",\n \"examples\": [\n \"English (US) preset. Defaults to Aptos for PowerPoint output and Roboto for Google Slides output. Use this entry as a baseline; override fontScheme on individual decks when brand fonts differ.\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"latin\",\n \"default\"\n ],\n [\n \"east-asian\"\n ],\n [\n \"complex-script\",\n \"rtl\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.\",\n \"examples\": [\n \"https://www.pptx.gallery/languages/english.png\"\n ]\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\",\n \"examples\": [\n \"https://www.pptx.gallery/languages/english.thumbnail.png\"\n ]\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\",\n \"examples\": [\n \"https://www.pptx.gallery/languages/english.svg\"\n ]\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const colorScheme = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"title\": \"Color Scheme\",\n \"description\": \"Schema for color-scheme records in the pptx.gallery library. Each scheme is a named palette with the twelve PowerPoint color slots (six accents, two darks, two lights, plus hyperlink and followed-hyperlink), suitable for being mapped directly into OOXML theme XML. Color schemes are referenced from OPF documents via design.colorScheme or design.colorScheme.id; the engine resolves the reference against catalogs.colorSchemes (inline) -> catalogs.colorSchemes.source -> the default catalog at https://www.pptx.gallery/color-schemes. Slot overrides on design.colorScheme take precedence over the resolved scheme.\\n\\nThe slot fields here mirror the inline-override fields on the in-document ColorScheme type (in opf.schema.json), so library entries and inline OPF overrides are interchangeable.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-color-scheme/v1\",\n \"description\": \"Identifies this record as a color scheme in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this color scheme. Lowercase kebab-case.\",\n \"examples\": [\n \"cool-horizon\",\n \"boost\",\n \"burnt-orange\",\n \"forest-green\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable scheme name shown in pickers.\",\n \"examples\": [\n \"Cool Horizon\",\n \"Boost\",\n \"Burnt Orange\",\n \"Forest Green\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the palette — what mood it evokes and where to use it.\",\n \"examples\": [\n \"Cool blue-green palette tuned for B2B SaaS and finance decks.\",\n \"High-energy warm palette built around burnt-orange accents.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the palette and its intended use.\",\n \"examples\": [\n \"A balanced cool-toned scheme: a deep navy dark slot pairs with mid-saturation blues and a teal accent for charts and callouts. Works well on both light and dark backgrounds.\"\n ]\n },\n \"accent1\": {\n \"type\": \"string\",\n \"description\": \"Accent 1 color (hex). Mirrors the OOXML accent1 slot.\",\n \"examples\": [\n \"#2874A6\",\n \"#FD3223\",\n \"#F77F00\"\n ]\n },\n \"accent2\": {\n \"type\": \"string\",\n \"description\": \"Accent 2 color (hex). Mirrors the OOXML accent2 slot.\",\n \"examples\": [\n \"#1B4F72\",\n \"#0308DB\",\n \"#D62828\"\n ]\n },\n \"accent3\": {\n \"type\": \"string\",\n \"description\": \"Accent 3 color (hex). Mirrors the OOXML accent3 slot.\",\n \"examples\": [\n \"#5499C7\",\n \"#4F4955\",\n \"#003049\"\n ]\n },\n \"accent4\": {\n \"type\": \"string\",\n \"description\": \"Accent 4 color (hex). Mirrors the OOXML accent4 slot.\",\n \"examples\": [\n \"#7BDBB2\",\n \"#A1DB30\",\n \"#FCBF49\"\n ]\n },\n \"accent5\": {\n \"type\": \"string\",\n \"description\": \"Accent 5 color (hex). Mirrors the OOXML accent5 slot.\",\n \"examples\": [\n \"#3AC67A\",\n \"#0682FE\",\n \"#EAE2B7\"\n ]\n },\n \"accent6\": {\n \"type\": \"string\",\n \"description\": \"Accent 6 color (hex). Mirrors the OOXML accent6 slot.\",\n \"examples\": [\n \"#24A89E\",\n \"#FC03BE\",\n \"#BFBFBF\"\n ]\n },\n \"dark1\": {\n \"type\": \"string\",\n \"description\": \"Dark 1 color (hex). Typically the deepest neutral; OOXML dark1.\",\n \"examples\": [\n \"#000000\"\n ]\n },\n \"dark2\": {\n \"type\": \"string\",\n \"description\": \"Dark 2 color (hex). Secondary dark; OOXML dark2.\",\n \"examples\": [\n \"#011842\"\n ]\n },\n \"light1\": {\n \"type\": \"string\",\n \"description\": \"Light 1 color (hex). Typically the slide canvas; OOXML lt1.\",\n \"examples\": [\n \"#FFFFFF\"\n ]\n },\n \"light2\": {\n \"type\": \"string\",\n \"description\": \"Light 2 color (hex). Secondary light surface; OOXML lt2.\",\n \"examples\": [\n \"#F0F0F0\"\n ]\n },\n \"hyperlink\": {\n \"type\": \"string\",\n \"description\": \"Hyperlink color (hex). OOXML hlink.\",\n \"examples\": [\n \"#0563C1\"\n ]\n },\n \"followedHyperlink\": {\n \"type\": \"string\",\n \"description\": \"Followed-hyperlink color (hex). OOXML folHlink.\",\n \"examples\": [\n \"#954F72\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"corporate\",\n \"blue\",\n \"calm\"\n ],\n [\n \"bold\",\n \"warm\",\n \"high-energy\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.\",\n \"examples\": [\n \"https://www.pptx.gallery/color-schemes/cool-horizon.png\"\n ]\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\",\n \"examples\": [\n \"https://www.pptx.gallery/color-schemes/cool-horizon.thumbnail.png\"\n ]\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\",\n \"examples\": [\n \"https://www.pptx.gallery/color-schemes/cool-horizon.svg\"\n ]\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const fontScheme = {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"title\": \"Font Scheme\",\n \"description\": \"Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (PowerPoint or Google Slides) and a language family (Latin, East Asian, or Complex Script). Font schemes are referenced from OPF documents via design.fontScheme or design.fontScheme.id; the engine resolves the reference against catalogs.fontSchemes (inline) → catalogs.fontSchemes.source → the default catalog at https://www.pptx.gallery/font-schemes. Role overrides on design.fontScheme (heading, body, accent, code) take precedence over the resolved scheme.\",\n \"type\": \"object\",\n \"required\": [\n \"$schema\",\n \"id\",\n \"name\",\n \"major\",\n \"minor\"\n ],\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"const\": \"https://openpresentation.org/schema/opf-font-scheme/v1\",\n \"description\": \"Identifies this record as a font scheme in the openpresentation.org catalog.\"\n },\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9-]*$\",\n \"description\": \"Stable slug used by OPF documents to reference this font scheme. Lowercase kebab-case.\",\n \"examples\": [\n \"aptos\",\n \"tenorite\",\n \"seaford\",\n \"noto-sans\",\n \"microsoft-yahei\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Human-readable scheme name shown in pickers.\",\n \"examples\": [\n \"Aptos\",\n \"Tenorite\",\n \"Seaford\",\n \"Noto Sans\",\n \"Microsoft Yahei\"\n ]\n },\n \"major\": {\n \"type\": \"string\",\n \"description\": \"Heading (major) font family — mirrors the OOXML majorFont entry.\",\n \"examples\": [\n \"Aptos Display\",\n \"Calibri\",\n \"Microsoft YaHei\"\n ]\n },\n \"minor\": {\n \"type\": \"string\",\n \"description\": \"Body (minor) font family — mirrors the OOXML minorFont entry.\",\n \"examples\": [\n \"Aptos\",\n \"Calibri\",\n \"Microsoft YaHei\"\n ]\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"sans-serif\",\n \"serif\",\n \"monospace\"\n ],\n \"description\": \"High-level typographic class of the scheme.\"\n },\n \"app\": {\n \"type\": \"string\",\n \"enum\": [\n \"PowerPoint\",\n \"Google Slides\"\n ],\n \"description\": \"Target application this font pairing is intended for.\"\n },\n \"languageFamily\": {\n \"type\": \"string\",\n \"enum\": [\n \"latin\",\n \"ea\",\n \"cs\"\n ],\n \"description\": \"OOXML font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' for East Asian scripts, 'cs' for Complex Scripts.\"\n },\n \"languages\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional list of human-readable language names this scheme is curated for. Useful for picker UIs that group fonts by language coverage.\",\n \"examples\": [\n [\n \"Chinese (simplified)\",\n \"Chinese (traditional)\",\n \"Japanese\",\n \"Korean\"\n ]\n ]\n },\n \"textSample\": {\n \"type\": \"string\",\n \"description\": \"Short specimen string used by picker UIs to preview the scheme.\",\n \"examples\": [\n \"Smooth professional look\",\n \"这是用微软雅黑字体写的\"\n ]\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"One-sentence positioning of the font pairing.\",\n \"examples\": [\n \"PowerPoint-default sans-serif curated for general business decks.\",\n \"East-Asian sans-serif suitable for Chinese, Japanese, and Korean content.\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Longer prose describing the font scheme and where it shines.\",\n \"examples\": [\n \"Aptos is the default Microsoft 365 sans-serif. The major (display) cut adds optical weight for headings, and the minor (text) cut keeps body copy readable at smaller sizes.\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Free-form labels for filtering and search.\",\n \"examples\": [\n [\n \"latin\",\n \"sans-serif\",\n \"default\"\n ],\n [\n \"east-asian\",\n \"system\"\n ]\n ]\n },\n \"preview\": {\n \"type\": \"object\",\n \"description\": \"Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.\",\n \"properties\": {\n \"src\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.\",\n \"examples\": [\n \"https://www.pptx.gallery/font-schemes/aptos.png\"\n ]\n },\n \"thumbnailSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Smaller thumbnail preview suited to dense grid views.\",\n \"examples\": [\n \"https://www.pptx.gallery/font-schemes/aptos.thumbnail.png\"\n ]\n },\n \"vectorSrc\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"SVG / vector preview for crisp scaling at any size.\",\n \"examples\": [\n \"https://www.pptx.gallery/font-schemes/aptos.svg\"\n ]\n }\n }\n }\n }\n} as const satisfies JsonSchema;\n\nexport const schemas = {\n presentation,\n audience,\n purpose,\n tone,\n theme,\n layout,\n chartType,\n narrative,\n socialPlatform,\n language,\n colorScheme,\n fontScheme,\n} as const;\n\nexport const schemaNames = [\n \"presentation\",\n \"audience\",\n \"purpose\",\n \"tone\",\n \"theme\",\n \"layout\",\n \"chartType\",\n \"narrative\",\n \"socialPlatform\",\n \"language\",\n \"colorScheme\",\n \"fontScheme\"\n] as const;\n\nexport const schemaEntries = [\n { name: \"presentation\", file: \"schemas/opf.schema.json\", schema: presentation },\n { name: \"audience\", file: \"schemas/audience.schema.json\", schema: audience },\n { name: \"purpose\", file: \"schemas/purpose.schema.json\", schema: purpose },\n { name: \"tone\", file: \"schemas/tone.schema.json\", schema: tone },\n { name: \"theme\", file: \"schemas/theme.schema.json\", schema: theme },\n { name: \"layout\", file: \"schemas/layout.schema.json\", schema: layout },\n { name: \"chartType\", file: \"schemas/chart-type.schema.json\", schema: chartType },\n { name: \"narrative\", file: \"schemas/narrative.schema.json\", schema: narrative },\n { name: \"socialPlatform\", file: \"schemas/social-platform.schema.json\", schema: socialPlatform },\n { name: \"language\", file: \"schemas/language.schema.json\", schema: language },\n { name: \"colorScheme\", file: \"schemas/color-scheme.schema.json\", schema: colorScheme },\n { name: \"fontScheme\", file: \"schemas/font-scheme.schema.json\", schema: fontScheme },\n] as const;\n\nexport type SchemaName = keyof typeof schemas;\n","import Ajv2020, { type ErrorObject, type ValidateFunction } from \"ajv/dist/2020.js\";\nimport addFormats from \"ajv-formats\";\n\nimport { catalogSchemaNames, type CatalogKind } from \"./catalogs.js\";\nimport { catalogIds } from \"./generated/catalog-ids.js\";\nimport type { JsonSchema } from \"./json.js\";\nimport { schemas, type SchemaName } from \"./schemas.js\";\nimport type { Presentation } from \"./types.js\";\n\nexport interface ValidationIssue {\n path: string;\n message: string;\n keyword: string;\n schemaPath: string;\n params: Record<string, unknown>;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationIssue[];\n /** Advisory issues such as unknown catalog ids. Warnings never affect `valid`. */\n warnings: ValidationIssue[];\n schemaName?: SchemaName;\n catalogKind?: CatalogKind;\n}\n\nexport type SchemaOrKind = SchemaName | CatalogKind | JsonSchema;\n\nexport class OPFValidationError extends Error {\n readonly issues: ValidationIssue[];\n readonly result: ValidationResult;\n\n constructor(result: ValidationResult) {\n const first = result.errors[0];\n super(first ? `OPF validation failed at ${first.path}: ${first.message}` : \"OPF validation failed\");\n this.name = \"OPFValidationError\";\n this.issues = result.errors;\n this.result = result;\n }\n}\n\nconst schemaNameByCatalogKind = catalogSchemaNames as Record<CatalogKind, SchemaName>;\n\nlet ajv: Ajv2020 | undefined;\nconst dynamicSchemaCache = new WeakMap<JsonSchema, ValidateFunction>();\n\nconst promotedRegionKeys = [\n \"left\",\n \"center\",\n \"right\",\n \"left+center\",\n \"center+right\",\n \"left+center+right\",\n \"top\",\n \"middle\",\n \"bottom\",\n \"top+middle\",\n \"middle+bottom\",\n \"top+middle+bottom\",\n \"top:left\",\n \"top:center\",\n \"top:right\",\n \"top:left+center\",\n \"top:center+right\",\n \"top:left+center+right\",\n \"middle:left\",\n \"middle:center\",\n \"middle:right\",\n \"middle:left+center\",\n \"middle:center+right\",\n \"middle:left+center+right\",\n \"bottom:left\",\n \"bottom:center\",\n \"bottom:right\",\n \"bottom:left+center\",\n \"bottom:center+right\",\n \"bottom:left+center+right\",\n \"top+middle:left\",\n \"top+middle:center\",\n \"top+middle:right\",\n \"top+middle:left+center\",\n \"top+middle:center+right\",\n \"top+middle:left+center+right\",\n \"middle+bottom:left\",\n \"middle+bottom:center\",\n \"middle+bottom:right\",\n \"middle+bottom:left+center\",\n \"middle+bottom:center+right\",\n \"middle+bottom:left+center+right\",\n \"top+middle+bottom:left\",\n \"top+middle+bottom:center\",\n \"top+middle+bottom:right\",\n \"top+middle+bottom:left+center\",\n \"top+middle+bottom:center+right\",\n \"top+middle+bottom:left+center+right\",\n] as const;\n\nconst promotedRegionKeySet = new Set<string>(promotedRegionKeys);\n\nconst rootPayloadFields = [\n \"type\",\n \"text\",\n \"items\",\n \"bullets\",\n \"image\",\n \"video\",\n \"chart\",\n \"table\",\n \"code\",\n \"metric\",\n \"quote\",\n \"timeline\",\n \"blocks\",\n] as const;\n\ntype ContentKind =\n | \"text\"\n | \"list\"\n | \"image\"\n | \"chart\"\n | \"table\"\n | \"video\"\n | \"code\"\n | \"metric\"\n | \"quote\"\n | \"timeline\";\n\ninterface ContentKindSpec {\n fields: readonly string[];\n required: readonly string[];\n requireAny?: readonly string[];\n}\n\nconst contentKindSpecs: Record<ContentKind, ContentKindSpec> = {\n text: {\n fields: [\"text\", \"bullets\"],\n required: [],\n requireAny: [\"text\", \"bullets\"],\n },\n list: {\n fields: [\"items\"],\n required: [\"items\"],\n },\n image: {\n fields: [\"image\"],\n required: [\"image\"],\n },\n chart: {\n fields: [\"chart\"],\n required: [\"chart\"],\n },\n table: {\n fields: [\"table\"],\n required: [\"table\"],\n },\n video: {\n fields: [\"video\"],\n required: [\"video\"],\n },\n code: {\n fields: [\"code\"],\n required: [\"code\"],\n },\n metric: {\n fields: [\"metric\"],\n required: [\"metric\"],\n },\n quote: {\n fields: [\"quote\"],\n required: [\"quote\"],\n },\n timeline: {\n fields: [\"timeline\"],\n required: [\"timeline\"],\n },\n};\n\nconst columnSpans: Record<string, readonly number[]> = {\n left: [0],\n center: [1],\n right: [2],\n \"left+center\": [0, 1],\n \"center+right\": [1, 2],\n \"left+center+right\": [0, 1, 2],\n};\n\nconst rowSpans: Record<string, readonly number[]> = {\n top: [0],\n middle: [1],\n bottom: [2],\n \"top+middle\": [0, 1],\n \"middle+bottom\": [1, 2],\n \"top+middle+bottom\": [0, 1, 2],\n};\n\nfunction getAjv(): Ajv2020 {\n if (ajv) {\n return ajv;\n }\n\n const instance = new Ajv2020({\n allErrors: true,\n strict: false,\n allowUnionTypes: true,\n });\n addFormats(instance);\n\n for (const schema of Object.values(schemas)) {\n instance.addSchema(schema);\n }\n\n ajv = instance;\n return instance;\n}\n\nfunction isSchemaName(value: unknown): value is SchemaName {\n return typeof value === \"string\" && value in schemas;\n}\n\nfunction isCatalogKind(value: unknown): value is CatalogKind {\n return typeof value === \"string\" && value in schemaNameByCatalogKind;\n}\n\nfunction resolveValidator(schemaOrKind: SchemaOrKind): {\n validate: ValidateFunction;\n schemaName?: SchemaName;\n catalogKind?: CatalogKind;\n} {\n const instance = getAjv();\n\n if (isSchemaName(schemaOrKind)) {\n const schema = schemas[schemaOrKind];\n const validator = instance.getSchema(schema.$id as string) ?? instance.compile(schema);\n return { validate: validator, schemaName: schemaOrKind };\n }\n\n if (isCatalogKind(schemaOrKind)) {\n const schemaName = schemaNameByCatalogKind[schemaOrKind];\n const schema = schemas[schemaName];\n const validator = instance.getSchema(schema.$id as string) ?? instance.compile(schema);\n return { validate: validator, schemaName, catalogKind: schemaOrKind };\n }\n\n const cached = dynamicSchemaCache.get(schemaOrKind);\n if (cached) {\n return { validate: cached };\n }\n\n const validator = instance.compile(schemaOrKind);\n dynamicSchemaCache.set(schemaOrKind, validator);\n return { validate: validator };\n}\n\nfunction toIssue(error: ErrorObject): ValidationIssue {\n return {\n path: error.instancePath || \"/\",\n message: error.message ?? \"failed validation\",\n keyword: error.keyword,\n schemaPath: error.schemaPath,\n params: error.params as Record<string, unknown>,\n };\n}\n\nfunction semanticIssue(path: string, message: string, params: Record<string, unknown> = {}): ValidationIssue {\n return {\n path,\n message,\n keyword: \"opf\",\n schemaPath: \"#/x-opf-semantics\",\n params,\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction hasOwn(value: Record<string, unknown>, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction isEnUkTag(value: unknown): boolean {\n return typeof value === \"string\" && value.toLowerCase() === \"en-uk\";\n}\n\nfunction pathFor(parentPath: string, key: string): string {\n return parentPath === \"/\" ? `/${key}` : `${parentPath}/${key.replaceAll(\"~\", \"~0\").replaceAll(\"/\", \"~1\")}`;\n}\n\nfunction presentFields(value: Record<string, unknown>, fields: readonly string[]): string[] {\n return fields.filter((field) => hasOwn(value, field));\n}\n\nfunction isContentKind(value: unknown): value is ContentKind {\n return typeof value === \"string\" && value in contentKindSpecs;\n}\n\nfunction inferredKinds(value: Record<string, unknown>): ContentKind[] {\n const kinds: ContentKind[] = [];\n\n if (presentFields(value, contentKindSpecs.text.fields).length > 0) kinds.push(\"text\");\n if (hasOwn(value, \"items\")) kinds.push(\"list\");\n if (hasOwn(value, \"image\")) kinds.push(\"image\");\n if (hasOwn(value, \"video\")) kinds.push(\"video\");\n if (hasOwn(value, \"chart\")) kinds.push(\"chart\");\n if (hasOwn(value, \"table\")) kinds.push(\"table\");\n if (hasOwn(value, \"code\")) kinds.push(\"code\");\n if (hasOwn(value, \"metric\")) kinds.push(\"metric\");\n if (hasOwn(value, \"quote\")) kinds.push(\"quote\");\n if (hasOwn(value, \"timeline\")) kinds.push(\"timeline\");\n\n return kinds;\n}\n\nfunction isImplicitBlocksComposition(\n value: Record<string, unknown>,\n inferred: readonly ContentKind[],\n options: { allowBlocks?: boolean },\n): boolean {\n if (options.allowBlocks !== true || hasOwn(value, \"blocks\")) {\n return false;\n }\n\n return inferred.length > 1;\n}\n\nfunction validateContentPayload(\n value: Record<string, unknown>,\n path: string,\n options: { allowBlocks?: boolean } = {},\n): ValidationIssue[] {\n const issues: ValidationIssue[] = [];\n const explicitType = value.type;\n const payloadFields = presentFields(value, rootPayloadFields);\n const hasBlocks = options.allowBlocks === true && hasOwn(value, \"blocks\");\n\n if (explicitType !== undefined && !isContentKind(explicitType)) {\n return issues;\n }\n\n const kind = isContentKind(explicitType) ? explicitType : undefined;\n const inferred = kind ? [kind] : inferredKinds(value);\n\n if (!kind && inferred.length === 0) {\n if (!hasBlocks && (payloadFields.length > 0 || path !== \"/\")) {\n issues.push(semanticIssue(path, \"content payload must include concrete content fields\", {\n fields: payloadFields,\n }));\n }\n if (hasBlocks && Array.isArray(value.blocks)) {\n value.blocks.forEach((block, index) => {\n if (isRecord(block)) {\n issues.push(...validateContentPayload(block, `${pathFor(path, \"blocks\")}/${index}`));\n }\n });\n }\n return issues;\n }\n\n if (!kind && inferred.length > 1) {\n if (isImplicitBlocksComposition(value, inferred, options)) {\n return issues;\n }\n\n issues.push(semanticIssue(path, \"content payload mixes fields from incompatible content types\", {\n inferredTypes: inferred,\n }));\n return issues;\n }\n\n const resolvedKind = inferred[0];\n if (!resolvedKind) {\n return issues;\n }\n if (hasBlocks) {\n issues.push(semanticIssue(path, \"blocks cannot be mixed with root content payload fields\", {\n fields: payloadFields.filter((field) => field !== \"blocks\"),\n }));\n }\n const spec = contentKindSpecs[resolvedKind];\n const allowedFields = new Set<string>([\n \"type\",\n ...spec.fields,\n ]);\n\n for (const required of spec.required) {\n if (!hasOwn(value, required)) {\n issues.push(semanticIssue(path, `content payload type '${resolvedKind}' requires '${required}'`, {\n type: resolvedKind,\n required,\n }));\n }\n }\n\n if (spec.requireAny && presentFields(value, spec.requireAny).length === 0) {\n issues.push(semanticIssue(path, `content payload type '${resolvedKind}' requires one of: ${spec.requireAny.join(\", \")}`, {\n type: resolvedKind,\n requiredAny: spec.requireAny,\n }));\n }\n\n const incompatible = payloadFields.filter((field) => !allowedFields.has(field));\n if (incompatible.length > 0) {\n issues.push(semanticIssue(path, `content payload type '${resolvedKind}' cannot include incompatible fields: ${incompatible.join(\", \")}`, {\n type: resolvedKind,\n incompatible,\n }));\n }\n\n if (options.allowBlocks && Array.isArray(value.blocks)) {\n value.blocks.forEach((block, index) => {\n if (isRecord(block)) {\n issues.push(...validateContentPayload(block, `${pathFor(path, \"blocks\")}/${index}`));\n }\n });\n }\n\n return issues;\n}\n\ninterface SlideRegion {\n rows: readonly number[];\n columns: readonly number[];\n}\n\nfunction slideRegion(key: string): SlideRegion | undefined {\n if (key.includes(\":\")) {\n const [rowPart, columnPart] = key.split(\":\");\n if (!rowPart || !columnPart) return undefined;\n const rows = rowSpans[rowPart];\n const columns = columnSpans[columnPart];\n return rows && columns ? { rows, columns } : undefined;\n }\n\n if (key in columnSpans) {\n const columns = columnSpans[key];\n return columns ? { rows: [0, 1, 2], columns } : undefined;\n }\n\n if (key in rowSpans) {\n const rows = rowSpans[key];\n return rows ? { rows, columns: [0, 1, 2] } : undefined;\n }\n\n return undefined;\n}\n\nfunction intersects(left: readonly number[], right: readonly number[]): boolean {\n return left.some((value) => right.includes(value));\n}\n\nfunction regionsOverlap(left: SlideRegion, right: SlideRegion): boolean {\n return intersects(left.rows, right.rows) && intersects(left.columns, right.columns);\n}\n\nfunction validateSlideRegions(slide: Record<string, unknown>, slidePath: string): ValidationIssue[] {\n const issues: ValidationIssue[] = [];\n const regionKeys = Object.keys(slide).filter((key) => promotedRegionKeySet.has(key));\n const rootFields = presentFields(slide, rootPayloadFields);\n\n if (regionKeys.length > 0 && rootFields.length > 0) {\n issues.push(semanticIssue(slidePath, \"root content payload fields cannot be mixed with promoted region keys\", {\n rootFields,\n regionKeys,\n }));\n }\n\n if (regionKeys.length === 0 && rootFields.length > 0) {\n issues.push(...validateContentPayload(slide, slidePath, { allowBlocks: true }));\n }\n\n for (const key of regionKeys) {\n const value = slide[key];\n if (isRecord(value)) {\n issues.push(...validateContentPayload(value, pathFor(slidePath, key)));\n }\n }\n\n for (let leftIndex = 0; leftIndex < regionKeys.length; leftIndex += 1) {\n const leftKey = regionKeys[leftIndex];\n if (!leftKey) continue;\n const leftRegion = slideRegion(leftKey);\n if (!leftRegion) continue;\n\n for (let rightIndex = leftIndex + 1; rightIndex < regionKeys.length; rightIndex += 1) {\n const rightKey = regionKeys[rightIndex];\n if (!rightKey) continue;\n const rightRegion = slideRegion(rightKey);\n if (!rightRegion) continue;\n\n if (regionsOverlap(leftRegion, rightRegion)) {\n issues.push(semanticIssue(slidePath, `promoted region keys '${leftKey}' and '${rightKey}' overlap`, {\n regionKeys: [leftKey, rightKey],\n }));\n }\n }\n }\n\n return issues;\n}\n\nfunction validatePresentationSemantics(value: unknown): ValidationIssue[] {\n if (!isRecord(value) || !Array.isArray(value.slides)) {\n return [];\n }\n\n const issues: ValidationIssue[] = [];\n\n if (isEnUkTag(value.language)) {\n issues.push(semanticIssue(\"/language\", \"Use 'en-GB' for UK English; 'en-UK' is not a valid BCP-47 region tag\", {\n replacement: \"en-GB\",\n }));\n } else if (isRecord(value.language) && isEnUkTag(value.language.bcp47)) {\n issues.push(semanticIssue(\"/language/bcp47\", \"Use 'en-GB' for UK English; 'en-UK' is not a valid BCP-47 region tag\", {\n replacement: \"en-GB\",\n }));\n }\n\n value.slides.forEach((slide, index) => {\n if (isRecord(slide)) {\n issues.push(...validateSlideRegions(slide, `/slides/${index}`));\n }\n });\n\n return issues;\n}\n\nconst bareIdPattern = /^[a-z0-9][a-z0-9-]*$/;\n\ninterface CatalogReferenceContext {\n document: Record<string, unknown>;\n}\n\nfunction inlineCatalogEntry(context: CatalogReferenceContext, kind: CatalogKind): Record<string, unknown> | undefined {\n const catalogsField = context.document.catalogs;\n if (!isRecord(catalogsField)) {\n return undefined;\n }\n const entry = catalogsField[kind];\n return isRecord(entry) ? entry : undefined;\n}\n\nfunction unknownIdWarning(\n kind: CatalogKind,\n value: unknown,\n path: string,\n context?: CatalogReferenceContext,\n): ValidationIssue | undefined {\n if (typeof value !== \"string\" || !bareIdPattern.test(value)) {\n return undefined;\n }\n\n if (context) {\n const entry = inlineCatalogEntry(context, kind);\n if (entry) {\n if (Array.isArray(entry.records)\n && entry.records.some((record) => isRecord(record) && record.id === value)) {\n return undefined;\n }\n if (typeof entry.source === \"string\") {\n // A custom catalog source may define ids the bundled catalogs don't know about.\n return undefined;\n }\n }\n }\n\n if ((catalogIds[kind] as readonly string[]).includes(value)) {\n return undefined;\n }\n\n return semanticIssue(path, `unknown ${kind} catalog id '${value}'`, { kind, id: value });\n}\n\nfunction referenceObjectWarning(\n kind: CatalogKind,\n value: unknown,\n path: string,\n context: CatalogReferenceContext,\n): ValidationIssue | undefined {\n if (typeof value === \"string\") {\n return unknownIdWarning(kind, value, path, context);\n }\n if (isRecord(value)) {\n return unknownIdWarning(kind, value.id, pathFor(path, \"id\"), context);\n }\n return undefined;\n}\n\nfunction pushIfDefined(issues: ValidationIssue[], issue: ValidationIssue | undefined): void {\n if (issue) {\n issues.push(issue);\n }\n}\n\nfunction designReferenceWarnings(\n design: unknown,\n path: string,\n context: CatalogReferenceContext,\n): ValidationIssue[] {\n if (!isRecord(design)) {\n return [];\n }\n\n const issues: ValidationIssue[] = [];\n pushIfDefined(issues, referenceObjectWarning(\"themes\", design.theme, pathFor(path, \"theme\"), context));\n pushIfDefined(issues, referenceObjectWarning(\"colorSchemes\", design.colorScheme, pathFor(path, \"colorScheme\"), context));\n pushIfDefined(issues, referenceObjectWarning(\"fontSchemes\", design.fontScheme, pathFor(path, \"fontScheme\"), context));\n\n if (isRecord(design.theme)) {\n const themePath = pathFor(path, \"theme\");\n pushIfDefined(issues, referenceObjectWarning(\"colorSchemes\", design.theme.colorScheme, pathFor(themePath, \"colorScheme\"), context));\n pushIfDefined(issues, referenceObjectWarning(\"fontSchemes\", design.theme.fontScheme, pathFor(themePath, \"fontScheme\"), context));\n }\n\n return issues;\n}\n\nfunction chartTypeWarnings(\n payload: unknown,\n path: string,\n context: CatalogReferenceContext,\n): ValidationIssue[] {\n if (!isRecord(payload)) {\n return [];\n }\n\n const issues: ValidationIssue[] = [];\n if (isRecord(payload.chart)) {\n pushIfDefined(issues, unknownIdWarning(\"chartTypes\", payload.chart.type, `${pathFor(path, \"chart\")}/type`, context));\n }\n if (Array.isArray(payload.blocks)) {\n payload.blocks.forEach((block, index) => {\n issues.push(...chartTypeWarnings(block, `${pathFor(path, \"blocks\")}/${index}`, context));\n });\n }\n return issues;\n}\n\nfunction presentationReferenceWarnings(value: unknown): ValidationIssue[] {\n if (!isRecord(value) || !Array.isArray(value.slides)) {\n return [];\n }\n\n const context: CatalogReferenceContext = { document: value };\n const issues: ValidationIssue[] = [];\n\n // String shorthand only: an inline narrative object with an unknown id is a\n // legitimate fully-custom narrative, not a broken reference.\n if (typeof value.narrative === \"string\") {\n pushIfDefined(issues, unknownIdWarning(\"narratives\", value.narrative, \"/narrative\", context));\n }\n\n issues.push(...designReferenceWarnings(value.design, \"/design\", context));\n\n value.slides.forEach((slide, index) => {\n if (!isRecord(slide)) {\n return;\n }\n const slidePath = `/slides/${index}`;\n issues.push(...designReferenceWarnings(slide.design, pathFor(slidePath, \"design\"), context));\n issues.push(...chartTypeWarnings(slide, slidePath, context));\n for (const key of Object.keys(slide)) {\n if (promotedRegionKeySet.has(key)) {\n issues.push(...chartTypeWarnings(slide[key], pathFor(slidePath, key), context));\n }\n }\n });\n\n return issues;\n}\n\nconst catalogCrossLinkFields: Partial<Record<SchemaName, Record<string, CatalogKind>>> = {\n audience: { recommendedNarratives: \"narratives\", recommendedTones: \"tones\" },\n purpose: { recommendedNarratives: \"narratives\", recommendedTones: \"tones\" },\n tone: { recommendedNarratives: \"narratives\" },\n};\n\nfunction catalogCrossLinkWarnings(schemaName: SchemaName, value: unknown): ValidationIssue[] {\n const fields = catalogCrossLinkFields[schemaName];\n if (!fields || !isRecord(value)) {\n return [];\n }\n\n const issues: ValidationIssue[] = [];\n for (const [field, kind] of Object.entries(fields)) {\n const links = value[field];\n if (!Array.isArray(links)) {\n continue;\n }\n links.forEach((link, index) => {\n pushIfDefined(issues, unknownIdWarning(kind, link, `${pathFor(\"/\", field)}/${index}`));\n });\n }\n return issues;\n}\n\nfunction validateLanguageSemantics(value: unknown): ValidationIssue[] {\n if (!isRecord(value)) {\n return [];\n }\n\n if (isEnUkTag(value.bcp47)) {\n return [semanticIssue(\"/bcp47\", \"Use 'en-GB' for UK English; 'en-UK' is not a valid BCP-47 region tag\", {\n replacement: \"en-GB\",\n })];\n }\n\n return [];\n}\n\nexport function validate(value: unknown, schemaOrKind: SchemaOrKind = \"presentation\"): ValidationResult {\n const resolved = resolveValidator(schemaOrKind);\n const valid = resolved.validate(value) === true;\n const errors = valid ? [] : (resolved.validate.errors ?? []).map(toIssue);\n const warnings: ValidationIssue[] = [];\n\n if (resolved.schemaName === \"presentation\") {\n errors.push(...validatePresentationSemantics(value));\n warnings.push(...presentationReferenceWarnings(value));\n } else if (resolved.schemaName === \"language\") {\n errors.push(...validateLanguageSemantics(value));\n }\n\n if (resolved.schemaName) {\n warnings.push(...catalogCrossLinkWarnings(resolved.schemaName, value));\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n schemaName: resolved.schemaName,\n catalogKind: resolved.catalogKind,\n };\n}\n\nexport function assertValid<T = unknown>(value: T, schemaOrKind: SchemaOrKind = \"presentation\"): T {\n const result = validate(value, schemaOrKind);\n if (!result.valid) {\n throw new OPFValidationError(result);\n }\n return value;\n}\n\nexport function validatePresentation(value: unknown): ValidationResult {\n return validate(value, \"presentation\");\n}\n\nexport function assertValidPresentation(value: unknown): asserts value is Presentation {\n assertValid(value, \"presentation\");\n}\n\nexport function validateCatalogRecord(kind: CatalogKind, value: unknown): ValidationResult {\n return validate(value, kind);\n}\n\nexport function assertValidCatalogRecord(kind: CatalogKind, value: unknown): void {\n assertValid(value, kind);\n}\n"]}
|