{
 "$schema": "../../schema.json",
 "schema": "fundus/1",
 "id": "glas-button",
 "name": "Glas-Button",
 "name_en": "Glass button (frosted, liquid refraction, tinted, sheen)",
 "kurz": "Ein Glas-Button für die eine Buchungshandlung über dem Foto: unscharfer Saum mit Lichtkante, dichter Kern unter dem Text, in Chromium mit echter Randbrechung.",
 "kategorie": "Buttons",
 "kategorie_slug": "buttons",
 "kategorie_nr": 18,
 "bau_chat": "B",
 "prioritaet": "A",
 "trendstatus": "aufsteigend",
 "belegstatus": "quellenbelegt",
 "website_belege": 0,
 "stimmung": [
  "ruhig",
  "präzise",
  "luxuriös"
 ],
 "stimmung_roh": [
  "luxuriös",
  "ruhig",
  "präzise"
 ],
 "technik": [
  "css",
  "backdrop-filter",
  "svg",
  "canvas",
  "vanilla-js",
  "@property"
 ],
 "technik_gruppen": [
  "css",
  "js",
  "canvas"
 ],
 "leistungskosten": "mittel",
 "steckbrief": {
  "beschreibung": "Ein Button aus Glas für die eine Handlung über einem Foto oder Film. Ein schmaler Saum lässt den Hintergrund unscharf durchscheinen, eine Lichtkante zeichnet den Rand, ein Glanzpunkt folgt dem Zeiger, beim Drücken gibt das Glas leicht nach. Unter dem Text liegt ein dichter Kern, damit die Schrift auf jedem Bildausschnitt lesbar bleibt. In der Variante liquid bricht der Rand den Hintergrund wie eine Linse; das kann nur Chromium, die anderen Browser zeigen Frost.",
  "warum_es_wirkt": "Das Bild bleibt sichtbar, und trotzdem liegt der Button klar auf einer eigenen Ebene. Apple hat das Material 2025 als Liquid Glass bis hinunter zu Buttons und Schaltern eingeführt, viele kennen es also aus dem Betriebssystem. Lichtkante und Druckzustand geben dem Glas Gewicht, ohne dass eine Signalfarbe das Foto übertönt.",
  "wann_einsetzen": "Für eine einzelne Haupthandlung über Fotografie oder Film: „Verfügbarkeit prüfen“ im Foto-Hero eines Hotels, „Kollektion ansehen“ über einem Kampagnenbild, eine Aktion über einem Produktbild. Gut, wenn eine deckende Signalfläche das Bild zerschneiden würde.",
  "wann_nicht": "Auf einfarbigem hellem Grund, dort ist Glas unsichtbar. Nie mehr als ein Glas-Element pro Ansicht, also nicht zusammen mit Glas-Navigation. Nicht, wenn der Text im ungünstigsten Bildausschnitt unter 4,5:1 fällt. Nicht für Kanzlei, Praxis, Pflege, Handwerk. Nicht für Formular-Absenden in langen Formularen (dort button-zustaende).",
  "varianten": [
   "frost: Unschärfe 12 px und Sättigung 1,6 hinter dem Glas, Lichtkante; läuft in allen aktuellen Browsern",
   "liquid: Rand bricht den Hintergrund per SVG-Displacement als backdrop-filter; nur Chromium, sonst Frost",
   "getoent: dunkler Markenton im Kern, heller Text, für die hervorgehobene Handlung (wie .glassProminent bei Apple)",
   "glanz: Lichtkante dreht zum Zeiger, ein Glanzband läuft einmal bei Hover oder Fokus über die Fläche"
  ],
  "umsetzung": "Echter <button> oder <a>, Pille 52 bis 56 px hoch. Zwei Zonen: ein 6-px-Saum mit wenig Füllung (border transparent, Hintergrund border-box) und ein Kern als eigene Schicht unter dem Text, dessen Kante per box-shadow weich ausläuft. Die Kern-Deckkraft rechnet man so aus, dass der Text auch über reinem Schwarz bzw. Weiß 4,5:1 hält (hier .62 hell, .78 getönt). frost: backdrop-filter blur(12px) saturate(1.6). liquid: Displacement-Map per Canvas aus einem Squircle-Profil berechnen (wie liquid-glass-refraktion), als feImage in einen SVG-Filter (Blur, feDisplacementMap, saturate, Rim-Light), per backdrop-filter: url(#id) einbinden; Map je Größe cachen und per ResizeObserver neu bauen; Chromium per navigator.userAgentData erkennen. Fallback-Kette: liquid nur in Chromium, sonst frost; @supports not (backdrop-filter) Füllung .85; prefers-reduced-transparency deckend; forced-colors Systemfarben mit Rahmen. Glanzpunkt per radial-gradient an --mx/--my aus pointermove; glanz über @property --winkel und einen conic-gradient-Rand.",
  "mobil": "52 px hoch, auf schmalen Bildschirmen volle Breite im Bild. Ohne Hover kein Glanzpunkt; beim Tippen sitzt er an der Fingerstelle und der Druckzustand gibt Rückmeldung. Auf schwachen Geräten frost statt liquid.",
  "reduzierte_bewegung": "Kein Glanzband, kein Nachgeben beim Druck, kein wandernder Glanzpunkt. Zustände wechseln über Helligkeit und Lichtkante ohne Bewegung.",
  "barrierefreiheit": "WCAG 1.4.3: Text mindestens 4,5:1 auch im ungünstigsten Bildausschnitt, gesichert über den dichten Kern statt über Unschärfe (hier rechnerisch 5,2:1 bzw. 5,1:1). 1.4.11: Fokus als Doppelring hell und dunkel, damit er auf hellem und dunklem Bild 3:1 hält. 2.5.8: Trefferfläche 52 bis 56 px. 2.4.7: Fokus sichtbar. prefers-reduced-transparency: deckende Fläche. forced-colors: Systemfarben und Rahmen. Deaktiviert über aria-disabled, das Label nennt den Grund; Laden über aria-busy, das Ergebnis kommt in einer role=status-Zeile."
 },
 "messwerte": {
  "easing": "cubic-bezier(0.4, 0, 0.2, 1) für UI 150 bis 250 ms (Rezept boutique-hotel-gastgeber); Glanzband cubic-bezier(0.37, 0, 0.63, 1)",
  "dauer_ms": "Hover 150, Druck 120, Loslassen 250, Glanzband 900",
  "stagger_ms": "",
  "distanz": "Druck scale(1.025, 0.97); Rand 6 px; Höhe 56 px (Telefon 52 px)",
  "sonstiges": "frost blur 12 px saturate 1.6; liquid feDisplacementMap scale 34, beim Druck 46, Vorunschärfe 3 px; Kern-Deckkraft hell 0.62 (ungünstigster Fall 5,2:1), getönt 0.78 auf #504032 (Holz dunkel); Fallback ohne backdrop-filter 0.85",
  "herkunft": "eigene Festlegung",
  "quelle": "https://blog.logrocket.com/how-create-liquid-glass-effects-css-and-svg/"
 },
 "kurve": {
  "bezier": [
   0.4,
   0.0,
   0.2,
   1.0
  ],
  "css": "cubic-bezier(0.4, 0, 0.2, 1)",
  "name": "Material Standard",
  "dauer_ms": 150
 },
 "gesehen_bei": [
  {
   "seite": "Apple Newsroom: neues Software-Design mit Liquid Glass",
   "url": "https://www.apple.com/newsroom/2025/06/apple-introduces-a-delightful-and-elegant-new-software-design/",
   "auszeichnung": "",
   "beobachtung": "09.06.2025: Liquid Glass ist ein durchscheinendes Material, das seine Umgebung spiegelt und bricht und mit Glanzlichtern auf Bewegung reagiert; es reicht bis zu den kleinsten Elementen wie Buttons, Schaltern und Slidern.",
   "art": "artikel"
  },
  {
   "seite": "Apple Human Interface Guidelines: Buttons",
   "url": "https://developer.apple.com/design/human-interface-guidelines/buttons",
   "auszeichnung": "",
   "beobachtung": "Am 16.12.2025 für Liquid Glass überarbeitet: höchstens ein bis zwei hervorgehobene Buttons je Ansicht, Label-Farbe nicht wie der bunte Inhalt darunter, Trefferfläche mindestens 44 × 44 pt, ein Druckzustand ist Pflicht.",
   "art": "artikel"
  },
  {
   "seite": "Apple Developer: SwiftUI PrimitiveButtonStyle.glass",
   "url": "https://developer.apple.com/documentation/swiftui/primitivebuttonstyle/glass",
   "auszeichnung": "",
   "beobachtung": "Eigene Button-Stile .glass und .glassProminent ab iOS 26; die getönte Variante ist für die hervorgehobene Handlung gedacht.",
   "art": "artikel"
  },
  {
   "seite": "LogRocket Blog: How to create Liquid Glass effects with CSS and SVG",
   "url": "https://blog.logrocket.com/how-create-liquid-glass-effects-css-and-svg/",
   "auszeichnung": "",
   "beobachtung": "Rahul Chhodde, 08.12.2025: SVG-Filter als backdrop-filter nur in Chromium, Safari und Firefox brauchen Fallback (Blur, Verlauf oder deckende Fläche). feDisplacementMap scale 55, Kanalwert 128 neutral, Lichtkante 1 bis wenige px bei etwa 50 % Deckkraft. Jede Filterinstanz kostet GPU; nur für wenige schwebende Elemente wie Haupt-CTAs.",
   "art": "tutorial"
  },
  {
   "seite": "Axess Lab: Glassmorphism Meets Accessibility",
   "url": "https://axesslab.com/?p=5111",
   "auszeichnung": "",
   "beobachtung": "Nicko Syropoulos, 11.06.2025: Text 4,5:1, Bedienelemente 3:1; Unschärfe ersetzt keinen Kontrast, halbdeckende Fläche hinter Text; keine starke Unschärfe ab 20 px; prefers-reduced-transparency und prefers-reduced-motion beachten.",
   "art": "artikel"
  }
 ],
 "tutorials": [
  {
   "titel": "LogRocket: How to create Liquid Glass effects with CSS and SVG",
   "url": "https://blog.logrocket.com/how-create-liquid-glass-effects-css-and-svg/"
  },
  {
   "titel": "Axess Lab: Glassmorphism Meets Accessibility: Can Glass Be Inclusive?",
   "url": "https://axesslab.com/?p=5111"
  },
  {
   "titel": "Natasha The Robot: The Anatomy of a LiquidGlass Button in iOS 26",
   "url": "https://www.natashatherobot.com/p/liquidglass-button-ios-26"
  }
 ],
 "kombinierbar_mit": [
  "liquid-glass-refraktion",
  "frosted-glass-erweitert",
  "button-zustaende",
  "druck-feedback",
  "fokus-stil-system",
  "buchungsleiste-datumsbereich",
  "token-luxus-weich",
  "kontrastmodus-forced-colors"
 ],
 "urls": {
  "detail": "https://cecodesign.de/lab/fundus/buttons/glas-button/",
  "meta": "https://cecodesign.de/lab/fundus/buttons/glas-button/meta.json",
  "demo": "https://cecodesign.de/lab/fundus/buttons/glas-button/demo"
 },
 "herkunft": {
  "quelldateien": [
   "Buttons/SR-Recherche 02.11.2026"
  ],
  "pruefnotizen": [
   "LogRocket-Artikel und Axess-Lab-Artikel am 02.11.2026 per WebFetch gelesen (Werte scale 55, Lichtkante 50 %, Chromium-only, 4,5:1/3:1, prefers-reduced-transparency).",
   "Apple-Quellen aus der Recherche (Q1 bis Q4) übernommen, nicht erneut abgerufen.",
   "Kern-Deckkraft und Fallback 0.85 sind eigene Festlegung; Kontrast im ungünstigsten Fall rechnerisch geprüft (Text #2B2421 auf Creme 0.62 über Schwarz 5,2:1)."
  ]
 },
 "bau": {
  "status": "fertig",
  "kurz": "Ein Glas-Button für die eine Buchungshandlung über dem Foto: unscharfer Saum mit Lichtkante, dichter Kern unter dem Text, in Chromium mit echter Randbrechung.",
  "demo": true,
  "abhaengigkeiten": [],
  "werte": {
   "groesse": "Höhe 56 px (Telefon 52 px, volle Breite), Saum border 6px solid transparent, padding 0 22px, border-radius 999px",
   "kern_hell": "rgb(254 242 227 / .62) auf Text #2b2421: ungünstigster Fall (Schwarz dahinter) 5,2:1",
   "kern_getoent": "rgb(80 64 50 / .78) auf Text #fffdf9: ungünstigster Fall (Weiß dahinter) 5,1:1",
   "saum": "hell rgb(254 242 227 / .16), getönt rgb(80 64 50 / .34)",
   "kern_kante": "eigene Schicht .glas__kern, box-shadow 0 0 5px 2px in Kernfarbe (weicher Übergang zum Saum)",
   "lichtkante": "::before inset -6px: inset 1.5px 1.5px 0 rgb(255 255 255 / .78), inset -1px -1px 0 rgb(255 255 255 / .28); getönt .5 / .16",
   "frost": "backdrop-filter: blur(12px) saturate(1.6)",
   "liquid": "SVG-Filter als backdrop-filter: feGaussianBlur 3 (edgeMode duplicate) → feDisplacementMap scale 34 (Druck 46) → saturate 1.6 → Rim-Light-Map (Licht −60°, Deckkraft .5) per feBlend screen; Map aus Squircle-Profil, Snellius n 1,5, 127 Strahlen, Rand min(h/2, 18 px); je Button-Größe gecacht, ResizeObserver",
   "glanzpunkt": "radial-gradient(90px 70px at var(--mx) var(--my), rgb(255 255 255 / .5), transparent 70%), Einblenden 150 ms",
   "glanz": "@property --winkel <angle>, conic-gradient-Rand 1.5 px (Maske content-box exclude), Übergang 250 ms; Glanzband ::after linear-gradient(100deg …) translate −110 % → 110 % in 900 ms cubic-bezier(0.37, 0, 0.63, 1), einmal bei Hover/Fokus",
   "easing": "cubic-bezier(0.4, 0, 0.2, 1)",
   "dauer_ms": {
    "hover": 150,
    "druck": 120,
    "loslassen": 250,
    "glanzband": 900,
    "laden": 1100,
    "bild_einblenden": 1200
   },
   "druck": "transform: scale(1.025, .97), Kern dichter (.70 bzw. .86)",
   "fokus": "outline 2px #2b2421, Versatz 2px, plus box-shadow 0 0 0 2px #fef2e3 (Doppelring); getönt umgekehrt",
   "fallback": "@supports not (backdrop-filter): Kern und Saum .85 (getönt .9); prefers-reduced-transparency: deckend #fef2e3 bzw. #504032; Nicht-Chromium: liquid → frost; forced-colors: ButtonFace/ButtonText mit Rahmen",
   "deaktiviert": "aria-disabled=\"true\", Label nennt den Grund („Silvester ausgebucht“), Durchstreichung, keine Hover-Effekte, voller Textkontrast",
   "laden": "aria-busy=\"true\", Label „Prüfe …“, Drehsymbol 900 ms linear, Breite eingefroren",
   "farben": {
    "sand": "#f3eee7",
    "creme": "#fef2e3",
    "text": "#3e3a37",
    "leise": "#6b6560",
    "linie": "#d5d1c8",
    "holz": "#504032"
   },
   "schriften": "Newsreader 300 (h1 clamp(2.5rem, 1.5rem + 4vw, 5.5rem), -0.015em), Mona Sans (Button 650, 0.8125rem, font-stretch 118 %, versal, 0.06em; Fließtext 1.0625rem/1.6)"
  },
  "ausloeser": "hover",
  "touch": "Kein Glanzpunkt ohne Hover; beim Tippen sitzt er an der Fingerstelle und das Glas gibt nach (:active). Unter 720 px steht die Buchungsleiste über dem Button, beide auf dem Hochformatbild, der Button in voller Breite 52 px hoch.",
  "reduziert": "Kein Bild-Einblenden, kein Nachgeben beim Druck, kein Glanzband, Drehsymbol steht. Die Vorführung springt zwischen zwei Bildausschnitten statt zu fahren; Zustände (Hover, Laden, ausgebucht) wechseln ohne Bewegung.",
  "korrekturen": {
   "beschreibung": "Ein Button aus Glas für die eine Handlung über einem Foto oder Film. Ein schmaler Saum lässt den Hintergrund unscharf durchscheinen, eine Lichtkante zeichnet den Rand, ein Glanzpunkt folgt dem Zeiger, beim Drücken gibt das Glas leicht nach. Unter dem Text liegt ein dichter Kern, damit die Schrift auf jedem Bildausschnitt lesbar bleibt. In der Variante liquid bricht der Rand den Hintergrund wie eine Linse; das kann nur Chromium, die anderen Browser zeigen Frost.",
   "warum_es_wirkt": "Das Bild bleibt sichtbar, und trotzdem liegt der Button klar auf einer eigenen Ebene. Apple hat das Material 2025 als Liquid Glass bis hinunter zu Buttons und Schaltern eingeführt, viele kennen es also aus dem Betriebssystem. Lichtkante und Druckzustand geben dem Glas Gewicht, ohne dass eine Signalfarbe das Foto übertönt.",
   "wann_einsetzen": "Für eine einzelne Haupthandlung über Fotografie oder Film: „Verfügbarkeit prüfen“ im Foto-Hero eines Hotels, „Kollektion ansehen“ über einem Kampagnenbild, eine Aktion über einem Produktbild. Gut, wenn eine deckende Signalfläche das Bild zerschneiden würde.",
   "wann_nicht": "Auf einfarbigem hellem Grund, dort ist Glas unsichtbar. Nie mehr als ein Glas-Element pro Ansicht, also nicht zusammen mit Glas-Navigation. Nicht, wenn der Text im ungünstigsten Bildausschnitt unter 4,5:1 fällt. Nicht für Kanzlei, Praxis, Pflege, Handwerk. Nicht für Formular-Absenden in langen Formularen (dort button-zustaende).",
   "varianten": [
    "frost: Unschärfe 12 px und Sättigung 1,6 hinter dem Glas, Lichtkante; läuft in allen aktuellen Browsern",
    "liquid: Rand bricht den Hintergrund per SVG-Displacement als backdrop-filter; nur Chromium, sonst Frost",
    "getoent: dunkler Markenton im Kern, heller Text, für die hervorgehobene Handlung (wie .glassProminent bei Apple)",
    "glanz: Lichtkante dreht zum Zeiger, ein Glanzband läuft einmal bei Hover oder Fokus über die Fläche"
   ],
   "umsetzung": "Echter <button> oder <a>, Pille 52 bis 56 px hoch. Zwei Zonen: ein 6-px-Saum mit wenig Füllung (border transparent, Hintergrund border-box) und ein Kern als eigene Schicht unter dem Text, dessen Kante per box-shadow weich ausläuft. Die Kern-Deckkraft rechnet man so aus, dass der Text auch über reinem Schwarz bzw. Weiß 4,5:1 hält (hier .62 hell, .78 getönt). frost: backdrop-filter blur(12px) saturate(1.6). liquid: Displacement-Map per Canvas aus einem Squircle-Profil berechnen (wie liquid-glass-refraktion), als feImage in einen SVG-Filter (Blur, feDisplacementMap, saturate, Rim-Light), per backdrop-filter: url(#id) einbinden; Map je Größe cachen und per ResizeObserver neu bauen; Chromium per navigator.userAgentData erkennen. Fallback-Kette: liquid nur in Chromium, sonst frost; @supports not (backdrop-filter) Füllung .85; prefers-reduced-transparency deckend; forced-colors Systemfarben mit Rahmen. Glanzpunkt per radial-gradient an --mx/--my aus pointermove; glanz über @property --winkel und einen conic-gradient-Rand.",
   "mobil": "52 px hoch, auf schmalen Bildschirmen volle Breite im Bild. Ohne Hover kein Glanzpunkt; beim Tippen sitzt er an der Fingerstelle und der Druckzustand gibt Rückmeldung. Auf schwachen Geräten frost statt liquid.",
   "reduzierte_bewegung": "Kein Glanzband, kein Nachgeben beim Druck, kein wandernder Glanzpunkt. Zustände wechseln über Helligkeit und Lichtkante ohne Bewegung.",
   "barrierefreiheit": "WCAG 1.4.3: Text mindestens 4,5:1 auch im ungünstigsten Bildausschnitt, gesichert über den dichten Kern statt über Unschärfe (hier rechnerisch 5,2:1 bzw. 5,1:1). 1.4.11: Fokus als Doppelring hell und dunkel, damit er auf hellem und dunklem Bild 3:1 hält. 2.5.8: Trefferfläche 52 bis 56 px. 2.4.7: Fokus sichtbar. prefers-reduced-transparency: deckende Fläche. forced-colors: Systemfarben und Rahmen. Deaktiviert über aria-disabled, das Label nennt den Grund; Laden über aria-busy, das Ergebnis kommt in einer role=status-Zeile."
  },
  "geprueft": "02.11.2026",
  "notiz": "Gästehaus Elsterhang in Plauen (Rezept boutique-hotel-gastgeber: Newsreader + Mona Sans, Sand, Creme, Holzton). Hero mit Talblick (huegel-nebel), darauf Buchungsleiste in deckender Creme und der Glas-Button „Verfügbarkeit prüfen“ mit echten Zuständen: Laden, Ergebnis mit Gesamtpreis, „Silvester ausgebucht“ (aria-disabled). Zweiter Kontext: Zimmer-Karte mit Interieurbild (fenster-licht) und Glas-Link. Pult zeigt den Kontrast im ungünstigsten Fall und simuliert die Fallback-Stufen (ohne Blur, Transparenz aus). vorfuehren() fährt das Bild unter dem Glas von hell nach dunkel, simuliert Hover, Druck, Laden und ausgebucht. Refraktions-Code nach liquid-glass-refraktion. Quellen: apple.com, developer.apple.com, blog.logrocket.com, axesslab.com. AD-Review 02.11.2026: Note 4. Hero- und Zimmerbild getauscht: fenster-licht stand schon als Hero in atmosphaere-partikel (ebenfalls Hotel mit Buchungsleiste); der Talblick passt zur Headline „über dem Elstertal“, die Hügelkanten zeigen die Brechung im liquid-Rand.",
  "varianten": [
   {
    "id": "frost",
    "name": "Frost",
    "wann": "Grundvariante für jede Seite mit Foto-Hero; läuft in allen aktuellen Browsern gleich.",
    "werte": {
     "backdrop": "blur(12px) saturate(1.6)",
     "kern": "rgb(254 242 227 / .62)"
    }
   },
   {
    "id": "liquid",
    "name": "Liquid (Refraktion)",
    "wann": "Eigenprojekte, Kampagnen- oder Produktseiten, auf denen der Effekt gezeigt werden soll; nur Chromium, sonst automatisch Frost.",
    "werte": {
     "backdrop": "url(#glas-n): Blur 3, feDisplacementMap scale 34, Druck 46, saturate 1.6, Rim-Light .5",
     "kern": "rgb(254 242 227 / .62)"
    }
   },
   {
    "id": "getoent",
    "name": "Getönt",
    "wann": "Die hervorgehobene Handlung (Buchen, Kaufen) über hellen oder unruhigen Bildern; Hotel, Mode, Produkt.",
    "werte": {
     "kern": "rgb(80 64 50 / .78)",
     "saum": "rgb(80 64 50 / .34)",
     "text": "#fffdf9",
     "glanzpunkt": "nur im Saum"
    }
   },
   {
    "id": "glanz",
    "name": "Glanz",
    "wann": "Luxus- und Kampagnenseiten, auf denen der Button einmal glänzen darf; Lichtkante folgt dem Zeiger.",
    "werte": {
     "rand": "conic-gradient from var(--winkel), 1.5 px",
     "glanzband_ms": 900,
     "kurve": "cubic-bezier(0.37, 0, 0.63, 1)"
    }
   }
  ]
 }
}
