diff --git a/book/patches/sphinx-11766.patch b/book/patches/sphinx-11766.patch
new file mode 100644
index 0000000..c507523
--- /dev/null
+++ b/book/patches/sphinx-11766.patch
@@ -0,0 +1,26 @@
+diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py
+index 85067be0178..91d3647597c 100644
+--- a/sphinx/builders/html/__init__.py
++++ b/sphinx/builders/html/__init__.py
+@@ -1061,7 +1061,9 @@ def css_tag(css: _CascadingStyleSheet) -> str:
+ attrs.append(f'{key}="{html.escape(value, quote=True)}"')
+ uri = pathto(os.fspath(css.filename), resource=True)
+ if checksum := _file_checksum(outdir, css.filename):
+- uri += f'?v={checksum}'
++ # the EPUB format does not allow the use of query components
++ if self.name != 'epub':
++ uri += f'?v={checksum}'
+ return f''
+
+ ctx['css_tag'] = css_tag
+@@ -1092,7 +1094,9 @@ def js_tag(js: _JavaScript | str) -> str:
+ # https://github.com/sphinx-doc/sphinx/issues/11658
+ pass
+ elif checksum := _file_checksum(outdir, js.filename):
+- uri += f'?v={checksum}'
++ # the EPUB format does not allow the use of query components
++ if self.name != 'epub':
++ uri += f'?v={checksum}'
+ if attrs:
+ return f''
+ return f''