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

91
html/150.html Normal file
View File

@@ -0,0 +1,91 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Protagonists - Gourmet Skills</title>
<link rel="stylesheet" href="book-page.css">
</head>
<body>
<div class="container">
<header>
<h1>33 PROTAGONISTS</h1>
<p style="font-size: 0.9em; color: #7f8c8d;">Page 149 | Gourmet Chapter</p>
</header>
<!-- Gourmet Free Benefits Section -->
<section class="gourmet-benefits">
<h2>⭐ GOURMET FREE BENEFITS</h2>
<ul>
<li><strong>Inventory Points:</strong> Permanently increase your maximum Inventory Points by 2.</li>
<li><strong>Project Creation:</strong> You may start Projects to create unique foods and drinks; they are always consumable, and their area is based on the number and type of creatures you need to nourish.</li>
</ul>
</section>
<!-- Skills Section -->
<div class="skills-container">
<h2>🍖 GOURMET SKILLS</h2>
<!-- COOKING Skill -->
<div class="skill-card" id="cooking">
<div class="skill-header">
<h3 class="skill-name">COOKING</h3>
<span class="skill-cost">(çç5)</span>
</div>
<p>When you rest inside a settlement, you gain (SL) ingredients (see next page).</p>
<p>You may use an action and combine 2 or 3 ingredients to prepare a delicacy (see next page). You choose one option: you apply its effects to yourself or an ally you can see; or you perform a free attack with a weapon you have equipped. This attack deals no damage, but you apply the delicacys effects to each enemy hit by the attack.</p>
<p><strong>Ingredients Capacity:</strong> You may carry up to 10 + (SL × 5) ingredients, and they will never spoil until you use them; if you take this Skill during character creation, you begin play with ten ingredients with random tastes.</p>
</div>
<!-- KNIFE AND FORK Skill -->
<div class="skill-card" id="knife-fork">
<div class="skill-header">
<h3 class="skill-name">KNIFE AND FORK</h3>
<span class="skill-cost">(N/A)</span>
</div>
<p>When you perform the free attack granted by the Cooking Skill, if you combined no more than 2 ingredients, you may have the attack deal damage as normal. If you do, you treat your High Roll (HR) as 0 when calculating damage dealt by this attack.</p>
</div>
<!-- MADE WITH LOVE Skill -->
<div class="skill-card" id="made-with-love">
<div class="skill-header">
<h3 class="skill-name">MADE WITH LOVE</h3>
<span class="skill-cost">(çç3)</span>
</div>
<p>When you use the Cooking Skill and choose to apply the effects of the delicacy to yourself or an ally you can see, you may spend up to (SL × 10) MP. For every 10 MP you spend this way, apply the delicacys effects to an additional ally you can see.</p>
</div>
<!-- SALT AND PEPPER Skill -->
<div class="skill-card" id="salt-pepper">
<div class="skill-header">
<h3 class="skill-name">SALT AND PEPPER</h3>
<span class="skill-cost">(N/A)</span>
</div>
<p>When you prepare a delicacy, you may spend 2 Inventory Points: if you do, change the taste of one ingredient to a different taste of your choice.</p>
</div>
<!-- TRAVELING COOK Skill -->
<div class="skill-card" id="traveling-cook">
<div class="skill-header">
<h3 class="skill-name">TRAVELING COOK</h3>
<span class="skill-cost">(çç3)</span>
</div>
<p>After each travel roll, if you acquired the Cooking Skill, you gain (SL × 2) ingredients.</p>
<h4>Narrative Prompts:</h4>
<ul>
<li>Who taught you how to cook? What is your relationship with your teacher?</li>
<li>Is your craft something revolutionary, or is it an established field of work?</li>
<li>What does your cooking look like? Which tools do you use?</li>
<li>What legendary recipe or ingredient are you looking for?</li>
</ul>
</div>
</div>
<!-- Footer/Metadata Note -->
<div class="meta-info">
</div>
</div>
</body>
</html>