Commit Graph

46 Commits

Author SHA1 Message Date
valknar 00b4a0842c fix(cover): add centre scrim to front overlay for KDP text-legibility compliance
Adds a radial-gradient centre darkening pass (~62 % opacity) directly behind the
title/subtitle/author text block so the gold title reads clearly over any
illustration colour — addresses KDP review feedback about unreadable cover text.
Also adds a fourth text-shadow layer to .front-title for extra depth.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 07:09:20 +02:00
valknar 094933d1b7 docs(marketing): expand Preisempfehlung to all 14 KDP marketplaces
Anchored at €17,99 on Amazon.de (60% royalty tier, €2,96/copy after
print costs). All markets converted proportionally to psychological
price points, each above their 60% threshold. Notes extended
distribution as non-viable at these prices (negative margin).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 12:11:33 +02:00
valknar 658ebc199e style(cover): change back cover quote colour to gold2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:30:23 +02:00
valknar 0e2ad13aaf fix(cover): round page count to even before computing spine width
Amazon rounds odd page counts up to the next even number before
calculating spine thickness. 99 pages → 100 effective pages gives
0.2347 in (5.96 mm) instead of 0.2324 in (5.90 mm).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:25:58 +02:00
valknar 42b31bb661 fix(cover): flatten transparencies by targeting PDF 1.3 compatibility
PDF 1.4 preserves transparency objects, which KDP's preflight rejects.
Downgrading to 1.3 forces Ghostscript to composite all rgba overlays,
gradient alphas and image opacities into solid pixels during the write.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 21:49:38 +02:00
valknar 35c76656e9 feat: add cover-image task to export cover PDF as 300 DPI PNG
Runs Ghostscript on output/cover.pdf to produce output/cover-300dpi.png
for visual QC and sharing. Also wired into the `pnpm all` pipeline.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 21:42:39 +02:00
valknar 3537baa230 fix(cover): improve readability and brightness based on test print feedback
- Strengthen front overlay tint so subtitle and author text read clearly
  against the artwork (was 20% centre tint, now 30%; bottom band 40%→60%)
- Set front subtitle to white and front author to gold2, both with
  triple-layer text-shadow for maximum contrast
- Increase back content padding from 0.125 in to 0.25 in on all trim edges
- Change back tagline colour from 50%-opacity gold to full --color-text
  with solid black shadow so the quote is legible
- Raise back artwork opacity 0.35→0.55 and reduce overlay darkness so
  the back image is no longer too dark

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 21:09:39 +02:00
valknar 564a70494e fix(texts): minor changes 2026-05-05 16:46:20 +02:00
valknar 792a36228f fix(images): story 9 scene 1 2026-05-05 16:40:40 +02:00
valknar 6e31209a0d fix(images): story 8 scene 2 2026-05-05 16:20:41 +02:00
valknar 6749503248 fix: remove barcode placeholder rectangle from back cover
KDP generates and places the ISBN barcode automatically during upload;
a manual white box in the PDF conflicts with that process.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 16:12:05 +02:00
valknar 0fd53a46cc fix(images): story 12 scene 1,2 2026-05-05 12:51:41 +02:00
valknar c7e717e22f fix(images): story 10 scene 3 2026-05-05 12:33:55 +02:00
valknar 475bbf0a19 fix: resize images to 2550 px (300 DPI) at build time to prevent WSL2 OOM crash
4096×4096 source images decoded simultaneously by Chromium consumed ~3.2 GB,
exhausting WSL2 RAM. Build now uses sharp to downsize to 2550×2550 (8.5 in ×
300 DPI) into output/resized/ before Puppeteer loads them, cutting in-memory
footprint to ~1.25 GB. Also adds all story images (01–12) to the repository.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 21:37:56 +02:00
valknar 38ac178ab7 fix: replace networkidle0 with load + image-complete wait for file:// pages
networkidle0 is unreliable for large local documents; explicit image
decode check is more robust.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 21:19:55 +02:00
valknar f6f15a376e fix: raise Puppeteer timeouts to 120s for 99-page illustrated book
Default 30s is too short when loading and rendering many local images.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 21:16:32 +02:00
valknar ae443f1eab fix: replace ASCII closing quotes with German U+201C in „..." pairs
25 occurrences in DOSSIER.md and 1 in templates/cover.html.
HTML attribute quotes left untouched.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 17:52:29 +02:00
valknar c962a8403c polish: align back cover CSS design with front cover
- Add .back-overlay gradient vignette (mirrors front-overlay)
- Add .back-ornament-top (❧) and .back-ornament-bottom (· · ·)
- Add .back-rule decorative gold divider (mirrors front-rule)
- Add text-shadow to headline, synopsis and tagline for legibility
- Wrap bottom strip in container so ornament sits above tagline/barcode row

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 17:47:13 +02:00
valknar 18ff461dfd polish: align back cover prompt with front cover design language
- Added same style references (Folio Society, Edmund Dulac, Efteling, Ghibli)
- Matched color vocabulary: prussian blue, jewel tones (sapphire/amethyst/
  emerald/rose gold), warm amber/gold
- Added same quality descriptors: visible brushwork, ink linework, paper grain
- Fixed 12 vignettes: added Story 3 loom, removed duplicate Story 1 owl
- Clarified lower-half text-clear zone

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 17:44:27 +02:00
valknar 6ac86f843c feat: anchor cat appearance in all 4 story-6 scene prompts
Added a Kater Character Anchor (sleek black, golden button eyes, tiny
round spectacles) to the story-6 callout block and embedded it verbatim
in every scene prompt alongside Clara's existing character anchor.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 16:44:58 +02:00
valknar 3433b17865 feat: anchor dragon appearance in all 4 story-4 scene prompts
Added a Dragon Character Anchor (size, scale color, eye color, wing
description) to the story-4 callout block and embedded it verbatim in
every scene prompt alongside Sophie's existing character anchor.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 16:17:08 +02:00
valknar 34d472221c feat: add character anchors to all 48 scene prompts in DOSSIER.md
Designed a unique child character (hair, eyes, skin, pajamas) for each
of the 12 stories and embedded a verbatim character anchor block into
every scene prompt to ensure visual consistency across a story's 4 images.
Added a Character Anchors reference table to Section 3 with a workflow tip
(seed pinning + reference image at ~0.4 weight for scenes 2–4).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 15:21:40 +02:00
valknar 1e276234b3 feat: 02 story images 2026-05-04 11:26:18 +02:00
valknar c7a9d06450 feat: 01 story images 2026-05-03 22:58:19 +02:00
valknar 27422f6ea0 Rewrite all 48 scene illustration prompts for Flux 1.1
Each prompt now derives directly from the scene text: specific characters,
named props, exact lighting conditions, colour palette from the story's
palette, and consistent closing (square format, no text). Style base
unified to watercolor/gouache + fine ink linework + Edmund Dulac / Folio
Society aesthetic. Generic filler phrases removed throughout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 22:08:25 +02:00
valknar 6e6b66671e Fix front-overlay not covering right bleed edge
Overlay was sized to var(--trim-w) like the old artwork, leaving the
right 0.125 in strip of the zone undarked. Changed to width/height 100%.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 21:10:40 +02:00
valknar a23b6649c2 Fix front artwork gap at right bleed edge
Image was sized to trim-w (8.5 in) but the zone is trim-w + bleed
(8.625 in), leaving a 0.125 in uncovered strip. width/height 100%
fills the full zone, matching how back-artwork is sized.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 21:08:19 +02:00
valknar f91fdaa9e9 Fix back cover artwork scaling — use explicit width/height instead of inset
object-fit: cover on <img> requires explicit dimensions; inset:0 alone
does not force the element size in Chromium. Mirrors the same approach
already used for .front-artwork.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 20:13:48 +02:00
valknar 4cc08bcad6 Add Flux 1.1 cover image prompts to DOSSIER.md (section 5)
Front cover: kaleidoscope-as-portal with child silhouette and twelve
dreamworld vignettes in Folio Society / Edmund Dulac watercolor style.
Back cover: sparse constellation-of-vignettes on midnight blue, designed
for 35% opacity overlay behind the back-cover text block.
Includes technical notes on resolution, format, and file paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 20:06:05 +02:00
valknar 06cf495479 Add gradient overlay to front cover for text legibility over artwork
Inserts a .front-overlay div (shown only when frontImage is present)
with a radial vignette + linear tint that darkens the image behind the
title/subtitle/author without obscuring the artwork. Also strengthens
text-shadow on all three text elements and bumps their opacity slightly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 20:03:21 +02:00
valknar 364cc249dc Remove finale page from book interior
The cover PDF serves this purpose. Removes the page--finale template
block, the finale data loading path in build.js, and all finale CSS.
Page count: 100 → 99 (imprint + title + TOC + 96 scene pages).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 19:55:52 +02:00
valknar aa8f3460e8 Fix German closing quotation marks in content files
Replace straight ASCII closing quotes (U+0022) with proper German
closing double quotes „…" (U+201C) in 12 dialogue passages across
8 stories. Frontmatter YAML left untouched.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 19:27:06 +02:00
valknar 07f1b9d3a6 Add Ghostscript post-processing to cover.js (CMYK + font embed + metadata)
Puppeteer writes cover-raw.pdf, Ghostscript converts RGB→CMYK via
-sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK,
fully embeds fonts (-dPDFSETTINGS=/prepress), and injects title/author
metadata via UTF-16BE pdfmarks. Temp files are cleaned up on success.
Mirrors the same GS pipeline already used in pdf.js for the interior.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 19:21:36 +02:00
valknar 0ced340519 Replace section-title page with proper title page (p.2)
Page structure: imprint (p.1) → title page (p.2) → TOC (p.3) → stories (p.4+).
Title page shows title/subtitle/author in Cormorant Garamond. Removes the
artificial section-title buffer in favour of a meaningful front matter page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 19:18:12 +02:00
valknar 6b61cf206a Fix page parity: images on even (left) pages, text on odd (right) pages
Add a section-title page ("Die Geschichten") as page 3 so all stories
begin on page 4. Image and text for each scene now land on the same
facing spread (even=left image, odd=right text). Page count: 99 → 100.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 19:14:43 +02:00
valknar 2abcda73e8 Add Ghostscript post-processing to pdf.js for KDP compliance
- Puppeteer writes to a temp kaleidoskop-raw.pdf
- Ghostscript re-processes with -dPDFSETTINGS=/prepress to fully embed
  all fonts and prevent subsetting (KDP checklist item 6)
- PDF info dict is written via PostScript pdfmarks, with title/author/
  subject encoded as UTF-16BE hex to support German umlauts (item 13)
- File size drops from ~108 MB to ~9 MB (placeholder art; will grow with
  real 300 DPI illustrations but stays well under KDP's 650 MB limit)
- GS failure falls back gracefully to the raw Puppeteer PDF

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 19:08:35 +02:00
valknar 90b35f9d0c Remove interior title page — cover replaces it
The title page is redundant since the KDP cover (cover.pdf) already
establishes title and author. Interior now opens directly on the
copyright page, followed by the TOC and stories (99 pages total).
Removed unused .page--title CSS from layout and typography.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 18:56:59 +02:00
valknar 5b95645185 Refine title page and TOC copy
- Remove eyebrow text and leading rule from title page — title now leads directly
- Remove illustration credit from imprint page
- TOC heading: "Die zwölf Welten" → "Die zwölf Schlummerwelten"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 18:51:51 +02:00
valknar 96ba26559b Apply Illuminated Nocturne style to cover template
Replaces Georgia with Cormorant Garamond (display, 300 italic) + Lora
(body) across all cover text. Adds @font-face declarations pointing to
fonts/ (same as interior). Updates gold tokens to match interior palette.

Visual changes: front title in Cormorant light italic with gold gradient
rule below, ❧ ornament replacing ✦, synopsis body in Lora.
cover.js now reads 00-front-matter.md to inject author name into spine,
front, and removes the [AUTOR] placeholder.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 18:44:19 +02:00
valknar 87a3925c3e Redesign book interior: Illuminated Nocturne aesthetic
Replaces Georgia + per-story color theming with a unified premium
fairytale look: Cormorant Garamond (display/titles) + Lora (body),
warm cream text pages (#faf8f2 with paper noise texture), deep ink
typography (#1e1b18) throughout — no per-story text color variation.

- fonts/: committed WOFF2 files via @fontsource packages; auto-copied
  by scripts/setup-fonts.js (runs as postinstall)
- Typography: story number in small caps, hairline rule, ❧ ornament
- Layout: cream background replaces per-story bg, radial glow on title
- build.js: passes frontMatter (author, year) to templates
- Templates: author byline on title page, cleaner imprint page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 18:39:42 +02:00
valknar fa1a133f94 Hide guides overlay and clean up barcode placeholder in cover PDF
Guides (trim/safe-zone/spine lines) are design references only and
must not appear in the submitted PDF — hidden via display:none.
Barcode placeholder is now an empty white box so KDP can place the
ISBN barcode automatically without printing a label.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 17:34:24 +02:00
valknar 1037b84eaa Add KDP cover PDF generator
scripts/cover.js computes the exact cover canvas dimensions from the
page count in book-meta.json (written by build.js), using the KDP
Premium Color spine formula (0.002347 in/page), and renders a
Nunjucks template to a single PDF containing back cover, spine, and
front cover with bleed (0.125 in) and safe-zone overlay guides.

- `pnpm cover`  — generate output/cover.pdf
- `pnpm all`    — build interior + both PDFs in one command
- Cover artwork slots: images/cover/front.png, images/cover/back.png

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 17:29:10 +02:00
valknar ae82edac2c Add German KDP marketing document
Covers book description (HTML-formatted for Amazon listing), 7 keyword
phrases, BISAC categories, price recommendations per market, back cover
copy, A+ Content ideas, and a pre-publication checklist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 17:02:09 +02:00
valknar dff2779aab feat: 01 story images 2026-05-03 16:27:04 +02:00
valknar a8ade90ffb Set up book project: Markdown→CSS→PDF pipeline for KDP
Adds the full authoring and build toolchain for "Das Kaleidoskop der
Schlummerwelten" — all 12 story content files in Markdown, Nunjucks
HTML templates, CSS print layout, and Puppeteer-based PDF generation
targeting Amazon KDP (8.5×8.5 in, 0.125in bleed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 15:38:07 +02:00
valknar b5582a65d6 Initial commit 2026-05-03 15:05:22 +02:00