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

116
html/118.html Normal file
View File

@@ -0,0 +1,116 @@
<link rel="stylesheet" href="book-page.css">
<div class="weapon-entry">
<span class="raw-page-number">Page 117</span>
<h1>33. PROTAGONISTS</h1>
</div>
<!-- WEAPON ENTRY: CRESCENT SCISSORS -->
<div class="weapon-entry">
<h2 class="weapon-name">CRESCENT SCISSORS</h2>
<p><em>A possible rare evolution, worth 1000 zenit.</em></p>
<h3>Basic Info</h3>
<ul>
<li><strong>Type:</strong> Sword</li>
<li><strong>Handling:</strong> Two-handed</li>
<li><strong>Combat Style:</strong> Melee</li>
</ul>
<div class="description">
This weapon has the accurate, magic defense boost and powerful customizations.
</div>
<h3>Form Details</h3>
<div class="weapon-form">
<h4>Form I</h4>
<ul style="list-style: none; padding: 0;">
<li class="stats-line"><strong>W Accuracy:</strong> (DEX + INS)</li>
<li class="stats-line"><strong>Damage:</strong> (HR + 10) light</li>
</ul>
</div>
<p><strong>Unique Features:</strong> When you use the Graft Skill (see page 139), you may erase 1 section of your Growth Clock. • This weapon has the accurate, magic defense boost and powerful customizations.</p>
</div>
<!-- WEAPON ENTRY: EYRE -->
<div class="weapon-entry">
<h2 class="weapon-name">EYRE</h2>
<p><em>For those who dont sacrifice elegance, even during the most dangerous adventures.</em></p>
<p class="description">The weapons basic form, worth 400 zenit.</p>
<!-- Form I -->
<h3>Form I</h3>
<div class="weapon-form">
<ul>
<li class="stats-line"><strong>W Accuracy:</strong> (DEX + INS)</li>
<li class="stats-line"><strong>Damage:</strong> (HR + 5) physical</li>
</ul>
<ul style="list-style: none; padding: 0; margin-top: 10px;">
<li><strong>Type:</strong> Dagger</li>
<li><strong>Handling:</strong> Two-handed</li>
<li><strong>Combat Style:</strong> Melee</li>
<li><strong>Quality:</strong> No Quality.</li>
</ul>
<p><strong>Features:</strong> This weapon has the defense boost, magic defense boost and transforming customizations.</p>
</div>
<!-- Form II -->
<h3>Form II</h3>
<div class="weapon-form">
<ul>
<li class="stats-line"><strong>W Accuracy:</strong> (DEX + INS) +2</li>
<li class="stats-line"><strong>Damage:</strong> (HR + 10) physical</li>
</ul>
<ul style="list-style: none; padding: 0;">
<li><strong>Type:</strong> Firearm</li>
<li><strong>Handling:</strong> Two-handed</li>
<li><strong>Combat Style:</strong> Ranged</li>
<li><strong>Quality:</strong> No Quality.</li>
</ul>
<p><strong>Features:</strong> This weapon has the accurate, powerful and transforming customizations.</p>
</div>
</div>
<!-- WEAPON ENTRY: EARNSHAW -->
<div class="weapon-entry">
<h2 class="weapon-name">EARNSHAW</h2>
<p><em>A possible rare evolution, worth 1000 zenit.</em></p>
<!-- Form I -->
<h3>Form I</h3>
<div class="weapon-form">
<ul>
<li class="stats-line"><strong>W Accuracy:</strong> (DEX + INS)</li>
<li class="stats-line"><strong>Damage:</strong> (HR + 9) dark</li>
</ul>
<ul style="list-style: none; padding: 0;">
<li><strong>Type:</strong> Dagger</li>
<li><strong>Handling:</strong> Two-handed</li>
<li><strong>Combat Style:</strong> Melee</li>
<li><strong>Unique Ability:</strong> As long as an ally you have a Bond of affection towards is present on the scene, damage dealt by this weapon ignores Immunities and Resistances.</li>
</ul>
<p><strong>Features:</strong> This weapon has the defense boost, magic defense boost and transforming customizations.</p>
</div>
<!-- Form II -->
<h3>Form II</h3>
<div class="weapon-form">
<ul>
<li class="stats-line"><strong>W Accuracy:</strong> (DEX + INS) +2</li>
<li class="stats-line"><strong>Damage:</strong> (HR + 14) dark</li>
</ul>
<ul style="list-style: none; padding: 0;">
<li><strong>Type:</strong> Firearm</li>
<li><strong>Handling:</strong> Two-handed</li>
<li><strong>Combat Style:</strong> Ranged</li>
<li><strong>Unique Ability:</strong> As long as an ally you have a Bond of affection towards is present on the scene, damage dealt by this weapon ignores Immunities and Resistances.</li>
</ul>
<p><strong>Features:</strong> This weapon has the accurate, powerful and transforming customizations.</p>
</div>
<!-- Quoted Text/Footer -->
<div style="margin-top: 30px; padding: 15px; background-color: #fefefe; border-left: 4px solid #2ecc71;">
<p style="font-style: italic; margin-bottom: 15px;">“The Lake Moth was one of the last spirits to fall prey to the Fury, and this metal harbors their last will.”</p>
</div>
</div>