{
 "$schema": "../../schema.json",
 "schema": "fundus/1",
 "id": "wortmarke-wird-kopfmarke",
 "name": "Wortmarke wird Kopfmarke",
 "name_en": "Hero wordmark morphs into header logo (scroll and cross-document)",
 "kurz": "Der Name im Hero wird zur kleinen Marke im Kopf: beim Scrollen schrumpft er an seinen Platz, beim Seitenwechsel fliegt er als gemeinsames Element in den Kopf der Unterseite und beim Zurück wieder groß.",
 "kategorie": "Seitenübergänge",
 "kategorie_slug": "seitenuebergaenge",
 "kategorie_nr": 1,
 "bau_chat": "C3",
 "prioritaet": "A",
 "trendstatus": "aufsteigend",
 "belegstatus": "quellenbelegt",
 "website_belege": 0,
 "stimmung": [
  "ruhig",
  "editorial",
  "laut"
 ],
 "stimmung_roh": [
  "markenstark",
  "editorial",
  "ruhig"
 ],
 "technik": [
  "css",
  "view-transitions",
  "scroll-driven-css",
  "@property",
  "vanilla-js"
 ],
 "technik_gruppen": [
  "css",
  "js"
 ],
 "leistungskosten": "niedrig",
 "steckbrief": {
  "beschreibung": "Die große Wortmarke im Hero (der Name über die ganze Breite) wird zur kleinen Marke im Kopf. Beim Scrollen schrumpft sie gekoppelt an den Scroll in ihren Platz im Kopf. Beim Seitenwechsel fliegt sie als gemeinsames Element (view-transition-name) von der Startseite in den Kopf der Unterseite, beim Zurück wächst sie wieder. Es ist ein Element mit einem Namen für beide Wege. Dadurch wirkt der Seitenwechsel nicht wie ein flüchtiger Wischer: Man sieht, wohin die Marke geht.",
  "warum_es_wirkt": "Ein gemeinsames Element verbindet zwei Zustände: Das Auge folgt der Marke und weiß danach, dass es noch beim selben Haus ist. Die große Marke ist der stärkste Moment des ersten Bildschirms; statt sie wegzuscrollen, wird sie zur Kopfmarke und bleibt präsent. Die Bewegung hat einen klaren Weg (groß nach klein, Mitte nach oben links) und eine Dauer, die man wahrnimmt, statt in 150 ms vorbei zu sein.",
  "wann_einsetzen": "Wenn der Hero eine große Wortmarke hat (foto-hero-wortmarke, schrift-hero-viewportbreit) und die Seite mehrere echte Unterseiten hat. Hotel, Manufaktur, Bäckerei, Weingut, Region, Kultur, Studio. scroll für lange Startseiten, seitenwechsel für Seiten mit wenigen Hauptpunkten, beides für Marken, bei denen der Name das Bild ist.",
  "wann_nicht": "Nicht bei Bildmarken ohne Schriftzug oder sehr langen Namen, die im Kopf auf unter 14 px schrumpfen müssten. Nicht zusammen mit einem zweiten großen gemeinsamen Element im selben Wechsel (Bild-Morph), sonst konkurrieren zwei Wege. Nicht bei hide-on-scroll-header: die Marke braucht einen festen Platz. Gegen vt-shared-element-morph abgegrenzt: dort fliegt ein Inhaltsbild aus dem Raster in den Hero, hier fliegt die Marke aus dem Hero in den Kopf. Gegen sticky-shrink-header abgegrenzt: dort schrumpft der Kopf, hier wandert die Hero-Wortmarke selbst in den Kopf.",
  "varianten": [
   "scroll: die Wortmarke schrumpft per Scroll-Zeitleiste in ihren Platz im Kopf; der Kopf bekommt seine Fläche und die dunkle Schrift erst, wenn sie fast angekommen ist",
   "seitenwechsel: Cross-Document View Transition zwischen zwei Seiten, die große Marke fliegt in den Kopf der Unterseite, beim Zurück umgekehrt",
   "beides: dieselbe Marke schrumpft beim Scrollen und fliegt beim Seitenwechsel aus jedem Zwischenstand in den Kopf"
  ],
  "umsetzung": "1) Beide Seiten: <style>@view-transition { navigation: auto; }</style> im Kopf. 2) Startseite: die Wortmarke ist ein Link im Kopf (<a class=\"marke\" href=\"/\">Name</a>), der oben in Hero-Größe steht. Ihre Größe kommt aus dem Einpassen (wie foto-hero-wortmarke), ihr Zielplatz aus einem leeren Platzhalter im Kopf. 3) scroll: @property --p (<number>) läuft per animation: marke-p linear both; animation-timeline: scroll(root); animation-range-start: 0; animation-range-end: var(--weg), wobei --weg der Abstand der Hero-Marke zu ihrem Platz im Kopf ist (so fährt die Marke genau mit der Seite hoch). Langform nach der Kurzschreibweise, die animation auf html sitzt, --p erbt an Marke und Kopf. Die Marke ist position: fixed, transform-origin: 0 0, und rechnet translate(calc(var(--dx) * var(--p)), calc(var(--dy) * var(--p))) scale(calc(1 + (var(--s) - 1) * var(--p))). --dx, --dy und --s misst JS bei Laden, Schriftladen und ResizeObserver. Rückfall: Scroll-Listener setzt --p. 4) seitenwechsel: Startseite und Unterseite geben ihrer sichtbaren Marke denselben Namen (view-transition-name: marke); dieselbe Schrift, dieselbe Laufweite in em und dieselbe Zeilenhöhe, damit das Seitenverhältnis stimmt. ::view-transition-group(marke) mit 900 ms und einer In-out-Kurve, damit der Weg sichtbar bleibt; die übrige Seite blendet in 300 ms aus und ab 350 ms ein. pageswap setzt Typen (hin/zurueck) aus navigation.activation bzw. e.activation. 5) beides: der Name sitzt immer auf der festen Marke, sie fliegt aus ihrem aktuellen Zwischenstand. 6) Reduziert: kein Morph, kein Schrumpfen; die Marke steht klein im Kopf, der Hero zeigt den Namen als statischen Schriftzug, Seiten wechseln ohne Übergang.",
  "mobil": "Die Wortmarke passt sich der Breite an (am Telefon um 80 bis 100 px hoch) und landet links im Kopf neben dem Menüknopf. Morph 750 ms statt 900 ms. Der Kopf bleibt 56 px hoch, die Marke nie unter 20 px.",
  "reduzierte_bewegung": "Kein Schrumpfen und kein Flug: Die Marke steht klein im Kopf, im Hero steht der Name als ruhiger Schriftzug. Seitenwechsel ohne View Transition (::view-transition-group(*) { animation: none }).",
  "barrierefreiheit": "Die Marke ist ein Link mit Text (Name, Ziel Startseite) im Kopf (banner). Wandert sie (scroll, beides), ist der Hero-Schriftzug dieselbe Marke, kein zweites Element. Steht sie im Fluss (seitenwechsel), ist die Kopfmarke inert und unsichtbar, bis die große Marke oben aus dem Bild ist. Das h1 der Seite bleibt eigener Text. Hero-Fläche mit dunklem Grund unter dem Foto, damit helle Schrift auch ohne Bild lesbar bleibt. Einpassen per ResizeObserver neu (Textabstände 1.4.12). Kontrastmodus: Marke in CanvasText."
 },
 "messwerte": {
  "easing": "Scroll linear; Seitenwechsel cubic-bezier(0.76, 0, 0.24, 1) für die Marke, übrige Seite mit der Rezept-Kurve",
  "dauer_ms": "Marke 900 (Telefon 750); Seite aus 300, ein 450 ab 350",
  "stagger_ms": "",
  "distanz": "Hero-Größe (eingepasst auf die Breite, bei 1280 px 238 bis 346 px Schriftgröße) auf 24 bis 30 px im Kopf (Telefon 21 bis 26 px); Scrollweg bis zur Ankunft = Abstand Hero-Marke zu Kopfplatz, bei 1280 × 800 rund 370 bis 490 px",
  "sonstiges": "Ein Element, ein Name; Schnappschuss-Verhältnis gleich halten; Typen hin und zurueck",
  "herkunft": "eigene Festlegung",
  "quelle": "Bäckerei-Probe 04.11.2026 (Jury: Seitenwechsel nach 200 ms fertig, kein gemeinsames Element); Werte aus vt-shared-element-morph (In-out-Kurve) übernommen"
 },
 "kurve": {
  "bezier": [
   0.76,
   0.0,
   0.24,
   1.0
  ],
  "css": "cubic-bezier(0.76, 0, 0.24, 1)",
  "name": "power3.inOut",
  "dauer_ms": 900
 },
 "gesehen_bei": [
  {
   "seite": "Chrome for Developers: Cross-document view transitions for multi-page applications",
   "url": "https://developer.chrome.com/docs/web-platform/view-transitions/cross-document",
   "auszeichnung": "",
   "beobachtung": "Abgerufen 04.11.2026: Opt-in mit @view-transition { navigation: auto; } auf beiden Seiten, nur gleiche Origin. pageswap und pagereveal erlauben, view-transition-name kurz vor dem Schnappschuss zu setzen und danach zu entfernen. Unterstützt laut Seite Chrome und Edge ab 126 sowie Safari 18.2; Firefox dort nicht gelistet. Nach rund vier Sekunden Navigation wird der Übergang mit TimeoutError übersprungen.",
   "art": "artikel"
  },
  {
   "seite": "MDN: animation-range-start",
   "url": "https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/animation-range-start",
   "auszeichnung": "",
   "beobachtung": "Abgerufen 04.11.2026: animation-range-start ist reset-only in der Kurzschreibweise animation; nach animation deklarieren. Gilt für die Scroll-Variante.",
   "art": "artikel"
  }
 ],
 "tutorials": [
  {
   "titel": "Chrome for Developers: Cross-document view transitions",
   "url": "https://developer.chrome.com/docs/web-platform/view-transitions/cross-document"
  },
  {
   "titel": "MDN: animation-range-start",
   "url": "https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/animation-range-start"
  }
 ],
 "kombinierbar_mit": [
  "foto-hero-wortmarke",
  "schrift-hero-viewportbreit",
  "vt-cross-document-mpa",
  "richtungsbewusste-uebergaenge",
  "sticky-shrink-header",
  "intro-ohne-wartezeit",
  "footer-cta-riesen-wortmarke",
  "kapitel-kante-signatur"
 ],
 "urls": {
  "detail": "https://cecodesign.de/lab/fundus/seitenuebergaenge/wortmarke-wird-kopfmarke/",
  "meta": "https://cecodesign.de/lab/fundus/seitenuebergaenge/wortmarke-wird-kopfmarke/meta.json",
  "demo": "https://cecodesign.de/lab/fundus/seitenuebergaenge/wortmarke-wird-kopfmarke/demo"
 },
 "herkunft": {
  "quelldateien": [
   "Recherche Runde 4, 04.11.2026",
   "Bäckerei-Probe 04.11.2026 (JURY.md, PROBE-PROTOKOLL.md)"
  ],
  "pruefnotizen": [
   "Jury Bäckerei 04.11.2026, Punkt 8: Seitenwechsel zu flüchtig (Ellipse nach rund 200 ms fertig), kein gemeinsames Element, „etwa die große Wortmarke, die beim Verlassen der Startseite zur kleinen Kopfmarke wird“.",
   "Probe-Protokoll Bäckerei, Abschnitt 5: „Wortmarke wandert in den Kopf … häufig bei Award-Seiten, fehlt im Fundus“. Kein Website-Beleg mit Messwerten geprüft.",
   "Cross-Document-Übergänge laufen nur bei gleicher Origin; in der Demo navigiert der Link wirklich auf dieselbe Datei mit ?seite=unter."
  ]
 },
 "bau": {
  "status": "fertig",
  "kurz": "Der Name im Hero wird zur kleinen Marke im Kopf: beim Scrollen schrumpft er an seinen Platz, beim Seitenwechsel fliegt er als gemeinsames Element in den Kopf der Unterseite und beim Zurück wieder groß.",
  "demo": true,
  "abhaengigkeiten": [],
  "werte": {
   "opt_in": "<style>@view-transition { navigation: auto; }</style> im Kopf beider Seiten (Demo: dieselbe Datei mit ?seite=unter, echte Navigation); @media (prefers-reduced-motion: reduce) { @view-transition { navigation: none } }",
   "render_sperre": "<link rel=\"expect\" blocking=\"render\" href=\"#ende\"> + <div id=\"ende\" hidden> nach dem Skript: Marke, Maße und Namen stehen, bevor pagereveal den Schnappschuss nimmt; Schrift der Variante per preload",
   "fortschritt": "@property --p (<number>) auf html: animation: marke-p linear both; animation-timeline: scroll(root block); animation-range-start: 0px; animation-range-end: var(--weg) (Langform nach der Kurzschreibweise); gemessen 1280 × 800: 0px / 373px (scroll), 0px / 488px (beides); 390 × 844: 661px / 696px",
   "marke_fest": "ein Element .marke, position: fixed, left --x0 (Rand), top --y0 (Lage im Hero), font-size --F (eingepasst), transform-origin 0 0, transform: translate(calc(--dx * --p), calc(--dy * --p)) scale(calc(1 + (--s - 1) * --p)); --dy = Kopfplatz − y0, --s = Kopfgröße / F, --weg = y0 − Kopfplatz (Marke fährt genau mit der Seite hoch)",
   "einpassen": "Breite bei 100 px messen, F = (innerWidth − 2 × Rand) / Breite × 100 × 0.995; neu bei fonts.ready, resize (80 ms) und ResizeObserver auf dem ruhigen Schriftzug (Textabstände 1.4.12)",
   "kopf": "Höhe 68 px (Telefon 56 px); Marke klein 26 / 24 / 30 px (Telefon 22 / 21 / 26 px); --a = clamp(0, (--p − 0.8) × 5, 1): Kopffläche, Haarlinie, Kopfschrift und Markenfarbe wechseln erst ab --p 0,8, über dem Foto bleibt die Marke hell",
   "gleiches_verhaeltnis": "groß und klein dieselbe Schrift, Laufweite in em, Zeilenhöhe (Newsreader 330 opsz 72 −0.035em .92; Bodoni Moda 400 −0.02em .95; Big Shoulders 800 −0.01em .86), white-space: nowrap, padding 0",
   "namen": "view-transition-name: marke auf der sichtbaren Marke (fest: immer .marke; fluss: große Hero-Marke, ab .marke-oben die Kopfmarke; Unterseite: Kopfmarke); view-transition-name: kopf auf der Kopfleiste",
   "vt_marke": "::view-transition-group(marke), -old, -new: 900 ms (Telefon 750 ms) cubic-bezier(0.76, 0, 0.24, 1); -old/-new height 100 %",
   "vt_seite": "root alt 300 ms cubic-bezier(0.7, 0, 0.84, 0) opacity → 0, translate 0 −28px; root neu 450 ms cubic-bezier(0.16, 1, 0.3, 1) ab 350 ms aus opacity 0, translate 0 40px; Typ zurueck spiegelt die Richtung; kopf 450 ms cubic-bezier(0.16, 1, 0.3, 1)",
   "typen": "pageswap: e.activation.entry.url → hin (seite=unter) oder zurueck; pagereveal: navigation.activation.entry.url; Variante scroll und reduziert: skipTransition()",
   "vorfuehrung": "scroll: 700 ms warten, Selbst-Scroll 0 → 1,25 × weg in 2600 ms (Sinus), 900 ms Halt, zurück in 1800 ms; seitenwechsel/beides: dieselben CSS-Regeln per document.startViewTransition({ update, types }) im Dokument, Start → Unter → Start mit 1600 ms Halt; beides scrollt vorher 0,5 × weg in 1400 ms",
   "ui": "150 ms cubic-bezier(0.16, 1, 0.3, 1)",
   "schriften": "scroll Newsreader + Mona Sans, seitenwechsel Bodoni Moda + Instrument Sans, beides Big Shoulders + Host Grotesk + IBM Plex Mono; Pult Geist Mono"
  },
  "ausloeser": "scroll",
  "touch": "Gleiches Verhalten: Hero-Marke auf die Telefonbreite eingepasst (70 bis 100 px), sie landet links im 56 px hohen Kopf neben dem Knopf; Flug 750 ms. Navigation am Telefon ausgeblendet, Unterseite über den Link im Kapitel und das Pult. Geprüft bei 390 × 844 mit echtem Seitenaufruf und Zurück.",
  "reduziert": "--p: 1: die Marke steht klein im Kopf, im Hero steht der Name als ruhiger Schriftzug (aria-hidden); kein Flug, Seitenwechsel ohne Übergang (skipTransition, ::view-transition-* animation: none, @view-transition navigation: none bei prefers-reduced-motion).",
  "korrekturen": {},
  "geprueft": "04.11.2026",
  "notiz": "Drei Welten: scroll boutique-hotel-gastgeber, Haus Tessmer, Waren (Müritz); seitenwechsel luxus-manufaktur-stille, Okelmann Keramik, Höhr-Grenzhausen; beides region-tourismus-ausflugsziel, Naturpark Hirschkamm, Schmiedefeld. Abgrenzung: sticky-shrink-header schrumpft den Kopf, vt-shared-element-morph fliegt ein Inhaltsbild, foto-hero-wortmarke steht still; hier wandert die Hero-Wortmarke selbst in den Kopf, ein Element für Scroll und Cross-Document. Live geprüft (Chromium headless): Scroll an sechs Ständen (--p 0 bis 1, Lage und Größe gemessen), echter Seitenaufruf und goBack mit Bildern während des Übergangs, 1280 × 800 und 390 × 844. pruef.sh ok, pruef-zugang alle drei Varianten ohne Befund. Antwort auf Jury Bäckerei 04.11.2026, Punkt 8. Firefox: laut Chrome-Doku kein Cross-Document, dort lädt der Link ohne Übergang. Selbsturteil 4.",
  "varianten": [
   {
    "id": "scroll",
    "name": "Scroll (Hotel)",
    "wann": "Lange Startseiten mit Foto-Hero und großem Namen (Hotel, Restaurant, Weingut): der Name wird beim Scrollen zur Kopfmarke, ohne Seitenübergang.",
    "werte": {
     "weg": "y0 − Kopfplatz (1280 × 800: 373 px)",
     "kopf_ab": "--p 0,8",
     "vt": "keiner (skipTransition)",
     "rezept": "boutique-hotel-gastgeber"
    }
   },
   {
    "id": "seitenwechsel",
    "name": "Seitenwechsel (Manufaktur)",
    "wann": "Seiten mit wenigen Hauptpunkten und ruhigem Hero (Manufaktur, Galerie, Kanzlei): die große Marke steht im Fluss und fliegt beim Seitenwechsel in den Kopf der Unterseite, zurück wieder groß.",
    "werte": {
     "mod": "Hero-Marke im Fluss, Kopfmarke erst ab .marke-oben",
     "vt_marke": "900 ms cubic-bezier(0.76, 0, 0.24, 1)",
     "rezept": "luxus-manufaktur-stille"
    }
   },
   {
    "id": "beides",
    "name": "Beides (Region)",
    "wann": "Marken, bei denen der Name das Bild ist (Region, Festival, Bäckerei): dieselbe Marke schrumpft beim Scrollen und fliegt aus jedem Zwischenstand in den Kopf der Unterseite.",
    "werte": {
     "weg": "1280 × 800: 488 px",
     "name": "view-transition-name: marke immer auf der festen Marke",
     "rezept": "region-tourismus-ausflugsziel"
    }
   }
  ]
 }
}
