{# ============================================================================ organisms.html — Jinja macros for every block-level / page-region organism Phase A: all organisms live in one file for composition-pipeline proof. Phase B (follow-up): split into organisms/{type}/{variation}.html per variation so the block catalog stays scannable. Import: `{% from 'organisms.html' import nav, hero_type_first, footer_brand %}` ============================================================================ #} {% from 'atoms.html' import wordmark, glyph, arrow, link_arrow, browser_dots, media_box, cert_badge, input %} {% from 'molecules.html' import nav_links, inline_form, faq_row, feature_card, testimonial_card, product_panel, publication_card, process_step, compliance_pills, sequencing_step, partner_card, reason_card %} {# ===================================================================== HEADER REGION — top-strip, compliance-pills, nav, subnav ===================================================================== #} {# top-strip — product switcher + URL bar at the very top #} {% macro top_strip(products, url) -%}
{% for p in products -%} {{ p.name }} {% endfor -%}
{{ url }} {{ browser_dots() }}
{%- endmacro %} {# nav/row-simple — wordmark + links + CTA. The default nav variation. cta: {type: 'link' | 'button', label: str, glyph_char?: str} #} {% macro nav_row_simple(brand, brand_glyph, links, active_index, cta) -%} {%- endmacro %} {# subnav — annotation band + inline-form. The tinted row under main nav #} {% macro subnav(annotation, form_placeholder='Enter Email to receive a sample report') -%}
{{ annotation }}
{{ inline_form(placeholder=form_placeholder, with_icon=false) }}
{%- endmacro %} {# ===================================================================== HERO REGION — variations of the opener ===================================================================== #} {# hero/type-first — editorial-posture hero. Huge H1 left, meta-pointer right. headline_lines: list of strings, one per visual line (enables
) meta: {arrow: '→→', label: '…', body_paragraphs: [str, str]} #} {% macro hero_type_first(headline_lines, meta) -%}

{% for line in headline_lines %}{{ line }}{% if not loop.last %}
{% endif %}{% endfor %}

{{ arrow(meta.arrow|default('→→')) }}{{ meta.label }}
{% for p in meta.body_paragraphs -%}

{{ p|safe }}

{% endfor -%}
{%- if caller is defined %}{{ caller() }}{% endif -%}
{%- endmacro %} {# feature-strip/six-col — row of 6 feature-cards with hairline separators. items: list of {title, body} #} {% macro feature_strip_six_col(items) -%}
{% for it in items -%} {{ feature_card(title=it.title, body=it.body) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== SUPPORTING STATEMENT + SEQUENCING FLOW ===================================================================== #} {# statement-flow/four-step — big asymmetric H2 + right-side 4-step sequencing #} {% macro statement_flow_four_step(statement_html, sequencing_label, steps) -%}

{{ statement_html|safe }}

{{ arrow('→→') }}{{ sequencing_label }}
{% for s in steps -%} {{ sequencing_step(label=s.label, body=s.body) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== REASONS / WHY GRID ===================================================================== #} {# reasons/six-col — H2 head + 6-col card grid. head: {label, title_html, right_cta: {label, variant}} items: list of {title, body} #} {% macro reasons_six_col(head, items) -%}

{{ head.title_html|safe }}

{% if head.right_cta %}{{ link_arrow(head.right_cta.label) }}{% endif %}
{% for it in items -%} {{ reason_card(title=it.title, body=it.body) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== MODULES GRID — dark product panels ===================================================================== #} {# modules/dark-grid — 2 top panels + 2 smaller panels + optional wide bottom panel. head: {label, title} panels: list of {name_html, desc_html, variant ('dark'|'dark-sm'|'light'), link_label} head_right_label: CTA link on right of head #} {% macro modules_dark_grid(head, panels, head_right_label='Explore all') -%}

{{ head.title }}

{{ link_arrow(head_right_label) }}
{% for p in panels -%} {{ product_panel(name_html=p.name_html, desc_html=p.desc_html, variant=p.variant|default('dark'), link_label=p.link_label|default('Learn more')) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== TESTIMONIALS ===================================================================== #} {# testimonials/3-col — H2 head + 3-column grid of testimonial cards. items: list of {quote_html, name, title_company} #} {% macro testimonials_3_col(title, items) -%}

{{ title }}

{% for it in items -%} {{ testimonial_card(quote_html=it.quote_html, name=it.name, title_company=it.title_company) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== PARTNERS ===================================================================== #} {# partners/3-col — H2 head + 3-col grid #} {% macro partners_3_col(title, items) -%}

{{ title }}

{% for it in items -%} {{ partner_card(title=it.title, body_html=it.body_html) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== PUBLICATIONS ===================================================================== #} {# publications/2-col — H2 head + 2-col article cards. items: list of {tag, date_meta, title, excerpt} #} {% macro publications_2_col(head, items, head_right_label='All publications') -%}

{{ head.title }}

{{ link_arrow(head_right_label) }}
{% for it in items -%} {{ publication_card(tag=it.tag, date_meta=it.date_meta, title=it.title, excerpt=it.excerpt) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== FAQ ACCORDION ===================================================================== #} {# faq/2-col — H2 head + 2-col grid of accordion rows. items: list of {question_html} strings. Each rendered as a faq_row molecule. #} {% macro faq_2_col(title, items, head_right_label='All FAQs') -%}

{{ title }}

{{ link_arrow(head_right_label) }}
{% for it in items -%} {{ faq_row(question_html=it) }} {% endfor -%}
{%- endmacro %} {# ===================================================================== FOOTER REGION — brand-note, compliance-line, footer-inline-form, footer-brand, cert-row, demo-row, copyright ===================================================================== #} {# brand-note — huge red-▲ declaration (e.g., "▲ Example Studio is registered with…") #} {% macro brand_note(brand_html, body_html) -%}
{{ brand_html|safe }} {{ body_html|safe }}
{%- endmacro %} {# compliance-line — the paired legal-line below brand-note (no ▲) #} {% macro compliance_line(brand_html, body_html) -%}
{{ brand_html|safe }} {{ body_html|safe }}
{%- endmacro %} {# footer-inline-form — full-width email-submit row with icon block #} {% macro footer_inline_form(placeholder='Enter Email to receive a sample report') -%} {%- endmacro %} {# footer-brand — left body paragraph + right XL wordmark. body_html: paragraph (may embed small wordmarks inline) wordmark_brand / wordmark_glyph_char: the XL wordmark content #} {% macro footer_brand(body_html, wordmark_brand, wordmark_glyph_char='') -%} {%- endmacro %} {# cert-row — brand-name left / cert-badge right #} {% macro cert_row(brand_text, badge_lines) -%}
{{ brand_text }}
{{ cert_badge(lines=badge_lines) }}
{%- endmacro %} {# demo-row — Request Demo CTA left + UI Image Snippet placeholder right #} {% macro demo_row(cta_label='Request Demo', snippet_label='UI Image Snippet') -%}
{{ cta_label }}
{{ snippet_label }}
{%- endmacro %} {# copyright — bottom bar #} {% macro copyright(left, right_links) -%} {%- endmacro %}