{% extends "!layout.html" %} {%- set current_version = "1.4.x sagitta" %} {% block extrahead %} {% if gtm_id and cookiebot_id %} {# Keep Cookiebot's consent dialog from rendering unstyled and breaking the page. Cookiebot delivers its dialog CSS as a constructed stylesheet via document.adoptedStyleSheets. That property holds the *whole* sheet list, and ReadTheDocs' readthedocs-addons.js reassigns it with a destructive replace; when that lands after Cookiebot's (network-gated) adoption it drops Cookiebot's sheet, leaving #CybotCookiebotDialog at position:static, expanded to full page height. This shim makes assignment preserve Cookiebot's sheet specifically. It must run before the first adoptedStyleSheets write, so it is the first thing in
. #} {# Cookiebot CMP — must load first so its auto-blocker can scan/block other tags #} {# Google Consent Mode v2 defaults — deny everything until Cookiebot fires the update #} {# Google Tag Manager #} {% endif %} {% endblock %} {% block body %} {% if gtm_id and cookiebot_id %} {% endif %} {{ super() }} {% endblock %}