Files
dmtools/templates/storyline/index.html.twig
T
FrankandClaude Sonnet 5 7fbf6f1569 Storyline: chapter structure + formatted Campaign Overview
The Storyline section is now a set of hand-written chapters. /storyline
lists them; /storyline/{slug} renders one inside a shell with a sticky
chapter nav and prev/next pager. Chapters are declared in
StorylineController::CHAPTERS, each pointing at a Twig partial under
templates/storyline/chapters/.

First chapter is the Brackenford Campaign Overview: the campaign-bible
text laid out as a long-form reading page -- numbered section headers,
a "by the numbers" / "the cast" quick-reference strip, pull-quotes for
in-world lines, GM callouts for the ticking clocks and the red herring,
and the escalation ladder. Storyline styles added to app.css.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 17:28:21 +02:00

32 lines
1.4 KiB
Twig

{% extends 'base.html.twig' %}
{% block title %}Storyline · dmtools{% endblock %}
{% block body %}
<div class="storyline-index">
<header class="mb-4">
<div class="text-uppercase small text-body-secondary fw-semibold" style="letter-spacing:.08em">Storyline</div>
<h1 class="display-6 mb-2">Brackenford</h1>
<p class="text-body-secondary mb-0" style="max-width:60ch">
The campaign bible, split into chapters. Start with the overview for the whole
arc; later chapters will cover sessions, locations and the people of the village.
</p>
</header>
<ol class="storyline-chapter-list list-unstyled">
{% for slug, chapter in chapters %}
<li>
<a href="{{ path('app_storyline_chapter', {slug: slug}) }}" class="storyline-chapter-card">
<span class="storyline-chapter-num">{{ loop.index }}</span>
<span class="storyline-chapter-body">
<span class="storyline-chapter-title">{{ chapter.title }}</span>
<span class="storyline-chapter-summary">{{ chapter.summary }}</span>
</span>
<span class="storyline-chapter-go" aria-hidden="true">&rarr;</span>
</a>
</li>
{% endfor %}
</ol>
</div>
{% endblock %}