diff --git a/registry/blocks/ai-answer-rank/TEMPLATE.md b/registry/blocks/ai-answer-rank/TEMPLATE.md
new file mode 100644
index 0000000000..8075e52921
--- /dev/null
+++ b/registry/blocks/ai-answer-rank/TEMPLATE.md
@@ -0,0 +1,24 @@
+# AI Answer Rank editing contract
+
+## Surface ownership
+
+This is a generic assistant answer card, not any real AI product. The website brand is the subject of the ranking: the `brand` slot carries its real name, and the re-rank moves it into the answer with the one accent highlight. The other picks are competitors, never the brand itself. The chat card and motion remain template-owned.
+
+## Editable slots
+
+Only defaults declared in `data-composition-variables` are editable:
+
+- `prompt` and `lead`
+- `rowA`, `rowB`, and `rowC`, the original picks
+- `brand` and `brandRank`, the slot the brand lands in
+- `accent`, `ink`, and `ground`
+
+Typed copy is length-locked to within 20% of the original. Pick and brand names stay short enough to fit one row.
+
+## Safe editing mechanics
+
+Call `set_template_variable_defaults` once with the existing variable ids and their new defaults. Do not directly edit or rewrite `index.html` or its `data-composition-variables` attribute; the imported declaration is HTML-entity-encoded JSON and the setter preserves that encoding. Never edit `__template_baseline__.html` or a duplicate composition file. Validate after the setter succeeds.
+
+## Protected
+
+Do not change the card chrome, monogram tiles, skeleton rules, layout, fonts, scene order, duration, timing, easing, typing cadence, or re-rank logic. Website colors may only reach the declared `accent`, `ink`, and `ground` slots; keep `ink` legible on `ground`. If a requested value has no declared variable, leave it unchanged.
diff --git a/registry/blocks/ai-answer-rank/ai-answer-rank.html b/registry/blocks/ai-answer-rank/ai-answer-rank.html
new file mode 100644
index 0000000000..c3b56fc076
--- /dev/null
+++ b/registry/blocks/ai-answer-rank/ai-answer-rank.html
@@ -0,0 +1,559 @@
+
+
+
+
+
+
+ AI Answer Rank
+
+
+
+
+
+
+
+
+ What's the best CRM for a small team?
+
+
+
+
+
+
+
+
+
+
+
+ Here are the top picks:
+
+
+
+
1
+
2
+
3
+
+
+
BA
+
+
Brand A
+
+
+
+
+
BB
+
+
Brand B
+
+
+
+
+
BC
+
+
Brand C
+
+
+
+
+
+
+
+
+ YB
+
+
+
Your brand
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/registry/blocks/ai-answer-rank/registry-item.json b/registry/blocks/ai-answer-rank/registry-item.json
new file mode 100644
index 0000000000..f2847f71d3
--- /dev/null
+++ b/registry/blocks/ai-answer-rank/registry-item.json
@@ -0,0 +1,127 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "ai-answer-rank",
+ "type": "hyperframes:block",
+ "title": "AI Answer Rank",
+ "description": "Is your brand in the AI answer? A question types into a chat card, the assistant answers with a ranked list of three picks, then re-ranks: the promoted brand slides into its slot, the picks below step down, and the brand row lands with the one accent highlight and a check. For answer-engine and AI-visibility marketing",
+ "tags": ["mock-ui", "ai", "chat", "ranking", "list", "marketing", "ad-template", "square"],
+ "author": "Tugra Avci",
+ "dimensions": {
+ "width": 1080,
+ "height": 1080
+ },
+ "duration": 9,
+ "variables": [
+ {
+ "id": "prompt",
+ "type": "string",
+ "role": "content",
+ "label": "Prompt",
+ "description": "The question typed into the user bubble. Up to about 60 characters keeps it on one or two lines.",
+ "default": "What's the best CRM for a small team?"
+ },
+ {
+ "id": "lead",
+ "type": "string",
+ "role": "content",
+ "label": "Answer lead-in",
+ "description": "The assistant line above the ranked list.",
+ "default": "Here are the top picks:"
+ },
+ {
+ "id": "rowA",
+ "type": "string",
+ "role": "content",
+ "label": "Pick 1",
+ "description": "First pick in the original answer: a product other than the brand this video promotes.",
+ "portrays": ["competitor_name"],
+ "default": "Brand A"
+ },
+ {
+ "id": "rowB",
+ "type": "string",
+ "role": "content",
+ "label": "Pick 2",
+ "description": "Second pick in the original answer: a product other than the brand this video promotes.",
+ "portrays": ["competitor_name"],
+ "default": "Brand B"
+ },
+ {
+ "id": "rowC",
+ "type": "string",
+ "role": "content",
+ "label": "Pick 3",
+ "description": "Third pick in the original answer. It drops out of the top three when the brand lands.",
+ "portrays": ["competitor_name"],
+ "default": "Brand C"
+ },
+ {
+ "id": "brand",
+ "type": "string",
+ "role": "content",
+ "label": "Brand",
+ "description": "The brand this video promotes, by its real name. It slides into the answer and takes the highlight.",
+ "portrays": ["subject_name"],
+ "default": "Your brand"
+ },
+ {
+ "id": "brandRank",
+ "type": "enum",
+ "role": "content",
+ "label": "Brand rank",
+ "description": "The slot the brand lands in. Picks at and below it step down one place.",
+ "portrays": ["recommended_position"],
+ "default": "1",
+ "options": [
+ {
+ "value": "1",
+ "label": "1st"
+ },
+ {
+ "value": "2",
+ "label": "2nd"
+ },
+ {
+ "value": "3",
+ "label": "3rd"
+ }
+ ]
+ },
+ {
+ "id": "accent",
+ "type": "color",
+ "role": "style",
+ "label": "Accent",
+ "description": "Highlight, monogram and check on the brand row, the one accent element.",
+ "default": "#16a34a"
+ },
+ {
+ "id": "ink",
+ "type": "color",
+ "role": "style",
+ "label": "Ink",
+ "description": "Text colour; every placeholder surface is this ink at an alpha step.",
+ "default": "#18181b"
+ },
+ {
+ "id": "ground",
+ "type": "color",
+ "role": "style",
+ "label": "Ground",
+ "description": "Chat card surface; the page around it is the ground tinted toward the ink.",
+ "default": "#fcfcfb"
+ }
+ ],
+ "files": [
+ {
+ "path": "ai-answer-rank.html",
+ "target": "compositions/ai-answer-rank.html",
+ "type": "hyperframes:composition"
+ },
+ {
+ "path": "TEMPLATE.md",
+ "target": "TEMPLATE.md",
+ "type": "hyperframes:asset"
+ }
+ ]
+}
diff --git a/registry/blocks/cinemagraph/cinemagraph.html b/registry/blocks/cinemagraph/cinemagraph.html
new file mode 100644
index 0000000000..7c806933ba
--- /dev/null
+++ b/registry/blocks/cinemagraph/cinemagraph.html
@@ -0,0 +1,298 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/registry/blocks/cinemagraph/registry-item.json b/registry/blocks/cinemagraph/registry-item.json
new file mode 100644
index 0000000000..caf4c00dfe
--- /dev/null
+++ b/registry/blocks/cinemagraph/registry-item.json
@@ -0,0 +1,17 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "cinemagraph",
+ "type": "hyperframes:block",
+ "title": "Cinemagraph",
+ "description": "A still photograph with one living region: the frame is frozen while a single feathered window keeps moving - here, steam rising over a cup - drawn from the seek time alone with a period that divides the duration, so the render loops seamlessly. Swap the placeholder scene for a freeze-frame still masked over a looping video to cinemagraph real footage.",
+ "dimensions": { "width": 1920, "height": 1080 },
+ "duration": 10,
+ "tags": ["effect", "cinemagraph", "photo", "loop", "freeze-frame"],
+ "files": [
+ {
+ "path": "cinemagraph.html",
+ "target": "compositions/cinemagraph.html",
+ "type": "hyperframes:composition"
+ }
+ ]
+}
diff --git a/registry/components/caret-swap/Geist-Latin.woff2 b/registry/components/caret-swap/Geist-Latin.woff2
new file mode 100644
index 0000000000..991445d78a
Binary files /dev/null and b/registry/components/caret-swap/Geist-Latin.woff2 differ
diff --git a/registry/components/caret-swap/Geist-OFL.txt b/registry/components/caret-swap/Geist-OFL.txt
new file mode 100644
index 0000000000..61f6f4b785
--- /dev/null
+++ b/registry/components/caret-swap/Geist-OFL.txt
@@ -0,0 +1,93 @@
+Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font.git)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
diff --git a/registry/components/caret-swap/caret-swap.html b/registry/components/caret-swap/caret-swap.html
new file mode 100644
index 0000000000..251d1b4f8f
--- /dev/null
+++ b/registry/components/caret-swap/caret-swap.html
@@ -0,0 +1,355 @@
+
+
+
+
+
+ Caret Swap
+
+
+
+
+
+