From 093e0ece513a65ea87f6ea3c3a8d02e8467b5ed4 Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Thu, 3 Sep 2026 10:36:02 +0000 Subject: [PATCH] Abschluss-CTA: Ausnahme vom Glass-Flow-Sektionshintergrund MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nach dem Build stand der Abschluss hellgrau mit weisser Schrift da. `.variante-glass-flow section` faerbt jede Sektion in diesem Wrapper hell ein und ist mit (0,1,1) spezifischer als `.cta-band` mit (0,1,0). Fuer `.bg-secondary` und `.bg-accent` gibt es dort laengst Ausnahmen – die neue Klasse brauchte dieselbe. /marken/{slug} haengt in genau diesem Wrapper. Der Verlauf steht jetzt in --cta-band-gradient und wird von beiden Regeln benutzt, damit er nicht doppelt gepflegt werden muss. Ein Test haelt die Ausnahme fest. Nebenbei dokumentiert: `npm run build:web` baut nur die vier Frontend-Themes, nicht das Portal. Ohne `npm run build:portal` liefert das Admin-Portal 500 – in Deployment-Checkliste und Vorschau-Runbook ergaenzt, samt Pruefschleife ueber alle fuenf Manifeste. Tests: 863 gruen (3194 Assertions), Pint sauber, alle Themes gebaut. Co-Authored-By: Claude Opus 5 --- dev/2026-08-28/entwicklungsplan.md | 28 ++++++++- .../markenlogos/cabinet_logo_2026.svg | 27 +++++++++ .../markenlogos/februe_Logo_2022.png | Bin 0 -> 53739 bytes .../markenlogos/rotpunkt_logo_2020.svg | 55 ++++++++++++++++++ dev/2026-08-28/preview-deployment.md | 4 ++ resources/css/web/shared-styles.css | 12 +++- tests/Feature/BrandPageSectionsTest.php | 11 ++++ 7 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 dev/2026-08-28/markenlogos/cabinet_logo_2026.svg create mode 100644 dev/2026-08-28/markenlogos/februe_Logo_2022.png create mode 100644 dev/2026-08-28/markenlogos/rotpunkt_logo_2020.svg diff --git a/dev/2026-08-28/entwicklungsplan.md b/dev/2026-08-28/entwicklungsplan.md index b5882614..8e2e4ce1 100644 --- a/dev/2026-08-28/entwicklungsplan.md +++ b/dev/2026-08-28/entwicklungsplan.md @@ -19,7 +19,7 @@ eingearbeitet. Offen: Bildmaterial, Rechtstexte und die Herstellerfreigaben. **Stand 03.09.2026:** T1 und B1–B13 abgearbeitet, **alle Arbeitspakete AP0–AP6 umgesetzt**, die Bestandsinhalte auf den Interior-Auftritt umgestellt, die Seite abgestimmt und alle vier Punkte der Abstimmungsrunde vom 03.09. umgesetzt (Nachtrag 5). Alle drei Markenseiten haben jetzt einen -ausführlichen Text. `php artisan test --compact`: **862 grün** (3192 Assertions), Pint sauber, +ausführlichen Text. `php artisan test --compact`: **863 grün** (3194 Assertions), Pint sauber, `npm run build:b2in` gebaut. **Die Seite ist testbereit** – die ausstehenden Zulieferungen trägt Marcel selbst im CMS nach. @@ -982,6 +982,14 @@ Textlink. Neu: - Die Herstellerseite ist jetzt ein gleichwertiger Outline-Button statt eines Textlinks. - Der Showroom steht als kleine Zeile mit Pin-Symbol darunter. +**Nachgebessert (dritte Rückmeldung):** Nach dem Build stand der Abschluss hellgrau mit weißer +Schrift da. Ursache: `.variante-glass-flow section` in `shared-styles.css` färbt **jede** Sektion +in diesem Wrapper hell ein und ist mit `(0,1,1)` spezifischer als `.cta-band` mit `(0,1,0)`. Für +`.bg-secondary` und `.bg-accent` gibt es dort längst Ausnahmen – die neue Klasse brauchte +dieselbe. `/marken/{slug}` hängt in genau diesem Wrapper, deshalb fiel es erst dort auf. Der +Verlauf steht jetzt in `--cta-band-gradient` und wird von beiden Regeln benutzt, damit er nicht +doppelt gepflegt werden muss. Ein Test hält die Ausnahme fest. + **Nachgebessert (zweite Rückmeldung):** Der erste Versuch legte zwei weiche Kreise (`blur-3xl`) über das Hellblau – die wirkten als sichtbare Flecken, besonders der dunkle rechts unten. Ersetzt durch einen durchgehenden Verlauf über die volle Breite: `.cta-band` in `shared-styles.css`, von @@ -1036,8 +1044,9 @@ dasselbe Verhalten. weg. - Weder Markenseite noch FAQ verwenden noch den Flächen-Hover. - Der Abschlussblock trägt das Verlaufsband; die weichen Kreise sind weg. +- Die Ausnahme für `.variante-glass-flow` ist vorhanden – ohne sie steht der Abschluss hellgrau da. -`php artisan test --compact`: **862 grün** (3192 Assertions), Pint sauber, `npm run build:b2in` +`php artisan test --compact`: **863 grün** (3194 Assertions), Pint sauber, `npm run build:b2in` gebaut. --- @@ -1175,7 +1184,20 @@ php artisan db:seed --class=BrandGalleryCaptionNormalizerSeeder --force php artisan config:cache php artisan view:clear -npm ci && npm run build:web + +# Assets. WICHTIG: `build:web` baut nur die vier Frontend-Themes, NICHT das Portal. +# Fehlt public/build/portal/manifest.json, liefert das Admin-Portal 500. +npm ci +npm run build:web +npm run build:portal +``` + +Danach prüfen, dass alle fünf Manifeste liegen: + +```bash +for d in b2in b2a stileigentum style2own portal; do + test -f "public/build/$d/manifest.json" && echo "$d ok" || echo "$d FEHLT" +done ``` ### 8.3 Nachher prüfen diff --git a/dev/2026-08-28/markenlogos/cabinet_logo_2026.svg b/dev/2026-08-28/markenlogos/cabinet_logo_2026.svg new file mode 100644 index 00000000..7957e0b8 --- /dev/null +++ b/dev/2026-08-28/markenlogos/cabinet_logo_2026.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + diff --git a/dev/2026-08-28/markenlogos/februe_Logo_2022.png b/dev/2026-08-28/markenlogos/februe_Logo_2022.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfc33d396a5df6091083db884261d65fdc2f167 GIT binary patch literal 53739 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 + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/2026-08-28/preview-deployment.md b/dev/2026-08-28/preview-deployment.md index 3526af07..2aa08e86 100644 --- a/dev/2026-08-28/preview-deployment.md +++ b/dev/2026-08-28/preview-deployment.md @@ -197,6 +197,10 @@ php artisan route:cache php artisan view:clear ``` +> **Assets:** Das Archiv bringt `public/build/b2in` fertig mit. Wird auf dem Server selbst +> gebaut, gilt: `npm run build:web` baut **nur** die vier Frontend-Themes, nicht das Portal. +> Ohne `npm run build:portal` liefert das Admin-Portal danach 500. + **Optional, nur für die Abstimmung:** Beispielbilder in die Markengalerien, damit Galerie, Referenzen-Seite und Lightbox nicht leer sind. diff --git a/resources/css/web/shared-styles.css b/resources/css/web/shared-styles.css index a05d90be..2cf6bccd 100644 --- a/resources/css/web/shared-styles.css +++ b/resources/css/web/shared-styles.css @@ -264,14 +264,16 @@ h1, h2, h3, h4, h5, h6 { die Ecken. Die Tiefe kommt aus dem Verlauf selbst, die Kontur aus zwei Haarlinien. */ .cta-band { - position: relative; - overflow: hidden; - background: linear-gradient( + --cta-band-gradient: linear-gradient( 100deg, hsl(var(--primary-dark)) 0%, hsl(var(--primary)) 42%, hsl(var(--secondary-dark)) 100% ); + + position: relative; + overflow: hidden; + background: var(--cta-band-gradient); } /* Lichtkante oben, die zu beiden Seiten auslaeuft. */ @@ -793,6 +795,10 @@ h1, h2, h3, h4, h5, h6 { ); position: relative; } + & section.cta-band { + background: var(--cta-band-gradient); + position: relative; + } & section.bg-accent { background: linear-gradient( 135deg, diff --git a/tests/Feature/BrandPageSectionsTest.php b/tests/Feature/BrandPageSectionsTest.php index 8a00a5f5..9e729e29 100644 --- a/tests/Feature/BrandPageSectionsTest.php +++ b/tests/Feature/BrandPageSectionsTest.php @@ -141,6 +141,17 @@ it('closes the page with a gradient band across the full width', function () { ->and($html)->not->toContain('blur-3xl'); }); +it('exempts the closing band from the glass-flow section background', function () { + // `.variante-glass-flow section` faerbt jede Sektion hell ein und ist spezifischer als + // `.cta-band` – ohne diese Ausnahme steht der Abschluss hellgrau mit weisser Schrift da. + // `/marken/{slug}` haengt in genau diesem Wrapper. + expect(file_get_contents(resource_path('views/web/marken-show.blade.php'))) + ->toContain('variante-glass-flow'); + + expect(file_get_contents(resource_path('css/web/shared-styles.css'))) + ->toContain('section.cta-band'); +}); + // ======================================== // Beschriftung des Terminanfrage-Widgets // ========================================