feat: expand portfolios, drop wedding crowd photos, offer studio on site
- 28 more of the operator's own public images (42 -> 67), alts from his captions - remove group-feier, group-outdoor, group-posiert (wedding guests visible) - studio section now offers Studio Neumuenster and Mobiles Studio - deploy: --force-recreate on release and rollback, plus in-container content probe - verify: DESFOTO_BASE dry-run, redirect, asset and privacy checks - tests: 57 OK (3 new content guards, 2 deploy/verify regression guards)
This commit is contained in:
@@ -145,17 +145,36 @@ SHOOTING_STEPS = [
|
||||
},
|
||||
]
|
||||
|
||||
# Das mobile Studio: der Betrieb kommt mit Licht und Hintergrund zum Termin.
|
||||
# Zwei Orte für Shootings: das eigene Studio in Neumünster und das mobile Studio,
|
||||
# das mit kompletter Ausrüstung zum Termin kommt.
|
||||
STUDIO = {
|
||||
"title": "Mobiles Studio",
|
||||
"lead": "Das Studio kommt zu dir.",
|
||||
"title": "Im Studio in Neumünster oder bei dir vor Ort",
|
||||
"lead": (
|
||||
"Projekte können im eigenen Studio in Neumünster fotografiert werden — oder"
|
||||
" ich baue das mobile Studio inklusive autarker Blitzanlage dort auf, wo"
|
||||
" deine Leute sind."
|
||||
),
|
||||
"ways": [
|
||||
{
|
||||
"title": "Studio Neumünster",
|
||||
"text": (
|
||||
"Ein eigenes Studio in Neumünster steht für Shootings bereit:"
|
||||
" kontrolliertes Licht, ruhiger Hintergrund und Platz für"
|
||||
" Konzeptarbeit. Gut für Portraits, Businessbilder und alles, was"
|
||||
" eine wiederholbare Optik braucht — unabhängig vom Wetter."
|
||||
),
|
||||
},
|
||||
{
|
||||
"title": "Mobiles Studio",
|
||||
"text": (
|
||||
"Nicht jedes Team kann für ein Shooting den Betrieb verlassen. Deshalb"
|
||||
" baue ich das Studio dort auf, wo deine Leute sowieso sind: im"
|
||||
" Besprechungsraum, in der Werkstatt, im Vereinsheim oder draußen vor"
|
||||
" der Halle."
|
||||
),
|
||||
},
|
||||
],
|
||||
"text": [
|
||||
(
|
||||
"Nicht jedes Team kann für ein Shooting den Betrieb verlassen. Deshalb"
|
||||
" baue ich das Studio dort auf, wo deine Leute sowieso sind: im"
|
||||
" Besprechungsraum, in der Werkstatt, im Vereinsheim oder draußen vor"
|
||||
" der Halle."
|
||||
),
|
||||
(
|
||||
"Dabei ist die komplette Ausrüstung dabei — Hintergründe, Blitze,"
|
||||
" Lichtformer und Ersatztechnik. Die Blitzanlage ist autark, ich bin"
|
||||
@@ -283,10 +302,11 @@ PHOTO_OVERVIEW = [
|
||||
"image": "editorial-pose",
|
||||
},
|
||||
{
|
||||
"title": "Mobiles Studio",
|
||||
"title": "Studio & mobil",
|
||||
"text": (
|
||||
"Komplette Ausrüstung inklusive autarker Blitzanlage, Hintergründen und "
|
||||
"Lichtformern — aufgebaut an deinem Ort, statt umgekehrt."
|
||||
"Shootings im eigenen Studio in Neumünster oder mit dem mobilen Studio "
|
||||
"inklusive autarker Blitzanlage, Hintergründen und Lichtformern — "
|
||||
"aufgebaut an deinem Ort, statt umgekehrt."
|
||||
),
|
||||
"image": "business-portrait-sit",
|
||||
},
|
||||
@@ -296,18 +316,23 @@ PHOTO_OVERVIEW = [
|
||||
"Feiern, Events, Vereinsleben und Premieren. Dokumentarisch begleitet, "
|
||||
"ohne den Ablauf auszubremsen."
|
||||
),
|
||||
"image": "group-feier",
|
||||
"image": "event-speaker",
|
||||
},
|
||||
]
|
||||
|
||||
WORK_GALLERY = [
|
||||
("music-guitar-silhouette", "Gitarrist als Silhouette im Bühnennebel", "g-w3", "4x5", "50% 42%"),
|
||||
("free-fjord", "Steile Felsnadeln vor dem Meer", "g-w3", "4x5", "50% 50%"),
|
||||
("free-castle-lake", "Kleine Burg auf einer Insel in einem bewaldeten See", "g-w3", "4x5", "50% 50%"),
|
||||
("music-strings", "Nahaufnahme einer Hand an den Saiten", "g-w2", "1x1", "50% 50%"),
|
||||
("free-cat", "Nahaufnahme einer getigerten Katze", "g-w2", "1x1", "50% 42%"),
|
||||
("business-hotel-orange", "Frauen im Bademantel halten Orangenscheiben vor ihre Gesichter", "g-w2", "1x1", "50% 50%"),
|
||||
("business-portrait-dark", "Businessportrait im Studiolicht", "g-w2", "1x1", "50% 32%"),
|
||||
("free-fog-forest", "Nebel über einem Nadelwald", "g-w3", "3x2", "50% 45%"),
|
||||
("free-dog-husky", "Ein Hund auf einem sonnigen Waldweg", "g-w2", "1x1", "50% 45%"),
|
||||
("editorial-colour", "Model-Shooting im Studio", "g-w3", "3x2", "50% 30%"),
|
||||
("music-dreadlocks", "Musiker mit Dreadlocks vor einem Mikrofon", "g-w3", "3x2", "50% 35%"),
|
||||
("couple-backlight-kiss", "Paar küsst sich im Gegenlicht", "g-w3", "4x5", "50% 45%"),
|
||||
("free-fog-forest", "Nebel über einem Nadelwald", "g-w3", "3x2", "50% 45%"),
|
||||
("free-cat", "Nahaufnahme einer getigerten Katze", "g-w2", "1x1", "50% 42%"),
|
||||
("couple-sun-silhouette", "Silhouetten eines Paares vor der Sonne", "g-w3", "3x2", "50% 50%"),
|
||||
]
|
||||
|
||||
PROCESS = [
|
||||
@@ -344,8 +369,8 @@ PROCESS = [
|
||||
|
||||
FACTS = [
|
||||
{
|
||||
"title": "Mobiles Studio",
|
||||
"text": "Komplette Ausrüstung mit autarker Blitzanlage, Hintergründen und Lichtformern — aufgebaut an deinem Ort.",
|
||||
"title": "Studio & vor Ort",
|
||||
"text": "Eigenes Studio in Neumünster oder mobiles Studio mit autarker Blitzanlage, Hintergründen und Lichtformern.",
|
||||
},
|
||||
{
|
||||
"title": "Aus Neumünster",
|
||||
|
||||
214
src/images.json
214
src/images.json
@@ -99,24 +99,6 @@
|
||||
"alt": "Paar küsst sich vor hellem Hintergrund",
|
||||
"focus": "50% 30%"
|
||||
},
|
||||
{
|
||||
"slug": "group-feier",
|
||||
"raw": "1777033639756_1f5a9dc4_dennyschulz_-03904.jpg",
|
||||
"alt": "Feiergesellschaft bei einer Veranstaltung",
|
||||
"focus": "50% 36%"
|
||||
},
|
||||
{
|
||||
"slug": "group-outdoor",
|
||||
"raw": "1784293233172_7a8a3ed9_dennyschulz_-08435.jpg",
|
||||
"alt": "Gruppe posiert im Freien",
|
||||
"focus": "50% 36%"
|
||||
},
|
||||
{
|
||||
"slug": "group-posiert",
|
||||
"raw": "1784293233955_033a5079_dennyschulz_-08456.jpg",
|
||||
"alt": "Gruppe steht zusammen vor der Kamera",
|
||||
"focus": "50% 38%"
|
||||
},
|
||||
{
|
||||
"slug": "event-motion",
|
||||
"raw": "1776670469051_dc2993ae_dennyschulz_-04663.jpg",
|
||||
@@ -272,6 +254,202 @@
|
||||
"raw": "dennyschulz_-03704.jpg",
|
||||
"alt": "Blick durch einen steinernen Torbogen in einen Garten",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "music-dreadlocks",
|
||||
"source": "legacy",
|
||||
"raw": "_DES3044.jpg",
|
||||
"alt": "Musiker mit Dreadlocks vor einem Mikrofon",
|
||||
"focus": "50% 35%"
|
||||
},
|
||||
{
|
||||
"slug": "music-drummer",
|
||||
"source": "legacy",
|
||||
"raw": "_DES3020.jpg",
|
||||
"alt": "Schlagzeuger blickt hinter seinen Becken hervor",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "music-banner",
|
||||
"source": "legacy",
|
||||
"raw": "_DES3765.jpg",
|
||||
"alt": "Gitarrist vor einem beleuchteten Bandbanner",
|
||||
"focus": "50% 40%"
|
||||
},
|
||||
{
|
||||
"slug": "music-neck",
|
||||
"source": "legacy",
|
||||
"raw": "_DES3679.jpg",
|
||||
"alt": "Hand am Gitarrenhals im dunklen Bühnenlicht",
|
||||
"focus": "50% 50%"
|
||||
},
|
||||
{
|
||||
"slug": "music-horns",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz23-3347.jpg",
|
||||
"alt": "Zwei Musiker trinken aus Trinkhörnern",
|
||||
"focus": "50% 35%"
|
||||
},
|
||||
{
|
||||
"slug": "band-extinct-guitar",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz_20231211-75.jpg",
|
||||
"alt": "Zwei Bandmitglieder stehen Rücken an Rücken mit Gitarre",
|
||||
"focus": "50% 30%"
|
||||
},
|
||||
{
|
||||
"slug": "band-extinct-group",
|
||||
"source": "legacy",
|
||||
"raw": "_DS_7981-51ff6640.jpg",
|
||||
"alt": "Vier Bandmitglieder hintereinander in Schwarzweiß",
|
||||
"focus": "50% 40%"
|
||||
},
|
||||
{
|
||||
"slug": "business-hotel-window",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz23A-3958.jpg",
|
||||
"alt": "Drei Frauen in Bademänteln und Handtuchturbanen am Fenster",
|
||||
"focus": "50% 40%"
|
||||
},
|
||||
{
|
||||
"slug": "business-hotel-orange",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz23A-3821.jpg",
|
||||
"alt": "Frauen im Bademantel halten Orangenscheiben vor ihre Gesichter",
|
||||
"focus": "50% 50%"
|
||||
},
|
||||
{
|
||||
"slug": "business-hotel-tea",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz23-3732.jpg",
|
||||
"alt": "Drei Frauen mit Teetassen und Handtuchturbanen",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "business-hotel-laugh",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz23A-3829-2.jpg",
|
||||
"alt": "Drei Frauen lachen mit Orangenscheiben in den Händen",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "editorial-studio-side",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz_marta-02237.jpg",
|
||||
"alt": "Marta im seitlichen Studiolicht vor dunklem Hintergrund",
|
||||
"focus": "50% 30%"
|
||||
},
|
||||
{
|
||||
"slug": "editorial-balance",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz_marta-01897.jpg",
|
||||
"alt": "Marta balanciert sitzend mit angehobenem Bein",
|
||||
"focus": "50% 40%"
|
||||
},
|
||||
{
|
||||
"slug": "editorial-leap",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz_marta-01315-3132063d.jpg",
|
||||
"alt": "Marta springt mit angewinkelten Beinen",
|
||||
"focus": "50% 35%"
|
||||
},
|
||||
{
|
||||
"slug": "couple-park",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz-5142.jpg",
|
||||
"alt": "Sara und Carlos stehen Arm in Arm im Grünen",
|
||||
"focus": "50% 30%"
|
||||
},
|
||||
{
|
||||
"slug": "couple-backlight-kiss",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz-5191.jpg",
|
||||
"alt": "Sara und Carlos küssen sich im Gegenlicht",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "couple-forest-walk",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz-4415.jpg",
|
||||
"alt": "Sara und Carlos gehen Hand in Hand durch den Wald",
|
||||
"focus": "50% 35%"
|
||||
},
|
||||
{
|
||||
"slug": "couple-sun-silhouette",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz-2076.jpg",
|
||||
"alt": "Die Silhouetten des Paars rahmen die tief stehende Sonne",
|
||||
"focus": "50% 50%"
|
||||
},
|
||||
{
|
||||
"slug": "couple-laugh-walk",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz-0368.jpg",
|
||||
"alt": "Tamara und Tobi lachen auf einem Waldweg",
|
||||
"focus": "50% 35%"
|
||||
},
|
||||
{
|
||||
"slug": "portrait-marina-snow",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz_20240118-8156.jpg",
|
||||
"alt": "Marina mit roten Zöpfen auf einem verschneiten Waldweg",
|
||||
"focus": "50% 30%"
|
||||
},
|
||||
{
|
||||
"slug": "portrait-marina-sunset",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz_20240118-9806.jpg",
|
||||
"alt": "Marinas Silhouette vor orangefarbenem Abendhimmel",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "free-dog-husky",
|
||||
"source": "legacy",
|
||||
"raw": "_DES9989.jpg",
|
||||
"alt": "Ein Hund steht auf einem sonnigen Waldweg",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "free-dogs-forest",
|
||||
"source": "legacy",
|
||||
"raw": "_DSC3383.jpg",
|
||||
"alt": "Zwei Hunde liegen auf einem Waldweg",
|
||||
"focus": "50% 50%"
|
||||
},
|
||||
{
|
||||
"slug": "free-cat-light",
|
||||
"source": "legacy",
|
||||
"raw": "_DES2313-2.jpg",
|
||||
"alt": "Eine getigerte Katze schaut aus dem Fenster",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "free-cat-white",
|
||||
"source": "legacy",
|
||||
"raw": "dennyschulz-5639-2.jpg",
|
||||
"alt": "Eine weiße Katze mit aufgerichtetem buschigem Schwanz",
|
||||
"focus": "50% 40%"
|
||||
},
|
||||
{
|
||||
"slug": "free-castle-lake",
|
||||
"source": "legacy",
|
||||
"raw": "20230830_dennyschulz-1039.jpg",
|
||||
"alt": "Kleine Burg auf einer Insel in einem bewaldeten See",
|
||||
"focus": "50% 50%"
|
||||
},
|
||||
{
|
||||
"slug": "free-swans",
|
||||
"source": "legacy",
|
||||
"raw": "_DSC0658.jpg",
|
||||
"alt": "Zwei Schwäne auf ruhigem Wasser",
|
||||
"focus": "50% 45%"
|
||||
},
|
||||
{
|
||||
"slug": "free-sparrow",
|
||||
"source": "legacy",
|
||||
"raw": "_DES1036.jpg",
|
||||
"alt": "Ein Spatz sitzt auf einem Ast",
|
||||
"focus": "50% 45%"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
64
src/pages.py
64
src/pages.py
@@ -192,11 +192,16 @@ def marquee(items: list[str]) -> str:
|
||||
|
||||
|
||||
def studio_section(*, variant: str = "paper2", tight: bool = False) -> str:
|
||||
"""The mobile studio: complete kit including a self-sufficient flash system."""
|
||||
"""The studio in Neumünster and the mobile studio with its self-sufficient flash kit."""
|
||||
features = "".join(
|
||||
f'<div><h3>{e(feature["title"])}</h3><p>{e(feature["text"])}</p></div>'
|
||||
for feature in STUDIO["features"]
|
||||
)
|
||||
ways = "".join(
|
||||
f'<article class="card reveal"><h3>{e(way["title"])}</h3>'
|
||||
f'<p class="card__text">{e(way["text"])}</p></article>'
|
||||
for way in STUDIO["ways"]
|
||||
)
|
||||
paragraphs = "".join(f"<p>{e(paragraph)}</p>" for paragraph in STUDIO["text"])
|
||||
content = (
|
||||
'<div class="studio">'
|
||||
@@ -212,14 +217,15 @@ def studio_section(*, variant: str = "paper2", tight: bool = False) -> str:
|
||||
"<span>Hintergründe, Blitze, Lichtformer</span></span>"
|
||||
"</div>"
|
||||
'<div class="stack reveal reveal--right">'
|
||||
f'<div class="grid grid--2" data-stagger="0.08">{ways}</div>'
|
||||
+ paragraphs
|
||||
+ f'<div class="studio__features" data-stagger="0.07">{features}</div>'
|
||||
"</div></div>"
|
||||
)
|
||||
return section(
|
||||
kicker="Mobiles Studio",
|
||||
title="Das Studio kommt zu dir",
|
||||
lead="Komplette Ausrüstung inklusive autarker Blitzanlage — aufgebaut dort, wo deine Leute sind.",
|
||||
kicker="Studio",
|
||||
title=STUDIO["title"],
|
||||
lead=STUDIO["lead"],
|
||||
content=content,
|
||||
variant=variant,
|
||||
tight=tight,
|
||||
@@ -335,7 +341,7 @@ def home() -> str:
|
||||
</div>
|
||||
<div class="hero__facts">
|
||||
<div class="hero__fact"><strong>Shootings</strong>Business, Portrait, Familie und Minishootings unter einem Dach.</div>
|
||||
<div class="hero__fact"><strong>Mobiles Studio</strong>Komplette Ausrüstung inklusive autarker Blitzanlage vor Ort.</div>
|
||||
<div class="hero__fact"><strong>Studio & vor Ort</strong>Eigenes Studio in Neumünster oder mobiles Studio inklusive autarker Blitzanlage bei dir.</div>
|
||||
<div class="hero__fact"><strong>Foto & Video</strong>Beides aus einer Hand, damit Optik und Ton zusammenpassen.</div>
|
||||
<div class="hero__fact"><strong>Musik & Bühne</strong>Konzerte, Bands und Musikvideos aus eigener Erfahrung.</div>
|
||||
</div>
|
||||
@@ -520,8 +526,11 @@ def shootings() -> str:
|
||||
("editorial-colour", "Fashion-Portrait in kräftigen Farben", "4x5", "50% 30%"),
|
||||
("portrait-couple", "Paarportrait im Grünen", "4x5", "50% 30%"),
|
||||
("business-portrait-stool", "Sitzendes Portrait im weichen Studiolicht", "3x2", "50% 35%"),
|
||||
("group-feier", "Feiergesellschaft bei einer Veranstaltung", "3x2", "50% 36%"),
|
||||
("business-hotel-window", "Drei Frauen in Bademänteln und Handtuchturbanen am Fenster", "3x2", "50% 40%"),
|
||||
("portrait-natural", "Natürliches Portrait im Freien", "3x2", "50% 32%"),
|
||||
("couple-backlight-kiss", "Sara und Carlos küssen sich im Gegenlicht", "1x1", "50% 45%"),
|
||||
("editorial-leap", "Marta springt mit angewinkelten Beinen", "1x1", "50% 35%"),
|
||||
("free-dog-husky", "Ein Hund steht auf einem sonnigen Waldweg", "1x1", "50% 45%"),
|
||||
]
|
||||
),
|
||||
)
|
||||
@@ -541,7 +550,7 @@ def shootings() -> str:
|
||||
right=ticks(
|
||||
[
|
||||
"Tageslicht, Studiolicht und mobile Blitzanlage",
|
||||
"Mobiles Studio direkt an deinem Ort",
|
||||
"Im Studio in Neumünster oder mit dem mobilen Studio bei dir",
|
||||
"Reportagestil bei Veranstaltungen",
|
||||
"Lieferung per Downloadlink",
|
||||
]
|
||||
@@ -643,8 +652,12 @@ def businessfotografie() -> str:
|
||||
[
|
||||
("business-portrait-dark", "Portrait eines Mannes vor dunklem Hintergrund", "4x5", "50% 28%"),
|
||||
("business-portrait-stool", "Sitzendes Portrait im weichen Studiolicht", "4x5", "50% 35%"),
|
||||
("business-hotel-window", "Drei Frauen in Bademänteln und Handtuchturbanen am Fenster", "4x5", "50% 40%"),
|
||||
("business-hotel-tea", "Drei Frauen mit Teetassen und Handtuchturbanen", "4x5", "50% 45%"),
|
||||
("gear-cases", "Kamerakoffer und Objektive vor einem Studiorack", "3x2", "50% 50%"),
|
||||
("studio-setup", "Studioequipment mit Logo von Denny Schulz Fotografie", "3x2", "50% 45%"),
|
||||
("business-hotel-orange", "Frauen im Bademantel halten Orangenscheiben vor ihre Gesichter", "3x2", "50% 50%"),
|
||||
("business-hotel-laugh", "Drei Frauen lachen mit Orangenscheiben in den Händen", "3x2", "50% 45%"),
|
||||
],
|
||||
columns="grid--2",
|
||||
),
|
||||
@@ -749,6 +762,9 @@ def portrait_und_model() -> str:
|
||||
("editorial-back", "50% 40%"),
|
||||
("editorial-black", "50% 28%"),
|
||||
("editorial-earring", "45% 28%"),
|
||||
("editorial-studio-side", "50% 30%"),
|
||||
("editorial-balance", "50% 40%"),
|
||||
("editorial-leap", "50% 35%"),
|
||||
("portrait-natural", "50% 30%"),
|
||||
("people-kiss", "50% 32%"),
|
||||
]
|
||||
@@ -837,9 +853,13 @@ def familien_und_paare() -> str:
|
||||
("portrait-natural", "50% 30%"),
|
||||
("people-kiss", "50% 32%"),
|
||||
("portrait-couple", "50% 30%"),
|
||||
("group-feier", "50% 36%"),
|
||||
("group-outdoor", "50% 36%"),
|
||||
("group-posiert", "50% 38%"),
|
||||
("couple-park", "50% 30%"),
|
||||
("couple-backlight-kiss", "50% 45%"),
|
||||
("couple-forest-walk", "50% 35%"),
|
||||
("couple-laugh-walk", "50% 35%"),
|
||||
("couple-sun-silhouette", "50% 50%"),
|
||||
("portrait-marina-snow", "50% 30%"),
|
||||
("portrait-marina-sunset", "50% 45%"),
|
||||
]
|
||||
)
|
||||
+ "</div>",
|
||||
@@ -941,7 +961,9 @@ def minishootings() -> str:
|
||||
("portrait-natural", "50% 28%"),
|
||||
("business-portrait-studio", "50% 28%"),
|
||||
("editorial-black", "50% 28%"),
|
||||
("editorial-studio-side", "50% 30%"),
|
||||
("free-modern-portrait", "50% 30%"),
|
||||
("portrait-marina-snow", "50% 30%"),
|
||||
]
|
||||
)
|
||||
+ "</div>",
|
||||
@@ -1032,8 +1054,11 @@ def video() -> str:
|
||||
[
|
||||
("music-vocal-blue", "Sänger mit erhobenem Arm im blauen Bühnenlicht", "4x5", "50% 30%"),
|
||||
("music-guitar-silhouette", "Gitarrist als Silhouette im Bühnennebel", "4x5", "50% 42%"),
|
||||
("band-extinct-guitar", "Zwei Bandmitglieder stehen Rücken an Rücken mit Gitarre", "4x5", "50% 30%"),
|
||||
("music-strings", "Nahaufnahme einer Hand an den Saiten einer E-Gitarre", "1x1", "50% 50%"),
|
||||
("music-drums", "Schlagzeuger am Drumset in Schwarzweiß", "1x1", "50% 45%"),
|
||||
("music-dreadlocks", "Musiker mit Dreadlocks vor einem Mikrofon", "1x1", "50% 35%"),
|
||||
("music-drummer", "Schlagzeuger blickt hinter seinen Becken hervor", "1x1", "50% 45%"),
|
||||
("music-mic", "Bärtiger Sänger am Mikrofon mit erhobener Hand", "3x2", "50% 35%"),
|
||||
("band-sagenbringer", "Musiker in Fellkleidung im Wald, von unten fotografiert", "3x2", "50% 30%"),
|
||||
]
|
||||
@@ -1081,6 +1106,8 @@ def video() -> str:
|
||||
("movement-light", "Lange Belichtung", "g-w2", "1x1", "50% 50%"),
|
||||
("event-speaker", "Statement vor der Kamera", "g-w2", "1x1", "50% 30%"),
|
||||
("event-venue", "Location vor dem Dreh", "g-w2", "1x1", "50% 45%"),
|
||||
("music-neck", "Licht auf Instrument und Hände", "g-w2", "1x1", "50% 50%"),
|
||||
("music-banner", "Bühne, Nebel und Gegenlicht", "g-w3", "3x2", "50% 40%"),
|
||||
]
|
||||
),
|
||||
)
|
||||
@@ -1190,6 +1217,9 @@ def social_media() -> str:
|
||||
("event-motion", "50% 45%"),
|
||||
("event-dance", "50% 36%"),
|
||||
("event-speaker", "50% 30%"),
|
||||
("business-hotel-tea", "50% 45%"),
|
||||
("business-hotel-laugh", "50% 45%"),
|
||||
("music-drummer", "50% 45%"),
|
||||
]
|
||||
)
|
||||
+ "</div>",
|
||||
@@ -1233,9 +1263,13 @@ def projekte() -> str:
|
||||
[
|
||||
("music-vocal-blue", "Sänger mit erhobenem Arm im blauen Bühnenlicht", "4x5", "50% 30%"),
|
||||
("band-sagenbringer", "Musiker in Fellkleidung im Wald, von unten fotografiert", "4x5", "50% 30%"),
|
||||
("music-dreadlocks", "Musiker mit Dreadlocks vor einem Mikrofon", "4x5", "50% 35%"),
|
||||
("band-extinct-group", "Vier Bandmitglieder hintereinander in Schwarzweiß", "4x5", "50% 40%"),
|
||||
("band-extinct", "Die Band Extinct steht hintereinander vor schwarzem Hintergrund", "3x2", "50% 45%"),
|
||||
("music-mic", "Bärtiger Sänger am Mikrofon mit erhobener Hand", "1x1", "50% 35%"),
|
||||
("music-drums", "Schlagzeuger am Drumset in Schwarzweiß", "1x1", "50% 45%"),
|
||||
("music-drummer", "Schlagzeuger blickt hinter seinen Becken hervor", "1x1", "50% 45%"),
|
||||
("music-horns", "Zwei Musiker trinken aus Trinkhörnern", "1x1", "50% 35%"),
|
||||
("music-strings", "Nahaufnahme einer Hand an den Saiten einer E-Gitarre", "3x2", "50% 50%"),
|
||||
]
|
||||
)
|
||||
@@ -1260,6 +1294,12 @@ def projekte() -> str:
|
||||
("free-fox", "Nahaufnahme eines Rotfuchses", "1x1", "50% 45%"),
|
||||
("free-cat", "Nahaufnahme einer getigerten Katze im Seitenlicht", "1x1", "50% 42%"),
|
||||
("free-arch-garden", "Blick durch einen steinernen Torbogen in einen Garten", "1x1", "50% 45%"),
|
||||
("free-castle-lake", "Kleine Burg auf einer Insel in einem bewaldeten See", "1x1", "50% 50%"),
|
||||
("free-swans", "Zwei Schwäne auf ruhigem Wasser", "1x1", "50% 45%"),
|
||||
("free-sparrow", "Ein Spatz sitzt auf einem Ast", "1x1", "50% 45%"),
|
||||
("free-cat-light", "Eine getigerte Katze schaut aus dem Fenster", "1x1", "50% 45%"),
|
||||
("free-cat-white", "Eine weiße Katze mit aufgerichtetem buschigem Schwanz", "1x1", "50% 40%"),
|
||||
("free-dogs-forest", "Zwei Hunde liegen auf einem Waldweg", "1x1", "50% 50%"),
|
||||
]
|
||||
),
|
||||
)
|
||||
@@ -1270,6 +1310,8 @@ def projekte() -> str:
|
||||
[
|
||||
("free-portrait-light", "Frauenportrait im weichen Seitenlicht vor dunklem Hintergrund", "4x5", "50% 28%"),
|
||||
("free-modern-portrait", "Portrait einer Frau mit Sonnenbrille", "4x5", "50% 30%"),
|
||||
("portrait-marina-sunset", "Marinas Silhouette vor orangefarbenem Abendhimmel", "4x5", "50% 45%"),
|
||||
("editorial-studio-side", "Marta im seitlichen Studiolicht vor dunklem Hintergrund", "4x5", "50% 30%"),
|
||||
("movement-light", "Lichtspur aus einer langen Belichtung", "4x5", "50% 50%"),
|
||||
]
|
||||
),
|
||||
@@ -1402,6 +1444,8 @@ def ueber() -> str:
|
||||
[
|
||||
("business-portrait-studio", "Mann im weißen Hemd vor dunklem Hintergrund, Softbox im Bild", "4x5", "50% 28%"),
|
||||
("studio-setup", "Studioequipment mit Logo von Denny Schulz Fotografie", "4x5", "50% 45%"),
|
||||
("business-hotel-window", "Drei Frauen in Bademänteln und Handtuchturbanen am Fenster", "4x5", "50% 40%"),
|
||||
("couple-park", "Sara und Carlos stehen Arm in Arm im Grünen", "4x5", "50% 30%"),
|
||||
("free-fox", "Nahaufnahme eines Rotfuchses", "1x1", "50% 45%"),
|
||||
],
|
||||
columns="grid--2",
|
||||
|
||||
Reference in New Issue
Block a user