Skip to content

Instantly share code, notes, and snippets.

@ndelangen
Created July 22, 2026 22:40
Show Gist options
  • Select an option

  • Save ndelangen/df0ead23408334488744ae30e1fa8186 to your computer and use it in GitHub Desktop.

Select an option

Save ndelangen/df0ead23408334488744ae30e1fa8186 to your computer and use it in GitHub Desktop.
Dune Zone faction authoring composition prototypes

Faction authoring composition prototypes

Three structurally different concepts compared for Dune Zone's shared Create/Edit faction experience:

  • tabbed-studio.svg — a familiar domain-tabbed studio with a persistent artifact rail.
  • artifact-canvas.svg — an artifact-first canvas where selecting output elements reveals their responsible fields.
  • facet-chapters.svg — one continuous document of domain chapters with local artifact previews.

Selected direction

Facet Chapters was selected as the foundation.

The editor becomes one continuously scrolling document organized as:

  1. Identity & Appearance
  2. Leaders
  3. Alliance
  4. Forces & Worlds
  5. Rules & Advantages

Desktop and tablet use a compact chapter map plus local previews beside the fields that affect them. Mobile removes the chapter rail and artifact previews and renders the same controls vertically in chapter order. A sticky route toolbar owns explicit save and publish state. Ordered collections retain pointer and keyboard reordering. Every FactionInputSchema field is editable except the intentional extras[] exception, whose existing value is preserved unchanged.

The static mockups are discussion artifacts, not implementation code.

Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="2600" viewBox="0 0 1600 2600" role="img" aria-labelledby="title description">
<title id="title">Faction editor concept: Facet Chapters</title>
<description id="description">A continuous single-scroll faction editor with a sticky save toolbar, a chapter mini-map, domain-honest field groups, and local artifact previews.</description>
<defs>
<linearGradient id="sand" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#f8f4ec"/>
<stop offset="1" stop-color="#eee5d7"/>
</linearGradient>
<linearGradient id="meridia" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#1e3941"/>
<stop offset="0.55" stop-color="#285b59"/>
<stop offset="1" stop-color="#bf8c3b"/>
</linearGradient>
<linearGradient id="paperGold" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#a66a27"/>
<stop offset="1" stop-color="#d4aa62"/>
</linearGradient>
<radialGradient id="patternColor" cx="50%" cy="42%" r="72%">
<stop offset="0" stop-color="#e6c47c"/>
<stop offset="1" stop-color="#9c5e28"/>
</radialGradient>
<pattern id="hatch" width="24" height="24" patternUnits="userSpaceOnUse" patternTransform="rotate(35)">
<rect width="24" height="24" fill="#203f43"/>
<rect width="8" height="24" fill="#d2a85f"/>
<circle cx="18" cy="12" r="3" fill="#d2a85f" opacity="0.7"/>
</pattern>
<pattern id="hatchSoft" width="28" height="28" patternUnits="userSpaceOnUse" patternTransform="rotate(35)">
<rect width="28" height="28" fill="#285352"/>
<rect width="7" height="28" fill="#d6b46f" opacity="0.84"/>
<circle cx="19" cy="14" r="3" fill="#f2d89f" opacity="0.65"/>
</pattern>
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="8" stdDeviation="14" flood-color="#382d20" flood-opacity="0.12"/>
</filter>
<filter id="smallShadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="3" stdDeviation="5" flood-color="#382d20" flood-opacity="0.14"/>
</filter>
<filter id="invertPattern">
<feColorMatrix values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"/>
</filter>
<style>
.ui { font-family: Inter, Arial, sans-serif; }
.caps { font-size: 12px; font-weight: 800; letter-spacing: 1.8px; text-transform: uppercase; }
.muted { fill: #746d63; }
.ink { fill: #2d2923; }
.label { font-size: 13px; font-weight: 700; fill: #4e483f; }
.value { font-size: 15px; font-weight: 550; fill: #29251f; }
.hint { font-size: 12px; fill: #777065; }
.chapterTitle { font-family: Georgia, serif; font-size: 29px; font-weight: 700; fill: #2d2923; }
.sectionLine { stroke: #ded5c7; stroke-width: 1; }
.field { fill: #ffffff; stroke: #d2c9bb; stroke-width: 1.2; }
.soft { fill: #f6f1e8; stroke: #ded5c7; stroke-width: 1; }
.chapter { fill: #fffdf9; stroke: #ddd4c7; stroke-width: 1.2; }
</style>
</defs>
<rect width="1600" height="2600" fill="#d8d0c4"/>
<g class="ui">
<rect x="26" y="20" width="1548" height="2558" rx="22" fill="url(#sand)" filter="url(#shadow)"/>
<!-- Application chrome -->
<rect x="26" y="20" width="1548" height="76" rx="22" fill="#27251f"/>
<rect x="26" y="72" width="1548" height="24" fill="#27251f"/>
<circle cx="66" cy="58" r="18" fill="#c4974f"/>
<path d="M57 61c9-17 18-17 23 0-8-6-15-6-23 0Z" fill="#27251f"/>
<text x="98" y="64" fill="#f4ead8" font-size="18" font-weight="800" letter-spacing="1.2">DUNE ZONE</text>
<text x="1328" y="63" fill="#bdb4a6" font-size="13">Factions</text>
<circle cx="1518" cy="58" r="17" fill="#584e40"/>
<!-- Page header -->
<rect x="26" y="96" width="1548" height="126" fill="#fbf7f0"/>
<text x="68" y="137" class="caps" fill="#8e602c">Faction workshop</text>
<text x="68" y="182" class="chapterTitle" font-size="36">Edit House Meridia</text>
<text x="454" y="178" class="hint">One continuous document · five domain chapters · local previews</text>
<!-- Sticky save / publish toolbar -->
<g filter="url(#smallShadow)">
<rect x="1000" y="117" width="528" height="76" rx="13" fill="#ffffff" stroke="#ddd3c4"/>
<circle cx="1028" cy="143" r="5" fill="#c27c2c"/>
<text x="1042" y="148" font-size="14" font-weight="750" fill="#58442b">Unsaved changes</text>
<text x="1022" y="173" class="hint">Last published 21 Jul, 18:42 · save schedules publishing</text>
<rect x="1388" y="130" width="120" height="48" rx="9" fill="#2f665b"/>
<text x="1448" y="160" fill="#ffffff" font-size="15" font-weight="800" text-anchor="middle">Save</text>
</g>
<line x1="26" y1="221" x2="1574" y2="221" stroke="#c5944d" stroke-width="3"/>
<!-- Sticky mini-map -->
<g>
<rect x="60" y="254" width="252" height="514" rx="16" fill="#2d2b26" filter="url(#smallShadow)"/>
<text x="84" y="288" class="caps" fill="#cba66a">Chapter map</text>
<text x="84" y="314" fill="#c9c0b2" font-size="12">Stays visible as the page moves</text>
<line x1="98" y1="353" x2="98" y2="655" stroke="#665d50" stroke-width="2"/>
<circle cx="98" cy="363" r="10" fill="#d0a75f"/>
<circle cx="98" cy="432" r="8" fill="#655d51" stroke="#a99b88"/>
<circle cx="98" cy="501" r="8" fill="#655d51" stroke="#a99b88"/>
<circle cx="98" cy="570" r="8" fill="#655d51" stroke="#a99b88"/>
<circle cx="98" cy="639" r="8" fill="#655d51" stroke="#a99b88"/>
<text x="122" y="360" fill="#f5ead6" font-size="14" font-weight="800">Identity &amp; Appearance</text>
<text x="122" y="379" fill="#aaa092" font-size="11">pattern, colors, outputs</text>
<text x="122" y="437" fill="#e5ddd1" font-size="14" font-weight="650">Leaders</text>
<text x="122" y="506" fill="#e5ddd1" font-size="14" font-weight="650">Alliance</text>
<text x="122" y="575" fill="#e5ddd1" font-size="14" font-weight="650">Forces &amp; Worlds</text>
<text x="122" y="644" fill="#e5ddd1" font-size="14" font-weight="650">Rules &amp; Advantages</text>
<rect x="82" y="692" width="208" height="50" rx="9" fill="#39362f" stroke="#5c554a"/>
<text x="98" y="713" fill="#c9c0b2" font-size="11">Document coverage</text>
<text x="98" y="731" fill="#f4e7d1" font-size="13" font-weight="750">All schema fields covered</text>
<text x="284" y="731" fill="#a99b88" font-size="10" text-anchor="end">except extras</text>
</g>
<!-- Chapter 1 -->
<g>
<rect x="344" y="254" width="1184" height="716" rx="18" class="chapter" filter="url(#smallShadow)"/>
<rect x="344" y="254" width="9" height="716" rx="4" fill="#c18b43"/>
<text x="382" y="293" class="caps" fill="#9a692e">Chapter 01</text>
<text x="382" y="332" class="chapterTitle">Identity &amp; Appearance</text>
<text x="382" y="358" class="muted" font-size="13">Names the faction and builds the visual system reused across every artifact.</text>
<line x1="382" y1="380" x2="1492" y2="380" class="sectionLine"/>
<text x="382" y="407" class="label">Faction name</text>
<rect x="382" y="419" width="270" height="48" rx="8" class="field"/>
<text x="398" y="449" class="value">House Meridia</text>
<text x="680" y="407" class="label">Logo asset</text>
<rect x="680" y="419" width="246" height="48" rx="8" class="field"/>
<circle cx="707" cy="443" r="14" fill="#285b59"/>
<text x="733" y="449" class="value">meridia-sun.svg</text>
<text x="954" y="407" class="label">Sheet theme</text>
<rect x="954" y="419" width="160" height="48" rx="8" class="field"/>
<circle cx="978" cy="443" r="13" fill="#285b59"/>
<text x="1000" y="449" class="value">#285B59</text>
<text x="1142" y="407" class="label">TTS colors</text>
<rect x="1142" y="419" width="94" height="35" rx="17" fill="#d8ebdf"/><text x="1189" y="442" font-size="12" font-weight="750" fill="#326346" text-anchor="middle">Green</text>
<rect x="1244" y="419" width="78" height="35" rx="17" fill="#d5ebeb"/><text x="1283" y="442" font-size="12" font-weight="750" fill="#275f64" text-anchor="middle">Teal</text>
<rect x="1330" y="419" width="76" height="35" rx="17" fill="#efe4ce"/><text x="1368" y="442" font-size="12" font-weight="750" fill="#815f26" text-anchor="middle">Gold</text>
<text x="382" y="509" class="caps" fill="#6c6255">Background builder</text>
<text x="545" y="509" class="hint">The pipeline makes every transformation visible before it reaches an artifact.</text>
<!-- Background pipeline -->
<rect x="382" y="529" width="1110" height="376" rx="14" fill="#f4efe6" stroke="#ddd2c3"/>
<text x="406" y="559" class="caps" fill="#8b7760">Pattern</text>
<rect x="406" y="577" width="176" height="126" rx="10" fill="#244a4c"/>
<path d="M398 625l48-48M414 673l96-96M463 703l119-119M519 703l63-63" stroke="#d2a85f" stroke-width="13" opacity="0.92"/>
<circle cx="455" cy="655" r="6" fill="#f0d69b" opacity="0.8"/><circle cx="532" cy="608" r="6" fill="#f0d69b" opacity="0.8"/>
<rect x="418" y="589" width="78" height="25" rx="12" fill="#ffffff" opacity="0.88"/>
<text x="457" y="606" font-size="10" font-weight="800" fill="#4f463c" text-anchor="middle">021.jpg</text>
<rect x="406" y="716" width="176" height="40" rx="8" class="field"/>
<text x="420" y="741" class="value">Geometric weave</text>
<path d="M595 640h42" stroke="#aa9477" stroke-width="2"/><path d="m632 634 8 6-8 6" fill="none" stroke="#aa9477" stroke-width="2"/>
<text x="654" y="559" class="caps" fill="#8b7760">Treatment</text>
<rect x="654" y="577" width="214" height="179" rx="10" fill="#ffffff" stroke="#d8cebf"/>
<rect x="670" y="592" width="98" height="34" rx="17" fill="#2f665b"/>
<circle cx="751" cy="609" r="12" fill="#ffffff"/>
<text x="683" y="613" font-size="11" fill="#ffffff" font-weight="800">Invert</text>
<text x="670" y="652" class="label">Definition</text>
<line x1="670" y1="673" x2="846" y2="673" stroke="#d4c8b8" stroke-width="5" stroke-linecap="round"/>
<line x1="670" y1="673" x2="798" y2="673" stroke="#b77d36" stroke-width="5" stroke-linecap="round"/>
<circle cx="798" cy="673" r="9" fill="#ffffff" stroke="#9f6e32" stroke-width="3"/>
<text x="670" y="709" class="label">Influence</text>
<line x1="670" y1="730" x2="846" y2="730" stroke="#d4c8b8" stroke-width="5" stroke-linecap="round"/>
<line x1="670" y1="730" x2="770" y2="730" stroke="#b77d36" stroke-width="5" stroke-linecap="round"/>
<circle cx="770" cy="730" r="9" fill="#ffffff" stroke="#9f6e32" stroke-width="3"/>
<path d="M880 640h34" stroke="#aa9477" stroke-width="2"/><path d="m909 634 8 6-8 6" fill="none" stroke="#aa9477" stroke-width="2"/>
<text x="930" y="559" class="caps" fill="#8b7760">Base + pattern colors</text>
<rect x="930" y="577" width="232" height="179" rx="10" fill="#ffffff" stroke="#d8cebf"/>
<text x="946" y="606" class="label">Base</text>
<rect x="946" y="617" width="200" height="45" rx="8" fill="#17383d"/>
<circle cx="1124" cy="639" r="12" fill="#ffffff" opacity="0.25"/>
<text x="946" y="691" class="label">Pattern</text>
<rect x="946" y="702" width="200" height="40" rx="8" fill="url(#patternColor)"/>
<text x="1046" y="727" fill="#fff7e8" font-size="11" font-weight="800" text-anchor="middle">RADIAL GRADIENT</text>
<path d="M1174 640h36" stroke="#aa9477" stroke-width="2"/><path d="m1205 634 8 6-8 6" fill="none" stroke="#aa9477" stroke-width="2"/>
<text x="1226" y="559" class="caps" fill="#8b7760">Composite</text>
<rect x="1226" y="577" width="238" height="179" rx="10" fill="#285452" stroke="#425c56"/>
<path d="M1218 642l65-65M1226 700l123-123M1278 756l179-179M1344 756l120-120" stroke="#d6b46f" stroke-width="17" opacity="0.62"/>
<circle cx="1275" cy="688" r="7" fill="#f2d89f" opacity="0.75"/><circle cx="1425" cy="623" r="7" fill="#f2d89f" opacity="0.75"/>
<circle cx="1345" cy="666" r="53" fill="#f0d9a3" opacity="0.12"/>
<path d="M1320 687c27-54 49-54 68 0-23-20-45-20-68 0Z" fill="#f6dfaa" opacity="0.9"/>
<circle cx="1354" cy="634" r="10" fill="#f6dfaa" opacity="0.9"/>
<rect x="1250" y="773" width="84" height="36" rx="18" fill="#ffffff" stroke="#d5cbbb"/>
<text x="1292" y="796" font-size="11" font-weight="750" fill="#51483f" text-anchor="middle">Token</text>
<rect x="1342" y="773" width="98" height="36" rx="18" fill="#2f665b"/>
<text x="1391" y="796" font-size="11" font-weight="750" fill="#ffffff" text-anchor="middle">Shield</text>
<line x1="406" y1="788" x2="1179" y2="788" stroke="#ddd2c3"/>
<text x="406" y="829" class="label">Where this appears</text>
<text x="406" y="851" class="hint">Faction cards · logo tokens · faction leader shield · supporting leaders · troops · alliance card</text>
<rect x="1226" y="824" width="238" height="54" rx="9" fill="#fffaf0" stroke="#dfc895"/>
<text x="1242" y="847" font-size="11" font-weight="800" fill="#8a602c">TRY A STARTING RECIPE</text>
<text x="1242" y="866" font-size="12" fill="#685d50">Bold duotone · subtle weave · glow</text>
</g>
<!-- Chapter 2 -->
<g>
<rect x="344" y="1000" width="1184" height="330" rx="18" class="chapter"/>
<rect x="344" y="1000" width="9" height="330" rx="4" fill="#705b76"/>
<text x="382" y="1038" class="caps" fill="#705b76">Chapter 02</text>
<text x="382" y="1076" class="chapterTitle">Leaders</text>
<text x="382" y="1102" class="muted" font-size="13">One required Faction leader, followed by an ordered supporting roster. Five is typical; zero to ten is valid.</text>
<line x1="382" y1="1124" x2="1492" y2="1124" class="sectionLine"/>
<text x="382" y="1151" class="label">Faction leader · required</text>
<rect x="382" y="1164" width="338" height="118" rx="11" class="soft"/>
<circle cx="428" cy="1222" r="37" fill="url(#meridia)"/>
<path d="M408 1235c15-32 31-32 43 0-14-11-28-11-43 0Z" fill="#f2d49a"/>
<text x="482" y="1204" class="value">Lady Sareen</text>
<text x="482" y="1227" class="hint">Portrait: leader-emerald-07</text>
<text x="482" y="1250" font-size="11" fill="#83653a">Appears on the faction shield</text>
<text x="754" y="1151" class="label">Supporting leaders · drag to rank</text>
<g transform="translate(754 1164)">
<rect width="344" height="46" rx="8" class="field"/><text x="16" y="29" fill="#8b8072" font-size="16">≡</text><text x="46" y="29" class="value">Oran Vey</text><text x="271" y="29" class="hint">5</text>
<rect y="54" width="344" height="46" rx="8" class="field"/><text x="16" y="83" fill="#8b8072" font-size="16">≡</text><text x="46" y="83" class="value">Tessa Rhun</text><text x="271" y="83" class="hint">4</text>
<rect y="108" width="344" height="46" rx="8" class="field"/><text x="16" y="137" fill="#8b8072" font-size="16">≡</text><text x="46" y="137" class="value">Khal Domas</text><text x="271" y="137" class="hint">3</text>
</g>
<rect x="1126" y="1150" width="344" height="146" rx="12" fill="#262d2c"/>
<text x="1146" y="1178" class="caps" fill="#d2a85f">Local preview · leader token</text>
<circle cx="1204" cy="1235" r="41" fill="#285452" stroke="#d5ba7e" stroke-width="3"/>
<circle cx="1204" cy="1235" r="19" fill="#e6c77e"/>
<text x="1264" y="1224" fill="#f4eadb" font-size="15" font-weight="800">Oran Vey</text>
<text x="1264" y="1247" fill="#c5b9a8" font-size="12">Leader token + traitor card</text>
<text x="1264" y="1269" fill="#c5b9a8" font-size="12">Sheet page 2</text>
</g>
<!-- Chapter 3 -->
<g>
<rect x="344" y="1360" width="1184" height="330" rx="18" class="chapter"/>
<rect x="344" y="1360" width="9" height="330" rx="4" fill="#2e6c6a"/>
<text x="382" y="1398" class="caps" fill="#2e6c6a">Chapter 03</text>
<text x="382" y="1436" class="chapterTitle">Alliance</text>
<text x="382" y="1462" class="muted" font-size="13">Ability text and the ordered decal composition live together because they become one card.</text>
<line x1="382" y1="1484" x2="1492" y2="1484" class="sectionLine"/>
<text x="382" y="1512" class="label">Alliance ability</text>
<rect x="382" y="1525" width="432" height="112" rx="9" class="field"/>
<text x="398" y="1551" class="value">When an ally ships forces, gain 1 spice.</text>
<text x="398" y="1575" class="hint">The card title is the faction name.</text>
<text x="398" y="1609" font-size="11" font-weight="750" fill="#2e6c6a">Shown on alliance card + faction sheet</text>
<text x="842" y="1512" class="label">Decals · drag to layer</text>
<rect x="842" y="1525" width="252" height="46" rx="8" class="field"/>
<text x="858" y="1554" fill="#8b8072" font-size="16">≡</text><text x="888" y="1554" class="value">rising-sun</text><text x="1056" y="1554" class="hint">60%</text>
<rect x="842" y="1579" width="252" height="46" rx="8" class="field"/>
<text x="858" y="1608" fill="#8b8072" font-size="16">≡</text><text x="888" y="1608" class="value">orbit-ring</text><text x="1056" y="1608" class="hint">42%</text>
<text x="842" y="1652" class="hint">Scale · X/Y position · muted · outline</text>
<g transform="translate(1124 1507)">
<rect width="340" height="144" rx="11" fill="#285452" stroke="#b4955e"/>
<path d="M205 144L340 9M266 144l74-74" stroke="#d6b46f" stroke-width="14" opacity="0.32"/>
<circle cx="262" cy="44" r="28" fill="none" stroke="#f0d49a" stroke-width="4"/>
<path d="M236 76c22-46 45-46 63 0-21-16-42-16-63 0Z" fill="#efd394" opacity="0.9"/>
<text x="22" y="32" fill="#f5e8d3" font-size="11" font-weight="800" letter-spacing="1.2">HOUSE MERIDIA ALLIANCE</text>
<text x="22" y="92" fill="#fffaf1" font-family="Georgia,serif" font-size="16">When an ally ships forces,</text>
<text x="22" y="115" fill="#fffaf1" font-family="Georgia,serif" font-size="16">gain 1 spice.</text>
</g>
</g>
<!-- Chapter 4 -->
<g>
<rect x="344" y="1720" width="1184" height="394" rx="18" class="chapter"/>
<rect x="344" y="1720" width="9" height="394" rx="4" fill="#9a5c3f"/>
<text x="382" y="1758" class="caps" fill="#9a5c3f">Chapter 04</text>
<text x="382" y="1796" class="chapterTitle">Forces &amp; Worlds</text>
<text x="382" y="1822" class="muted" font-size="13">Troop faces, optional backs, counts, and planet affinity sit beside the planets they reference.</text>
<line x1="382" y1="1844" x2="1492" y2="1844" class="sectionLine"/>
<text x="382" y="1872" class="label">Troop types · drag to order</text>
<rect x="382" y="1885" width="478" height="169" rx="11" class="soft"/>
<text x="402" y="1914" fill="#897d6e" font-size="16">≡</text>
<circle cx="445" cy="1958" r="42" fill="#285452" stroke="#a8723d" stroke-width="3"/>
<path d="M426 1970h38l-8-30h-22Z" fill="#ead096"/>
<text x="506" y="1925" class="value">Solar Guard</text>
<text x="506" y="1949" class="hint">20 pieces · Front + Back · Star: elite</text>
<text x="506" y="1973" class="hint">Planet affinity: Meridian Prime</text>
<rect x="506" y="1990" width="114" height="34" rx="8" fill="#ffffff" stroke="#d5cbbb"/><text x="563" y="2012" font-size="11" fill="#51483f" text-anchor="middle">Edit front</text>
<rect x="628" y="1990" width="114" height="34" rx="8" fill="#ffffff" stroke="#d5cbbb"/><text x="685" y="2012" font-size="11" fill="#51483f" text-anchor="middle">Edit back</text>
<rect x="769" y="1896" width="67" height="32" rx="16" fill="#ece1d0"/><text x="802" y="1917" font-size="10" font-weight="800" fill="#805d33" text-anchor="middle">1 of 2</text>
<text x="888" y="1872" class="label">Planets</text>
<rect x="888" y="1885" width="276" height="169" rx="11" class="field"/>
<rect x="904" y="1901" width="74" height="74" rx="37" fill="url(#meridia)"/>
<circle cx="940" cy="1936" r="19" fill="#d6a75e" opacity="0.7"/>
<text x="994" y="1925" class="value">Meridian Prime</text>
<text x="994" y="1948" class="hint">Image URL</text>
<text x="904" y="1996" class="hint">Desert moon with mineral-rich rings.</text>
<text x="904" y="2025" font-size="11" font-weight="750" fill="#9a5c3f">Add planet</text>
<rect x="1192" y="1869" width="272" height="185" rx="12" fill="#282b29"/>
<text x="1210" y="1899" class="caps" fill="#d2a85f">Local preview · troop</text>
<circle cx="1271" cy="1964" r="51" fill="#285452" stroke="#d0a760" stroke-width="4"/>
<path d="M1247 1978h48l-10-38h-28Z" fill="#f1d79d"/>
<text x="1342" y="1948" fill="#f5eadb" font-size="15" font-weight="800">Solar Guard</text>
<text x="1342" y="1972" fill="#c6baab" font-size="12">Front</text>
<rect x="1342" y="1989" width="86" height="31" rx="15" fill="#3a3e3b"/>
<text x="1385" y="2010" fill="#e9d3a6" font-size="11" text-anchor="middle">Show back</text>
<text x="382" y="2085" class="hint">Every troop field is editable: name, description, image, modifier, stripes, count, optional back, and optional planet reference.</text>
</g>
<!-- Chapter 5 -->
<g>
<rect x="344" y="2144" width="1184" height="350" rx="18" class="chapter"/>
<rect x="344" y="2144" width="9" height="350" rx="4" fill="#7c6941"/>
<text x="382" y="2182" class="caps" fill="#7c6941">Chapter 05</text>
<text x="382" y="2220" class="chapterTitle">Rules &amp; Advantages</text>
<text x="382" y="2246" class="muted" font-size="13">Setup, revival, fate, and ordered advantages read like the rule sheet they produce.</text>
<line x1="382" y1="2268" x2="1492" y2="2268" class="sectionLine"/>
<g transform="translate(382 2290)">
<rect width="186" height="44" rx="8" fill="#2f665b"/><text x="93" y="28" fill="#fff" font-size="12" font-weight="800" text-anchor="middle">Starting rules</text>
<rect x="194" width="164" height="44" rx="8" fill="#f4efe6" stroke="#d6ccbd"/><text x="276" y="28" fill="#665e53" font-size="12" font-weight="700" text-anchor="middle">Revival</text>
<rect x="366" width="164" height="44" rx="8" fill="#f4efe6" stroke="#d6ccbd"/><text x="448" y="28" fill="#665e53" font-size="12" font-weight="700" text-anchor="middle">Fate</text>
<rect x="538" width="184" height="44" rx="8" fill="#f4efe6" stroke="#d6ccbd"/><text x="630" y="28" fill="#665e53" font-size="12" font-weight="700" text-anchor="middle">Advantages · 3</text>
<rect y="58" width="722" height="110" rx="9" class="field"/>
<text x="16" y="85" class="value">Begin with 10 spice and three forces in reserves.</text>
<text x="16" y="110" class="hint">Spice count: 10</text>
<text x="16" y="145" font-size="11" font-weight="750" fill="#7c6941">All rules are visible together, while each focused field updates the local sheet excerpt.</text>
</g>
<g transform="translate(1130 2288)">
<rect width="334" height="174" rx="10" fill="#fffaf1" stroke="#d5c19a"/>
<rect width="334" height="35" rx="10" fill="url(#paperGold)"/>
<rect y="25" width="334" height="10" fill="url(#paperGold)"/>
<text x="18" y="23" fill="#fff" font-family="Georgia,serif" font-size="13" font-weight="700">HOUSE MERIDIA · RULES</text>
<text x="18" y="62" fill="#5b4c39" font-family="Georgia,serif" font-size="12" font-weight="700">STARTING RULES</text>
<line x1="18" y1="70" x2="316" y2="70" stroke="#d4c19d"/>
<text x="18" y="93" fill="#554d43" font-family="Georgia,serif" font-size="11">Begin with 10 spice and three forces</text>
<text x="18" y="110" fill="#554d43" font-family="Georgia,serif" font-size="11">in reserves.</text>
<text x="18" y="142" fill="#92713f" font-size="10" font-weight="800">LIVE SHEET EXCERPT · NO IFRAME SCROLL</text>
</g>
</g>
<!-- Footer / mobile note -->
<g>
<rect x="60" y="2519" width="1468" height="38" rx="9" fill="#ece3d6"/>
<text x="84" y="2543" font-size="12" font-weight="750" fill="#62584c">Responsive rule</text>
<text x="188" y="2543" font-size="12" fill="#746b60">Desktop and tablet show local artifact previews. Mobile removes every preview and stacks all inputs in this same chapter order.</text>
<text x="1488" y="2543" font-size="11" fill="#8b8174" text-anchor="end">Extras are preserved but intentionally not editable.</text>
</g>
</g>
</svg>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment