{% extends "brickwork/shell/base.html" %} {% load i18n %} {% comment %} Marketing shell (04-interfaces.md section 4d, 1.2.0, BR-BW-MKT-005): the public-site counterpart of shell/app.html. It reuses base.html's document skeleton (the {% static %} CSS link, the theme/density/dir attributes on , the skip link, the no-JS floor, the toast/modal roots) and adds only the public header/nav/footer regions the app shell does not have. A marketing page {% extends %} this shell and is itself {% extends %}d by a consuming page (BR-BW-PAGE-001 at marketing scope), never {% include %}d. Named blocks (semver-public, BR-BW-TPL-001), all empty-graceful: marketing_header default: a header row with brand_logo/brand_wordmark at the inline start and marketing_nav at the end. brand_logo wrapped in the brickwork-owned .bw-marketing-header__brand-mark element (#83, the app shell's brickwork#93 wrapper precedent): an img/svg dropped in is capped at --bw-component-logo-height (2rem) with width following the intrinsic ratio, and the wrapper stays flex: 0 0 auto so the nav/actions keep the remaining width. Override the token (or the zero-specificity rule) to resize; an unfilled block leaves an :empty wrapper that collapses to nothing. brand_wordmark wrapped in .bw-marketing-header__brand-wordmark, the same treatment as brand_logo (a text wordmark is unaffected: the height cap targets only img/svg). marketing_nav the primary public nav: a plain list of links, no active-route resolver dependency (a marketing site's nav is a small fixed set, unlike the app shell's {% bw_nav %}). marketing_actions header-end CTA cluster (e.g. "Sign in" + "Get started"); see the auth-aware pattern below (#85). content the page body; the one region a page fills. marketing_footer empty consumer-owned footer-content slot. The shell supplies its footer landmark and inner container, but never link groups, columns, or site-map copy. footer_legal empty consumer-owned fine-print slot beneath the footer-content slot; its wrapper collapses when empty. Region blocks (3.15.0, icvoss/django-brickwork#263, the app shell's subnav_region/breadcrumbs_region/page_header_region/footer_region idiom at BR-BW-TPL-001 extended here): a `*_region` block wraps the ELEMENT around an inner content block, as a second, outer override seam. Filling only the inner block (marketing_nav, marketing_actions, marketing_footer) is unaffected: the markup is unchanged, and the rendered output differs only by the whitespace-only lines the wrapper tags leave behind (identical once whitespace is collapsed, which is what a consumer's own snapshot test should compare on); overriding the `_region` block instead replaces the wrapper element itself (e.g. to add attributes the wrapper does not carry); overriding a `_region` block EMPTY removes the region and its chrome entirely, which the inner-block-only seam can never do since the wrapper element still renders around an empty inner block. This is the seam #263 needed: a consumer adding a mobile-nav toggle as a sibling of the nav overrides marketing_nav_region (or marketing_actions_region) to insert the toggle alongside the existing