Blue Prince Board Game · Project Record

Changelog

Dated record of what changed, where, and why. Updated as the design evolves.

This changelog tracks three kinds of changes: factual fixes where something was wrong and is now right, renames where the thing didn't change but the language did, and deferrals where a mechanic was removed or held pending design work. Blog posts capture the narrative and reasoning; this doc captures the ledger. Entries list the files touched for traceability. Latest entries at the top.
July 10, 2026 Print & Play Rebuild · Card Decks
Site
Print & Play section rebuilt around exported card images
Home-print card art re-exported as 131 individual PNGs (poker faces + backs), normalized to 750 × 1021px @ 300 DPI and organized into ten decks: Resource Items (29, formerly "Common Items"), Special Items (21), Dig Results (17), Trunk Contents (15, formerly "Trunk Result Cards"), Treasure Maps (8), Lever Clues (8, new deck), Commissary Stock (7), Alzara Prophecy (6), Kitchen Menu (5), Meal Cards (5). Fixed a filename typo on disk (coomissary-stock-backcommissary-stock-back).
images/cards-for-print/*.png
Site
New PNG-based printable sheets + per-deck ZIP downloads
Ten fresh print-sheet pages generated (<deck>-print.html), each tiling the deck's PNG faces nine-up on US Letter with a matching card-back sheet for duplex printing, a Print button, and a ZIP download link. Each deck also packaged as a ZIP of its individual PNGs in images/cards-for-print/zips/. print.html rewritten to list exactly these ten decks with both "Print sheet" and "Download ZIP" actions. Retired the old hand-built card sheet-pages and the Tracking/Reference/Tomorrow Room entries from the Print & Play index (these ten decks are now the full home-print set). nav.js wired into every new page.
print.html · resource-items-print.html · special-items-print.html · dig-results-print.html · trunk-contents-print.html · treasure-maps-print.html · lever-clues-print.html · commissary-stock-print.html · alzara-prophecy-print.html · kitchen-menu-print.html · meal-cards-print.html · images/cards-for-print/zips/*.zip
June 2, 2026 Session 12 · Site Restructure · Repo Hygiene
Site
Full project backup to Google Drive
Entire project folder zipped and saved to Google Drive before beginning any repo reorganization work.
— (external backup)
Site
Image folder reorganization — complete
All images moved from flat images/ root into subfolders: posts/, playtests/, tokens/, lore/, metaclues/, win/, room-cards/, art-assets/, promo/, misc/, icons/, fonts/. All HTML file image paths updated across the full site. Verified clean via deadlinkchecker.com — 232 OK. Five remaining flagged items are intentional placeholder slots in interview2.html with onerror fallback handlers. Global broken image handler added to nav.js — any failed img tag now shows a navy "Image Unavailable" placeholder automatically.
images/ (all subfolders) · nav.js · all post-XX.html · blog.html · index.html · postcard_chain_table.html · special_items_all_sheets.html · item_spawn_reference.html · and others
Site
Post files moved into posts/ subfolder
All 28 post-XX.html files moved from repo root into posts/ subfolder. Internal paths updated with ../ prefix (site.css, nav.js, images/, blog.html back link, root page links). Root-level files updated: blog.html, index.html, design.html, and nav.js footer links all point to posts/post-XX.html. nav.js converted from relative to root-relative hrefs (href="index.html"href="/index.html") so nav renders correctly from any subfolder depth.
posts/ (new folder) · nav.js · blog.html · index.html · design.html · all post-XX.html
Cleanup
Dead player_sheet.html links removed
player_sheet.html was referenced in index.html and tracking.html but the file never existed. Both links removed. Pre-existing dead link, not a regression.
index.html · tracking.html
Site
.gitignore created
_meta/ folder gitignored — session handoff files, private notes, and design docs never push to Netlify. production/ gitignored. Font subfolders gitignored. *.zip, *.eml, .DS_Store gitignored.
.gitignore
May 28, 2026 Session 11 · Site Polish · Design Capture · Event Prep
Site
Favicon added — three-size SVG set
Three SVG favicons created: 64px and 32px show a room tile (dashed border, four door notches, centered lock icon); 16px shows the tile with notches only — no lock, for legibility at small size. Navy #0D253D background, white lines. Injected globally via nav.js — no changes needed to individual HTML pages.
favicon-64.svg · favicon-32.svg · favicon-16.svg · nav.js
Site
Playtest status band added to homepage
New navy full-width band added above Featured Documents section. Four stats displayed with large Cinzel numerals: Sessions Complete (3), Days Played (6), Net Promoter Score (7), Players Would Play Again (✓). "Read the report →" link in new light blue link treatment. Old single-line playtest strip removed — was redundant with the new band.
index.html
Site
link-light utility class added to site.css
New global utility class .link-light for inline links on navy backgrounds. Cinzel serif, light blue #7EB8D4, subtle underline, hover state. Documented with inline comment. Use on any <a> sitting on a navy surface sitewide.
site.css
Site
Right rail playtest form added to blog.html and cleaned up on about.html
Both pages now use a consistent two-column layout (1fr 340px) with the Calling All Playtesters form tile in the right rail. Form cleaned up: rotated "Calling All Play Testers" text removed, crown image repositioned as a CSS-placed absolute element on tile corner, heading simplified to 18px bold Cinzel. Placeholder text updated to Simon / Simon@mt.holly.com. Form tile is now a reusable pattern for future pages.
about.html · blog.html
Site
thanks.html icon replaced with favicon SVG
The ⬡ hex emoji on the form confirmation page replaced with an inline SVG matching the 32px favicon — room tile with dashed border, notches, and lock — rendered at 64px display size.
thanks.html
Site
nav.js footer updated — posts 22 and 23 added
Dev Log footer column updated to show Post 23 (May 28 — Looks Only Get You So Far) and Post 22 (May 27 — Zooming Out) at the top. Posts 17 and 16 rolled off the bottom.
nav.js
Design
Room Tile Visual Redesign logged in design_deviations.html
New Proposed/High deviation entry. Session 3 revealed that baked-in VG subtitle text on room tiles caused players to treat tile notes as complete instructions, skipping the glossary entirely. Proposed resolution: source clean art via inpainting tools (cleanup.pictures confirmed viable on Foundation tile) and author custom instructional text with controlled hierarchy. Gem cost on tile front. 110 rooms — needs strategic rollout. Tonda Ros credited and acknowledged in notes.
design_deviations.html
Design
Two magnet component ideas logged in design_ideas.html
Magnet-Backed Realm Core Tokens: 3D-printed Realm Core shapes (Printables model by Aramendry) include a magnet cavity version — tokens snap to metal play surface. Magnetic Play Surface: room tiles with embedded magnets on a steel sheet mat — eliminates tile drift. Both Proposed/Component, both dated May 28. Entries cross-reference each other.
design_ideas.html
Event Prep
Event card created for Riso Quest / AIGA event (May 31)
Front/back takeaway card. Front: QR code linking to blueprinceboardgame.com. Back: Blue Prince Board Game title in game-accurate bold condensed font treatment, navy background, blueprint grid. Printed at 3.5×3.5 inches. QR generated as PNG at 444×444px with navy fill.
event_card.html · qr_bp.png
May 25, 2026 Session 10 · Brutal Simplification · Rules Implementation
Blog Post
Post 19 — Brutal Simplification published
Memorial Day weekend post. Captures the design tension of deciding what to cut from the adaptation — Tomorrow Room cards, Alzara, Kitchen/Dinner cards, Metal Detector, small-effect items, Treasure Maps. Written before the May 26 playtest that will resolve the list. Handwritten notes photo included. Post ends unresolved deliberately — a "before" to the playtest "after."
post-19.html · blog.html · nav.js · images/post19_brutal_simplification.jpeg
Rules Change
Safe rooms — simplified to 1 gem on first entry each run, no tracking
Previous rule: first-ever campaign entry into each of the four safe rooms (Drawing Room, Boudoir, Study, Office) yielded 1 red gem, tracked via Carry-Forward card. All subsequent entries in that campaign also yielded a gem. New rule: all six safe rooms (Drawing Room, Boudoir, Study, Office, Drafting Studio, Shelter) yield 1 pink gem on first entry each run. No tracking. No red gem distinction — all gems are pink. Carry-Forward card rows for safe rooms removed. Additionally: Wine Cellar incorrectly had a safe note in the glossary — removed (no safe exists in the VG).
blue_prince_rules.html · room_glossary.html
Removed
Tomorrow Room cards removed — Campaign Sheet replaces throughout
The physical Tomorrow Room card deck is removed from the base game. All "take the card on draft" language replaced with "check the Campaign Sheet box." The Campaign Sheet already had checkboxes for all Tomorrow Room bonuses (Sauna, Morning Room, Freezer, Coat Check, Clock Tower, Planetarium, Her Ladyship's Chamber, Master Bedroom) — this change makes those checkboxes the official tracking method. The card deck is moved to expansion consideration. Design Deviations entry updated: status Locked → Removed.
blue_prince_rules.html · room_glossary.html · production_guide.html · design_deviations.html
Rules Addition
Tile Orientation section added to Turn Structure
New section added after Special Placement Rules in Turn Structure. Explains that tile orientation is determined by board position, not player choice. Three cases: central tile (L and T-shape may connect from any door), edge tile from center (L-shape either orientation, T-shape fixed to middle door), edge or corner tile (all orientations fixed). Dovecote interaction noted as the one override. Added as a mid-game reference — the rule exists in the VG but was absent from the rules doc.
blue_prince_rules.html
Component
Physical token inventory added to production guide
New table added before the Production Checklist. 20 line items: padlock tokens (20), metal trunks (10), coins (100), Apple tokens (8), Banana tokens (6), Orange tokens (4), gems/pink acrylic (30), Ivory Dice (8), dirt pile tokens (50), regular keys (24), Shovel (1), Sledge Hammer (1), Telescope (1), Salt Shaker (1, flagged under review), player token (1), Shelter tokens (3), Silver Key (1), Prism Key (1), Secret Garden Key (1), Car Keys (1). Archived Keychain boxes (4) added separately. Fruit broken out by type per the distinct miniature decision.
production_guide.html
Rules Change
Archived Keychain mechanic adopted — blind draw replaces all Special Key rolls
All four Special Keys (Secret Garden Key, Car Keys, Silver Key, Prism Key) are housed in identical iam8bit Archived Keychain boxes. Whenever a Special Key is awarded — Music Room (roll 4–5), Billiard Room (roll 5), Locksmith (8 coins), Dig Result, Trunk Result — the player picks one box blind instead of rolling to determine which key. The two-roll Music Room system is retired. Car Keys added to the blind draw pool as a base game item (previously expansion-only). Edge case: Car Keys are never consumed — if the Car Keys box is drawn while the player already holds them, the box is empty; take 3 regular keys instead. Boxes repositioned after each draw to maintain mystery. Design Deviations entry added: Locked. Design Ideas entry updated: Proposed → Adopted.
blue_prince_rules.html · room_glossary.html · dig_results_cards.html · trunk_results_cards.html · design_deviations.html · design_ideas.html · production_guide.html
Rules Change
Fixed item spawns locked in — 5 rooms
Five thematic fixed spawns added to bring item distribution closer to VG spread and give each room a stronger identity. Courtyard: Shovel always placed on tile at draft (first to enter picks it up — mirrors Her Ladyship's Chamber/Telescope pattern; no second copy if already held). Hallway: 1 Key on entry. Library: 1 Key on entry. Nursery: 1 gem on entry. Bunk Room: 1 random fruit token + 1 Key on entry. All five logged as Deviations (Low severity) in Design Deviations. Item Spawn Reference updated with new rows for all five rooms.
blue_prince_rules.html · room_glossary.html · item_spawn_reference.html · design_deviations.html
Deferred to Expansion
Alzara Prophecy Cards — removed from base game
Alzara removed from all base game documentation. Rationale: lore content carries no meaning for players unfamiliar with the VG; neither playtest group responded to Alzara as intended. The physical card deck (alzara_cards.html) is preserved for future expansion use. Rumpus Room is now coins-only on entry. Design Deviations entry updated. SVG setup diagram cleaned up — Alzara prophecy box removed, Tomorrow Room cards also removed from diagram (cards already retired this session).
blue_prince_rules.html · room_glossary.html · production_guide.html · design_deviations.html
Confirmed
Kennel dig-spot mechanic confirmed as designed
Punch list flag ("Kennel is Blue, Blue rooms don't have dig spots") resolved. The 2 dig spot tokens on the Kennel tile are intentional — the Kennel's core mechanic is dig + door unlock, and the dig spots are how you trigger that in place. Blue rooms can and do have dig spots; the original flag was inaccurate. Kennel mechanic unchanged. A deeper audit of the dirt/dig spot system across room types is flagged for a future session.
None — confirmed as designed
Rules Addition
Drawing Board — tile cool-down system added
New mechanic adopted from playtesting. The 2 unchosen tiles after each draft no longer return immediately to the Active Bag — they are placed face-down on the Drawing Board (a designated spot beside the board) for one turn, then returned to the bag at the start of the next draft. This prevents drawing back the same rejected tiles on the subsequent turn, a frequently occurring frustration documented in both playtests. The Drawing Board is the physical translation of the VG's large pool-size buffer. Library draws 3 tiles to the Drawing Board (instead of 2). Ivory Die redraws follow the same rule. Logged as Low severity Addition in Design Deviations.
blue_prince_rules.html · rank_track_card.html · loop_card.html · item_spawn_reference.html · design_deviations.html
Milestone
GitHub repository created — auto-deploy pipeline live
Project files moved into a GitHub repository (blueprinceboardgame) using GitHub Desktop. Netlify disconnected from manual drag-and-drop deploys and reconnected to the GitHub repository via continuous deployment. blueprinceboardgame.com now auto-deploys within ~30 seconds of any push to main. New workflow: edit files locally → commit in GitHub Desktop with a descriptive message → push to origin → site updates automatically. No more manual zip uploads or drag-and-drop deploys.
All project files — version control established
Rules Change
Trunk system rewritten — guaranteed placement, lock die determines state
Previous rule: roll blue die at draft to determine if a trunk exists (OPEN = trunk present, LOCKED = no trunk). New rule: Green and Pink (Bedroom) rooms always have a trunk — place token on draft, then roll blue die for lock state only (OPEN = unlocked, LOCKED = locked). Blue rooms may still get a surprise trunk via Locked Trunk token card from the Special Items deck. Red, Orange, and Gold rooms never contain trunks. Bunk Room always has one trunk (previously could have 0, 1, or 2). Design rationale: players now learn which room types always have trunks rather than rolling to discover presence — more faithful to VG, cleaner table moment, consistent with physical token model.
blue_prince_rules.html · design_deviations.html
Milestone
blueprinceboardgame.com deployed live
Site deployed to Netlify and connected to the custom domain blueprinceboardgame.com, registered via Squarespace. All 60 project files live including 17 dev log posts, full rules documentation, changelog, design deviations, design ideas, room glossary, component references, and Definition of Done. DNS configured via Squarespace custom records (A record @ → 75.2.60.5, CNAME www → Netlify subdomain). Business cards printed for the Riso Quest workshop on May 31 — QR code linking directly to the site.
All project files — first public deployment
May 14, 2026 Session 8 · QQ Solo Playtest
Playtest
QQ solo playtest — incomplete run, triple locked at Cloister
Solo run, no observer. Path built through White and Blue ranks — Entrance Hall → Music Room → Hallway → Storeroom → Spare Room → Pantry → Observatory → Dining Room → Commissary → Archives → Walk-In Closet → Secret Garden → Billiard Room → Cloister. Run ended at Cloister: triple locked (two overlapping locks on Cloister plus Chamber above), no resources to proceed. Antechamber was visible but unreachable.

Confirmed working: Observatory mechanic worked well with the Fixed Stars booklet at table. Secret Garden key with physical token felt meaningful.

Economy concern: Couldn't afford anything in the Commissary. Magnifying Glass was for sale but felt useless — no tension on step economy. Steps weren't scarce enough to make step-granting items worth purchasing.

Design questions raised (logged, not acted on):
— Should item cards without physical tokens be consumed immediately when drawn, for consistency with token-based items?
— Consider removing Alzara cards altogether.

Rules/usability issues flagged (added to punch list):
— Billiard Room: no rules entry for what happens if Secret Garden Key is already used before entering.
— Cloister: trunk option presence unclear — needs verification.
— Overlapping lock tokens: usability problem when two adjacent rooms both have locks. Tokens physically clash and become confusing. Documented with photo.
— Lock pick: thinks there should be an option — verify against VG.
changelog.html · post-17.html
May 13, 2026 Session 7 · Playtest Documentation & Physical Prototype Review
Playtest
May 9 playtest documented — Mike (first-time player, never played VG)
Surprise drop-in playtest on Saturday May 9, 2026. Player: Mike. Solo play, QQ present and observing. Completed game in approximately 40 minutes. Won via Secret Garden draft on the West Wing, made it to the Antechamber. Player had never played the video game — clean first impression.

Rules clarity issues flagged (no changes made yet):
— Needed a reminder to roll for a locked door. Suggests the lock roll trigger isn't prominent enough in the tutorial or tile reference.
— Garage instructions unclear — player seemed to grasp the concept but needed guidance.
— Music Room Special Key system caused confusion. Player drafted Music Room; QQ awarded the Secret Garden Key. The two-roll sequence (first roll to determine if Special Key is granted, second roll to determine which key) was not self-evident from the tile or rules.
— Telescope instructions unclear in the context of the Observatory.

Observatory: Felt clunky in play. Resolved by introduction of the printed constellation booklet — table reference now available without going to a screen. Telescope instructions still need a rules clarity pass.

Economy: Player expected gems more frequently — "every few rooms or so." Suggests the gem reward cadence may feel too sparse to a new player. Noted, not acted on — requires more playtest data before any adjustment.

Shovel: Never appeared in the run. Player commented "Shovel seems irrelevant" — never thought about it. Likely a non-appearance issue rather than a balance issue, but worth tracking across future sessions.

Positive signals: Understood basic mechanics without VG background. Red room Archive effect worked as intended. Completed the game and reached the win condition. 40-minute runtime is within target range.
design_ideas.html (3 new entries) · changelog.html · post-16.html
Component
Physical prototype board — navy neoprene mat confirmed, dimensions logged
Current play surface is a navy neoprene mat with stitched edge, 31" × 15.5". Size noted as not final — final dimensions TBD pending Figma mat design. Mat will include printed zones replacing handwritten labels: confirmed zones include Outer Room staging area and a No Roll indicator (covering Ranks 1–3 where lock die is skipped). Additional printed zones under consideration: designated stack placeholders for Event Additions, Studio Additions, Found Floorplans, and Outer Rooms — each a labeled square on the mat surface. Final mat design to be produced in Figma.
production_guide.html (pending update)
Design Ideas
Three new ideas filed from May 9 playtest
All three filed as Proposed in design_ideas.html — no rules or component changes made.

Physical Item Tokens: Observed player instinct to want a physical object when gaining an item card. Proposal to replace high-frequency item cards (Shovel, Telescope, Lantern, etc.) with physical tokens, reducing card footprint and improving tactility.

QR Codes on Tile Backs: Player flagged that laptop room lookup is not realistic for most players. Suggestion to print unique QR codes on tile backs linking to mobile-optimized room reference pages. Feasibility questions noted (unique codes per tile, stable hosting, print complexity).

2-Player Competitive Mode: Player suggested unprompted — two boards, one shared bag, race to Antechamber. QQ wants to test next session. Key open questions: turn structure, shared vs separate resources, Outer Room handling, win condition.
design_ideas.html
April 20, 2026 Session 6
Bug fix
Nav restored on campaign_sheet.html — confirmed working
Page was missing its <link rel="stylesheet" href="site.css">, so the nav injected by nav.js had no styles to apply. Added the site.css link, the standard body { padding-top: 0 !important } override to prevent the page's own 24px body padding from pushing the nav down, and a margin-top: 32px on .print-label so the first content element sits below the nav with breathing room rather than hugging it. Print media already hides the nav via site.css's @media print rules, so the print layout is unaffected. Visually confirmed in browser. Removed from the punch list.

Open follow-up: Other standalone print-styled pages likely have the same missing-site.css issue. Files to audit: common_items_cards.html, kitchen_menu_card.html, loop_card.html, rank_track_card.html, alzara_cards.html, card_backs.html, commissary_stock_cards.html, dig_results_cards.html, meal_cards.html, special_items_all_sheets.html, tile_backs.html, tomorrow_room_cards.html, treasure_map_cards.html, trunk_results_cards.html. Note these may be intentionally standalone for print use without nav — audit should check whether each page is intended to be browsable from the site or purely a print artifact.
campaign_sheet.html · changelog.html (punch list entry removed)
Dev Log
Post 14 published — "The Housekeeping Post"
Dev log entry documenting the three-phase CSS cleanup. Covers the design token architecture (primitive → semantic → component), the failed cascade-layers experiment and why it was reverted, the blog post consolidation (Phase 2: 362 inline CSS lines removed), the layout-alignment bug surfaced during migration (Phase 2.5), the section hub unification (Phase 3), and the decision to stop before Phase 4. Includes an honest numbers table — the codebase net grew by 125 lines, which is the right number to report. The real win is centralization: changing the site's navy color now means editing one line instead of 37. The thumbnail and in-post hero image are screenshots of the site.css tokens section. Added to blog.html listing at top. Added to nav.js footer recent-posts list (post-09 dropped to maintain 5 entries).
post-14.html · blog.html · nav.js
Dev Log
Post 15 published — "The Constellation Problem"
Reflective post on the constellation redesign decision. Covers the three-way rule contradiction that had been sitting in our docs for months (reference card said "cumulative permanent," rules said "per-run only," Telescope entry said "pick one"), the playtesting pattern that made the 50-star milestone visibly unreachable, the difficulty of cutting something that's in the video game, the replacement d6 mechanic, and the thematic continuity piece where Ladyship's Chamber's call-it-a-day switched from +1 star to +1 key (tied to the Diary Key lore). Honest about the emotional shape of the decision — the avoidance, the "I'll figure it out later" for months, the sunk-cost of the tally grid design. The Fixed Stars printed booklet preserved as a future expansion idea. Thumbnail: rendered approximation of the old constellation card design, showing what's being cut.
post-15.html · blog.html · nav.js
Design
Constellation system redesigned — star accumulation removed, d6 roll replaces it
The single largest deviation from VG in the base game. The previous mechanic used star accumulation across a campaign: draft the Observatory for +1 star, end in the Planetarium for +2, cross milestones (1/2/3/4/7/8/11/15/50) to permanently activate constellations with stacking effects. Playtesting revealed most campaigns end in 1–4 days — the 15-star and 50-star milestones are unreachable, the tally grid was decorative, and the per-run vs cumulative rules were contradictory across three different docs. New mechanic: on first Observatory entry this run, roll a d6. 1=North Star (+1 coin), 2=The Twins (+2 trunks on Entrance Hall), 3=The Slice (+3 steps), 4=Diamondus Minor (+1 gem), 5=Clavis (+1 key), 6=The Sail (50% off shops rest of run). Telescope on first entry rolls twice. Planetarium end-of-day grants a carry-forward "next run rolls twice" effect. Telescope acquired after first entry allows one re-entry roll. Ladyship's Chamber call-it-a-day changed from "+1 star" to "+1 key" (ties thematically to the Diary Key quest chain in VG). Files touched: constellations.html (full redesign as d6 card), blue_prince_rules.html (Section 18 rewritten, Section 2 definition updated, Tomorrow Room table, Carry-Forward table, Ladyship's Chamber, Telescope item entry), room_glossary.html (Observatory/Planetarium/Ladyship entries), campaign_sheet.html (Star Tally and Constellation Milestones sections removed, Ladyship's carry-forward row added), tracking.html (Star Tally removed, descriptions updated), design_deviations.html (4 new deviation entries: Constellation System d6 Roll, Planetarium Carry-Forward, Ladyship's Call-it-a-Day, Telescope Item d6 Adaptation), shopping_list.html (booklet replaced with reference card), print.html (descriptions updated), design_ideas.html (Fixed Stars booklet preserved as future expansion idea). See Dev Log post 15 for full rationale and emotional context.
constellations.html · blue_prince_rules.html · room_glossary.html · campaign_sheet.html · tracking.html · design_deviations.html · shopping_list.html · print.html · design_ideas.html
Decision
CSS cleanup stopped after Phase 3 — diminishing returns on remaining files
Phase 4 scope would have been the "big inline doc" pattern files — blue_prince_rules, how_to_win, first_run_tutorial, production_guide, campaign_sheet, shopping_list, book_effects_reference, item_spawn_reference, and the paper-styled docs (room_setup_reference, constellations, blue_prince_expansion_list, difficulty_curve_comparison). These use a body { padding: 40px 20px } + .page border frame pattern. Each doc's layout is substantially unique (different table structures, callouts, badges, content flow) — the shared surface between them is maybe 30% of their CSS, mostly the outer .page frame and doc-header styles. Decision: leave these alone. The maintainability win from centralizing the frame across 10 files wouldn't justify the risk of per-file regressions when each doc is structurally distinct. Net impact of stopping: about 100–150 more lines that stay duplicated across those files but don't create active maintenance cost until the paper-doc design itself is revisited.
Decision only — no files changed
Cleanup
CSS Phase 3 — section hubs + reference docs migrated to shared .page-hero / .page-body / .doc-entry / .intro-block
Phase 3 of the CSS consolidation. Added to site.css: .page-hero suite (hero + inner + h1 + p), .page-body (1100px container), .doc-entry suite (doc-list card pattern used on section hubs), .intro-block (gold-bordered callout), .section-divider (small-caps eyebrow separator), and a site-wide scroll-margin-top rule so anchor-link jump targets don't hide behind the sticky nav. Unified four legacy hero class names — .section-hero, .cl-hero, .blog-hero, .gloss-hero — into a single .page-hero class. Migrated 12 files: rules, reference, print, design, blog, changelog, design_deviations, design_ideas, inventory, room_glossary, rollout_plan, tracking. Per-file visual quirks preserved via small inline overrides (tighter hero padding on docs, 900px width on tracking, font-size tweaks on inventory, etc.) — no visual changes intended. Net reduction: 73 lines of inline CSS across the 12 files. Site.css grew by ~200 lines (one-time). Remaining Phase 4 targets: the "big inline doc" pattern (rules doc, how_to_win, first_run_tutorial, production_guide, campaign_sheet, etc.) — those use a body { padding: 40px 20px } + .page border pattern that needs careful per-file handling.
site.css · rules.html · reference.html · print.html · design.html · blog.html · changelog.html · design_deviations.html · design_ideas.html · inventory.html · room_glossary.html · rollout_plan.html · tracking.html
Bug fix
Blog post layout standardized — all 13 posts now use 1100px hero + 760px prose column
Resolves the width inconsistency across the Dev Log. Before this pass, posts 01–07 used a 1100px hero with a 760px inner .post-prose wrapper for body text — but the hero itself had no such wrapper, so the dek and title stretched the full 1100px while the body text wrapped at 760px. Posts 08–13 used 780px everywhere with no inner wrapper. Neither pattern had the dek and body text aligned at the same width within a single post. Option A chosen from the two standardization options: apply the newer "wide hero + prose column" design everywhere. Each post now has a .post-prose wrapper inside .post-hero-inner containing the back link, meta, title, and dek — constraining them to 760px with left alignment — matching the .post-prose wrapper already used inside .post-body. Hero text and body text now start at the same x-position and wrap at the same width. The 1100px navy hero background with blueprint grid still spans the full wide area; only the text inside is constrained. Posts 08–13 also had their 780px width overrides removed from inline CSS since those values now conflict with the standard layout. Affects all 13 blog posts plus their inline CSS.
post-01 through post-13 (13 files)
Cleanup
CSS Phase 2 — blog post styles migrated from 13 inline blocks into site.css
Phase 2 of the CSS consolidation per Option A (migrate as-is, no visual changes). Moved all shared blog post styles — hero, back link, meta/title/dek, body layout, photo components, photo-pair grid, rule/decision/run-log callouts, signoff, post navigation — from 13 duplicated inline style blocks into a new BLOG POSTS section in site.css (~180 lines, one-time). Each post's inline style block shrank accordingly; total inline CSS across posts dropped from 452 lines to 102 lines (350-line reduction, ~77%). What remains inline per post: width overrides for older posts at 780px (kept as-is — visual standardization deferred), post-specific components (error-table in post-07, orchard-callout in post-11, milestone-callout in post-12, delta-table in post-13, change-list in post-03, design-link in post-04), and minor local tweaks to shared components where a post wanted a different visual treatment (e.g. the .run-log variant with opacity: .6 on labels in posts 11–12 overrides the default). The body { padding-top: 0 !important } nav-offset fix stays inline in the 10 posts that have it — not hoisted site-wide because it would affect non-post pages. Posts 01–03 don't have it; that's an unresolved gutter issue predating this pass, flagged for the punch list.
site.css · post-01 through post-13 (13 files)
Addition
Punch List added to Changelog as a sidebar column — open items tracked alongside the dated record
Restructured Changelog into a two-column layout: changelog entries on the left (~2/3 width), Punch List sidebar on the right (~1/3 width). Punch List tracks open items — UI bugs, pending renames, deferred audits, and design questions to revisit. Organized into four groups: UI / Site, Renames, Content Audits, Design Questions. Items "resolved" move from the sidebar into the left-column dated record. Sidebar is position: sticky so it stays in view while scrolling through dated entries. On narrow viewports (under 900px), the sidebar collapses below the changelog as a single column. Seeded with two user-flagged items (Dev Log spacing issue, Loop Card → Complete Turn Loop Card rename) plus five carry-forward items from prior sessions (typography bump, Kennel dig-spot, Maid's Chamber mechanic, verified-alignment retrofit, gem-cost sweep, rules doc intro update, spacing tokens discussion).
changelog.html
Addition
CSS Phase 1 — design tokens added to site.css; cascade layers attempted and removed
First pass at CSS consolidation. The phase introduces primitive → semantic design tokens (raw values like --navy-900 alias to purpose tokens like --color-bg-hero, so one primitive change propagates site-wide), typography tokens (h1-hub, h1-post, h1-hero, prose, meta, eyebrow, micro sizes; line heights; letter spacing), container width tokens (--container-wide: 1100px, --container-prose: 760px), and color-mix() in oklch for derived tints/shades (Baseline Widely Available 2026). Legacy aliases like --navy, --gold, --bg are preserved so all existing inline CSS keeps working unchanged. Spacing scale deferred per user direction. Cascade layers were initially wrapped around the rules but caused a real regression: pages with inline * { margin: 0; padding: 0; } resets (like the rules doc) had those unlayered resets override the layered component styles, collapsing the nav's padding. Unlayered styles always win over layered ones by design, which is incompatible with a codebase where every page has its own inline reset. Traditional specificity-based cascade reverted. The tokens provide the maintainability win the cleanup was aimed at; the layer wrapping would only matter if inline styles were eliminated first, which is a later phase.
site.css
Bug fix
H1 sizes normalized on Dev Log and Changelog to match section hub standard
Dev Log was rendering noticeably larger at clamp(28px, 5vw, 48px) compared to the section hubs (Rules, Reference, Print & Play, Design) at clamp(24px, 4vw, 40px). Changelog was slightly smaller at clamp(24px, 4vw, 38px). Both normalized to the section-hub standard clamp(24px, 4vw, 40px). The Home page hero stays largest at 64px (intentional — it's the marketing hero, not a section hub). Individual blog posts keep their 44px treatment — appropriate for article titles. This pass is specifically about section-hub consistency.
blog.html · changelog.html
Bug fix
Rules doc steps + bullets list layout — correct fix after two wrong attempts
Third time on this bug. The original flex layout split text into per-element flex items (diagonal word-salad). An earlier session change patched the nested-list counter issue but left the flex problem intact. The previous attempt this session swapped flex for grid — which has the exact same behavior problem (every direct child becomes its own grid item, and with only 2 columns and auto-flow, items stacked vertically instead of horizontally — worse rendering, same root cause). The correct pattern: position: relative on the <li> with padding-left: 34px to reserve space, plus position: absolute on the ::before pseudo-element to place the badge in that reserved space. This keeps the <li> as a normal block container — text and <strong> tags flow as inline content and wrap at word boundaries the way text always does. The fix applies to both .steps (numbered steps) and .bullets (bulleted lists) in the rules doc.
blue_prince_rules.html
Bug fix
Puzzle room mechanics swept across all docs — two stale summaries in rules doc corrected
After fixing the puzzle rooms in the Item Spawn Reference, audited every other doc for lingering stale puzzle-room mechanic descriptions. Most were clean — the main puzzle rooms section in the rules doc (Section on room mechanics) already had all three rooms documented correctly with standard die outcomes, and glossary/design_deviations/book_effects_reference were all accurate. Two stale summary paragraphs in the rules doc needed fixing: the Gems sources list said "Billiard Room (occasional gem reward)" — but Billiard Room gives Keys and the Secret Garden Key, not gems. Removed the Billiard reference entirely and made the Parlor entry more specific (1–3→1 gem · 4–5→2 gems · 6→3 gems). The Keys sources list said "Billiard Room (roll: usually 2 keys, rarely Special Key)" — which was half-right but missed the third outcome (6 → 3 Keys) and mischaracterized the Secret Garden Key as a "Special Key." Rewrote to list all three outcomes precisely. Other files (how_to_win, inventory, room_setup_reference, blog posts, kitchen_menu_card) only mention puzzle rooms descriptively as item sources, not mechanic definitions, so no changes needed there.
blue_prince_rules.html
Bug fix
Puzzle room mechanics corrected in Item Spawn Reference — standard die, not rank die
All three puzzle rooms (Parlor, Billiard Room, Music Room) were incorrectly documented as using the rank/lock die with OPEN/LOCKED outcomes. Per the glossary and rules doc (Section on dice: "Standard die used for puzzle room reward tiers — Parlor, Billiard Room, Music Room"), they actually use a plain numbered d6 with numeric outcome tiers. Also, Billiard Room was missing its third outcome entirely (the 6 → 3 Keys result). Rewrote all three rows: Parlor — 1–3→1 gem · 4–5→2 gems · 6→3 gems. Billiard Room — 1–4→2 Keys · 5→Secret Garden Key · 6→3 Keys. Music Room — always 1 Key, then 1–3 nothing / 4–5 Special Key roll / 6→2 Keys. Added a new .roll-num badge style (navy pill with number) for numeric outcomes — visually distinct from the OPEN/LOCKED badges used for lock dice, so the two die systems are immediately tellable apart.
item_spawn_reference.html
Cleanup
Item Spawn Reference rows alphabetized per section
The two rule sections had rooms in arbitrary order (the original order roughly grouped by mechanical similarity but not alphabetically). Sorted both: Always Draw now runs Attic → Closet → Den → Nook → Pantry → Rumpus Room → Storeroom → Walk-in Closet → Wine Cellar. Roll First runs Any Bedroom → Any Green Room → Billiard Room → Locker Room → Music Room → Parlor. Makes scanning the reference significantly faster when you know the room name you're looking for.
item_spawn_reference.html
Bug fix
Item Spawn Reference restructured for readability — three-column grid replaced with vertical stacking
The original layout fit three sections (Always Draw, Roll First, What's in Each Deck) side-by-side at the top-level page width, giving each column roughly 340px of horizontal room. Rule text with OPEN/LOCKED badges and multi-outcome rolls wrapped awkwardly — flex-aligned cells forced mid-word breaks and produced a word-salad reading experience. Rewrote the layout to stack the three sections vertically at full page width. Each rule now has ~900px of horizontal room; multi-outcome rolls render with a .lead preamble ("Roll blue die:") and each outcome on its own line via .outcome spans instead of <br>-heavy markup. The "What's in Each Deck" section splits internally into two columns (Common | Special) using CSS multi-columns for the item lists, preserving compact density without forcing the whole page into a cramped grid. Dead .section-wide CSS removed. Also corrected two lingering stale bits on this page that had been missed in prior sweeps: the White die label ("Ranks 1–4" → "Rank 4" — Ranks 1–3 are never locked) and an added italic note under the die pills stating "Ranks 1–3 are never locked — no die roll needed."
item_spawn_reference.html
Bug fix
Room Glossary Blue color badge now reads as blue
The Blue badge was styled using the site's navy color (#0D253D) at 10% opacity — which, on a cream background, desaturated to a gray appearance rather than a clearly blue one. The other color badges (Purple, Green, Red, Yellow) all held their hue better at the same opacity because they're more chromatically saturated. Swapped Blue to a cobalt (rgba(37,99,235,.14) background / #1e3a8a text) with a slightly higher fill opacity matching the treatment Yellow already uses. Now reads immediately as blue at a glance.
room_glossary.html
Added
Constellation Reference card created
The rules doc referenced a "constellation booklet" for Observatory star tracking, but no such doc existed in the current file set — a leftover reference from an earlier design iteration that produced a PDF booklet but never an HTML version. Built constellations.html as a single printable reference card in the style of rank_track_card.html and loop_card.html: cream background with blueprint grid, all nine constellations (1, 2, 3, 4, 7, 8, 11, 15, 50 stars) with their effects, a Planetarium aside, and a 50-box tally grid with gold-bordered milestones at the unlock thresholds. Linked from print.html under a new "Reference Cards" section and from the Observatory section of the rules doc (the "consult the constellation booklet" reference now points to this card). nav.js updated so the Print & Play tab highlights on the new page.
constellations.html · print.html · blue_prince_rules.html · nav.js
Bug fix
Page width standardized at 1100px across all screen pages
The site had inconsistent container widths: section hubs (Rules, Reference, Print & Play) were 900px, Changelog was 900px, How to Win was 760px, and blog posts 08 through 13 were 780px. Meanwhile the shared nav bar and footer from site.css are always 1100px. This caused visible "jumping" when navigating between pages — content would suddenly narrow or widen while the nav stayed the same. Standardized outer containers at 1100px to match site chrome. Narrow reading-width content (blog post prose, changelog dek, How to Win's document-style page) is now wrapped in an inner container at 760px so line lengths stay readable while the outer container aligns with nav/footer. How to Win specifically uses a .page-wrap outer container so its 760px paper-style document remains visually intact.
rules.html · reference.html · print.html · changelog.html · how_to_win.html · post-08.html · post-09.html · post-10.html · post-11.html · post-12.html · post-13.html
Bug fix
how_to_win.html missing site.css link — navbar/footer unstyled
Every other reference doc on the site includes <link rel="stylesheet" href="site.css"> after its embedded <style> block, plus a small override snippet to normalize body padding for the fixed navbar. how_to_win.html was missing both — nav.js was still injecting the navbar/footer HTML into the page, but without site.css the navigation rendered unstyled. Added the standard two-line block to match the pattern used by rank_track_card.html, loop_card.html, and the rest of the reference docs.
how_to_win.html
Bug fix
Tile Back Markings section rewritten to match actual prototype
The section had documented a letter-code system (E, S, F, X, O) for tile categories that was never on the physical tiles. The actual system is simpler: gem cost written in red Sharpie, category spelled out in full (Event, Studio, Found, Fixed, Outer) in black at the bottom of the tile back, placement restrictions in plain black text, blank back if none apply. Rewrote the seven-row table as three rows matching reality. Also removed an orphan <table> tag on the previous line 610 that was producing an empty second table element.
blue_prince_rules.html
Bug fix
Section 3 setup list CSS — nested sub-list was rendering as top-level steps
The .steps li selector was a descendant selector rather than a direct-child selector, so the nested <ul> inside step 5 inherited the numbered-badge treatment — causing steps 6 through 10 in the rendered output to actually be step 5's sub-items. Also caused awkward word-wrap because the flex layout applied to nested text. Scoped the selector to .steps > li and added proper nested list styling (gold diamond bullets, indented, no counter). Nine numbered steps now render correctly with step 5's five sub-items indented beneath.
blue_prince_rules.html
Added
Design Ideas doc created + first idea filed
New design_ideas.html tracks proposed mechanics through their lifecycle: Proposed → Under Review → Prototyping → Adopted / Rejected. Structure mirrors Design Deviations — filterable table with status, affects-category, and VG alignment columns. First entry filed: Sledgehammer → Secret Garden double door — carrying the Sledgehammer into the Secret Garden opens a second Antechamber door (East) in addition to the West door the room already opens. Matches the VG's Power Hammer behavior. Sledgehammer is not consumed but the East-door effect fires once per run. Status: Proposed. Linked from design.html's Project Record section.
design_ideas.html · design.html · nav.js
Added
Changelog doc created
New changelog.html — a dated, filterable ledger of every change made session by session. Tracks bug fixes, renames, deferrals, additions, and cleanup. Linked from design.html's Project Record section. Retroactive entries populated for Sessions 4 and 5 when creating.
changelog.html · design.html · nav.js
Cleanup
Blog index and footer updated to include posts 12 and 13
The blog landing page was missing post-12 (The Slow Win) and post-13 (Seven Tiles, One Sharpie). Added both with thumbnails. Also fixed post-11 entry — the title was showing "Room 46" from a pre-reframing version and the excerpt described the wrong run; corrected to "The Notes Don't Lie" with the current dek. Added thumbnails to posts 8, 9, and 10, which had been missing them (the 1–7 range had thumbnails, the 8–11 range had none). Footer Dev Log column updated to show the five most recent posts plus "All posts →" link — matches the column-length of the other footer sections.
blog.html · nav.js
April 19, 2026 Session 5
Bug fix
Room Setup Reference audited against glossary — three mismatches fixed
Cross-checked every Core room's category between room_glossary.html (truth source) and room_setup_reference.html. Three rooms disagreed: Secret Garden was listed as Found Floorplan but is actually an Event Addition (enters bag when Secret Garden Key is used); The Foundation was listed as Active Draft but is a Fixed Floor Plan (with a setup nuance — it starts in the bag, then becomes permanent at first placement); Security was named "Security Room" in setup but "Security" in the glossary and VG. All three fixed. Cross-check now shows zero disagreements.
room_setup_reference.html
Bug fix
Foundation setup note clarified — playtest finding
Original note ("Permanent from first placement") was technically accurate but obscured the important setup detail: the Foundation starts in the Active Bag. A playtest caught this — the tile was mistakenly placed on the Fixed Floor Plan pile outside the bag at setup, meaning it never appeared for drafting. Note updated with a warning marker and explicit instruction.
room_setup_reference.html
Added
Core Fixed count added to setup reference summary row
Summary stats were showing 5 of the 6 Core categories (Active Draft, Studio, Event, Outer, Found). The Fixed count was missing — so a new player couldn't verify the 4 Fixed Floor Plans at a glance. Added as a sixth stat card.
room_setup_reference.html
Bug fix
Lock die rank range corrected in three places
Three different docs stated the low-difficulty lock die covered Ranks 1–4. The actual rule (and the VG alignment) is that Ranks 1–3 are never locked at all — no die roll happens. The white die only applies at Rank 4. Same bug in three files, independently introduced.
rank_track_card.html · blue_prince_rules.html · inventory.html
Rename
Lock dice renamed: cream/amber/red → white/blue/red
Custom dice were produced with new colors to match VG color semantics — red stays as the danger color, blue replaces amber for medium, white replaces cream for easiest. Also dropped the parallel "Low/Mid/High" vocabulary entirely — the color names now do the work a difficulty label used to. ~70 references updated across 8 files.
rank_track_card.html · room_glossary.html · blue_prince_rules.html · first_run_tutorial.html · item_spawn_reference.html · design_deviations.html · inventory.html · room_setup_reference.html
Deferred
Security room mechanic removed pending design
Prior mechanic (choose Low/Normal/High difficulty override for lock rolls) read as confusing in playtests. Playtest-by-omission confirmed the room functions fine as a pure routing piece with its two doors. Mechanic is archived, not deleted — to be revisited if a better fit emerges. Glossary entry simplified to "No entry effect. Routing only."
room_glossary.html · blue_prince_rules.html
Bug fix
Rules doc Security section: broken HTML fragment fixed
A previous edit had left a sentence fragment (</div> with one simple mechanical function...) where the Security section's opening had been deleted but the tail left behind. Section rebuilt clean as part of the deferral above.
blue_prince_rules.html
Bug fix
Kitchen "daily special" die type corrected
Room setup reference listed Kitchen's daily special roll as using the amber die. The rules doc consistently specifies a standard d6 for this roll. Fixed to "Standard die for daily special."
room_setup_reference.html
Cleanup
Room glossary: six redundancy fixes in Notes column
Six rooms (Attic, Billiard Room, Drafting Studio, Greenhouse, Pool, Spare Room) had Notes text that restated the gem cost already shown in the Gems column. Removed the duplication. The Spare Room/Pool/Billiard Room cases were especially confusing because phrases like "1 gem" could read as a per-entry gain rather than a draft cost.
room_glossary.html
Cleanup
Room glossary: Roll column capitalization normalized
After the die rename, the Roll column had a mix of sentence-case ("Standard die on entry", "Always unlocked") and lowercase entries ("blue die on draft → OPEN = trunk"). All entries normalized to sentence-case for consistency.
room_glossary.html
April 18–19, 2026 Session 4 · Gem Audit & Structural Pass
Bug fix
Seven-tile gem-cost audit against VG authoritative source
Cross-referenced the full glossary against the VG wiki's "Rooms by Drafting Cost" category pages. Seven tiles had the wrong gem cost printed on the back. Six were under-priced in the board game (free to draft when the VG charges gems). One was over-priced (Kennel was charged 1 gem when it's actually free). Full delta: Office 0→2 · Walk-in Closet 0→1 · Ballroom 0→2 · Foyer 0→2 · Master Bedroom 0→2 · Vestibule 0→2 · Kennel 1→0. Physical tiles re-labeled with red Sharpie; glossary updated to match.
room_glossary.html · 7 physical tile backs
Rename
Shop color renamed to Yellow
The shop rooms (Commissary, Kitchen, Locksmith, Trading Post, Casino) had been labeled as "Shop" color in the glossary — but Shop is a category, not a color. Renamed to Yellow (matching the VG's yellow shop borders) and added a dedicated b-yellow badge style. Dining Room also flipped — it had been incorrectly tagged as Shop, but the VG catalogs it as a Blueprint. Now Blue with no shop tag.
room_glossary.html
Added
Category field split from Color field in glossary
Previously, the Type column conflated color (Blue, Purple, Red, etc.) with structural category (Fixed, Outer, Found). Split into two fields: color for the room's actual border color, category for its structural role (Fixed Floor Plan, Found Floorplan, Outer Room, Event Addition, Studio Addition). Display renders both badges; filter dropdown now has separate color and category filters. Affects 28 rooms that previously carried one confused tag.
room_glossary.html
Added
Maid's Chamber added to room glossary
Room was missing from the glossary entirely. Added with dual-color tagging (Red + Purple) via new color2 field. Entry text describes the item-icon suppression mechanic, but the design itself is flagged as not fully settled — pending confirmation or redesign.
room_glossary.html
Bug fix
Color reclassifications for eight rooms
Rooms that had been tagged with structural categories in the color field now correctly show their real colors: Antechamber · Entrance Hall · Room 46 · The Foundation (all now Blue + Fixed category), Hovel (Red + Outer — matches VG), Root Cellar (Green + Outer), Shelter (Blue + Outer), Toolshed (Blue + Outer), Trading Post (Yellow + Outer).
room_glossary.html
Before April 18, 2026. Prior sessions covered initial game design, ruleset drafting, component specification, difficulty curve comparison, meal/food system, Parlor and Billiard Room mini-games, initial playtest runs, and the launch of the dev log. These pre-date the changelog and are documented via blog posts and the Design Deviations reference.