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

71
html/119.html Normal file
View File

@@ -0,0 +1,71 @@
<link rel="stylesheet" href="book-page.css">
<h1>Weapon Catalogue Excerpt</h1>
<div class="page-meta">Page 118</div>
<!-- HEAVY ARBALESTS SECTION -->
<section>
<h2>HEAVY ARBALESTS</h2>
<p>These massive crossbows must be fitted to a tripod before shooting. They are built out of sheets of metal found in ancient ruins.</p>
<!-- GASTRAPHETES -->
<div class="item-details">
<h3>GASTRAPHETES</h3>
<span class="price">Basic Form | Worth 300 Zenit</span>
<p><em>The weapons basic form.</em></p>
<ul class="attributes">
<li><strong>Accuracy:</strong> (DEX + MIG) +2</li>
<li><strong>Damage:</strong> (HR + 10) physical</li>
<li><strong>Attributes:</strong> Bow, Two-handed, Ranged, No Quality.</li>
</ul>
<p><em>This weapon has the accurate, defense boost and powerful customizations.</em></p>
</div>
<!-- HELEPOLIS -->
<div class="item-details">
<h3>HELEPOLIS</h3>
<span class="price">Possible Rare Evolution | Worth 1600 Zenit</span>
<ul class="attributes">
<li><strong>Accuracy:</strong> (DEX + MIG) +2</li>
<li><strong>Damage:</strong> (HR + 14) fire</li>
<li><strong>Attributes:</strong> Bow, Two-handed, Ranged.</li>
</ul>
<p><em>Deals 5 extra damage to creatures suffering from slow.</em></p>
<p><em>This weapon has the accurate, defense boost and powerful customizations.</em></p>
</div>
</section>
<!-- METEOR BELLS SECTION -->
<section>
<h2>METEOR BELLS</h2>
<p>The warrior-invokers who pass the trial of the Whispering Mountain wield these unusual weapons: a pair of massive, hallowed rattles, connected by a strong hemp rope or a heavy chain.</p>
<!-- COPPER RATTLES - FORM I -->
<div class="item-details">
<h3>COPPER RATTLES (Form I)</h3>
<span class="price">Basic Form | Worth 400 Zenit</span>
<ul class="attributes">
<li><strong>Accuracy:</strong> (DEX + MIG)</li>
<li><strong>Damage:</strong> (HR + 5) physical</li>
<li><strong>Attributes:</strong> Brawling, Two-handed, Melee, No Quality.</li>
</ul>
<p><em>This weapon has the quick and transforming customizations.</em></p>
</div>
<!-- COPPER RATTLES - FORM II -->
<div class="item-details">
<h3>COPPER RATTLES (Form II)</h3>
<span class="price">Variant Upgrade | (No listed cost, assumes upgrade path)</span>
<ul class="attributes">
<li><strong>Accuracy:</strong> (DEX + MIG)</li>
<li><strong>Damage:</strong> (HR + 12) ice</li>
<li><strong>Attributes:</strong> Flail, Two-handed, Melee, No Quality.</li>
</ul>
<p><em>This weapon has the elemental, powerful and transforming customizations.</em></p>
</div>
</section>
<!-- FOOTER/META INFORMATION -->
<div style="clear: both; margin-top: 40px; padding-top: 15px; border-top: 1px solid #eee;">
<strong>W</strong> <br>
</div>