Moves hardcoded address, phone/fax/email, and Sprechzeiten table out of
content/contact.md into a dedicated contact.html template that renders
them from config.extra — sharing a single source of truth with the footer.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Restores the markup contracts the theme CSS expects on the home page:
- imports section_title macro (st) and calls it on all four sections
- news/about/services/team sections get bordered-icon headings via macro
- service cards use thumbnail/caption/clearfix structure (2-col grid)
- team portraits use figure/figcaption with small for position
- gray-bg (not bg-gray) on the services section
- Suppress section title prefix on home page (section.path == '/')
- Compose site_title from config.title + config.extra.doctors
- Add keywords meta tag from config.extra.keywords
The live site had the Maps iframe removed because third-party embeds
trigger cookie-consent obligations under GDPR. The Phase-1 1:1 pass
accidentally reintroduced it; this commit removes:
- the inline iframe on the home page (templates/index.html)
- the map() shortcode (templates/shortcodes/map.html)
- the {{ map() }} call on the contact page (content/contact.md)
Do not re-add without a working consent gate.
- page.html generic single-page template
- legal.md with slug=impressum to match live URL
- contact.md with practice info, hours, map embed
- map shortcode (iframe-based) usable from markdown
- Home template inlines the map iframe directly (shortcodes can't be called from templates)
Migrated all six service pages from Grav to Zola format:
- YAML frontmatter → TOML with weight and extra.anchor
- Grav image refs → {{ img() }} shortcode calls
- [fa=external-link /] → <i class="fa fa-external-link"></i>
- Linked image in HV page wrapped with <a href> HTML tag
Anchors HV, Corona, Vorsorge, Diagnostik, Kardio, Diabetologie match
the home page service grid links established in commit 9cf54f9.
- Extends base.html, uses shared image macro for resize_image
- Refactored img shortcode to forward to macros/image.html (DRY)
- News pulled via get_page from content/news.md
- Notfall section skipped (was unpublished in grav)
- Map call commented out until shortcode lands in Task 20
- main.scss imports the praxis theme partial
- Fix missing semicolon at line 1836 that SCSS strict mode rejected
- Bootstrap and mobile-menu remain separate <link> tags (loaded from /css/)