feat: Add book viewer at /book with shared design system

- Add html/index.html: book viewer with auto-discovering sidebar,
  prev/next navigation, keyboard shortcuts, and URL hash persistence
- Add html/book-page.css: shared stylesheet for all book pages derived
  from fabula-ultima-sheet.css (dark theme, CSS variables, Cinzel/
  Crimson Text fonts, common class styles)
- Add book.js entry point so webpack injects the shared CSS into the
  book viewer; update webpack.config.js for two entry points, split
  CSS chunk, CopyWebpackPlugin for book pages, and /book dev server
  rewrite rule
- Add scripts/strip_watermark.py: removes "Guest Customer (Order
  #52072168)" watermark artifacts from all 210 book pages
- Add scripts/restyle_book.py: strips per-page <style> blocks and
  injects <link rel="stylesheet" href="book-page.css"> into all pages
- Update Justfile deploy to scp -r dist/* for the new /book subtree

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-06 03:36:35 +00:00
parent 58552b536f
commit c75cd188c1
220 changed files with 12685 additions and 10 deletions

58
html/170.html Normal file
View File

@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Character Skill Descriptions</title>
<link rel="stylesheet" href="book-page.css">
</head>
<body>
<h1>PROTAGONISTS CHAPTER</h1>
<section id="strength-of-five">
<h2>Strength of Five Wellsprings</h2>
<div class="requirement">
<strong>Requirements:</strong> You must have mastered the Invoker Class.
</div>
<p>After you perform an invocation during a conflict, you and up to one ally you can see increase one of your <strong>Attributes</strong> die sizes by one (up to a maximum of d12). This increase lasts until the end of the scene or until you use this Skill again, and the Attribute is based on the wellspring you invoked:</p>
<ul>
<li><strong>Air:</strong> Insight</li>
<li><strong>Earth:</strong> One Attribute of your choice</li>
<li><strong>Fire:</strong> Dexterity</li>
<li><strong>Lightning:</strong> Might</li>
<li><strong>Water:</strong> Willpower</li>
</ul>
</section>
<section id="wise-counsel">
<h2>Wise Counsel</h2>
<div class="requirement">
<strong>Requirements:</strong> You must have mastered one or more Classes among Commander (see High Fantasy Atlas, page 140), Loremaster, and Orator.
</div>
<h3>Support Check Modification</h3>
<p>When you perform a Support Check, if the leader of the Group Check can hear and understand you, you may use <em>(INS + INS)</em>, <em>(INS + WLP)</em>, or <em>(WLP + WLP)</em> instead of the normal Attributes required by the Support Check.</p>
<p style="font-style: italic;">Describe how you offer your advice!</p>
<h3>Teamwork Boost</h3>
<p>Additionally, when you use the teamwork option (see Core Rulebook, page 76) to support another Player Characters Check during their turn in a conflict scene, you may spend 10 Mind Points. If you do, choose up to two of the following benefits:</p>
<ul class="skill-benefit-list">
<li>That character recovers 20 Mind Points.</li>
<li>That character recovers from dazed, enraged and shaken.</li>
<li>At the end of that characters turn, choose one option: perform a free attack with a weapon you have equipped; or perform the Spell action for free, casting a spell whose total MP cost is equal to or lower than 20.</li>
<li>If that character succeeds on their Check and the Check allows them to fill or erase one or more sections of a Clock, they may fill or erase 1 additional section of it.</li>
</ul>
</section>
<div style="margin-top: 50px; padding-top: 20px; border-top: 1px solid #eee;">
<strong>[Unrelated Metadata/Fluff]</strong>
<p><em>"Silver Fork Style, Secret Technique: Spaghetti Spinner!"</em></p>
</div>
</body>
</html>