diff --git a/CHANGELOG.md b/CHANGELOG.md
index 63f0e21..13b2530 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,10 @@ Versionsnummern nach [Semantic Versioning](https://semver.org/lang/de/).
### Behoben
+- CSS-Auswertung: Es zählen nur noch Stylesheets, die ein Dokument per `` (oder `@import`) einbindet.
+ Bisher wirkten alle CSS-Dateien des Manifests, auch mitgelieferte Layouts anderer Buchreihen. Im C-Buch
+ machte das aus fetten Buchstaben Inline-Code (`` `st`an`d`ard ``) und setzte falsche ``; eine
+ fremde `display:none`-Regel hätte Text gelöscht (QA3-01, Regressionstests in `tests/test_styles.py`).
- `pandoc/callouts.lua`: Die Kästen blieben ohne Rahmen, wenn man Pandoc zusätzlich `-H`/`--include-in-header`
übergab, und im EPUB hatten nur die Titelseite, nicht die Kapitel, das Kasten-CSS. Das CSS steht jetzt in
`pandoc/callouts.css`; der Filter setzt es bei HTML an den Anfang des Dokuments und fügt es bei EPUB den
diff --git a/README.md b/README.md
index 3e07c04..b5ea70c 100644
--- a/README.md
+++ b/README.md
@@ -249,6 +249,8 @@ weil CommonMark keine `[^…]`-Syntax kennt.
- **CSS-Formatierung:** Viele Verlage setzen Hervorhebungen nur über Stylesheets. epub2md wertet die
CSS-Dateien des Buches aus: Klassen-, Element- und ID-Selektoren, Nachfahren- und Kind-Kombinatoren,
Spezifität und `style`-Attribute. `@media`-Blöcke und Selektoren mit Pseudoklassen werden ignoriert.
+ Berücksichtigt werden nur Stylesheets, die ein Dokument per `` (oder `@import`) einbindet;
+ mitgelieferte Layouts anderer Buchreihen bleiben wie im E-Book-Reader wirkungslos (Info `css-unlinked`).
Direkt aneinanderstoßende gleiche Hervorhebungen werden zusammengefasst (`*x**y*` → `*xy*`).
- **Farben und Schriften:** Markdown kennt keine Farben, Schriftarten oder -größen. Mit `--styles html`
bleiben sie als HTML-Stil erhalten. Übernommen wird nur, was vom Grundstil abweicht (häufigste Werte aller
diff --git a/epub2md/pipeline.py b/epub2md/pipeline.py
index bc10e24..9f1f68e 100644
--- a/epub2md/pipeline.py
+++ b/epub2md/pipeline.py
@@ -13,6 +13,7 @@ from dataclasses import asdict, dataclass, field
from datetime import datetime, timezone
from pathlib import Path
from typing import Any
+from urllib.parse import unquote
from . import TOOL_NAME, __version__
from .chapters import ChapterBuilder
@@ -27,7 +28,7 @@ from .media import MediaRegistry
from .models import Chapter
from .normalize import Doc, book_uses_title_tables, is_html_toc_doc, make_doc, normalize_doc, remove_keep_tail
from .references import LinkResolver
-from .utils import is_element, is_inside, iter_elements, local, sha256_file, slugify, text_content
+from .utils import is_element, is_inside, iter_elements, local, resolve_href, sha256_file, slugify, text_content
from . import writer
MARKER_FILES = ("conversion-report.json", "manifest.json")
@@ -233,18 +234,39 @@ def _build_structure(docs: list[Doc], package: Any, opts: Options,
return notes, chapters, resolver
+CSS_IMPORT = re.compile(r"""@import\s+(?:url\(\s*)?["']?([^"')\s;]+)""", re.I)
+
+
def _load_stylesheet(reader: EpubReader, package: Any, docs: list[Doc], diag: Diagnostics) -> StyleSheet:
- """All CSS of the book: manifest stylesheets (manifest order) plus