Commit Graph

5 Commits

Author SHA1 Message Date
Brummel 83726ed040 feat(hero): responsive srcset for carousel slides
Phones were downloading the full 1.5 MB / 2 MB hero JPEG. Now the
image macro emits a `srcset` ladder (480/768/1200/1600/2560/3840/5345 w)
with `sizes="100vw"`, so a 480 px-wide phone picks the ~19 KB variant
and 5K screens still get the native resolution.

Also drop `loading="lazy"` on the first slide — it is the LCP element
and should load eager.

Macro changes:
- Add `srcset_widths` (CSV string, since Tera macros only allow scalar
  defaults) and `sizes` parameters.
- Add `lazy=true` parameter; callers can pass `lazy=false` for
  above-the-fold images.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 12:31:47 +02:00
Brummel 385dce04e5 fix(images): match live <p>-wrapped img markup, drop width/height attrs
Two related fixes for the visual gaps reported after the previous pass:

1. Doctor portraits on /team were horizontally compressed. Cause: explicit
   width="200"/height="200" attributes interacted with Bootstrap's
   `img { display:block; max-width:100%; height:auto }` and `.float-right`
   padding to squish the rendered box. Dropping the attributes lets the
   browser use the resized image's intrinsic 200x200 dimensions, with the
   padding sitting around the image instead of inside its width.

2. Vertical rhythm was a few pixels off vs live. Cause: the live Grav
   markdown wraps standalone image references in <p> (markdown spec),
   adding the expected paragraph margin. Our shortcode emitted bare <img>
   with no wrapper, so the following <p> was visually slightly closer.
   Wrap the shortcode calls in <p> in the 6 service pages and 3 doctor
   blocks to restore the rhythm.
2026-05-21 10:03:04 +02:00
Brummel 181e9639ed fix(images): drop forced upscaling, match live image sizes
The image macro was resizing every call to its width arg, including
upscaling 270x180 service thumbnails to 600x400 and rendering 400x400
doctor portraits at full size. Live serves service thumbs at native
270x180 (CSS-floated) and doctor portraits at 200x200.

- image macro: width=0 (default) skips resize, emits raw <img> with no
  width/height — lets theme CSS do the sizing, matching live pattern
- img shortcode: defaults width to 0 so callers can omit it
- service grid (home + 7 service pages): drop width=600
- doctor portraits on /team: width=200 (matches live render)
2026-05-21 09:48:43 +02:00
Brummel 6b877b6100 fix(templates): strip base_url from nav hrefs and unescape image src URLs 2026-05-21 00:33:28 +02:00
Brummel 9cf54f9459 feat: home page template with carousel, news, about, services, team sections
- 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
2026-05-20 22:39:59 +02:00