diff --git a/docs/styleguide/.gitignore b/docs/styleguide/.gitignore
new file mode 100644
index 0000000..e43b0f9
--- /dev/null
+++ b/docs/styleguide/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/docs/styleguide/VERSION b/docs/styleguide/VERSION
new file mode 100644
index 0000000..b2580f2
--- /dev/null
+++ b/docs/styleguide/VERSION
@@ -0,0 +1 @@
+2026.05.18.1
diff --git a/docs/styleguide/components/cards.html b/docs/styleguide/components/cards.html
new file mode 100644
index 0000000..dffb174
--- /dev/null
+++ b/docs/styleguide/components/cards.html
@@ -0,0 +1,212 @@
+
+
+
+
+
+ Styleguide – Cards
+
+
+
+
+ Components – Cards
+
+
+
+
+
+
+
+
+
+
+
+ Component: Cards
+
+
+
+
+
+
+
+
+ Standard Card mit Header und hellem Body-Segment.
+
+
+
+
+
+
+
+
+
+ Alternative Farbvariante des Header-Segments.
+
+
+
+
+
+
+
+
+
+ Kein weißer Trenner zwischen darkbrown und hellem Segment.
+
+
+
+
+
+
+
+
+
+ Component: Content Card
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer luctus, turpis vel porttitor cursus, nibh justo feugiat sem, sit amet egestas lorem arcu sed augue. Donec sed lorem in urna sagittis.
+
+
+
+
+
+
+
+
+
+ Component: Group Card
+
+
+
+
+
+
+
+
+ Group Cards bündeln mehrere zusammengehörige Cards.
+
+
+
+
+
+
+
+
+
+ Die Group Card ist eine eigenständige Component.
+
+
+
+
+
+
+ Variante: Group Card mit H2 Überschrift
+
+
+
+
+
+
+
+
+
+ Group Cards bündeln mehrere zusammengehörige Cards.
+
+
+
+
+
+
+
+
+
+ Die Group Card enthält hier zusätzlich eine H2-Überschrift.
+
+
+
+
+
+
+
+
+
+ Component: Multisegment Card
+
+
+
+
+
+
+
+
Erstes graues Segment mit Textinhalt.
+
+
+
+
Zweites graues Segment mit Textinhalt.
+
+
+
+
Erstes weißes Segment.
+
+
+
+
Zweites weißes Segment.
+
+
+
+
+
+
+
+
+ Component: Transparent Card
+
+
+
+
+
+ Transparente Card mit standardisiertem Card-Padding.
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/components/charts.html b/docs/styleguide/components/charts.html
new file mode 100644
index 0000000..881e73f
--- /dev/null
+++ b/docs/styleguide/components/charts.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+ Styleguide – Charts
+
+
+
+
+ Components – Charts
+
+
+ Component: Score-Balken / Median-Marker
+
+
+
+
+
+ Component: Gesamtscore-Balken
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/components/data-display.html b/docs/styleguide/components/data-display.html
new file mode 100644
index 0000000..40e86b3
--- /dev/null
+++ b/docs/styleguide/components/data-display.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+ Styleguide – Data Display
+
+
+
+
+ Components – Data Display
+
+
+
+
+
+
+
+
+ Component: Data Table
+
+
+
+
+ Kennzahl
+ Wert
+ Peer-Median
+
+
+
+
+ PE ?
+ 7.7
+ 11.7
+
+
+ PE Forward ?
+ 8.6
+ 9.7
+
+
+ PEG Forward ?
+ 1.23
+ 1.43
+
+
+
+
+
+
+
+
+
+ Component: Data Columns
+
+
+
+
+ 7.7
+ 11.7
+
+
+ 8.6
+ 9.7
+
+
+ 1.23
+ 1.43
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/components/interactive-elements.html b/docs/styleguide/components/interactive-elements.html
new file mode 100644
index 0000000..d9dce58
--- /dev/null
+++ b/docs/styleguide/components/interactive-elements.html
@@ -0,0 +1,1218 @@
+
+
+
+
+
+ Styleguide – Interactive Elements
+
+
+
+
+ Components – Interactive Elements
+
+ Formular-Layout-Regel: Wenn Pulldowns, Slider, Radio-Felder, Checkbox-Felder oder Eingabefelder direkt untereinander als Gruppe dargestellt werden, nutzen alle Zeilen dieselbe Label-Spaltenbreite und denselben horizontalen Abstand zwischen Label und Interaktionselement. Auf Mobile erfolgt der Umbruch komponentenspezifisch in eine einspaltige Darstellung.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component: Tasten-Navigation-gross in content
+
+
+ Gesamtbewertung
+ Marktbewertung
+ Wachstum
+ Profitabilität
+ Stabilität
+
+
+
+
+
+
+
+
+ Component: Pulldown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component: Kreuzchenfeld / Multiple Choice
+
+
+
+
+
+
+
+ Component: Radio Button / Single Choice
+
+
+
+
+
+
+
+ Component: Modus Schieber global
+
+
+ absolut
+
+
+
+
+
+ relativ
+
+
+
+
+
+ Component: Modus Schieber lokal
+
+
+ absolut
+
+
+
+
+
+ relativ
+
+
+
+
+
+ Component: Aktivierungs-Schalter (an/aus)
+
+
+
+
+ aus
+ an
+
+
+
+
+
+
+
+
+ Component: Slider
+
+
+
+
+
+
+
+
+
+ Component: Fragezeichen-Icon
+
+
+ ?
+
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+
+
+
+
+
+
+
+ Component: Hyperlink
+
+
+ Dies ist ein Text mit einem Hyperlink .
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/components/typography.html b/docs/styleguide/components/typography.html
new file mode 100644
index 0000000..5e6b8b0
--- /dev/null
+++ b/docs/styleguide/components/typography.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ Styleguide – Typography
+
+
+
+
+ Components – Typography
+
+
+ Component: Typography
+
+
+
Portal Titel
+
H1 Überschrift
+
H2 Überschrift
+
Body / Fließtext
+
Strong / hervorgehobener Text
+
Section Title
+
Bar Label
+
Table Label
+
Table Value
+
+
+
+
+
diff --git a/docs/styleguide/docs/portal_sync_flow.md b/docs/styleguide/docs/portal_sync_flow.md
new file mode 100644
index 0000000..49c8541
--- /dev/null
+++ b/docs/styleguide/docs/portal_sync_flow.md
@@ -0,0 +1,45 @@
+# Portal Sync Flow
+
+## Ziel
+
+Der Styleguide bleibt in diesem Repository die Source of Truth. Das Portal holt:
+
+- den deploy-relevanten CSS-Upstream versioniert als `public/assets/styleguide.upstream.css`
+- die vollstaendige Styleguide-Dokumentation gespiegelt nach `docs/styleguide`
+
+## Vorbereitung
+
+- Version in `VERSION` erhoehen, sobald ein freigegebener Stand vorliegt.
+- Aenderungen im Styleguide committen und pushen.
+
+## Sync ausfuehren
+
+Beispiel:
+
+```bash
+./scripts/sync_styleguide_to_webapp_aktienberater.sh \
+ --commit-portal
+```
+
+Optional kann der Zielpfad ueberschrieben werden:
+
+```bash
+./scripts/sync_styleguide_to_webapp_aktienberater.sh \
+ --portal-repo "/absoluter/pfad/zum/portalrepo" \
+ --commit-portal
+```
+
+## Ergebnis im Portalrepo
+
+- `public/assets/styleguide.upstream.css` aktualisiert
+- `public/assets/styleguide.upstream.meta.json` aktualisiert (Version, Commit, Zeitstempel)
+- `docs/styleguide` gespiegelt (mit `--delete`, ohne `.git`, `.codex`, `AGENTS.md`, `scripts/`)
+- Optional: automatischer Commit + Push im Portalrepo
+
+## Standardprozess je Release
+
+1. Styleguide aendern
+2. `VERSION` erhoehen
+3. Styleguide commit + push
+4. Sync-Skript ausfuehren
+5. Portal Smoke-Test
diff --git a/docs/styleguide/docs/skill-styleguide-anwendung.md b/docs/styleguide/docs/skill-styleguide-anwendung.md
new file mode 100644
index 0000000..015a6b2
--- /dev/null
+++ b/docs/styleguide/docs/skill-styleguide-anwendung.md
@@ -0,0 +1,58 @@
+# AGENTS.md — Skill: styleguide-anwendung
+
+## Zweck
+
+Dieser Skill regelt verbindlich die fachlich korrekte Anwendung des zentralen Styleguides in konsumierenden Portalen.
+
+## Scope
+
+- Gilt nur fuer konsumierende Portal-Repositories.
+- Gilt fuer die Anwendung von Tokens, Components, Patterns, Layouts und Templates aus dem Styleguide.
+
+## Verbindliche Regeln
+
+1. Reuse first: Styleguide-Bausteine MUESSEN 1:1 angewendet werden; visuelle Nachbauten sind verboten.
+2. Components MUESSEN in Struktur, Klassenlogik und Semantik unveraendert bleiben.
+3. Wenn ein passender Baustein existiert, SIND lokale Sondervarianten und Inselloesungen verboten.
+4. Lokale Designentscheidungen ausserhalb des Styleguide-Systems sind verboten (Farben, Spacing, Typography, Radius, Shadow, States).
+5. Ueberschreibungen von Component-Internals aus dem Portal-Kontext sind verboten.
+6. Portal-spezifische Regeln sind nur zulaessig, wenn kein passender Baustein existiert, der Need fachlich belegt ist und keine Duplikation entsteht.
+7. Jede lokale Abweichung MUSS minimal, rueckbaubar, klar begruendet und auf den konkreten Portal-Kontext begrenzt sein.
+8. `public/assets/styles.css` ist read-only; manuelle Portal-Styles darin sind verboten.
+9. `public/assets/styleguide.upstream.css` ist read-only; Upstream wird nie lokal gepatcht.
+10. Eigene Portal-Styles duerfen ausschliesslich in `public/assets/styles.portal.css` gepflegt werden.
+
+## 1:1-Uebernahmepflicht (kritisch)
+
+Wenn ein Pattern oder Component aus dem Styleguide vorgegeben ist, gilt:
+
+1. HTML-Struktur wird 1:1 uebernommen (kein vereinfachtes oder umgebautes Markup).
+2. Klassenbezeichnungen werden 1:1 uebernommen (keine Umbenennungen, keine Teilmengen).
+3. Alle dokumentierten States werden umgesetzt (z. B. default, hover, focus, active, disabled, selected).
+4. Alle dokumentierten Interaktionen/Funktionalitaeten werden umgesetzt (keine Teilimplementierung).
+5. Accessibility-Merkmale werden 1:1 uebernommen (ARIA, Labels, Keyboard-Fokus, semantische Elemente).
+6. "Sinngemaesse" Nachimplementierung ist unzulaessig; erlaubt ist nur die vollstaendige Uebernahme oder eine explizit freigegebene Abweichung.
+
+## Guardrails
+
+- Keine Umgehung des Styleguides durch Inline-Styles oder seitenlokale Ad-hoc-CSS-Dateien.
+- Keine erneute Einfuehrung von Legacy-CSS-Bloecken oder lokalen Vollkopien von Styleguide-Regeln.
+- Keine Mischung von Upstream-Logik und Portal-Logik in derselben Quelldatei.
+- Konflikte mit Upstream werden nicht durch Hotfixes in Output-Dateien geloest.
+
+## Arbeitsmodus bei Aenderungen
+
+1. Zuerst pruefen: Deckt ein bestehender Styleguide-Baustein den Fall ab.
+2. Wenn ja: unveraendert uebernehmen (Pfad endet hier).
+3. Wenn nein: minimalen Portal-Zusatz in `styles.portal.css` umsetzen, ohne Component-Internals zu beruehren.
+4. Betroffene Views auf visuelle und funktionale Regressionen testen.
+5. Lokale Abweichung im Commit mit kurzer fachlicher Begruendung dokumentieren.
+
+## Abnahmekriterien
+
+- Vorhandene Styleguide-Bausteine wurden priorisiert und nicht lokal dupliziert.
+- Keine Portalregel greift in Component-Internals ein.
+- Alle lokalen Regeln sind auf das notwendige Minimum begrenzt.
+- `styles.css` und `styleguide.upstream.css` sind frei von manuellen Portal-Handedits.
+- Lokale Regeln in `styles.portal.css` sind fachlich begruendet und rueckbaubar dokumentiert.
+- Vorgegebene Patterns/Components sind in HTML, Klassen, States, Interaktionen und A11y vollstaendig 1:1 uebernommen.
diff --git a/docs/styleguide/docs/styleguide-integration-strategy.md b/docs/styleguide/docs/styleguide-integration-strategy.md
new file mode 100644
index 0000000..4aeb4b0
--- /dev/null
+++ b/docs/styleguide/docs/styleguide-integration-strategy.md
@@ -0,0 +1,136 @@
+# Integrationsstrategie Styleguide -> WebApp_Aktienberater
+
+Stand: 18. Mai 2026
+Scope: Nur Einbindungsstrategie und Migrationsvorgehen fuer CSS. Keine Frontend-Umbauten in diesem Dokument.
+
+## 1. Zielbild
+
+`public/assets/styles.css` bleibt die produktiv eingebundene Datei, wird aber kuenftig deterministisch aus zwei klar getrennten Schichten erzeugt:
+
+1. `styleguide` (upstream, read-only im Projektkontext)
+2. `portal` (lokale App-spezifische Regeln)
+
+Es gibt keine weitere manuelle Vollkopie von CSS-Bloecken in die Produktionsdatei.
+
+## 2. Aktueller Ist-Zustand (belegt)
+
+- Produktivseiten binden `public/assets/styles.css` ein.
+- Es gibt keine lokale Styleguide-Kopie mehr im Zielrepo.
+- `public/assets/styles.css` enthaelt derzeit einen Mischstand aus Styleguide-Teil plus Legacy-Teil.
+
+Konsequenz: Updates und Debugging sind aktuell fehleranfaellig, weil keine harte Trennung zwischen upstream und lokal besteht.
+
+## 3. Verbindliche Struktur (Soll)
+
+Neue Quellstruktur im Zielrepo:
+
+- `public/assets/styleguide.upstream.css`
+ Upstream-Quelle (aus dem Styleguide-Repo uebernommen, im Zielrepo read-only behandeln)
+- `public/assets/styles.portal.css`
+ Lokale Portal-Ergaenzungen/Overrides (einzige lokale CSS-Quelle fuer App-spezifische Abweichungen)
+- `public/assets/styles.css`
+ Build-Output fuer Produktivbetrieb (generiert, nicht manuell gepflegt)
+
+## 4. Build-Reihenfolge (verbindlich)
+
+Die Reihenfolge ist fix:
+
+1. `public/assets/styleguide.upstream.css`
+2. `public/assets/styles.portal.css`
+3. Ausgabe nach `public/assets/styles.css`
+
+Damit gilt:
+
+- Standard liegt im Styleguide.
+- Lokale Abweichungen liegen nur im Portal-Layer.
+- Keine dritte Ebene mit ad-hoc CSS in Produktivdateien.
+
+## 5. Migrationsphasen
+
+### Phase A: Freeze und Trennung
+
+- Bestehenden Zustand einfrieren (Baseline-Commit).
+- Legacy-Abschnitte in `public/assets/styles.css` identifizieren.
+- Lokale, weiterhin benoetigte Regeln nach `public/assets/styles.portal.css` verschieben.
+
+### Phase B: Build-Einfuehrung
+
+- Build-Skript einfuehren, das die zwei Quellen in fixer Reihenfolge zusammenfuehrt.
+- `public/assets/styles.css` nur noch als Build-Output behandeln.
+
+### Phase C: Bereinigung
+
+- Doppelte `:root`-Definitionen und ueberschneidende Token schrittweise entfernen.
+- Jede entfernte Legacy-Regel gegen produktive Screens verifizieren.
+
+### Phase D: Regelbetrieb
+
+- Neue UI-Änderungen nur noch in:
+ - Styleguide-Repo (globale Patterns/Tokens) oder
+ - `styles.portal.css` (projektlokale Spezifika)
+
+## 5a. Verbindliche Migrationsreihenfolge
+
+Die Ablösung erfolgt in fester Reihenfolge:
+
+1. Login
+2. Hauptliste
+3. Detail
+4. Admin
+
+Pro Schritt gilt:
+
+- Legacy-Regeln nur fuer den jeweiligen Bereich ablösen.
+- Smoke-Test direkt nach jeder Ablösung.
+- Erst nach bestandenem Test den naechsten Bereich migrieren.
+
+## 5b. Verbindliche Exit-Kriterien (Legacy entfernt)
+
+Die Migration ist erst abgeschlossen, wenn alle Punkte erfuellt sind:
+
+1. `public/assets/styles.css` ist reiner Build-Output aus:
+ - `public/assets/styleguide.upstream.css`
+ - `public/assets/styles.portal.css`
+2. In `public/assets/styles.css` existiert kein Legacy-Blockmarker mehr:
+ - `LEGACY STYLES`
+ - `To be migrated step by step to styleguide system`
+3. Keine manuellen Produktivregeln mehr direkt in `public/assets/styles.css`.
+4. Alle weiterhin benoetigten lokalen Abweichungen liegen ausschliesslich in `public/assets/styles.portal.css`.
+5. Doppelte oder konkurrierende `:root`-Definitionen aus Legacy wurden entfernt.
+
+## 6. Update-Prozess bei Styleguide-Änderungen
+
+Ja, es braucht regulaere Updates im Zielrepo, sobald der Styleguide geaendert wurde.
+
+Minimalprozess:
+
+1. Neuen Styleguide-Stand nach `public/assets/styleguide.upstream.css` uebernehmen.
+2. `public/assets/styles.css` neu bauen.
+3. Kurztest der betroffenen Seiten (mindestens: Login, Hauptliste, Detail, Admin).
+4. Falls Konflikte auftreten: nur `styles.portal.css` anpassen, nicht upstream patchen.
+
+## 7. Guardrails
+
+- Keine manuellen Hotfixes direkt in `public/assets/styles.css`.
+- Keine Vermischung von Upstream-Regeln und Portalregeln in derselben Quelldatei.
+- Keine erneute Vollkopie alter Legacy-Bloecke.
+- Jede Portal-Abweichung braucht kurze Begruendung im Commit.
+
+## 7a. Verbindliche Abnahme-Checkliste je Migrationsschritt
+
+Vor dem Abschluss eines jeden Schritts:
+
+1. Seite rendert ohne visuelle Regressionen in den betroffenen Hauptbereichen.
+2. Interaktive Elemente bleiben funktionsfaehig (Buttons, Tabs, Filter, States).
+3. Keine neuen direkten Anpassungen in `public/assets/styles.css`.
+4. Diff zeigt nur:
+ - Upstream-Update (`styleguide.upstream.css`) und/oder
+ - lokale Portal-Regeln (`styles.portal.css`) und Build-Output.
+5. Commit-Text dokumentiert kurz, welcher Legacy-Abschnitt abgeloest wurde.
+
+## 8. Verantwortungsgrenze
+
+- Styleguide-Repo: Design-System-Wahrheit (Tokens, Components, Patterns).
+- WebApp_Aktienberater: Integration, lokale Komposition, produktive Einbindung.
+
+Damit bleibt das System updatefaehig und driftarm, ohne laufende Frontend-Umsetzung zu blockieren.
diff --git a/docs/styleguide/foundations.html b/docs/styleguide/foundations.html
new file mode 100644
index 0000000..df5d6a1
--- /dev/null
+++ b/docs/styleguide/foundations.html
@@ -0,0 +1,211 @@
+
+
+
+
+
+ Styleguide – Foundations
+
+
+
+
+ Foundations
+
+
+ Colors
+
+
+
+ Name
+ Wert
+ Verwendung
+
+
+
+ darkblue #4661A9 Primäre Card-Kopfsegmente, Portalheader, Toggle-Handle sowie primäre Chart-Werte ohne Positiv-Negativ-Darstellung.
+ darkgreen #4D646E Alternative Card-Kopfsegmente.
+ darkbrown #665F57 Gedämpfte alternative Card-Kopfsegmente.
+ light-grey #E2E5E9 Card-Flächen, Card-Bodies, Formularflächen, Optionszeilen, inaktive Buttons, Sandwich-Menü-Flächen und Chart-/Score-Hintergründe.
+ medium-grey #D4D6DB Aktive Standardbuttons, geöffnete Pulldown-Flächen, Hilfetext-Flächen, Fragezeichen-Icons, Referenzwerte in Charts sowie Entfernen-Button in Eingabefeldern.
+ dark-grey #7B879D Ausgewählte Tab-Buttons als Fläche sowie Schriftfarbe für deaktivierte oder zurückgenommene Interaktionselemente.
+ black #000000 Neutrale Vollton-Overlay-Farbe für starke visuelle Deaktivierung von Hintergrundobjekten.
+ white #FFFFFF Standardfläche von Buttons, Eingabefeldern, Pulldown-Triggern, Checkboxen, Radios, Toggle-Tracks und Card-Trennern.
+ signal-green #009101 Positive Score-Balken und positive Chart-Werte.
+ signal-yellow #9C7A00 Neutrale Score-Balken, neutrale Chart-Werte und Warnwerte in Tabellen.
+ signal-red #9B3B2F Negative Score-Balken und negative Chart-Werte.
+ font-dark #414959 Standard-Schrift auf hellen Flächen, Achsen/Marker in Charts, Sandwich-Linien und Radio-Markierung.
+ font-light #FFFFFF Schrift auf dunklen Flächen, Portalheader, Card-Headern, Prozessbuttons und ausgewählten Tab-Buttons.
+ font-hyperlink #FF6900 Links in Texten, Prozessbuttons und Page-Navigations-Cards.
+ process-inactive #FFAE79 Inaktive Hintergrundfläche des Prozessbuttons.
+ background-purple #373C4A Globaler Portalhintergrund.
+ background-purple-light #656C7D Group Cards und gruppierende Card-Flächen.
+ transparent transparent Transparenter Foundation-Wert für semantische Overlay-/Box-Varianten ohne Eigenfläche.
+
+
+
+
+
+ States
+
+
+
+ Name
+ Wert
+ Verwendung
+
+
+
+ form-area background: light-grey Hintergrund von Formularbereichen, Optionszeilen und Formular-Preview-Flächen. Die Fläche gehört nicht zum einzelnen Formularelement.
+ form-active background: white; color: font-dark Aktive oder ausgewählte Eingabefelder, Checkboxen, Radios, Pulldown-Trigger und Pulldown-Optionen. Bei Pulldowns zeigt die Zahl in Klammern die Anzahl gewählter Optionen.
+ form-inactive-selectable background: white; color: font-dark Nicht aktive, aber auswählbare Formularfelder, Checkboxen, Radios und Pulldown-Trigger. Dieser Zustand nutzt keine Transparenz.
+ form-disabled background: white; color: dark-grey; opacity: disabled-opacity Fachlich nicht verfügbare oder technisch deaktivierte Formularoptionen. Dieser Zustand ist nicht bedienbar.
+ pulldown-panel-open background: medium-grey Geöffnete Pulldown-Fläche. Das Panel öffnet unter dem Trigger, schließt bei Klick außerhalb und richtet sich bei Bildschirmrand automatisch links oder rechts aus.
+ overlay-panel-open background: medium-grey oder light-grey je nach Komponente Ausklappbare Overlays wie Pulldown-Panels, Hilfetexte und Sandwich-Menüs. Es ist immer nur das jeweils relevante Overlay geöffnet.
+
+
+
+
+
+ Typography
+
+
+
+ Name
+ Wert
+ Verwendung
+
+
+
+ body Open Sans, 1rem, Regular Standardtext im Portal.
+ brand Open Sans, 1.6rem, Regular Portal-Brand im Portal Header.
+ h1 Open Sans, 1.5rem, Regular Hauptüberschriften; kleiner als Portal-Brand und 50% größer als Fließtext.
+ h2 Open Sans, 1.25rem, Regular Zwischenüberschriften; kleiner als H1 und 25% größer als Fließtext.
+ strong Open Sans, 1rem, Semibold Hervorgehobener Text, Labels und Button-Text.
+ section-title Open Sans, 1rem, Regular Section-Titel; aktuell identisch mit body, aber separat benannt.
+ bar-label Open Sans, 1rem, Semibold Labels bei Score-Balken.
+ table-label Open Sans, 0.8rem, Regular Tabellen- und Grafikbeschriftungen sowie kurze Hilfetexte und Tooltip-Inhalte.
+ table-value Open Sans, 0.8rem, Semibold Hervorgehobene Tabellen- und Grafikwerte.
+
+
+
+
+
+ Naurua Overrides
+
+
+
+ Portal
+ Abweichung
+ Verwendung
+
+
+
+ NAURUA darkblue → #354A52; body → Avenir, sans-serif Portalgebundene Foundation-Overrides für das zweite Portal. Die Überschreibung greift nur, wenn das Root-Element `data-portal="naurua"` setzt.
+
+
+
+
+
+ Spacing
+
+
+
+ Name
+ Wert
+ Verwendung
+
+
+
+ spacing-small 0.3rem Kleine Abstände zwischen Interaktionselementen, Card-Segmenten, Pulldown-Optionen, Overlay-Triggern und eng zusammengehörigen Cards.
+ spacing-large 1rem Große Abstände zwischen Cards und Gruppen.
+ card-segment-padding 0.75rem vertikal / 1rem horizontal (Desktop), 0.5rem horizontal (Mobile) Innenabstand von Card-Segmenten; auf Mobile wird das horizontale Padding reduziert.
+ interaction-padding 0.25rem vertikal / 1rem horizontal Innenabstand von Interaktionselementen.
+
+
+
+
+
+ Dimensions
+
+
+
+ Name
+ Wert
+ Verwendung
+
+
+
+ interaction-height 2rem Einheitliche Höhe für Buttons, Tabs, Pulldowns, Eingabefelder und Sandwich-Menü-Buttons.
+ compact-interaction-height 1.5rem Einheitliche Höhe für schmale Interaktionselemente wie Tasten-Navigation-schmal.
+ compact-interaction-padding 0.15rem vertikal / 0.75rem horizontal Innenabstand schmaler Interaktionselemente.
+ small-interaction-element-size 1.25rem Eigene Höhe und Breite kleiner Interaktionselemente wie Fragezeichen-Icon, Checkboxen und Radio Buttons.
+ disabled-opacity 0.45 Deckkraft für fachlich nicht verfügbare oder technisch deaktivierte Interaktionselemente.
+ sandwich-line-width 1.25rem Länge der Striche im Sandwich-Menü-Button.
+ sandwich-line-height 4px Dicke der Striche im Sandwich-Menü-Button.
+ sandwich-line-gap 3px Abstand zwischen den Strichen im Sandwich-Menü-Button.
+ score-bar-height 1rem Höhe horizontaler Score-Balken.
+ score-marker-width 6px Breite des Median-Markers.
+ score-marker-height score-bar-height + 2px Median-Marker ragt oben und unten je 1px über den Score-Balken hinaus.
+ chart-height-bar 24rem Basis-Höhe für Bar Charts; in der Component wird sie proportional reduziert, die Chart-Höhe skaliert nicht mit der Breite.
+ chart-height-line 18rem Basis-Höhe für Line Charts; in der Component wird sie proportional reduziert, die Chart-Höhe skaliert nicht mit der Breite.
+ chart-axis-label-column-width 4rem Breite der Y-Achsenbeschriftungsspalte bei Charts.
+ chart-axis-label-gap 5px Horizontaler Abstand zwischen Y-Achsenbeschriftung und Y-Achse.
+ chart-grid-line-width 1px Linienstärke von Gridlines und Achsen in Charts.
+ chart-line-width 2px Linienstärke der Datenlinie im Line Chart.
+ input-label-width 9rem Desktop-Breite der Label-Spalte für gruppierte Formularzeilen mit Pulldowns, Slidern, Radio-Feldern, Checkbox-Feldern sowie ein- und mehrzeiligen Eingabefeldern.
+ input-field-desktop-width 400px Fixe Desktop-Breite von ein- und mehrzeiligen Eingabefeldern in der Input-Component-Preview.
+ input-field-max-width 600px Maximale Breite von ein- und mehrzeiligen Eingabefeldern (ohne Suchfeld).
+ object-card-height 600px Fixe Höhe der Object Card im Desktop-Layout (u. a. für Company Card).
+ object-group-card-min-width 550px Mindestbreite der Group Card im Pattern Object Group Card.
+ object-group-card-max-width 800px Maximale Breite der Group Card im Pattern Object Group Card.
+ notifications-card-min-width 445px Mindestbreite der Notification Card im Pattern Notifications; 50px größer als die Object Card und Grundlage für Flex-Basis und Mindestbreite des Patterns.
+ search-field-width 15.3rem Fixe Breite des Suchfeld-Inputs inklusive Clear-Button-Bereich.
+ layer-pulldown-panel 40 Layer-Stufe für geöffnete Pulldown-Ausklappfelder, damit sie über anderen Inhalten liegen.
+ multiselect-pulldown-panel-desktop-width 500px Reservierte Foundation-Breite für Multiselektions-Pulldown-Panels; aktuell nicht aktiv genutzt, da das Panel inhaltsbasiert mit Viewport-Kappe skaliert.
+ multiselect-pulldown-panel-mobile-width 80vw Reservierte mobile Foundation-Breite für Multiselektions-Pulldown-Panels; aktuell nicht aktiv genutzt, da das Panel inhaltsbasiert mit Viewport-Kappe skaliert.
+ options-row-mode-toggle-width 7rem Breite des Modus-Schiebers in der Options Row.
+ options-row-help-panel-width 16rem Breite des Help-Panels in der Options Row.
+ card-list-drawer-width 40% Relative Breite des ausziehbaren Card-Listenbereichs.
+ notifications-text-segment-fixed-height 150px Desktop-Höhe des ersten Text-Segments im Standard-Pattern Notifications.
+ notifications-text-segment-fixed-height-small 80px Desktop-Höhe des ersten Text-Segments in der Variante Pattern Notifications small.
+
+
+
+
+
+ Radius
+
+
+
+ Name
+ Wert
+ Verwendung
+
+
+
+ radius-card 8px Cards, Group Cards, Formularflächen, Optionszeilen und geöffnete Overlay-Flächen.
+ radius-interaction 4px Buttons, Eingabefelder, Pulldown-Trigger, Checkboxen und Modus-Schieber.
+ radius-graph-bar 2px Score-Balken und Graphik-Balken.
+
+
+
+
+
+ Shadows / Borders
+
+
+
+ Name
+ Wert
+ Verwendung
+
+
+
+ shadow-none none Kein Schatten für nicht-overlay Flächen.
+ shadow-overlay 0 10px 24px rgba(0, 0, 0, 0.22) Standard-Schatten für aufklappbare Flächen wie Pulldown-, Menü- und Help-Panels.
+ border-none none Es werden keine Borders verwendet.
+
+
+
+
+
+
diff --git a/docs/styleguide/index.html b/docs/styleguide/index.html
new file mode 100644
index 0000000..e24fd7d
--- /dev/null
+++ b/docs/styleguide/index.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+ Portal Styleguide
+
+
+
+
+
+
+ Portal Styleguide
+
+
+
+
+
+
+
+
+ Layouts
+
+ Generische Layouts
+
+
+ Valuestockfinder Layouts
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/card-gruppe-mit-tastennavigation.html b/docs/styleguide/patterns/card-gruppe-mit-tastennavigation.html
new file mode 100644
index 0000000..fe7b369
--- /dev/null
+++ b/docs/styleguide/patterns/card-gruppe-mit-tastennavigation.html
@@ -0,0 +1,243 @@
+
+
+
+
+
+ Styleguide – Pattern Card Gruppe mit Tastennavigation
+
+
+
+
+ Pattern – Card Gruppe mit Tastennavigation
+
+ Pattern: Card Gruppe mit Tastennavigation
+
+
+
+ Taste 1
+ Taste 2
+ Taste 3
+ Taste 4
+ Taste 5
+ Taste 6
+ Taste 7
+
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
+
+
+
+
+
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+
+
+
+
+
+
+
+
+
+
+
Quis risus sed vulputate odio ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat velit.
+
+
+
+
+
+
Amet cursus sit amet dictum sit amet justo donec enim diam vulputate ut pharetra sit amet aliquam id diam.
+
+
+
+
+
+
Magna eget est lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam purus sit amet luctus.
+
+
+
+
+
+
+
+
+
+
+
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+
+
+
+
+
Etiam sit amet nisl purus in mollis nunc sed id semper risus in hendrerit gravida rutrum quisque.
+
+
+
+
+
+
Non tellus orci ac auctor augue mauris augue neque gravida in fermentum et sollicitudin ac orci phasellus.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/card-listen-fundamentalanalyse-mobile.html b/docs/styleguide/patterns/card-listen-fundamentalanalyse-mobile.html
new file mode 100644
index 0000000..f2bbeee
--- /dev/null
+++ b/docs/styleguide/patterns/card-listen-fundamentalanalyse-mobile.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Styleguide – Card Listen Seite Fundamentalanalyse Mobile
+
+
+
+
+ Layout – Fundamentalanalyse Mobile
+
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/card-listen-seite.html b/docs/styleguide/patterns/card-listen-seite.html
new file mode 100644
index 0000000..85c4e25
--- /dev/null
+++ b/docs/styleguide/patterns/card-listen-seite.html
@@ -0,0 +1,1034 @@
+
+
+
+
+
+ Styleguide – Layout Card Listen Seite
+
+
+
+
+ Layout – Card Listen Seite
+
+
+
+
+
+
+
+
+ Sortierung
+
+
+
+
+ Menüpunkt 1
+ Menüpunkt 2
+ Menüpunkt 3
+ Menüpunkt 4
+ Menüpunkt 5
+
+
+
+
+
+
+ Region
+
+
+
+
+ Menüpunkt 1
+ Menüpunkt 2
+ Menüpunkt 3
+ Menüpunkt 4
+ Menüpunkt 5
+
+
+
+
+
+
+
+ ×
+
+ 0 Treffer
+
+
+
+
+
+ absolut
+
+
+
+ relativ
+
+
+
+ ?
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+
+
+
+
+
+
+
+
Listenübersicht
+
+ ?
+
+ Hilfe zur Listenansicht und zu den Filteroptionen.
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer convallis purus sed urna ultricies, id aliquet justo malesuada. Morbi luctus, augue in cursus ultrices, justo lorem posuere mi, at suscipit est turpis vitae ipsum. Praesent posuere nisl a nisl fermentum, nec feugiat odio volutpat. Nam id dictum justo, eget dapibus arcu. Fusce varius justo nec nibh gravida, sed dignissim est tempor.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/company-card.html b/docs/styleguide/patterns/company-card.html
new file mode 100644
index 0000000..a3723fe
--- /dev/null
+++ b/docs/styleguide/patterns/company-card.html
@@ -0,0 +1,162 @@
+
+
+
+
+
+ Styleguide – Layout Company Card
+
+
+
+
+ Layout – Company Card
+
+ Layout: Company Card
+ Dieses Layout basiert auf der Object Card und zeigt initial eine einzelne Company Card Instanz.
+
+
+
+
+
+
+
+
+ PE: 28.8
+
+
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
Fundamentalanalyse vom 8.5.2026:
+
+
+
+
+
+
+ Moat:
+ Maessig
+
+
+
+ Attraktiv: Exzellente Profitabilität und starkes Wachstum jenseits des Flaggschiffs. Wichtigstes Risiko ist die hohe Abhängigkeit von einem Produkt mit nahendem Patentablauf.
+
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/content-cards-group.html b/docs/styleguide/patterns/content-cards-group.html
new file mode 100644
index 0000000..621f2fc
--- /dev/null
+++ b/docs/styleguide/patterns/content-cards-group.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ Styleguide – Pattern Content Cards Group
+
+
+
+
+ Pattern – Content Cards Group
+
+ Pattern: Content Cards Group
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum.
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/delete-confirmation-overlay.html b/docs/styleguide/patterns/delete-confirmation-overlay.html
new file mode 100644
index 0000000..44e25a2
--- /dev/null
+++ b/docs/styleguide/patterns/delete-confirmation-overlay.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+ Styleguide – Pattern Overlay Card
+
+
+
+
+ Pattern - Overlay Card
+
+
+ Pattern: Overlay Card
+
+
+
+
+
+
Objekt-Inhalt der Card. Während das Löschfenster sichtbar ist, wird dieses Objekt um 50% ausgegraut.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
Möchtest du Alcon Inc. wirklich löschen?
+
Du kannst das nicht rückgängig machen. Bestätige durch Eingabe von DELETE .
+
+
+ Bestätigung
+
+
+
+
+ Abbrechen
+
+ Löschen
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/formular-mit-abschnitten.html b/docs/styleguide/patterns/formular-mit-abschnitten.html
new file mode 100644
index 0000000..ac6e0dd
--- /dev/null
+++ b/docs/styleguide/patterns/formular-mit-abschnitten.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+ Styleguide – Pattern Formular mit Abschnitten
+
+
+
+
+ Pattern – Formular mit Abschnitten
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/multiselektions-pulldown.html b/docs/styleguide/patterns/multiselektions-pulldown.html
new file mode 100644
index 0000000..6d0e1f1
--- /dev/null
+++ b/docs/styleguide/patterns/multiselektions-pulldown.html
@@ -0,0 +1,602 @@
+
+
+
+
+
+ Styleguide – Pattern Multiselektions-Pulldown
+
+
+
+
+ Pattern – Multiselektions-Pulldown
+
+ Pattern: Multiselektions-Pulldown
+
+
+
+
+
+
+ Multiselektions-Pulldown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/navigation-card.html b/docs/styleguide/patterns/navigation-card.html
new file mode 100644
index 0000000..15024d4
--- /dev/null
+++ b/docs/styleguide/patterns/navigation-card.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Styleguide – Pattern Navigation Card
+
+
+
+
+ Pattern – Navigation Card
+
+ Pattern: Navigation Card
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/notifications.html b/docs/styleguide/patterns/notifications.html
new file mode 100644
index 0000000..a9d43a8
--- /dev/null
+++ b/docs/styleguide/patterns/notifications.html
@@ -0,0 +1,264 @@
+
+
+
+
+
+ Styleguide – Pattern Notifications
+
+
+
+
+ Pattern – Notifications
+
+
+ Pattern: Notifications
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+ Pattern: Notification with title
+
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+ Pattern: Notifications small
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+ zum Unternehmen
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/object-card.html b/docs/styleguide/patterns/object-card.html
new file mode 100644
index 0000000..75e6987
--- /dev/null
+++ b/docs/styleguide/patterns/object-card.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+ Styleguide – Pattern Object Card
+
+
+
+
+ Pattern – Object Card
+
+ Pattern: Object Card
+ Hinweis: Die hier gezeigten sechs Karten sind nur eine illustrative Demo zur Prüfung des responsiven Verhaltens. Für das Pattern selbst ist die Anzahl der Karten nicht vorgegeben und hängt vom konkreten Use Case ab.
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/object-group-card.html b/docs/styleguide/patterns/object-group-card.html
new file mode 100644
index 0000000..f49b0d7
--- /dev/null
+++ b/docs/styleguide/patterns/object-group-card.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+ Styleguide – Pattern Object Group Card
+
+
+
+
+ Pattern – Object Group Card
+
+ Pattern: Object Group Card
+ Hinweis: Die hier gezeigten sechs Karten sind nur eine illustrative Demo zur Prüfung des responsiven Verhaltens. Für das Pattern selbst ist die Anzahl der Karten nicht vorgegeben und hängt vom konkreten Use Case ab.
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/options-row.html b/docs/styleguide/patterns/options-row.html
new file mode 100644
index 0000000..f23be96
--- /dev/null
+++ b/docs/styleguide/patterns/options-row.html
@@ -0,0 +1,319 @@
+
+
+
+
+
+ Styleguide – Pattern Options Row
+
+
+
+
+ Pattern – Options Row
+
+ Pattern: Options Row
+
+
+ Desktop/Tablet: gleiche Breite wie das zugehörige Element; linke Optionen linksbündig, rechte Optionen rechtsbündig.
+
+
+
+ Mobile: rechte Optionen werden zum oberen Segment, linke Optionen zum unteren Segment; linke Optionen brechen innerhalb der verfügbaren Breite um.
+
+
+
+
+
+
+
+ Sortierung
+
+
+
+
+
+ Menüpunkt 1
+
+
+
+ Menüpunkt 2
+
+
+
+ Menüpunkt 3
+
+
+
+ Menüpunkt 4
+
+
+
+ Menüpunkt 5
+
+
+
+
+
+
+
+ Region
+
+
+
+
+
+ Menüpunkt 1
+
+
+
+ Menüpunkt 2
+
+
+
+ Menüpunkt 3
+
+
+
+ Menüpunkt 4
+
+
+
+ Menüpunkt 5
+
+
+
+
+
+
+
+
+ ×
+
+ 0 Treffer
+
+
+
+
+
+ absolut
+
+
+
+
+
+ relativ
+
+
+
+ ?
+
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/portal-header.html b/docs/styleguide/patterns/portal-header.html
new file mode 100644
index 0000000..420d879
--- /dev/null
+++ b/docs/styleguide/patterns/portal-header.html
@@ -0,0 +1,434 @@
+
+
+
+
+
+ Styleguide – Pattern Portal Header
+
+
+
+
+ Pattern – Portal Header
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/text-layouts.html b/docs/styleguide/patterns/text-layouts.html
new file mode 100644
index 0000000..93b45d4
--- /dev/null
+++ b/docs/styleguide/patterns/text-layouts.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+ Styleguide – Pattern Text Layouts
+
+
+
+
+ Pattern – Text Layouts
+
+ Pattern: Text Layout ganze Breite
+
+
+
+ Text 100% Breite: Dieser Textblock nimmt die komplette verfügbare Breite des Containers ein und eignet sich für lineare Erklärungen, einleitende Kontexte und Fliesstext ohne Nebenspalte.
+
+
+
+
+ Pattern: Text 60% Breite
+
+
+
+ Text 60% Breite: Dieser Textblock nutzt sechzig Prozent der Containerbreite und schafft dadurch bewusst mehr Luft für begleitende Inhalte wie Metriken, Visuals oder Kontextinformationen.
+
+
+
+
+ Pattern: Text zweispaltig (mobil zweispaltig)
+
+
+
+
+ Text zweispaltig links: Dieses Layout teilt den Text in zwei gleich breite Spalten mit jeweils fünfzig Prozent Breite auf. Es eignet sich besonders für längere inhaltliche Abschnitte, in denen eine kompaktere Zeilenlänge die Lesbarkeit verbessert.
+
+
+ Text zweispaltig rechts: Gleichzeitig bleibt die Informationsdichte hoch, ohne dass der visuelle Rhythmus in langen einspaltigen Textflächen verloren geht. Durch die symmetrische Aufteilung entstehen klare Leseachsen für Analyse- und Detailseiten.
+
+
+
+
+
+ Pattern: Dreispaltig verteilt (mobil dreispaltig)
+
+
+
+
+ Linke Spalte linksbündig: Diese Spalte führt den Inhalt mit einer klaren Startkante und eignet sich für einleitende Aussagen oder Kontext, die direkt in den Lesefluss einsteigen sollen.
+
+
+ Mittlere Spalte mittelachsig: Diese Spalte zentriert den Text auf der Mittelachse und eignet sich für vergleichende Kernaussagen, die visuell als Schwerpunkt zwischen den Randspalten stehen sollen.
+
+
+ Rechte Spalte rechtsbündig: Diese Spalte schließt den Abschnitt mit einer klaren Endkante ab und eignet sich für ergänzende Hinweise oder abschließende Perspektiven im gleichen Inhaltsblock.
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/vsf-card-listen-fundamentalanalyse-drawer.html b/docs/styleguide/patterns/vsf-card-listen-fundamentalanalyse-drawer.html
new file mode 100644
index 0000000..c2f0a40
--- /dev/null
+++ b/docs/styleguide/patterns/vsf-card-listen-fundamentalanalyse-drawer.html
@@ -0,0 +1,469 @@
+
+
+
+
+
+ Styleguide – VSF Card Listen Seite Fundamentalanalyse Drawer
+
+
+
+
+ Layout – VSF Fundamentalanalyse Drawer
+
+
+
+
+
+
+
+
+
+ Ticker: WDC
+ Region: Amerika
+ Sub-Region: Nordamerika
+ Land: Vereinigte Staaten von Amerika
+
+
+ ISIN: US9581021055
+ Industrie: Computer Hardware
+
+
+
+
+
+ Produkte und Lösungen
+ Western Digital Corporation produziert Festplatten (Hard Disk Drives, HDD) in verschiedenen Formfaktoren und Kapazitäten. Zentrale Produktkategorien umfassen Marken wie WD Blue für allgemeine Computing-Anwendungen, WD Purple und WD Purple Pro für Überwachungssysteme, WD Red, WD Red Plus und WD Red Pro für Netzwerkspeicher (NAS) und kleine Büroumgebungen, WD Black für Gaming und Hochleistung, WD Gold für Unternehmensanwendungen sowie Ultrastar für Rechenzentren. Ergänzt werden diese durch externe Gehäuse wie My Passport und My Book sowie Netzwerkspeichersysteme der My Cloud-Serie. Seit der Abspaltung des Flash-Geschäfts 2025 konzentriert sich das Unternehmen ausschliesslich auf HDD-Technologien.
+ Zielmärkte und Kunden
+ Die wichtigsten Kundensegmente umfassen Endverbraucher für Desktop-Computer und Gaming, kleine Büros und Home-Office-Nutzer für NAS-Systeme, Überwachungsanbieter für Sicherheitslösungen, Unternehmen für Server- und Enterprise-Speicher sowie Rechenzentren für Hochkapazitäts-Datenspeicherung. Geografisch bedient das Unternehmen globale Märkte mit Schwerpunkt in Nordamerika, Europa, Asien-Pazifik und aufstrebenden Regionen wie Südostasien. Die Produktion erfolgt primär in Thailand und früher in Malaysia.
+ Geschäftsmodell
+ Western Digital agiert als vertikal integrierter Hersteller von Datenspeichergeräten mit Fokus auf Festplatten-Produktion. Die Wertschöpfungskette umfasst Forschung und Entwicklung zu magnetischen Aufzeichnungstechnologien, Fertigung von Platten, Köpfen und Controllern sowie Montage in San-Jose-basierten Einrichtungen und asiatischen Fabriken. Durch Akquisitionen wie HGST (2012) und frühere Read-Rite hat es Assets in Medien und Komponenten aufgebaut, was eine hohe Eigenfertigung ermöglicht. Das Modell basiert auf skalierbarer Massenproduktion für standardisierte Speicherplattformen.
+ Erlösstruktur
+ Die Umsatzquellen gliedern sich in Segmente für Client-Computing (WD Blue, WD Black), Überwachung (WD Purple), NAS und SMB (WD Red-Serie), Enterprise (WD Gold) und Rechenzentren (Ultrastar). Der Verkauf erfolgt mechanisch über Direktverkäufe an Original Equipment Manufacturer (OEM), Distributoren und Einzelhändler sowie über eigene Kanäle für externe Produkte. Die Konzentration liegt bei Enterprise- und Datacenter-Segmenten mit höheren Kapazitäten, während Client-Segmente Volumen generieren; keine Abonnements oder transaktionsbasierten Modelle.
+ Marktposition und Wettbewerbsvorteile
+ Western Digital hält eine führende Marktstellung als grösster traditioneller HDD-Hersteller weltweit nach der HGST-Integration. Strukturelle Vorteile umfassen vertikale Integration in Plattenmedien, Schreib-/Leseköpfe und Controller-Technologie sowie heliumgefüllte Hochkapazitätsmodelle bis 14 TB. Patente in Riesen-Magnetowiderstands-Köpfen (GMR) und Produktionskapazitäten in effizienten Fabriken sichern Skaleneffekte gegenüber Wettbewerbern.
+
+ Geschäftsmodell anzeigen
+
+
+
+
Fundamentalanalyse vom 12.5.2026 ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+
+ Nächste Analyse: nicht bekannt
+
+
+
+
+ Gesamtbewertung
+ Marktbewertung
+ Wachstum
+ Profitabilität
+ Stabilität
+ TAM
+ Zyklus
+ Moat
+ Technologie
+
+
+
+
+
+
+
+
+
+
+
Score:
+
+
(9.9) attraktiv
+
+
+
+
+
+ Attraktiv. Starke Profitabilitäts- und Gewinnwachstumsdynamik durch KI-Nachfrage, solide Bilanz. Ambitionierte Bewertung setzt perfekte Ausführung voraus.
+
+
+ Western Digital repräsentiert eine hochgradig zyklische, aber aktuell von einem strukturellen KI-Trend getragene Wachstumsgeschichte. Die zentrale Investment-These lautet: Das Unternehmen profitiert kurzfristig von einer außergewöhnlichen Nachfrage nach Hochkapazitäts-Festplatten für Rechenzentren, was zu einer explosiven Ergebnisdynamik führt, jedoch zu einer ambitionierten Bewertung, die eine perfekte Ausführung voraussetzt.
+
+
+ Die entscheidenden Stärken sind die starke Profitabilitätsverbesserung mit hohen Kapitalrenditen, die robuste finanzielle Stabilität mit niedriger Verschuldung sowie die Skalenvorteile aus der vertikalen Integration. Dem stehen klare Risiken gegenüber: ein extrem hohes zyklisches Risiko mit Nachfrageschwankungen bis zu 40 Prozent, eine nur mäßig verteidigungsfähige Wettbewerbsposition unter Druck durch chinesische Konkurrenten und disruptive Technologien sowie eine Bewertung, die einen erheblichen Aufschlag auf das historische Niveau darstellt. Der zentrale Zielkonflikt liegt zwischen dem außergewöhnlichen kurzfristigen Wachstum und der langfristigen Nachhaltigkeit des Geschäftsmodells in einer hart umkämpften, kapitalintensiven Branche.
+
+
+ Die Qualität des Unternehmens ist aufgrund seiner zyklischen Natur und der angreifbaren Wettbewerbsvorteile als mittel einzustufen. Für einen GARP-Investor ist das Investment aktuell neutral bis nicht attraktiv. Zwar sind Timing-Faktoren durch die zyklische Erholung und den KI-Rückenwind günstig, die extreme Bewertung (KGV nahe 44-47) spiegelt dieses Momentum jedoch bereits vollständig wider und bietet kein Margin of Safety. Das Investment eignet sich nur für risikobewusste Anleger, die auf eine Fortsetzung des KI-Superzyklus spekulieren.
+
+
+
+
+
+
+
Die Investment-Story hat sich insgesamt verbessert, da sich die strukturellen Wachstumstreiber konkretisiert und die Profitabilität deutlich beschleunigt hat.
+
Die entscheidenden Veränderungen betreffen das Wachstumstempo und die Margenentwicklung. Das Umsatzwachstum beschleunigte sich auf 25 Prozent im Jahresvergleich, angetrieben von einer 28-prozentigen Zunahme im Cloud-Segment. Die bereinigte Bruttomarge stieg um 770 Basispunkte auf 46,1 Prozent, unterstützt durch eine günstigere Produktmischung und Skaleneffekte. Zudem wurde die Prognose für das kommende Quartal auf ein Wachstum von 40 Prozent angehoben, was auf eine anhaltend starke Nachfrage hindeutet.
+
Diese Entwicklungen bestätigen die ursprüngliche These eines durch künstliche Intelligenz getriebenen Speicher-Superzyklus und stärken sie sogar. Das verbesserte Profitabilitätsniveau und die höheren Wachstumsprognosen senken das Risiko einer kurzfristigen zyklischen Abschwächung, während die Bewertung weiterhin unter dem historischen Durchschnitt bleibt. Das Chance-Risiko-Profil hat sich somit zugunsten der Chancen verschoben.
+
+
+
+
+
+
+
+
+
+
+
+
+ Kennzahl
+ Wert
+
+
+
+
+ PE ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 27.5
+
+
+ PE Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 26.4
+
+
+ PEG Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 0.35
+
+
+
+
+
+
+
Die Aktie von Western Digital wird mit einem Kurs-Gewinn-Verhältnis für das nächste Jahr von knapp 44 bis 47 bewertet. Dies stellt einen erheblichen Aufschlag gegenüber dem historischen Fünfjahresdurchschnitt von etwa 19,5 dar. Diese Bewertungsprämie ist durch ein außergewöhnliches Ergebniswachstum begründet. Für das Geschäftsjahr 2026 erwarten Analysten ein bereinigtes Ergebnis je Aktie, das sich um etwa 81 bis 100 Prozent erhöht. Für das folgende Jahr wird ein weiterer Anstieg auf rund 13,82 Dollar prognostiziert.
+
Diese Dynamik speist sich aus der künstlichen Intelligenz getriebenen Nachfrage nach hochkapazitiven Festplatten in Rechenzentren. Das Cloud-Segment des Unternehmens wächst mit 28 bis 40 Prozent im Jahresvergleich und generiert mittlerweile 89 Prozent der Umsätze. Zugleich expandiert die Bruttomarge strukturell, was auf Preissetzungsmacht und positive Produktmix-Effekte hindeutet. Das gegenwärtige Bewertungsniveau setzt allerdings eine perfekte Ausführung voraus. Sollte der Superzyklus der künstlichen Intelligenz schwächer ausfallen oder es zu Überkapazitäten bei Halbleitern kommen, droht eine Bewertungskorrektur. Zum jetzigen Zeitpunkt erscheint die Bewertung ambitioniert, aber im Kontext des beschleunigten Ergebniswachstums nicht irrational. Anleger zahlen für das Umsatzmomentum und die strukturelle Margenverbesserung, nicht jedoch für überdurchschnittliche Langzeitgewinne.
+
+
+
+
+
+
+
+
+
+
+
+ Kennzahl
+ Wert
+
+
+
+
+ PE ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 27.5
+
+
+ PE Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 26.4
+
+
+ PEG Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 0.35
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kennzahl
+ Wert
+
+
+
+
+ PE ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 27.5
+
+
+ PE Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 26.4
+
+
+ PEG Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 0.35
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kennzahl
+ Wert
+
+
+
+
+ PE ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 27.5
+
+
+ PE Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 26.4
+
+
+ PEG Forward ? Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+ 0.35
+
+
+
+
+
+
+
+
+
+
+
+
+
Der Gesamtmarkt für Datenspeicher wird bis zum Jahr 2030 auf rund 200 Milliarden Dollar geschätzt. Dieses Wachstum wird durch exponentiell steigende Datenmengen angetrieben, wobei Technologien wie Cloud-Computing und das Training künstlicher Intelligenz zentrale Treiber mit hohen jährlichen Zuwachsraten sind. Western Digital adressiert primär den NAND-Flash-Markt, in dem es mit einem Marktanteil von 15 bis 18 Prozent hinter dem Marktführer liegt.
+
Der Wettbewerb ist in einem Dreier-Oligopol intensiv und verschärft sich durch den Kapazitätsausbau eines chinesischen Konkurrenten. Realistischer Expansionsspielraum für Western Digital wird auf einen Marktanteilsgewinn von 5 bis 10 Prozent geschätzt, angetrieben durch überdurchschnittliches Bit-Wachstum und die positive Nachfrage im KI-Bereich. Der direkt adressierbare Markt konzentriert sich auf Enterprise-SSDs und Cloud-Speicher, da der Markt für Consumer-Festplatten rückläufig ist. Überproportionales Wachstum wäre möglich, wenn das Unternehmen KI-spezifische Speicherlösungen priorisiert, allerdings limitiert Preisdruck die Marge.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/vsf-card-listen-fundamentalanalyse-mobile.html b/docs/styleguide/patterns/vsf-card-listen-fundamentalanalyse-mobile.html
new file mode 100644
index 0000000..8d3ab33
--- /dev/null
+++ b/docs/styleguide/patterns/vsf-card-listen-fundamentalanalyse-mobile.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Styleguide – VSF Card Listen Seite Fundamentalanalyse Mobile
+
+
+
+
+ Layout – VSF Fundamentalanalyse Mobile
+
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum sapien ut nibh egestas, sed ultrices quam vestibulum. Integer feugiat, sem a iaculis lacinia, augue libero pretium orci, in dictum eros nibh et risus. Fusce sagittis, dolor ut facilisis tincidunt, lorem nisi sodales sem.
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/vsf-card-listen-seite.html b/docs/styleguide/patterns/vsf-card-listen-seite.html
new file mode 100644
index 0000000..0ad2cd4
--- /dev/null
+++ b/docs/styleguide/patterns/vsf-card-listen-seite.html
@@ -0,0 +1,926 @@
+
+
+
+
+
+ Styleguide – VSF Card Listen Seite
+
+
+
+
+ Layout – VSF Card Listen Seite
+
+
+
+
+
+
+
+
+ Sortierung
+
+
+
+
+ Menüpunkt 1
+ Menüpunkt 2
+ Menüpunkt 3
+ Menüpunkt 4
+ Menüpunkt 5
+
+
+
+
+
+
+ Region
+
+
+
+
+ Menüpunkt 1
+ Menüpunkt 2
+ Menüpunkt 3
+ Menüpunkt 4
+ Menüpunkt 5
+
+
+
+
+
+
+
+ ×
+
+ 0 Treffer
+
+
+
+
+
+ absolut
+
+
+
+ relativ
+
+
+
+ ?
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+
+
+
+
+
+
+
+
VSF Listenübersicht
+
+ ?
+
+ Hilfe zur Listenansicht und zu den Filteroptionen.
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer convallis purus sed urna ultricies, id aliquet justo malesuada. Morbi luctus, augue in cursus ultrices, justo lorem posuere mi, at suscipit est turpis vitae ipsum. Praesent posuere nisl a nisl fermentum, nec feugiat odio volutpat. Nam id dictum justo, eget dapibus arcu. Fusce varius justo nec nibh gravida, sed dignissim est tempor.
+
+
+
+
+
+
+
+
+
+
+ PE: 28.8
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
+
+
Fundamentalanalyse vom 8.5.2026:
+
+
+
+
+
+
+ Moat:
+ Maessig
+
+
+
+ Attraktiv: Exzellente Profitabilität und starkes Wachstum jenseits des Flaggschiffs. Wichtigstes Risiko ist die hohe Abhängigkeit von einem Produkt mit nahendem Patentablauf.
+
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+ PE: 28.8
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
+
+
Fundamentalanalyse vom 8.5.2026:
+
+
+
+
+
+
+ Moat:
+ Maessig
+
+
+
+ Attraktiv: Exzellente Profitabilität und starkes Wachstum jenseits des Flaggschiffs. Wichtigstes Risiko ist die hohe Abhängigkeit von einem Produkt mit nahendem Patentablauf.
+
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+ PE: 28.8
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
+
+
Fundamentalanalyse vom 8.5.2026:
+
+
+
+
+
+
+ Moat:
+ Maessig
+
+
+
+ Attraktiv: Exzellente Profitabilität und starkes Wachstum jenseits des Flaggschiffs. Wichtigstes Risiko ist die hohe Abhängigkeit von einem Produkt mit nahendem Patentablauf.
+
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+ PE: 28.8
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
+
+
Fundamentalanalyse vom 8.5.2026:
+
+
+
+
+
+
+ Moat:
+ Maessig
+
+
+
+ Attraktiv: Exzellente Profitabilität und starkes Wachstum jenseits des Flaggschiffs. Wichtigstes Risiko ist die hohe Abhängigkeit von einem Produkt mit nahendem Patentablauf.
+
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+ PE: 28.8
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
+
+
Fundamentalanalyse vom 8.5.2026:
+
+
+
+
+
+
+ Moat:
+ Maessig
+
+
+
+ Attraktiv: Exzellente Profitabilität und starkes Wachstum jenseits des Flaggschiffs. Wichtigstes Risiko ist die hohe Abhängigkeit von einem Produkt mit nahendem Patentablauf.
+
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+ PE: 28.8
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
+
+
Fundamentalanalyse vom 8.5.2026:
+
+
+
+
+
+
+ Moat:
+ Maessig
+
+
+
+ Attraktiv: Exzellente Profitabilität und starkes Wachstum jenseits des Flaggschiffs. Wichtigstes Risiko ist die hohe Abhängigkeit von einem Produkt mit nahendem Patentablauf.
+
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/vsf-list-card.html b/docs/styleguide/patterns/vsf-list-card.html
new file mode 100644
index 0000000..ca12f84
--- /dev/null
+++ b/docs/styleguide/patterns/vsf-list-card.html
@@ -0,0 +1,507 @@
+
+
+
+
+
+ Styleguide – Layout VSF List Card
+
+
+
+
+ Layout – VSF List Card
+
+
+ Layout: VSF List Card
+ Diese Layout-Seite zeigt VSF-spezifische List-Card-Layouts als Grundlage fuer weitere Ausdifferenzierungen.
+
+ Layout 1: Neue Liste anlegen Karte
+
+
+ Layout 2: Maximale Listenzahl erreicht
+
+
+ Layout 3 - List Card inklusive Lösch- und Editier-Funktion
+
+
+
+
+
+
+
Medianscore:
+
+
attraktiv
+
+
+
+
+
+
+ PE: 28.8
+
+
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
Median-Subscores:
+
+
BESCHREIBUNG LISTE
+
+
+
+ Unternehmen ansehen
+
+
+
+
+
+
+
Liste editieren
+
+
+ Name
+
+
+
+ Beschreibung
+ BESCHREIBUNG LISTE
+
+
+
+ Abbrechen
+
+ Speichern
+
+
+
+
+
+
+
+
Möchtest du NAME DER LISTE wirklich löschen?
+
Du kannst das nicht rückgängig machen. Bestätige durch Eingabe von DELETE .
+
+ Bestätigung
+
+
+
+ Abbrechen
+
+ Löschen
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/vsf-list-detailseite.html b/docs/styleguide/patterns/vsf-list-detailseite.html
new file mode 100644
index 0000000..de3a72e
--- /dev/null
+++ b/docs/styleguide/patterns/vsf-list-detailseite.html
@@ -0,0 +1,645 @@
+
+
+
+
+
+ Styleguide – VSF List Detailseite
+
+
+
+
+ Layout – VSF List Detailseite
+
+
+
+
+
+
+
+
+ Sortierung
+
+
+
+
+ Menüpunkt 1
+ Menüpunkt 2
+ Menüpunkt 3
+ Menüpunkt 4
+ Menüpunkt 5
+
+
+
+
+
+
+ Region
+
+
+
+
+ Menüpunkt 1
+ Menüpunkt 2
+ Menüpunkt 3
+ Menüpunkt 4
+ Menüpunkt 5
+
+
+
+
+
+
+
+ ×
+
+ 0 Treffer
+
+
+
+
+
+ absolut
+
+
+
+ relativ
+
+
+
+ ?
+
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
+
+
+
+
+
+
+
TITEL DER LISTE
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer convallis purus sed urna ultricies, id aliquet justo malesuada. Morbi luctus, augue in cursus ultrices, justo lorem posuere mi, at suscipit est turpis vitae ipsum. Praesent posuere nisl a nisl fermentum, nec feugiat odio volutpat. Nam id dictum justo, eget dapibus arcu. Fusce varius justo nec nibh gravida, sed dignissim est tempor.
+
+
+
+
+
+
+
+
+
+ Meldungen ausblenden
+
+
+
+
+ Details
+
+
+
+
+
+
+ Details
+
+
+
+
+
+
+ Details
+
+
+
+
+
+
+
Wähle, welche Meldungen angezeigt werden sollen
+
+
+ Abbrechen
+ Speichern
+
+
+
+
+
+
+
+
+
+
Unternehmen
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group
+ Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cill.
+
+
+
+ Peer-Group Fundamentalanalyse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/vsf-listen-uebersicht-seite-v2.html b/docs/styleguide/patterns/vsf-listen-uebersicht-seite-v2.html
new file mode 100644
index 0000000..7d5401d
--- /dev/null
+++ b/docs/styleguide/patterns/vsf-listen-uebersicht-seite-v2.html
@@ -0,0 +1,656 @@
+
+
+
+
+
+ Styleguide – VSF Listen Übersicht Seite V2
+
+
+
+
+ Layout – VSF Listen Übersicht Seite V2
+
+
+
+
+
+
Meine Listen
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut a
+
+
+
+
+
+
+
+
+
+
+
+
+
Medianscore:
+
+
attraktiv
+
+
+
+
+
+
+ PE: 28.8
+
+
+ PE forw.: 23.3
+
+
+ PEG: 3.54
+
+
+
+
+
Median-Subscores:
+
+
BESCHREIBUNG LISTE
+
+
+
+ Unternehmen ansehen
+
+
+
+
+
+
+
Liste editieren
+
+
+ Name
+
+
+
+ Beschreibung
+ BESCHREIBUNG LISTE
+
+
+
+ Abbrechen
+
+ Speichern
+
+
+
+
+
+
+
+
Möchtest du NAME DER LISTE wirklich löschen?
+
Du kannst das nicht rückgängig machen. Bestätige durch Eingabe von DELETE .
+
+ Bestätigung
+
+
+
+ Abbrechen
+
+ Löschen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/patterns/vsf-meldungen.html b/docs/styleguide/patterns/vsf-meldungen.html
new file mode 100644
index 0000000..b631d66
--- /dev/null
+++ b/docs/styleguide/patterns/vsf-meldungen.html
@@ -0,0 +1,818 @@
+
+
+
+
+
+ Styleguide – VSF Meldungen
+
+
+
+
+ Layout – VSF Meldungen
+
+
+
+
+
+
+
+
+
diff --git a/docs/styleguide/scripts/check_pattern_inset_guardrails.sh b/docs/styleguide/scripts/check_pattern_inset_guardrails.sh
new file mode 100755
index 0000000..0a0ffe8
--- /dev/null
+++ b/docs/styleguide/scripts/check_pattern_inset_guardrails.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
+CSS_FILE="$ROOT_DIR/styleguide.css"
+
+selectors=(
+ "sg-portal-header"
+ "sg-options-row"
+ "sg-card-list-page-drawer__header"
+ "sg-card-list-page-drawer__content"
+)
+
+for selector in "${selectors[@]}"; do
+ block="$(awk -v selector=".$selector" '
+ $0 ~ selector"[[:space:]]*\\{" {in_block=1}
+ in_block {print}
+ in_block && /}/ {exit}
+ ' "$CSS_FILE")"
+
+ if [[ -z "$block" ]]; then
+ echo "ERROR: selector .$selector not found in styleguide.css"
+ exit 1
+ fi
+
+ if echo "$block" | rg -n "(padding|padding-inline|padding-left|padding-right|inset|inset-inline)([^\n;]*)([0-9]+px)" >/dev/null; then
+ echo "ERROR: hardcoded px inset/padding value found in .$selector"
+ echo "$block"
+ exit 1
+ fi
+done
+
+echo "OK: no hardcoded px inset values in guarded pattern selectors"
diff --git a/docs/styleguide/scripts/help-icon-overlays.js b/docs/styleguide/scripts/help-icon-overlays.js
new file mode 100644
index 0000000..84edff9
--- /dev/null
+++ b/docs/styleguide/scripts/help-icon-overlays.js
@@ -0,0 +1,129 @@
+(function initHelpIconOverlayModule() {
+ const CLOSE_HANDLERS = {
+ '.sg-pulldown-demo': (root) => {
+ root.querySelectorAll('.sg-pulldown-demo').forEach((demo) => {
+ const trigger = demo.querySelector('.sg-pulldown-demo__trigger');
+ demo.dataset.open = 'false';
+ if (trigger) {
+ trigger.setAttribute('aria-expanded', 'false');
+ }
+ });
+ },
+ '.sg-sandwich-menu-wrap': (root) => {
+ root.querySelectorAll('.sg-sandwich-menu-wrap').forEach((wrap) => {
+ const button = wrap.querySelector('.sg-sandwich-button');
+ wrap.dataset.open = 'false';
+ if (button) {
+ button.setAttribute('aria-expanded', 'false');
+ }
+ });
+ },
+ };
+
+ const getViewportWidth = () => {
+ if (window.visualViewport && typeof window.visualViewport.width === 'number') {
+ return window.visualViewport.width;
+ }
+ return window.innerWidth;
+ };
+
+ const getSafeInsetPx = () => {
+ const rootStyles = getComputedStyle(document.documentElement);
+ const spacingSmallRaw = rootStyles.getPropertyValue('--spacing-small').trim();
+ const rootFontSize = parseFloat(rootStyles.fontSize) || 16;
+ const spacingSmallValue = parseFloat(spacingSmallRaw);
+ if (Number.isNaN(spacingSmallValue)) {
+ return 0;
+ }
+ if (spacingSmallRaw.endsWith('rem')) {
+ return spacingSmallValue * rootFontSize;
+ }
+ return spacingSmallValue;
+ };
+
+ const closeAllHelpIcons = (root) => {
+ root.querySelectorAll('.sg-help-icon-wrap').forEach((wrap) => {
+ const button = wrap.querySelector('.sg-help-icon');
+ const panel = wrap.querySelector('.sg-help-icon-panel');
+ wrap.dataset.open = 'false';
+ if (panel) {
+ panel.style.removeProperty('transform');
+ }
+ if (button) {
+ button.setAttribute('aria-expanded', 'false');
+ }
+ });
+ };
+
+ window.sgInitHelpIconOverlays = (options = {}) => {
+ const root = options.root || document;
+ const closeOnOpenSelectors = options.closeOnOpenSelectors || [];
+ const outsideClickIgnoreSelectors = options.outsideClickIgnoreSelectors || [];
+
+ root.querySelectorAll('.sg-help-icon-wrap').forEach((wrap) => {
+ if (wrap.dataset.helpIconInit === 'true') {
+ return;
+ }
+ wrap.dataset.helpIconInit = 'true';
+
+ const button = wrap.querySelector('.sg-help-icon');
+ const panel = wrap.querySelector('.sg-help-icon-panel');
+ if (!button || !panel) {
+ return;
+ }
+
+ button.addEventListener('click', (event) => {
+ event.stopPropagation();
+ const nextState = wrap.dataset.open !== 'true';
+
+ closeAllHelpIcons(root);
+ closeOnOpenSelectors.forEach((selector) => {
+ const handler = CLOSE_HANDLERS[selector];
+ if (handler) {
+ handler(root);
+ }
+ });
+
+ if (!nextState) {
+ return;
+ }
+
+ wrap.dataset.align = 'left';
+ wrap.dataset.open = 'true';
+ button.setAttribute('aria-expanded', 'true');
+
+ const viewportWidth = getViewportWidth();
+ const panelRect = panel.getBoundingClientRect();
+ if (panelRect.right > viewportWidth) {
+ wrap.dataset.align = 'right';
+ }
+ const alignedPanelRect = panel.getBoundingClientRect();
+ if (alignedPanelRect.left < 0) {
+ wrap.dataset.align = 'left';
+ }
+
+ const clampedRect = panel.getBoundingClientRect();
+ const safeInset = getSafeInsetPx();
+ let shiftX = 0;
+ if (clampedRect.right > (viewportWidth - safeInset)) {
+ shiftX -= clampedRect.right - (viewportWidth - safeInset);
+ }
+ if ((clampedRect.left + shiftX) < safeInset) {
+ shiftX += safeInset - (clampedRect.left + shiftX);
+ }
+ if (shiftX !== 0) {
+ panel.style.transform = `translateX(${shiftX}px)`;
+ }
+ });
+ });
+
+ document.addEventListener('click', (event) => {
+ const isInsideIgnoredZone = ['.sg-help-icon-wrap', ...outsideClickIgnoreSelectors]
+ .some((selector) => event.target.closest(selector));
+ if (isInsideIgnoredZone) {
+ return;
+ }
+ closeAllHelpIcons(root);
+ });
+ };
+})();
diff --git a/docs/styleguide/scripts/sync_styleguide_to_webapp_aktienberater.sh b/docs/styleguide/scripts/sync_styleguide_to_webapp_aktienberater.sh
new file mode 100755
index 0000000..31249ba
--- /dev/null
+++ b/docs/styleguide/scripts/sync_styleguide_to_webapp_aktienberater.sh
@@ -0,0 +1,235 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+STYLEGUIDE_REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
+SOURCE_CSS="$STYLEGUIDE_REPO_ROOT/styleguide.css"
+VERSION_FILE="$STYLEGUIDE_REPO_ROOT/VERSION"
+
+PORTAL_KEY="vsf"
+PORTAL_REPO_PATH=""
+PORTAL_CSS_REL="public/assets/styleguide.upstream.css"
+PORTAL_BUILT_CSS_REL="public/assets/styles.css"
+PORTAL_META_REL="public/assets/styleguide.upstream.meta.json"
+PORTAL_STYLEGUIDE_DOCS_REL="docs/styleguide"
+PORTAL_BUILD_SCRIPT_REL="scripts/styleguide/build_styles.sh"
+COMMIT_IN_PORTAL="false"
+
+usage() {
+ cat <] [--portal-repo ] [--commit-portal]
+
+Options:
+ --portal Portal target. Defaults to vsf.
+ --portal-repo Optional override for portal repository root.
+ --commit-portal Create commit in portal repo after sync.
+ -h, --help Show this help.
+USAGE
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --portal)
+ PORTAL_KEY="${2:-}"
+ shift 2
+ ;;
+ --portal-repo)
+ PORTAL_REPO_PATH="${2:-}"
+ shift 2
+ ;;
+ --commit-portal)
+ COMMIT_IN_PORTAL="true"
+ shift
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown argument: $1" >&2
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+case "$PORTAL_KEY" in
+ vsf)
+ if [[ -z "$PORTAL_REPO_PATH" ]]; then
+ PORTAL_REPO_PATH="/Users/mathias/Documents/Dokumente Chouchou/Codebases/WebApp_Aktienberater"
+ fi
+ ;;
+ naurua)
+ if [[ -z "$PORTAL_REPO_PATH" ]]; then
+ PORTAL_REPO_PATH="/Users/mathias/Documents/Dokumente Chouchou/Codebases/erp_naurua"
+ fi
+ ;;
+ *)
+ echo "Unknown portal: $PORTAL_KEY" >&2
+ usage
+ exit 1
+ ;;
+esac
+
+if [[ ! -f "$SOURCE_CSS" ]]; then
+ echo "Source CSS not found: $SOURCE_CSS" >&2
+ exit 1
+fi
+
+if [[ ! -f "$VERSION_FILE" ]]; then
+ echo "Version file not found: $VERSION_FILE" >&2
+ exit 1
+fi
+
+if [[ ! -d "$PORTAL_REPO_PATH/.git" ]]; then
+ echo "Portal repo is not a git repository: $PORTAL_REPO_PATH" >&2
+ exit 1
+fi
+
+PORTAL_CSS_PATH="$PORTAL_REPO_PATH/$PORTAL_CSS_REL"
+PORTAL_BUILT_CSS_PATH="$PORTAL_REPO_PATH/$PORTAL_BUILT_CSS_REL"
+PORTAL_META_PATH="$PORTAL_REPO_PATH/$PORTAL_META_REL"
+PORTAL_STYLEGUIDE_DOCS_PATH="$PORTAL_REPO_PATH/$PORTAL_STYLEGUIDE_DOCS_REL"
+PORTAL_BUILD_SCRIPT_PATH="$PORTAL_REPO_PATH/$PORTAL_BUILD_SCRIPT_REL"
+
+mkdir -p "$(dirname "$PORTAL_CSS_PATH")"
+mkdir -p "$PORTAL_STYLEGUIDE_DOCS_PATH"
+
+flatten_css() {
+ local source_file="$1"
+ local source_root="$2"
+ local output_file="$3"
+
+ : > "$output_file"
+ while IFS= read -r line; do
+ if [[ "$line" =~ ^[[:space:]]*@import[[:space:]]+\"([^\"]+)\"[[:space:]]*\;[[:space:]]*$ ]]; then
+ local import_path="${BASH_REMATCH[1]}"
+ local import_abs="$source_root/$import_path"
+ if [[ ! -f "$import_abs" ]]; then
+ echo "Imported CSS not found: $import_abs" >&2
+ exit 1
+ fi
+ cat "$import_abs" >> "$output_file"
+ printf "\n" >> "$output_file"
+ else
+ printf "%s\n" "$line" >> "$output_file"
+ fi
+ done < "$source_file"
+}
+
+transform_portal_css() {
+ local source_file="$1"
+ local output_file="$2"
+
+ case "$PORTAL_KEY" in
+ vsf)
+ awk '
+ BEGIN { skip=0 }
+ /^:root\[data-portal="naurua"\] \{/ { skip=1; next }
+ skip && /^}/ { skip=0; next }
+ skip { next }
+ { print }
+ ' "$source_file" > "$output_file"
+ ;;
+ naurua)
+ awk '
+ BEGIN { in_override=0 }
+ /^:root\[data-portal="naurua"\] \{/ { print ":root {"; in_override=1; next }
+ in_override && /^}/ { print "}"; in_override=0; next }
+ { print }
+ ' "$source_file" > "$output_file"
+ ;;
+ esac
+}
+
+assert_no_unimported_styles() {
+ local source_file="$1"
+ local source_root="$2"
+ local styles_dir="$source_root/styles"
+ local missing_imports=()
+
+ if [[ ! -d "$styles_dir" ]]; then
+ return 0
+ fi
+
+ while IFS= read -r css_file; do
+ local rel_path="./styles/$(basename "$css_file")"
+ if ! grep -Eq "^[[:space:]]*@import[[:space:]]+\"$rel_path\"[[:space:]]*;" "$source_file"; then
+ missing_imports+=("$rel_path")
+ fi
+ done < <(find "$styles_dir" -maxdepth 1 -type f -name '*.css' | sort)
+
+ if [[ ${#missing_imports[@]} -gt 0 ]]; then
+ echo "Unimported CSS module files detected in styles/:" >&2
+ for file in "${missing_imports[@]}"; do
+ echo " - $file" >&2
+ done
+ echo "Add missing @import lines in $source_file before syncing." >&2
+ exit 1
+ fi
+}
+
+TMP_UPSTREAM_CSS="$(mktemp)"
+trap 'rm -f "$TMP_UPSTREAM_CSS"' EXIT
+assert_no_unimported_styles "$SOURCE_CSS" "$STYLEGUIDE_REPO_ROOT"
+flatten_css "$SOURCE_CSS" "$STYLEGUIDE_REPO_ROOT" "$TMP_UPSTREAM_CSS"
+transform_portal_css "$TMP_UPSTREAM_CSS" "$PORTAL_CSS_PATH"
+
+rsync -a --delete \
+ --exclude ".git/" \
+ --exclude ".codex/" \
+ --exclude ".DS_Store" \
+ --exclude "AGENTS.md" \
+ "$STYLEGUIDE_REPO_ROOT/" \
+ "$PORTAL_STYLEGUIDE_DOCS_PATH/"
+
+STYLEGUIDE_VERSION="$(tr -d '[:space:]' < "$VERSION_FILE")"
+STYLEGUIDE_COMMIT="$(git -C "$STYLEGUIDE_REPO_ROOT" rev-parse --short HEAD)"
+SYNCED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
+
+cat > "$PORTAL_META_PATH" < &2
+ exit 1
+ fi
+ bash "$PORTAL_BUILD_SCRIPT_PATH"
+ ;;
+ naurua)
+ cp "$PORTAL_CSS_PATH" "$PORTAL_BUILT_CSS_PATH"
+ ;;
+esac
+
+if [[ "$COMMIT_IN_PORTAL" == "true" ]]; then
+ git -C "$PORTAL_REPO_PATH" add -A \
+ "$PORTAL_CSS_REL" \
+ "$PORTAL_BUILT_CSS_REL" \
+ "$PORTAL_META_REL" \
+ "$PORTAL_STYLEGUIDE_DOCS_REL"
+ if ! git -C "$PORTAL_REPO_PATH" diff --cached --quiet; then
+ git -C "$PORTAL_REPO_PATH" commit -m "Sync styleguide $STYLEGUIDE_VERSION"
+ git -C "$PORTAL_REPO_PATH" push
+ echo "Portal repo synced and pushed."
+ else
+ echo "No changes to commit in portal repo."
+ fi
+else
+ echo "Portal files updated locally (no commit requested)."
+fi
+
+echo "Synced $SOURCE_CSS -> $PORTAL_CSS_PATH"
+echo "Built portal stylesheet: $PORTAL_BUILT_CSS_PATH"
+echo "Metadata written: $PORTAL_META_PATH"
+echo "Mirrored styleguide docs: $PORTAL_STYLEGUIDE_DOCS_PATH"
diff --git a/docs/styleguide/semantic-tokens-components.html b/docs/styleguide/semantic-tokens-components.html
new file mode 100644
index 0000000..7eba895
--- /dev/null
+++ b/docs/styleguide/semantic-tokens-components.html
@@ -0,0 +1,241 @@
+
+
+
+
+
+ Styleguide – Semantic Tokens Components
+
+
+
+
+ Semantic Tokens Components
+
+
+ Cards
+
+ Cards
+
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+
+ surface-card color-light-grey Grundfläche der Card.
+ surface-card-body color-light-grey Fläche im Body-Segment der Card.
+ surface-card-segment-neutral color-light-grey Neutrale Segmentfläche für gezielte hellgraue Card-Segmente (z. B. sg-card-segment--gray).
+ surface-card-header-primary color-darkblue Primärer Header-Hintergrund.
+ surface-card-header-alternative color-darkgreen Alternativer Header-Hintergrund.
+ surface-card-header-muted color-darkbrown Zweite alternative Header-Fläche.
+ divider-card-segment color-white Trenner zwischen Segmenten.
+ text-card-header color-font-light Header-Textfarbe.
+ text-card-body color-font-dark Standard-Textfarbe im Body.
+ layout-card-body-content-justify flex-start Ausrichtung des Inhalts im Body-Segment der Card.
+ layout-card-segment-content-gap spacing-small Vertikaler Abstand zwischen Inhaltselementen innerhalb eines Card-Segments.
+ layout-card-segment-padding-top card-segment-padding-vertical Oberer Innenabstand von Card-Segmenten.
+ layout-card-segment-padding-right card-segment-padding-horizontal Rechter Innenabstand von Card-Segmenten.
+ layout-card-segment-padding-bottom card-segment-padding-vertical Unterer Innenabstand von Card-Segmenten.
+ layout-card-segment-padding-left card-segment-padding-horizontal Linker Innenabstand von Card-Segmenten.
+ layout-card-body-padding-top layout-card-segment-padding-top Oberer Innenabstand des Card-Body-Segments.
+ layout-card-body-padding-right layout-card-segment-padding-right Rechter Innenabstand des Card-Body-Segments.
+ layout-card-body-padding-bottom layout-card-segment-padding-bottom Unterer Innenabstand des Card-Body-Segments.
+ layout-card-body-padding-left layout-card-segment-padding-left Linker Innenabstand des Card-Body-Segments.
+ layout-card-body-text-margin 0 Textabstand im Card-Body; verhindert zusätzliche Default-Margins.
+
+
+ Verhaltensregel: Für Cards mit ausklappenden Overlays (z. B. Help-Panel, Sandwich-Menü, Pulldown) ist die Komponenten-Variante sg-card--overlay-host zu verwenden, damit Overlays nicht abgeschnitten werden.
+
+ Group Card
+
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+
+ surface-card-group color-background-purple-light Fläche der eigentlichen Group Card (heller Container, der mehrere Cards gruppiert).
+
+
+
+ Pattern Card Breiten
+
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+
+ layout-object-group-card-min-width dimension-object-group-card-min-width Mindestbreite der Karteninstanzen im Pattern Object Group Card.
+ layout-object-group-card-max-width dimension-object-group-card-max-width Maximalbreite der Karteninstanzen im Pattern Object Group Card.
+ layout-notifications-text-segment-fixed-height 150px Fixe Desktop-Höhe des ersten Text-Segments im Pattern Notifications; auf Mobile wird die Höhe wieder auf auto gesetzt.
+
+
+
+ Text Group Box
+
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+
+ surface-card-transparent color-transparent Transparente Fläche der Text-Group-Box ohne Card-Segmente.
+ text-card-transparent color-font-light Textfarbe der Text-Group-Box.
+
+
+
+ VSF Drawer Object Card
+
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+
+ surface-vsf-drawer-object-card-header color-darkblue Header-Fläche der VSF-spezifischen Object Card im Drawer.
+ surface-vsf-drawer-object-card-body color-darkblue Body-Fläche der VSF-spezifischen Object Card im Drawer.
+ text-vsf-drawer-object-card-heading color-font-light Textfarbe der H2-Überschrift im Header der VSF Drawer Object Card.
+ text-vsf-drawer-object-card-body color-font-light Textfarbe der Detailinhalte im Body der VSF Drawer Object Card.
+ layout-vsf-drawer-object-card-column-gap spacing-large Spaltenabstand des zweispaltigen Textlayouts in der VSF Drawer Object Card.
+
+
+
+
+
+ Interactive Elements
+
+ Button
+
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+
+ surface-button-active color-medium-grey Fläche aktiver Standard-Buttons.
+ surface-button-inactive color-light-grey Fläche inaktiver Standard-Buttons.
+ surface-button-process color-font-hyperlink Fläche von Prozess-/CTA-Buttons.
+ surface-button-process-inactive color-process-inactive Fläche inaktiver Prozess-/CTA-Buttons.
+ text-button-process color-font-light Textfarbe auf Prozess-/CTA-Buttons.
+
+
+
+ Tabs
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-tab-selected color-dark-grey Fläche des ausgewählten Tabs.
+ surface-tab-unselected color-white Fläche nicht ausgewählter Tabs.
+ surface-tab-compact-background surface-form-preview Hintergrundfläche kompakter Tab-Navigationen.
+ surface-tab-compact-unselected color-medium-grey Fläche nicht aktiver Tabs in der kompakten Variante.
+ text-tab-selected color-font-light Textfarbe des ausgewählten Tabs.
+ text-tab-unselected color-dark-grey Textfarbe nicht ausgewählter Tabs.
+ layout-tab-navigation-large-padding-inline interaction-padding-horizontal Horizontaler Innenabstand für große Tab-Navigationen (auf kleinen Viewports reduziert).
+
+
+ Form Controls
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-control-default color-white Standardfläche für Input-/Auswahl-Controls.
+ surface-control-active color-white Fläche aktiver Controls.
+ surface-control-inactive color-white Fläche inaktiver, aber wählbarer Controls.
+ surface-control-disabled color-white Fläche deaktivierter Controls.
+ text-control-default color-font-dark Standard-Textfarbe in Controls.
+ text-control-disabled color-dark-grey Textfarbe deaktivierter Controls.
+ surface-input-clear color-medium-grey Fläche des Clear-Buttons in Inputs.
+ layout-input-label-width dimension-input-label-width Desktop-Breite der Label-Spalte für gruppierte Formularzeilen mit Pulldowns, Slidern, Radio-Feldern, Checkbox-Feldern sowie ein- und mehrzeiligen Eingabefeldern.
+ layout-input-field-desktop-width dimension-input-field-desktop-width Fixe Desktop-Breite für ein- und mehrzeilige Eingabefelder.
+ layout-input-field-max-width dimension-input-field-max-width Maximale Breite für ein- und mehrzeilige Eingabefelder (ohne Suchfeld).
+ layout-search-field-width dimension-search-field-width Fixe Breite des Suchfeld-Inputs.
+
+
+ Pulldown and Menu
+ Changelog (2026-05-25): Overlay-Layer vereinheitlicht; Pulldowns liegen über Scorebars (Fix Relativmodus).
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-pulldown-panel color-light-grey Fläche geöffneter Pulldown-Panels.
+ surface-activatable-remove surface-control-default Fläche des Schließen-Kontrollfelds für aktive Filterzeilen innerhalb geöffneter Pulldown-Panel-Formbereiche.
+ icon-pulldown-chevron currentColor-basierte Verlaufsgrafik Chevron-Icon für Pulldown-Trigger und Select-Felder; folgt der aktuellen Textfarbe.
+ layout-pulldown-panel-padding-inline compact-interaction-padding-horizontal Horizontaler Innenabstand des geöffneten Pulldown-Panels.
+ layout-pulldown-option-padding-inline compact-interaction-padding-horizontal Horizontaler Innenabstand der einzelnen Pulldown-Optionen.
+ layout-pulldown-padding-inline compact-interaction-padding-horizontal Innenabstand links für Pulldown-Trigger und Select-Felder.
+ layout-pulldown-chevron-offset compact-interaction-padding-horizontal Rechter Innenabstand des Chevron-Icons im Pulldown.
+ layout-pulldown-chevron-reserved-space spacing-large Reservierte Breite zwischen Pulldown-Text und rechtem Chevron-Bereich.
+ layout-pulldown-panel-form-mobile-width 90% Zielbreite für Pulldown-Panels mit Formularinhalt auf Mobile; wird durch die Viewport-Kappe begrenzt.
+ layer-pulldown-panel dimension-layer-pulldown-panel Layer-Stufe geöffneter Pulldown-Ausklappfelder über übrigen Seiteninhalten.
+ layout-multiselect-pulldown-panel-desktop-width dimension-multiselect-pulldown-panel-desktop-width Semantische Obergrenze für die Panelbreite geöffneter Pulldowns; das Panel darf über Triggerbreite wachsen, bleibt aber durch diese Breite und die Viewport-Kappe begrenzt.
+ layout-multiselect-pulldown-panel-mobile-width dimension-multiselect-pulldown-panel-mobile-width Reservierter semantischer Alias für feste Mobile-Breite im Multiselektions-Pulldown; aktuell nicht aktiv genutzt, da das Panel inhaltsbasiert mit Viewport-Kappe skaliert.
+ surface-menu-panel-portal color-light-grey Fläche des Sandwich-Menü-Panels für große und kleine Variante.
+ text-menu-link-portal color-font-dark Linktextfarbe im Sandwich-Menü für große und kleine Variante.
+ text-activatable-remove text-control-default Zeichenfarbe des Schließen-Kontrollfelds für aktive Filterzeilen innerhalb geöffneter Pulldown-Panel-Formbereiche.
+
+
+ Toggle / Checkbox / Radio / Help
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-toggle-track color-medium-grey Toggle-Track-Fläche.
+ surface-toggle-handle color-darkblue Toggle-Handle-Fläche.
+ text-toggle-label-active color-font-light Textfarbe des aktiven Toggle-Labels auf der hervorgehobenen Handle-Seite.
+ layout-mode-toggle-local-height compact-interaction-height Höhe des Modus Schieber lokal; entspricht dem kompakten Interaktionsmaß.
+ layout-mode-toggle-local-width-factor 3 Breitenfaktor des lokalen Modus-Schiebers relativ zur lokalen Höhe.
+ layout-mode-toggle-width calc(interaction-height * 3.5) Standardbreite des Mode-Toggles in regulären Varianten.
+ surface-checkbox-default color-white Standardfläche der Checkbox.
+ surface-checkbox-on-context color-white Checkbox-Fläche auf Kontextflächen.
+ surface-radio-default color-white Standardfläche des Radio-Buttons.
+ icon-radio-mark color-font-dark Markierungsfarbe im Radio-Button.
+ surface-help-icon color-medium-grey Fläche des Help-Icons.
+ surface-help-panel color-light-grey Fläche des Help-Panels.
+ text-help-icon color-font-dark Textfarbe im Help-Icon.
+ text-help-panel color-font-dark Textfarbe im Help-Panel.
+ layout-help-panel-width calc(interaction-height * 8) Standardbreite des Help-Panels.
+ icon-sandwich-line-portal color-font-dark Linienfarbe des Sandwich-Icons für große und kleine Variante.
+
+
+ Slider
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-slider-track color-medium-grey Grundfläche des Slider-Strichs.
+ surface-slider-progress color-dark-grey Ausgewählter Bereich links vom Slider-Knopf.
+ surface-slider-thumb color-dark-grey Gefüllte Fläche des Slider-Knopfs (ohne Linie).
+
+
+ Preview Area
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-form-preview color-light-grey Fläche von Formular-/Control-Preview-Bereichen.
+ text-hyperlink color-font-hyperlink Linkfarbe in interaktiven Texten.
+
+
+
+
+ Charts
+
+ Score Bar
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-score-bar-track color-medium-grey Hintergrund der Score-Bar.
+ chart-value-positive color-signal-green Füllfarbe positiver Werte.
+ chart-value-neutral color-signal-yellow Füllfarbe neutraler Werte.
+ chart-value-negative color-signal-red Füllfarbe negativer Werte.
+ chart-median-line color-font-dark Farbe der Median-Markierung.
+ text-score-state-positive chart-value-positive Textfarbe positiver Zustandslabels am Gesamtscore-Balken.
+ layout-score-bar-item-columns max-content und 1fr Standardspalten der Score-Bar-Zeile: dynamische Labelspalte (längstes Label) plus Balkenspur.
+ layout-score-bar-item-gap spacing-large Abstand zwischen Labelspalte und Balkenspur in der Score-Bar-Zeile.
+ layout-score-bar-item-single-score-columns max-content, 1fr und max-content Spalten der Score-Bar-Zeile in der Single-Score-Variante: Label, Balken, Zustandslabel.
+
+
+ Bar / Line Chart
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-chart-area color-light-grey Grundfläche des Charts.
+ chart-value-primary color-darkblue Primäre Datenreihe.
+ chart-value-reference color-medium-grey Referenz-/Vergleichsreihe.
+ chart-grid-line color-medium-grey Gridline-Farbe.
+ chart-axis-line color-font-dark Achsenfarbe.
+ chart-marker-line color-font-dark Marker-/Hilfslinienfarbe.
+ text-chart-default color-font-dark Textfarbe in Achsen/Labels.
+
+
+
+
+ Data Display
+
+ Data Table Small
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-data-table color-light-grey Gesamtfläche der Tabelle.
+ surface-data-table-header color-light-grey Fläche der Tabellenkopfzeile.
+ surface-data-table-cell color-light-grey Fläche von Tabellenzellen.
+ surface-data-table-help-icon color-medium-grey Fläche des Help-Icons im Tabellenkontext.
+ text-data-table-default color-font-dark Standard-Textfarbe in Tabellenzellen.
+ text-data-table-warning color-signal-yellow Warnwertfarbe in Tabellenzellen.
+ text-data-table-help-icon color-font-dark Textfarbe im Tabellen-Help-Icon.
+
+
+ Data Columns
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ surface-data-table color-light-grey Gesamtfläche der Spaltenliste.
+ surface-data-table-cell color-light-grey Fläche von Spaltenzellen.
+ text-data-table-default color-font-dark Standard-Textfarbe in Spaltenzellen.
+ text-data-table-warning color-signal-yellow Warnwertfarbe in Spaltenzellen.
+
+
+
+
+ Typography
+
+ Typography Preview
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck in der Komponente
+ text-typography-preview color-font-light Textfarbe in der Typografie-Preview.
+ layout-preview-align-items flex-start Vertikale Ausrichtung der Elemente innerhalb der Typografie-Preview.
+
+
+
+
+
diff --git a/docs/styleguide/semantic-tokens-layouts.html b/docs/styleguide/semantic-tokens-layouts.html
new file mode 100644
index 0000000..c270be1
--- /dev/null
+++ b/docs/styleguide/semantic-tokens-layouts.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Styleguide – Semantic Tokens Layouts
+
+
+
+
+ Semantic Tokens Layouts
+
+
+ Layouts
+
+ Generische Layouts
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Layout
+ layout-options-row-margin-top spacing-small Abstand oberhalb der Options Row.
+ layout-options-row-main-gap spacing-large Horizontaler Abstand zwischen linker und rechter Aktionsgruppe.
+ layout-options-row-group-gap spacing-small Abstand zwischen Controls innerhalb der linken und rechten Gruppe.
+ layout-options-row-mode-toggle-width dimension-options-row-mode-toggle-width Breite des Mode-Toggles innerhalb der Options Row.
+ layout-options-row-help-panel-width dimension-options-row-help-panel-width Breite des Help-Panels innerhalb der Options Row.
+ layout-object-card-min-width dimension-object-card-min-width Mindestbreite der Object Card im horizontalen Desktop-Layout.
+ layout-object-card-max-width dimension-object-card-max-width Maximalbreite der Object Card im horizontalen Desktop-Layout.
+ layout-object-card-height dimension-object-card-height Fixe Höhe der Object Card im Desktop-Layout.
+ layout-object-card-mobile-width dimension-object-card-mobile-width Volle verfügbare Breite der Object Card auf Mobile.
+ layout-object-card-mobile-height dimension-object-card-mobile-height Inhaltsabhängige Höhe der Object Card auf Mobile.
+ layout-object-card-desktop-breakpoint dimension-object-card-desktop-breakpoint Breakpoint, ab dem die Desktop-Maße der Object Card aktiv sind.
+ layout-object-card-content-grow dimension-object-card-content-grow Flex-Grow-Wert für das vorletzte Segment der Object Card.
+ layout-object-card-shared-width auto Geteilte Laufzeitbreite für gekoppelte Object-Card-Instanzen.
+ layout-content-cards-group-gap spacing-small Abstand zwischen Inhaltsblock-Karten innerhalb der Gruppe.
+ layout-card-list-drawer-width dimension-card-list-drawer-width Breite des ausziehbaren Card-Listenbereichs relativ zum Container.
+
+
+ Valuestockfinder Layouts
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Layout
+ layout-company-card-analysis-gap-after-moat spacing-large Vertikaler Abstand zwischen Moat-Zeile und Analyse-Zusammenfassung in der Company Card.
+
+
+
+
+
diff --git a/docs/styleguide/semantic-tokens-patterns.html b/docs/styleguide/semantic-tokens-patterns.html
new file mode 100644
index 0000000..e51d9bc
--- /dev/null
+++ b/docs/styleguide/semantic-tokens-patterns.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+ Styleguide – Semantic Tokens Patterns
+
+
+
+
+ Semantic Tokens Patterns
+
+
+ Patterns
+
+ Portal Header
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ surface-portal-header color-darkblue Header-Grundfläche.
+ surface-portal-header-tab color-midblue Fläche nicht aktiver Header-Tabs.
+ surface-portal-header-tab-active color-light-grey Fläche aktiver Header-Tabs.
+ text-portal-header-brand color-font-light Textfarbe der Brand.
+ font-size-portal-header-brand calc(var(--font-size-brand) * 1.1) Schriftgröße der Brand im Portal Header (10% größer als Standard-Brand).
+ text-portal-header-tab color-font-light Textfarbe nicht aktiver Header-Tabs.
+ text-portal-header-tab-active color-font-dark Textfarbe aktiver Header-Tabs.
+ layout-page-content-inset-inline card-segment-padding-horizontal Gemeinsamer horizontaler Content-Inset für Portal Header, Options Row und Card-Listen-Drawer-Content (Single Source of Spacing Truth auf Pattern-Ebene).
+
+
+ Options Row
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ surface-options-row color-light-grey Grundfläche der Options Row.
+ surface-options-row-control surface-control-default Alias auf Standard-Control-Fläche innerhalb der Options Row.
+ surface-options-row-control-selected surface-control-active Alias auf aktive Control-Fläche innerhalb der Options Row.
+ surface-options-row-input-clear surface-input-clear Alias auf Clear-Button-Fläche im Input der Options Row.
+ surface-options-row-toggle-track surface-toggle-track Alias auf Toggle-Track-Fläche innerhalb der Options Row.
+ surface-options-row-toggle-handle surface-toggle-handle Alias auf Toggle-Handle-Fläche innerhalb der Options Row.
+ surface-options-row-help-icon surface-help-icon Alias auf Help-Icon-Fläche innerhalb der Options Row.
+ surface-options-row-help-panel surface-help-panel Alias auf Help-Panel-Fläche innerhalb der Options Row.
+ divider-options-row-mobile color-white Trennerfarbe zwischen Segmenten im mobilen Layout der Options Row.
+ text-options-row-default text-control-default Alias auf Standard-Textfarbe für Controls in der Options Row.
+ text-options-row-placeholder text-control-disabled Alias auf Placeholder-/Disabled-Textfarbe in der Options Row.
+ text-options-row-help-icon color-font-light Textfarbe im Help-Icon der Options Row.
+ text-options-row-help-panel text-help-panel Alias auf Help-Panel-Textfarbe der Options Row.
+ text-options-row-description color-font-light Textfarbe der beschreibenden Hinweistexte oberhalb der Options Row.
+
+
+ Object Card
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ surface-object-card-lower-segment color-white Hintergrundfläche der unteren zwei Segmente der Object Card.
+
+
+ Object Group Card
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ layout-object-group-card-min-width dimension-object-group-card-min-width Mindestbreite der einzelnen Karten im Pattern Object Group Card.
+ layout-object-group-card-max-width dimension-object-group-card-max-width Maximalbreite der einzelnen Karten im Pattern Object Group Card.
+
+
+ Notifications
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ layout-notifications-card-flex-basis dimension-notifications-card-min-width Flex-Basis der Notification Card im Notifications-Pattern; entspricht der gemeinsamen Foundation-Mindestbreite und gilt auch in der dokumentierten Variante innerhalb von .sg-group-card.
+ layout-notifications-card-min-width dimension-notifications-card-min-width Mindestbreite der Notification Card im Notifications-Pattern; 50px größer als die Object Card und verhindert zu frühes Schrumpfen bei Viewport-Änderungen.
+ layout-notifications-card-max-width layout-object-card-max-width Maximalbreite der Notification Card im Notifications-Pattern; begrenzt Wachstum konsistent zur Object-Card-Breite.
+ layout-notifications-text-segment-fixed-height dimension-notifications-text-segment-fixed-height Fixe Desktop-Höhe des ersten Text-Segments im Notifications-Pattern; auf Mobile wird die Höhe auf auto gesetzt.
+ layout-notifications-text-segment-fixed-height-small dimension-notifications-text-segment-fixed-height-small Fixe Desktop-Höhe des ersten Text-Segments in der Variante Pattern: Notifications small; auf Mobile wird die Höhe auf auto gesetzt.
+
+
+ Company Card
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ text-company-card-data-negative chart-value-negative Textfarbe für negative Kennzahlenwerte im Data-Columns-Segment der Company Card.
+ text-company-card-moat-neutral chart-value-neutral Textfarbe für die neutrale Moat-Ausprägung im Analyse-Segment der Company Card.
+
+
+ Navigation Card
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ surface-navigation-card color-white Grundfläche der Navigation Card.
+ surface-navigation-card-body color-white Fläche im Body-Segment der Navigation Card.
+
+
+ Card Gruppe mit Tastennavigation
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ surface-content-block-card-title color-light-grey Hintergrundfläche des oberen Titel-Segments der Inhaltsblock-Karte.
+ surface-content-block-card-content color-white Hintergrundfläche des unteren Inhalts-Segments der Inhaltsblock-Karte.
+ text-content-block-card-title color-font-dark Textfarbe im Titel-Segment der Inhaltsblock-Karte.
+ text-content-block-card-content color-font-dark Textfarbe im Inhalts-Segment der Inhaltsblock-Karte.
+ surface-card-list-drawer color-background-purple Fläche des ausziehbaren Card-Listenbereichs.
+ text-card-list-drawer color-font-dark Textfarbe im ausziehbaren Card-Listenbereich.
+
+
+ Text Layouts
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ surface-text-layout-preview color-light-grey Hintergrundfläche der Vorschau-Segmente im Pattern Text Layouts.
+ layout-text-layout-column-gap spacing-large Horizontaler Abstand zwischen Textspalten in zwei- und dreispaltigen Varianten.
+ layout-text-layout-two-column-columns repeat(2, minmax(0, 1fr)) Spaltenraster für die zweispaltige Text-Variante.
+ layout-text-layout-three-column-columns repeat(3, minmax(0, 1fr)) Spaltenraster für das Pattern Dreispaltig verteilt.
+ text-align-text-layout-column-left left Textausrichtung der linken Spalte im Pattern Dreispaltig verteilt.
+ text-align-text-layout-column-center center Textausrichtung der mittleren Spalte im Pattern Dreispaltig verteilt.
+ text-align-text-layout-column-right right Textausrichtung der rechten Spalte im Pattern Dreispaltig verteilt.
+
+
+ VSF List Card
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ text-vsf-list-card-limit-note color-signal-red Hinweistextfarbe für die Meldung bei erreichter maximaler Listenanzahl.
+ layout-vsf-list-card-summary-offset-block-start layout-company-card-analysis-gap-after-moat Vertikaler Abstand vor dem Summary-Block in der VSF List Card.
+ layout-vsf-list-card-delete-confirmation-target-max-width layout-object-group-card-max-width Maximalbreite der Delete-Confirmation-Zielkarte innerhalb der VSF-List-Card-Demo.
+
+
+ Multiselektions-Pulldown
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ layout-multiselect-pulldown-label-column-width-fallback max-content Fallback-Breite der gemeinsamen Labelspalte im Panel, bis die längste Labelbreite per Pattern-Logik ermittelt wurde.
+
+
+ Overlay Card
+ Semantischer Token Verwendeter Foundation-Token Beschreibung Verwendungszweck im Pattern
+ surface-delete-confirmation-overlay color-light-grey Hintergrundfläche des schwebenden Bestätigungsfensters.
+ surface-delete-confirmation-target-dim-overlay color-black Overlay-Farbe zur Ausgrauung des Zielobjekts hinter dem Bestätigungsfenster.
+ text-delete-confirmation-overlay color-font-dark Textfarbe im Bestätigungsfenster.
+ layout-delete-confirmation-target-max-width 35rem Maximalbreite der abgedunkelten Ziel-Card in der Pattern-Demo.
+ layout-delete-confirmation-overlay-width-factor 0.8 Breitenfaktor des schwebenden Bestätigungsfensters relativ zur Breite des Zielobjekts (80%).
+ layout-delete-confirmation-overlay-offset-block-start spacing-large Abstand des Overlays von der oberen Kante des Zielobjekts.
+ layout-delete-confirmation-content-gap spacing-small Vertikaler Abstand zwischen den Inhaltsblöcken im Overlay.
+ layout-delete-confirmation-actions-gap spacing-small Horizontaler Abstand zwischen Abbrechen- und Löschen-Button.
+ layout-delete-confirmation-actions-offset-block-start spacing-large Zusätzlicher vertikaler Abstand zwischen Bestätigungs-Eingabefeld und Actions-Zeile.
+ layout-delete-confirmation-label-width dimension-input-label-width Label-Spaltenbreite der einzeiligen Bestätigungseingabe.
+ layout-delete-confirmation-target-dim-opacity 0.5 Deckkraft der grauen Überlagerung auf dem zu löschenden Objekt (50% ausgegraut).
+ layer-delete-confirmation-overlay 50 Z-Index-Layer des schwebenden Bestätigungsfensters.
+
+
+
+
+
diff --git a/docs/styleguide/styleguide.css b/docs/styleguide/styleguide.css
new file mode 100644
index 0000000..7ee74cb
--- /dev/null
+++ b/docs/styleguide/styleguide.css
@@ -0,0 +1,22 @@
+@import "./styles/01-foundations.css";
+@import "./styles/02-base.css";
+@import "./styles/03-typography-helpers.css";
+@import "./styles/10-components-interactive-elements.css";
+@import "./styles/20-patterns-portal-header.css";
+@import "./styles/21-patterns-options-row.css";
+@import "./styles/22-patterns-object-card.css";
+@import "./styles/23-patterns-object-group-card.css";
+@import "./styles/24-patterns-navigation-card.css";
+@import "./styles/25-patterns-form-sections.css";
+@import "./styles/26-patterns-vsf-list-card.css";
+@import "./styles/27-patterns-delete-confirmation.css";
+@import "./styles/28-patterns-notifications.css";
+@import "./styles/30-layouts-card-list-page.css";
+@import "./styles/33-layouts-vsf-list-detailseite.css";
+@import "./styles/34-layouts-vsf-listen-uebersicht-seite-v2.css";
+@import "./styles/31-patterns-text-layouts.css";
+@import "./styles/32-patterns-card-group-keyboard-nav.css";
+@import "./styles/40-components-cards.css";
+@import "./styles/41-components-charts.css";
+@import "./styles/42-components-data-display.css";
+@import "./styles/43-components-typography.css";
diff --git a/docs/styleguide/styles/01-foundations.css b/docs/styleguide/styles/01-foundations.css
new file mode 100644
index 0000000..aff2570
--- /dev/null
+++ b/docs/styleguide/styles/01-foundations.css
@@ -0,0 +1,312 @@
+/* ========================================================= */
+/* Foundations */
+/* ========================================================= */
+
+:root {
+ /* Colors */
+ --color-darkblue: #4661A9;
+ --color-midblue: #657FBA;
+ --color-darkgreen: #4D646E;
+ --color-darkbrown: #665F57;
+ --color-light-grey: #E2E5E9;
+ --color-medium-grey: #CDCFD4;
+ --color-dark-grey: #7B879D;
+ --color-black: #000000;
+ --color-white: #FFFFFF;
+ --color-process-inactive: #FFAE79;
+ --color-signal-green: #009101;
+ --color-signal-yellow: #9C7A00;
+ --color-signal-red: #9B3B2F;
+ --color-font-dark: #414959;
+ --color-font-light: #FFFFFF;
+ --color-font-hyperlink: #FF6900;
+ --color-background-purple: #373C4A;
+ --color-background-purple-light: #656C7D;
+ --color-transparent: transparent;
+
+ /* Semantic component tokens: Cards */
+ --surface-card: var(--color-light-grey);
+ --surface-card-body: var(--color-light-grey);
+ --surface-card-segment-neutral: var(--color-light-grey);
+ --surface-card-group: var(--color-background-purple-light);
+ --surface-card-transparent: var(--color-transparent);
+ --surface-card-header-primary: var(--color-darkblue);
+ --surface-card-header-alternative: var(--color-darkgreen);
+ --surface-card-header-muted: var(--color-darkbrown);
+ --divider-card-segment: var(--color-white);
+ --text-card-header: var(--color-font-light);
+ --text-card-body: var(--color-font-dark);
+ --text-card-transparent: var(--color-font-light);
+ --layout-card-body-content-justify: flex-start;
+ --layout-card-segment-content-gap: var(--spacing-small);
+
+ /* Semantic component tokens: Interactive elements */
+ --surface-form-preview: var(--color-light-grey);
+ --surface-control-default: var(--color-white);
+ --surface-control-active: var(--color-white);
+ --surface-control-inactive: var(--color-white);
+ --surface-control-disabled: var(--color-white);
+ --surface-button-active: var(--color-medium-grey);
+ --surface-button-process: var(--color-font-hyperlink);
+ --surface-button-process-inactive: var(--color-process-inactive);
+ --surface-button-inactive: var(--color-light-grey);
+ --surface-tab-selected: var(--color-dark-grey);
+ --surface-tab-unselected: var(--color-white);
+ --surface-tab-compact-background: var(--surface-form-preview);
+ --surface-tab-compact-unselected: var(--color-medium-grey);
+ --surface-input-clear: var(--color-medium-grey);
+ --surface-toggle-track: var(--color-medium-grey);
+ --surface-toggle-handle: var(--color-darkblue);
+ --surface-menu-panel-portal: var(--color-light-grey);
+ --surface-help-icon: var(--color-medium-grey);
+ --surface-help-panel: var(--color-light-grey);
+ --surface-pulldown-panel: var(--color-light-grey);
+ --surface-activatable-remove: var(--surface-control-default);
+ --surface-slider-track: var(--color-medium-grey);
+ --surface-slider-progress: var(--color-dark-grey);
+ --surface-slider-thumb: var(--color-dark-grey);
+ --surface-checkbox-default: var(--color-white);
+ --surface-checkbox-on-context: var(--color-white);
+ --surface-radio-default: var(--color-white);
+ --layout-pulldown-panel-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-option-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-chevron-offset: var(--compact-interaction-padding-horizontal);
+ --layout-tab-navigation-large-padding-inline: var(--interaction-padding-horizontal);
+ --layout-pulldown-chevron-reserved-space: var(--spacing-large);
+ --layout-pulldown-panel-form-mobile-width: 90%;
+ --layer-pulldown-panel: var(--dimension-layer-pulldown-panel);
+ --layout-multiselect-pulldown-panel-desktop-width: var(--dimension-multiselect-pulldown-panel-desktop-width);
+ --layout-multiselect-pulldown-panel-mobile-width: var(--dimension-multiselect-pulldown-panel-mobile-width);
+ --layout-multiselect-pulldown-label-column-width-fallback: max-content;
+ --layout-input-label-width: var(--dimension-input-label-width);
+ --layout-input-field-desktop-width: var(--dimension-input-field-desktop-width);
+ --layout-input-field-max-width: var(--dimension-input-field-max-width);
+ --layout-form-input-field-max-width: calc(var(--layout-input-field-max-width) + 100px);
+ --layout-search-field-width: var(--dimension-search-field-width);
+ --layout-mode-toggle-local-height: var(--compact-interaction-height);
+ --layout-mode-toggle-local-width-factor: 3;
+ --layout-mode-toggle-width: calc(var(--interaction-height) * 3.5);
+ --layout-help-panel-width: calc(var(--interaction-height) * 8);
+ --text-control-default: var(--color-font-dark);
+ --text-control-disabled: var(--color-dark-grey);
+ --text-button-process: var(--color-font-light);
+ --text-tab-selected: var(--color-font-light);
+ --text-tab-unselected: var(--color-dark-grey);
+ --text-toggle-label-active: var(--color-font-light);
+ --text-menu-link-portal: var(--color-font-dark);
+ --text-help-icon: var(--color-font-dark);
+ --text-help-panel: var(--color-font-dark);
+ --text-activatable-remove: var(--text-control-default);
+ --text-hyperlink: var(--color-font-hyperlink);
+ --icon-pulldown-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M2 2l4 4 4-4' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'/%3E%3C/svg%3E");
+ --icon-sandwich-line-portal: var(--color-font-dark);
+ --icon-radio-mark: var(--color-font-dark);
+
+ /* Semantic component tokens: Charts */
+ --surface-score-bar-track: var(--color-medium-grey);
+ --surface-chart-area: var(--color-light-grey);
+ --chart-value-positive: var(--color-signal-green);
+ --chart-value-neutral: var(--color-signal-yellow);
+ --chart-value-negative: var(--color-signal-red);
+ --chart-value-primary: var(--color-darkblue);
+ --chart-value-reference: var(--color-medium-grey);
+ --chart-grid-line: var(--color-medium-grey);
+ --chart-axis-line: var(--color-font-dark);
+ --chart-marker-line: var(--color-font-dark);
+ --chart-median-line: var(--color-font-dark);
+ --text-chart-default: var(--color-font-dark);
+ --text-score-state-positive: var(--chart-value-positive);
+ --layout-score-bar-item-columns: max-content 1fr;
+ --layout-score-bar-item-gap: var(--spacing-large);
+ --layout-score-bar-item-single-score-columns: max-content 1fr max-content;
+
+ /* Semantic component tokens: Data display */
+ --surface-data-table: var(--color-light-grey);
+ --surface-data-table-header: var(--color-light-grey);
+ --surface-data-table-cell: var(--color-light-grey);
+ --surface-data-table-help-icon: var(--color-medium-grey);
+
+ --text-data-table-default: var(--color-font-dark);
+ --text-data-table-warning: var(--color-signal-yellow);
+ --text-data-table-help-icon: var(--color-font-dark);
+
+ /* Semantic component tokens: Typography */
+ --text-typography-preview: var(--color-font-light);
+ --layout-preview-align-items: flex-start;
+
+ /* Semantic pattern tokens: Portal header */
+ --surface-portal-header: var(--color-darkblue);
+ --surface-portal-header-tab: var(--color-midblue);
+ --surface-portal-header-tab-active: var(--color-light-grey);
+ --text-portal-header-brand: var(--color-font-light);
+ --font-size-portal-header-brand: calc(var(--font-size-brand) * 1.1);
+ --text-portal-header-tab: var(--color-font-light);
+ --text-portal-header-tab-active: var(--color-font-dark);
+ --layout-page-content-inset-inline: var(--card-segment-padding-horizontal);
+ --surface-options-row: var(--color-light-grey);
+ --surface-options-row-control: var(--surface-control-default);
+ --surface-options-row-control-selected: var(--surface-control-active);
+ --surface-options-row-input-clear: var(--surface-input-clear);
+ --surface-options-row-toggle-track: var(--surface-toggle-track);
+ --surface-options-row-toggle-handle: var(--surface-toggle-handle);
+ --surface-options-row-help-icon: var(--surface-help-icon);
+ --surface-options-row-help-panel: var(--surface-help-panel);
+ --divider-options-row-mobile: var(--color-white);
+ --text-options-row-default: var(--text-control-default);
+ --text-options-row-placeholder: var(--text-control-disabled);
+ --text-options-row-help-icon: var(--color-font-light);
+ --text-options-row-help-panel: var(--text-help-panel);
+ --text-options-row-description: var(--color-font-light);
+ --layout-options-row-margin-top: var(--spacing-small);
+ --layout-options-row-main-gap: var(--spacing-large);
+ --layout-options-row-group-gap: var(--spacing-small);
+ --layout-options-row-mode-toggle-width: var(--dimension-options-row-mode-toggle-width);
+ --layout-options-row-help-panel-width: var(--dimension-options-row-help-panel-width);
+ --layout-object-card-min-width: var(--dimension-object-card-min-width);
+ --layout-object-card-max-width: var(--dimension-object-card-max-width);
+ --layout-object-card-height: var(--dimension-object-card-height);
+ --layout-object-card-content-grow: var(--dimension-object-card-content-grow);
+ --layout-object-card-mobile-width: var(--dimension-object-card-mobile-width);
+ --layout-object-card-mobile-height: var(--dimension-object-card-mobile-height);
+ --layout-object-card-desktop-breakpoint: var(--dimension-object-card-desktop-breakpoint);
+ --dimension-notifications-card-min-width: 445px;
+ --layout-notifications-card-flex-basis: var(--dimension-notifications-card-min-width);
+ --layout-notifications-card-min-width: var(--dimension-notifications-card-min-width);
+ --layout-notifications-card-max-width: var(--layout-object-card-max-width);
+ --dimension-notifications-text-segment-fixed-height: 150px;
+ --dimension-notifications-text-segment-fixed-height-small: 60px;
+ --layout-notifications-text-segment-fixed-height: var(--dimension-notifications-text-segment-fixed-height);
+ --layout-notifications-text-segment-fixed-height-small: var(--dimension-notifications-text-segment-fixed-height-small);
+ --layout-object-group-card-min-width: var(--dimension-object-group-card-min-width);
+ --layout-object-group-card-max-width: var(--dimension-object-group-card-max-width);
+ --surface-object-card-lower-segment: var(--color-white);
+ --text-company-card-data-negative: var(--chart-value-negative);
+ --text-company-card-moat-neutral: var(--chart-value-neutral);
+ --layout-company-card-analysis-gap-after-moat: var(--spacing-large);
+ --surface-navigation-card: var(--color-white);
+ --surface-navigation-card-body: var(--color-white);
+ --surface-content-block-card-title: var(--color-light-grey);
+ --surface-content-block-card-content: var(--color-white);
+ --layout-content-cards-group-gap: var(--spacing-small);
+ --surface-card-list-drawer: var(--color-background-purple);
+ --text-content-block-card-title: var(--color-font-dark);
+ --text-content-block-card-content: var(--color-font-dark);
+ --text-card-list-drawer: var(--color-font-dark);
+ --layout-card-list-drawer-width: var(--dimension-card-list-drawer-width);
+ --surface-vsf-drawer-object-card-header: var(--color-darkblue);
+ --surface-vsf-drawer-object-card-body: var(--color-darkblue);
+ --text-vsf-drawer-object-card-heading: var(--color-font-light);
+ --text-vsf-drawer-object-card-body: var(--color-font-light);
+ --layout-vsf-drawer-object-card-column-gap: var(--spacing-large);
+ --text-vsf-list-card-limit-note: var(--color-signal-red);
+ --layout-vsf-list-card-summary-offset-block-start: var(--layout-company-card-analysis-gap-after-moat);
+ --layout-vsf-list-card-delete-confirmation-target-max-width: var(--layout-object-group-card-max-width);
+ --surface-text-layout-preview: var(--color-light-grey);
+ --layout-text-layout-column-gap: var(--spacing-large);
+ --layout-text-layout-two-column-columns: repeat(2, minmax(0, 1fr));
+ --layout-text-layout-three-column-columns: repeat(3, minmax(0, 1fr));
+ --text-align-text-layout-column-left: left;
+ --text-align-text-layout-column-center: center;
+ --text-align-text-layout-column-right: right;
+ --surface-delete-confirmation-overlay: var(--color-light-grey);
+ --surface-delete-confirmation-target-dim-overlay: var(--color-black);
+ --text-delete-confirmation-overlay: var(--color-font-dark);
+ --layout-delete-confirmation-target-max-width: 35rem;
+ --layout-delete-confirmation-overlay-width-factor: 0.8;
+ --layout-delete-confirmation-overlay-offset-block-start: var(--spacing-large);
+ --layout-delete-confirmation-content-gap: var(--spacing-small);
+ --layout-delete-confirmation-actions-gap: var(--spacing-small);
+ --layout-delete-confirmation-actions-offset-block-start: var(--spacing-large);
+ --layout-delete-confirmation-label-width: var(--dimension-input-label-width);
+ --layout-delete-confirmation-target-dim-opacity: 0.5;
+ --layer-delete-confirmation-overlay: 50;
+
+ /* Typography */
+ --font-family-base: "Open Sans", sans-serif;
+ --font-size-base: 1rem;
+ --font-size-small: 0.8rem;
+ --font-size-brand: 1.6rem;
+ --font-size-h1: 1.5rem;
+ --font-size-h2: 1.25rem;
+ --font-weight-regular: 400;
+ --font-weight-semibold: 600;
+ --line-height-base: 1.5;
+
+ /* Spacing */
+ --spacing-small: 0.3rem;
+ --spacing-large: 1rem;
+ --card-segment-padding-vertical: 0.75rem;
+ --card-segment-padding-horizontal: 1rem;
+ --card-segment-padding-horizontal-mobile: 0.5rem;
+ --interaction-padding-vertical: 0.25rem;
+ --interaction-padding-horizontal: 1rem;
+
+ /* Dimensions */
+ --interaction-height: 2rem;
+ --compact-interaction-height: 1.5rem;
+ --compact-interaction-padding-vertical: 0.15rem;
+ --compact-interaction-padding-horizontal: 0.75rem;
+ --small-interaction-element-size: 1.25rem;
+ --disabled-opacity: 0.7;
+ --sandwich-line-width: 1.25rem;
+ --sandwich-line-height: 4px;
+ --sandwich-line-gap: 3px;
+ --score-bar-height: 1rem;
+ --score-marker-width: 6px;
+ --score-marker-height: calc(var(--score-bar-height) + 2px);
+ --chart-height-bar: 24rem;
+ --chart-height-line: 18rem;
+ --chart-axis-label-column-width: 4rem;
+ --chart-axis-label-gap: 5px;
+ --chart-grid-line-width: 1px;
+ --chart-line-width: 2px;
+ --chart-label-position-default: 50%;
+ --dimension-object-card-min-width: 395px;
+ --dimension-object-card-max-width: 600px;
+ --dimension-object-card-height: 600px;
+ --dimension-object-card-content-grow: 1;
+ --dimension-object-card-mobile-width: 100%;
+ --dimension-object-card-mobile-height: auto;
+ --dimension-object-card-desktop-breakpoint: 768px;
+ --dimension-object-group-card-min-width: 550px;
+ --dimension-object-group-card-max-width: 800px;
+ --dimension-input-label-width: 9rem;
+ --dimension-input-field-desktop-width: 400px;
+ --dimension-input-field-max-width: 600px;
+ --dimension-search-field-width: 15.3rem;
+ --dimension-layer-pulldown-panel: 40;
+ --dimension-multiselect-pulldown-panel-desktop-width: 500px;
+ --dimension-multiselect-pulldown-panel-mobile-width: 80vw;
+ --dimension-options-row-mode-toggle-width: 7rem;
+ --dimension-options-row-help-panel-width: 16rem;
+ --dimension-card-list-drawer-width: 40%;
+ --dimension-slider-track-height: 6px;
+ --dimension-slider-thumb-size: 22px;
+ --dimension-slider-thumb-offset-top: -8px;
+ --radius-slider-track: 999px;
+
+ /* Radius */
+ --radius-card: 8px;
+ --radius-graph-bar: 2px;
+ --radius-interaction: 4px;
+
+ /* Shadows */
+ --shadow-none: none;
+ --shadow-overlay: 0 10px 24px rgba(0, 0, 0, 0.22);
+ --shadow-interaction-inset: none;
+
+ /* Borders */
+ --border-none: none;
+ --border-control: none;
+
+ /* Runtime defaults */
+ --layout-object-card-shared-width: auto;
+ --sg-slider-progress: 0%;
+ --chart-label-position: var(--chart-label-position-default);
+}
+
+:root[data-portal="naurua"] {
+ --color-darkblue: #354A52;
+ --font-family-base: "Avenir", sans-serif;
+}
diff --git a/docs/styleguide/styles/02-base.css b/docs/styleguide/styles/02-base.css
new file mode 100644
index 0000000..96916b4
--- /dev/null
+++ b/docs/styleguide/styles/02-base.css
@@ -0,0 +1,97 @@
+/* ========================================================= */
+/* Base */
+/* ========================================================= */
+
+body {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--color-font-dark);
+ background: var(--color-background-purple);
+ margin: 0;
+ padding: var(--spacing-small);
+}
+
+@media (max-width: 48rem) {
+ :root {
+ --layout-tab-navigation-large-padding-inline: 0.7rem;
+ }
+
+ body {
+ padding: var(--spacing-small);
+ }
+}
+
+section {
+ margin-bottom: var(--spacing-large);
+}
+
+section + section {
+ margin-top: var(--spacing-large);
+}
+
+.sg-main-heading {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-brand);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--color-font-light);
+}
+
+.sg-sub-heading {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+}
+
+.sg-text-on-dark {
+ color: var(--color-font-light);
+}
+
+.sg-brand-title {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-brand);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-heading-h1 {
+ margin: 0 0 calc(var(--spacing-large) - 0.5rem) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-h1);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-heading-h2 {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-h2);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-preview-label {
+ margin: 0 0 var(--spacing-small) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--color-font-light);
+}
+
+.sg-preview-area {
+ display: inline-flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: var(--layout-preview-align-items);
+ padding: 0;
+ border-radius: 0;
+ background: transparent;
+}
+
diff --git a/docs/styleguide/styles/03-typography-helpers.css b/docs/styleguide/styles/03-typography-helpers.css
new file mode 100644
index 0000000..7e71b23
--- /dev/null
+++ b/docs/styleguide/styles/03-typography-helpers.css
@@ -0,0 +1,71 @@
+/* ========================================================= */
+/* Typography helpers */
+/* ========================================================= */
+
+.sg-body,
+.sg-strong,
+.sg-section-title,
+.sg-bar-label,
+.sg-table-label,
+.sg-table-value {
+ font-family: var(--font-family-base);
+ line-height: var(--line-height-base);
+}
+
+.sg-body,
+.sg-section-title {
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+}
+
+.sg-body {
+ margin: 0;
+}
+
+.sg-body:not(:last-child) {
+ margin: 0 0 var(--spacing-large) 0;
+}
+
+.sg-strong,
+.sg-bar-label {
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-table-label {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+}
+
+.sg-table-value {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-index a {
+ color: var(--color-font-hyperlink);
+}
+
+.sg-index .sg-sub-heading {
+ color: var(--color-font-light);
+}
+
+.sg-foundation-table {
+ width: 100%;
+ margin-bottom: var(--spacing-large);
+ color: var(--color-font-light);
+ border: 1px solid var(--color-white);
+}
+
+.sg-foundation-table th,
+.sg-foundation-table td {
+ color: var(--color-font-light);
+ border: 1px solid var(--color-white);
+ vertical-align: top;
+}
+
+.sg-section-h2,
+.sg-section-h3 {
+ margin: 0 0 var(--spacing-small) 0;
+ color: var(--color-font-light);
+}
diff --git a/docs/styleguide/styles/10-components-interactive-elements.css b/docs/styleguide/styles/10-components-interactive-elements.css
new file mode 100644
index 0000000..9d65a39
--- /dev/null
+++ b/docs/styleguide/styles/10-components-interactive-elements.css
@@ -0,0 +1,1437 @@
+/* ========================================================= */
+/* Components: Interactive Elements */
+/* ========================================================= */
+
+
+
+ .sg-component-row {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-component-column {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ }
+
+ /*
+ Form preview surface only:
+ All form elements in this component are intentionally shown on the form-area background.
+ This wrapper provides only that evaluation background and must not be implemented as part of the form control itself.
+ The current preview background uses light-grey according to the style foundations.
+ */
+ .sg-form-preview-area {
+ display: inline-flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ background: var(--surface-form-preview);
+ }
+
+ .sg-pulldown-demo {
+ position: relative;
+ display: inline-flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ }
+
+
+ .sg-state-example {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 6) auto;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-state-example__label {
+ margin: 0;
+ color: var(--text-control-default);
+ }
+
+ .sg-activatable-control {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-activatable-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-interaction-element {
+ box-sizing: border-box;
+ height: var(--interaction-height);
+ padding:
+ var(--interaction-padding-vertical)
+ var(--interaction-padding-horizontal);
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ background: var(--surface-control-default);
+ }
+
+ .sg-form-active {
+ background: var(--surface-control-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-form-inactive-selectable {
+ background: var(--surface-control-inactive);
+ color: var(--text-control-default);
+ }
+
+ .sg-form-disabled {
+ background: var(--surface-control-disabled);
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-interaction-element:focus,
+ .sg-interaction-element:focus-visible {
+ outline: none;
+ }
+
+ .sg-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: var(--font-weight-semibold);
+ cursor: pointer;
+ text-decoration: none;
+ }
+
+ .sg-button--active {
+ background: var(--surface-button-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-button--process {
+ background: var(--surface-button-process);
+ color: var(--text-button-process);
+ }
+
+ .sg-button--process-inactive {
+ background: var(--surface-button-process-inactive);
+ color: var(--text-button-process);
+ }
+
+ .sg-button--inactive {
+ background: var(--surface-button-active);
+ color: var(--text-control-disabled);
+ }
+
+ .sg-button:disabled,
+ .sg-button--disabled {
+ cursor: not-allowed;
+ color: var(--text-control-disabled);
+ }
+
+ .sg-button--process-inactive:disabled {
+ color: var(--text-button-process);
+ }
+
+ .sg-tab-button-group {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-tab-button-group[data-component-size="compact"] {
+ background: var(--surface-tab-compact-background);
+ }
+
+ .sg-tab-button-group[data-component-context="content"] {
+ background: var(--surface-tab-compact-background);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button {
+ padding-inline: var(--layout-tab-navigation-large-padding-inline);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button[aria-selected="true"] {
+ background: var(--surface-tab-unselected);
+ color: var(--text-tab-unselected);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-selected);
+ color: var(--text-tab-selected);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"][data-component-context="content"] .sg-tab-button[aria-selected="true"] {
+ background: var(--surface-control-default);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"][data-component-context="content"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-compact-unselected);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button-group[data-component-size="compact"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-compact-unselected);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button--compact {
+ height: var(--compact-interaction-height);
+ padding:
+ var(--compact-interaction-padding-vertical)
+ var(--compact-interaction-padding-horizontal);
+ font-size: var(--font-size-small);
+ }
+
+ .sg-pulldown {
+ font-weight: var(--font-weight-regular);
+ appearance: none;
+ padding-left: var(--layout-pulldown-padding-inline);
+ padding-right: calc(
+ var(--layout-pulldown-chevron-offset)
+ + var(--layout-pulldown-chevron-reserved-space)
+ );
+ background-image: var(--icon-pulldown-chevron);
+ background-position: right var(--layout-pulldown-chevron-offset) center;
+ background-size: calc(var(--interaction-height) * 0.375) calc(var(--interaction-height) * 0.25);
+ background-repeat: no-repeat;
+ }
+
+ .sg-pulldown-demo__trigger {
+ display: block;
+ width: 100%;
+ min-width: 0;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .sg-pulldown-demo[data-component-context="form"],
+ .sg-pulldown-demo[data-component-context="overlay"] {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown-demo[data-component-context="form"] .sg-pulldown-demo__trigger,
+ .sg-pulldown-demo[data-component-context="overlay"] .sg-pulldown-demo__trigger {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown--selected {
+ background-color: var(--surface-control-active);
+ color: var(--text-control-default);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .sg-pulldown--inactive-selectable {
+ background-color: var(--surface-control-inactive);
+ color: var(--text-control-default);
+ }
+
+ .sg-pulldown-demo[data-activatable="true"] .sg-pulldown-demo__trigger.sg-pulldown--inactive-selectable {
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-labeled-input-row .sg-pulldown-demo,
+ .sg-labeled-input-row .sg-pulldown-demo .sg-pulldown {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown--disabled {
+ background-color: var(--surface-control-disabled);
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-input-single-line {
+ font-weight: var(--font-weight-regular);
+ color: var(--text-control-default);
+ -webkit-appearance: none;
+ appearance: none;
+ }
+
+ .sg-input-single-line::placeholder {
+ color: var(--text-control-disabled);
+ opacity: 1;
+ }
+
+ .sg-input-single-line--inactive-selectable {
+ color: var(--text-control-default);
+ }
+
+ .sg-input-single-line--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-input-single-line-wrap {
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ }
+
+ .sg-input-single-line-wrap .sg-input-single-line {
+ padding-right: calc(var(--interaction-padding-horizontal) + var(--interaction-height));
+ }
+
+ .sg-input-clear-button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: none;
+ align-items: center;
+ justify-content: center;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ padding: 0;
+ margin: 0;
+ border: var(--border-none);
+ border-radius: 0 var(--radius-interaction) var(--radius-interaction) 0;
+ box-shadow: var(--shadow-none);
+ -webkit-appearance: none;
+ appearance: none;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: 1;
+ color: var(--text-control-default);
+ background: var(--surface-input-clear);
+ cursor: pointer;
+ }
+
+ .sg-input-single-line-wrap[data-has-value="true"] .sg-input-clear-button {
+ display: inline-flex;
+ }
+
+ .sg-search-field-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ white-space: nowrap;
+ flex-wrap: nowrap;
+ }
+
+ .sg-search-field-input {
+ width: var(--layout-search-field-width);
+ }
+
+ .sg-search-result-count {
+ color: var(--color-dark-grey);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ }
+
+ .sg-labeled-input-row {
+ display: flex;
+ align-items: center;
+ gap: 0;
+ width: auto;
+ max-width: none;
+ }
+
+ .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: var(--spacing-large);
+ }
+
+ .sg-labeled-input-row .sg-input-single-line,
+ .sg-labeled-input-row .sg-input-multi-line {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-form-input-field-max-width);
+ }
+
+ .sg-labeled-input-row:has(.sg-input-multi-line) {
+ align-items: flex-start;
+ }
+
+ .sg-input-multi-line {
+ box-sizing: border-box;
+ min-height: calc(var(--interaction-height) * 2.75);
+ padding: var(--interaction-padding-vertical) var(--interaction-padding-horizontal);
+ border: var(--border-control);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-interaction-inset);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ background: var(--surface-control-inactive);
+ resize: vertical;
+ }
+
+ .sg-input-component .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ width: 100%;
+ }
+
+ #component-pulldown .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-labeled-input-row {
+ width: 100%;
+ max-width: none;
+ }
+
+ #component-pulldown .sg-labeled-input-row .sg-pulldown,
+ #component-pulldown .sg-labeled-input-row .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-pulldown-demo__trigger,
+ #component-pulldown .sg-state-example > .sg-pulldown {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-activatable-row {
+ display: grid;
+ grid-template-columns: max-content minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header {
+ display: grid;
+ grid-template-columns: max-content max-content;
+ align-items: center;
+ column-gap: var(--spacing-small);
+ width: 100%;
+ justify-content: start;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header .sg-label {
+ grid-column: 2;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-activatable-row .sg-pulldown-demo {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ }
+
+ .sg-input-component .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ }
+
+ @media (max-width: 48rem) {
+ .sg-input-component .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ .sg-input-component .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ #component-pulldown .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ .sg-input-component .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-labeled-input-row .sg-pulldown,
+ #component-pulldown .sg-labeled-input-row .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: 100%;
+ }
+
+ #component-pulldown .sg-activatable-row {
+ grid-template-columns: 1fr;
+ align-items: start;
+ row-gap: var(--spacing-small);
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-labeled-input-row {
+ flex-direction: column;
+ align-items: flex-start;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: 0;
+ margin-bottom: var(--spacing-large);
+ }
+
+ .sg-labeled-input-row .sg-input-single-line,
+ .sg-labeled-input-row .sg-input-multi-line {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ }
+ }
+
+ .sg-mode-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ height: auto;
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 0;
+ box-shadow: var(--shadow-none);
+ appearance: none;
+ -webkit-tap-highlight-color: transparent;
+ background: transparent;
+ cursor: pointer;
+ }
+
+ .sg-mode-toggle:focus,
+ .sg-mode-toggle:focus-visible {
+ outline: none;
+ }
+
+ .sg-mode-toggle__label {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ }
+
+ .sg-mode-toggle__switch {
+ position: relative;
+ width: var(--layout-mode-toggle-width);
+ height: var(--interaction-height);
+ border-radius: var(--radius-interaction);
+ background: var(--surface-toggle-track);
+ }
+
+ .sg-mode-toggle__handle {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: calc(100% / 2);
+ height: 100%;
+ border-radius: var(--radius-interaction);
+ background: var(--surface-toggle-handle);
+ }
+
+ .sg-mode-toggle[data-active="absolute"] .sg-mode-toggle__handle {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-mode-toggle[data-active="relative"] .sg-mode-toggle__handle {
+ left: auto;
+ right: 0;
+ }
+
+ .sg-mode-toggle--local .sg-mode-toggle__label {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ }
+
+ .sg-mode-toggle--local .sg-mode-toggle__switch {
+ width: calc(var(--layout-mode-toggle-local-height) * var(--layout-mode-toggle-local-width-factor));
+ height: var(--layout-mode-toggle-local-height);
+ }
+
+ .sg-activation-toggle-pattern {
+ display: flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-activation-mode-toggle {
+ gap: 0;
+ }
+
+ .sg-activation-mode-toggle .sg-mode-toggle__switch {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ align-items: center;
+ overflow: hidden;
+ }
+
+ .sg-activation-mode-toggle .sg-mode-toggle__handle {
+ z-index: 1;
+ }
+
+ .sg-activation-mode-toggle__switch-label {
+ position: relative;
+ z-index: 2;
+ text-align: center;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--layout-mode-toggle-local-height);
+ text-transform: lowercase;
+ color: var(--text-control-default);
+ }
+
+ .sg-activation-mode-toggle[data-active="absolute"] .sg-activation-mode-toggle__switch-label--left,
+ .sg-activation-mode-toggle[data-active="relative"] .sg-activation-mode-toggle__switch-label--right {
+ color: var(--text-toggle-label-active);
+ }
+
+ .sg-slider-row {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: var(--spacing-small);
+ width: 100%;
+ max-width: none;
+ }
+
+ .sg-slider-row .sg-label {
+ min-width: var(--layout-input-label-width);
+ flex: 0 0 var(--layout-input-label-width);
+ color: var(--text-control-default);
+ }
+
+ .sg-slider {
+ flex: 1 1 14rem;
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ height: var(--interaction-height);
+ margin: 0;
+ padding: 0;
+ border: 0;
+ -webkit-appearance: none;
+ appearance: none;
+ background: transparent;
+ cursor: pointer;
+ }
+
+ .sg-slider::-webkit-slider-runnable-track {
+ height: var(--dimension-slider-track-height);
+ border-radius: var(--radius-slider-track);
+ background:
+ linear-gradient(
+ to right,
+ var(--surface-slider-progress) 0%,
+ var(--surface-slider-progress) var(--sg-slider-progress, 0%),
+ var(--surface-slider-track) var(--sg-slider-progress, 0%),
+ var(--surface-slider-track) 100%
+ );
+ }
+
+ .sg-slider::-webkit-slider-thumb {
+ width: var(--dimension-slider-thumb-size);
+ height: var(--dimension-slider-thumb-size);
+ margin-top: var(--dimension-slider-thumb-offset-top);
+ border: 0;
+ border-radius: 50%;
+ -webkit-appearance: none;
+ appearance: none;
+ background: var(--surface-slider-thumb);
+ }
+
+ .sg-slider::-moz-range-track {
+ height: var(--dimension-slider-track-height);
+ border: 0;
+ border-radius: var(--radius-slider-track);
+ background: var(--surface-slider-track);
+ }
+
+ .sg-slider::-moz-range-progress {
+ height: var(--dimension-slider-track-height);
+ border-radius: var(--radius-slider-track);
+ background: var(--surface-slider-progress);
+ }
+
+ .sg-slider::-moz-range-thumb {
+ width: var(--dimension-slider-thumb-size);
+ height: var(--dimension-slider-thumb-size);
+ border: 0;
+ border-radius: 50%;
+ background: var(--surface-slider-thumb);
+ }
+
+ .sg-slider-value {
+ flex: 0 0 auto;
+ min-width: calc(var(--interaction-height) * 1.25);
+ white-space: nowrap;
+ text-align: right;
+ color: var(--text-control-default);
+ }
+
+ .sg-slider-row--inactive-selectable {
+ opacity: var(--disabled-opacity);
+ }
+
+ #component-slider .sg-slider-row {
+ display: grid;
+ grid-template-columns:
+ max-content
+ minmax(0, 1fr)
+ auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ width: 100%;
+ }
+
+ #component-slider .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-slider .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-slider .sg-slider-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ grid-column: 1;
+ }
+
+ #component-slider .sg-slider-row .sg-slider {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ grid-column: 2;
+ }
+
+ #component-slider .sg-state-example > .sg-slider-row,
+ #component-slider .sg-activatable-row .sg-slider-row {
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-slider .sg-slider-row .sg-slider-value {
+ min-width: 0;
+ grid-column: 3;
+ justify-self: start;
+ align-self: center;
+ display: block;
+ margin: 0;
+ line-height: 1;
+ }
+
+ #component-slider .sg-activatable-row {
+ display: grid;
+ grid-template-columns: max-content minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-slider-activatable-header {
+ display: grid;
+ grid-template-columns: max-content max-content;
+ column-gap: var(--spacing-large);
+ align-items: center;
+ width: 100%;
+ justify-content: start;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-label {
+ grid-column: 2;
+ min-width: 0;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ grid-column: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider-value {
+ grid-column: 2;
+ justify-self: start;
+ min-width: 0;
+ align-self: center;
+ display: block;
+ margin: 0;
+ line-height: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] {
+ display: grid;
+ grid-template-columns:
+ var(--layout-input-label-width)
+ minmax(0, 1fr)
+ auto;
+ align-items: center;
+ column-gap: var(--spacing-small);
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ min-width: calc(var(--interaction-height) * 1.25);
+ justify-self: end;
+ align-self: center;
+ white-space: nowrap;
+ grid-column: 3;
+ grid-row: 1;
+ }
+
+ @media (max-width: 48rem) {
+ #component-slider .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-slider .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ #component-slider .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-slider .sg-activatable-row {
+ grid-template-columns: 1fr;
+ align-items: start;
+ row-gap: var(--spacing-small);
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row {
+ grid-template-columns: minmax(0, 1fr) auto;
+ column-gap: var(--spacing-large);
+ align-items: center;
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider {
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider-value {
+ justify-self: start;
+ align-self: center;
+ margin: 0;
+ line-height: 1;
+ }
+
+ }
+
+ .sg-sandwich-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: calc(var(--interaction-height) + var(--spacing-small));
+ height: calc(var(--interaction-height) + var(--spacing-small));
+ padding: 0;
+ cursor: pointer;
+ }
+
+ .sg-sandwich-button--small {
+ width: calc(var(--interaction-height) * 0.9);
+ height: calc(var(--interaction-height) * 0.9);
+ }
+
+ .sg-sandwich-button__icon {
+ width: var(--sandwich-line-width);
+ height: auto;
+ display: flex;
+ flex-direction: column;
+ gap: var(--sandwich-line-gap);
+ justify-content: center;
+ }
+
+ .sg-sandwich-button__line {
+ display: block;
+ width: 100%;
+ height: var(--sandwich-line-height);
+ border-radius: var(--radius-interaction);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-button__line {
+ background: var(--icon-sandwich-line-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-button__line {
+ height: calc(var(--sandwich-line-height) - 1px);
+ background: var(--icon-sandwich-line-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-button__icon {
+ width: calc(var(--sandwich-line-width) - 3px);
+ }
+
+ .sg-sandwich-menu-wrap {
+ position: relative;
+ display: inline-flex;
+ }
+
+ .sg-sandwich-menu-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ right: 0;
+ display: none;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: max-content;
+ padding: var(--spacing-large);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-overlay);
+ z-index: var(--layer-pulldown-panel);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-menu-panel {
+ background: var(--surface-menu-panel-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-menu-panel {
+ background: var(--surface-menu-panel-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-open="true"] .sg-sandwich-menu-panel {
+ display: flex;
+ }
+
+ .sg-sandwich-menu-link {
+ margin: 0;
+ text-decoration: none;
+ white-space: nowrap;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-menu-link {
+ color: var(--text-menu-link-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-menu-link {
+ color: var(--text-menu-link-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-align="left"] .sg-sandwich-menu-panel {
+ right: auto;
+ left: 0;
+ }
+
+ .sg-sandwich-menu-wrap[data-align="right"] .sg-sandwich-menu-panel {
+ right: 0;
+ left: auto;
+ }
+
+ .sg-help-icon-wrap {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle;
+ }
+
+ .sg-help-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ color: var(--text-help-icon);
+ background: var(--surface-help-icon);
+ cursor: pointer;
+ }
+
+ .sg-help-icon-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ left: 0;
+ z-index: var(--layer-pulldown-panel);
+ display: none;
+ width: var(--layout-help-panel-width);
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ box-sizing: border-box;
+ overflow-wrap: anywhere;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ color: var(--text-help-panel);
+ background: var(--surface-help-panel);
+ box-shadow: var(--shadow-overlay);
+ }
+
+ @supports (width: 100dvw) {
+ .sg-help-icon-panel {
+ width: min(var(--layout-help-panel-width), calc(100dvw - (2 * var(--spacing-large))));
+ max-width: calc(100dvw - (2 * var(--spacing-large)));
+ }
+ }
+
+ .sg-help-icon-wrap[data-open="true"] .sg-help-icon-panel {
+ display: block;
+ }
+
+ .sg-help-icon-wrap[data-open="true"] {
+ z-index: var(--layer-pulldown-panel);
+ }
+
+ .sg-help-icon-wrap[data-align="left"] .sg-help-icon-panel {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-help-icon-wrap[data-align="right"] .sg-help-icon-panel {
+ left: auto;
+ right: 0;
+ }
+
+ .sg-pulldown-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ left: 0;
+ z-index: var(--layer-pulldown-panel);
+ display: none;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ min-width: 100%;
+ width: max-content;
+ max-width: min(
+ var(--layout-multiselect-pulldown-panel-desktop-width),
+ calc(100vw - (2 * var(--spacing-large)))
+ );
+ box-sizing: border-box;
+ padding-block: var(--spacing-large);
+ padding-inline: var(--layout-pulldown-panel-padding-inline);
+ border-radius: var(--radius-card);
+ background: var(--surface-pulldown-panel);
+ box-shadow: var(--shadow-overlay);
+ }
+
+ @supports (width: 100dvw) {
+ .sg-pulldown-panel {
+ max-width: min(
+ var(--layout-multiselect-pulldown-panel-desktop-width),
+ calc(100dvw - (2 * var(--spacing-large)))
+ );
+ }
+ }
+
+ .sg-pulldown-demo[data-open="true"] .sg-pulldown-panel {
+ display: inline-flex;
+ }
+
+ .sg-pulldown-demo[data-align="left"] .sg-pulldown-panel {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-pulldown-demo[data-align="right"] .sg-pulldown-panel {
+ left: auto;
+ right: 0;
+ }
+
+ @media (max-width: 48rem) {
+ .sg-pulldown-demo[data-component-context="overlay"] .sg-pulldown-panel {
+ left: auto;
+ right: 0;
+ }
+ }
+
+ .sg-pulldown-panel__row {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 5) calc(var(--interaction-height) * 7) var(--interaction-height);
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-pulldown-panel__label {
+ margin: 0;
+ color: var(--text-control-default);
+ }
+
+.sg-pulldown-panel__remove {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ background: var(--surface-activatable-remove);
+ color: var(--text-activatable-remove);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: 1;
+ -webkit-appearance: none;
+ appearance: none;
+ cursor: pointer;
+}
+
+ .sg-pulldown-panel__remove[hidden] {
+ display: none;
+ }
+
+ .sg-pulldown-panel__row--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-pulldown-panel__row--disabled .sg-pulldown,
+ .sg-pulldown-panel__row--disabled .sg-pulldown-panel__label {
+ color: var(--text-control-disabled);
+ }
+
+ .sg-pulldown-option-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ }
+
+ .sg-pulldown-option {
+ display: flex;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ padding-block: var(--interaction-padding-vertical);
+ padding-inline: var(--layout-pulldown-option-padding-inline);
+ border-radius: var(--radius-interaction);
+ white-space: normal;
+ overflow-wrap: anywhere;
+ color: var(--text-control-default);
+ cursor: pointer;
+ }
+
+ .sg-pulldown-option--selected {
+ background: var(--surface-control-active);
+ }
+
+ .sg-pulldown-option--disabled {
+ color: var(--text-control-disabled);
+ }
+
+ .sg-pulldown-option__checkbox {
+ width: var(--font-size-base);
+ height: var(--font-size-base);
+ margin: 0;
+ }
+
+ .sg-checkbox-field {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-none);
+ color: var(--text-control-default);
+ background: var(--surface-checkbox-default);
+ cursor: pointer;
+ }
+
+ .sg-checkbox-field--on-grey,
+ .sg-checkbox-field--on-color {
+ background: var(--surface-checkbox-on-context);
+ }
+
+ .sg-checkbox-field__mark {
+ display: none;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ }
+
+ .sg-checkbox-field[aria-checked="true"] .sg-checkbox-field__mark {
+ display: inline;
+ }
+
+ .sg-checkbox-field.sg-form-active {
+ background: var(--surface-control-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-checkbox-field--inactive-selectable {
+ color: var(--text-control-default);
+ background: var(--surface-control-inactive);
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-checkbox-field--disabled {
+ color: var(--text-control-disabled);
+ background: var(--surface-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-checkbox-field-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ }
+
+ .sg-checkbox-field-option {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ color: var(--text-control-default);
+ flex-wrap: wrap;
+ }
+
+ .sg-pulldown-panel__checkbox-list .sg-checkbox-field-option.sg-body {
+ margin-bottom: 0;
+ }
+
+ #component-checkbox-field .sg-checkbox-field-option .sg-state-example__label,
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label {
+ flex: 0 0 100%;
+ margin-bottom: var(--spacing-small);
+ }
+
+ .sg-checkbox-field-option--inactive-selectable {
+ color: var(--text-control-default);
+ }
+
+ #component-checkbox-field .sg-checkbox-field-option[data-activatable="true"],
+ #component-radio-field .sg-checkbox-field-option[data-activatable="true"] {
+ gap: var(--spacing-large);
+ }
+
+ .sg-radio-activatable-group__choices {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-radio-activatable-group__choice {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-radio-activatable-group__choice > span {
+ color: var(--text-control-default);
+ opacity: 1;
+ }
+
+ #component-radio-activatable[data-component-state="inactive-selectable"] .sg-radio-activatable-group__choice > span {
+ opacity: var(--disabled-opacity);
+ }
+
+ #component-radio-activatable[data-component-state="active"] .sg-radio-activatable-group__choice > span {
+ opacity: 1;
+ }
+
+ #component-radio-field .sg-checkbox-field-option {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-small);
+ width: 100%;
+ }
+
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label {
+ grid-column: 1;
+ margin-bottom: 0;
+ }
+
+ #component-radio-field .sg-radio-field-row {
+ grid-column: 2;
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ min-width: 0;
+ flex-wrap: nowrap;
+ }
+
+ #component-radio-field .sg-radio-field-row > .sg-radio-activatable-group__choices {
+ margin-left: var(--spacing-large);
+ }
+
+ #component-radio-field .sg-radio-field-row--without-label > .sg-radio-activatable-group__choices {
+ margin-left: 0;
+ }
+
+ @media (max-width: 48rem) {
+ #component-radio-field .sg-checkbox-field-option {
+ grid-template-columns: 1fr;
+ align-items: start;
+ }
+
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label,
+ #component-radio-field .sg-radio-field-row {
+ grid-column: 1;
+ }
+
+ #component-radio-field .sg-radio-field-row {
+ flex-wrap: wrap;
+ }
+
+ #component-radio-field .sg-radio-field-row > .sg-radio-activatable-group__choices {
+ flex: 0 0 100%;
+ margin-left: 0;
+ }
+ }
+
+ .sg-checkbox-field-option--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-radio-field {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ color: var(--text-control-default);
+ background: var(--surface-radio-default);
+ cursor: pointer;
+ }
+
+ .sg-radio-field__mark {
+ display: none;
+ width: calc(var(--small-interaction-element-size) * 0.44);
+ height: calc(var(--small-interaction-element-size) * 0.44);
+ border-radius: 50%;
+ background: var(--icon-radio-mark);
+ }
+
+ .sg-radio-field[aria-checked="true"] .sg-radio-field__mark {
+ display: block;
+ }
+
+ .sg-radio-field--inactive-selectable {
+ color: var(--text-control-default);
+ background: var(--surface-radio-default);
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-radio-field--disabled {
+ color: var(--text-control-disabled);
+ background: var(--surface-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-hyperlink {
+ color: var(--text-hyperlink);
+ text-decoration: none;
+ }
diff --git a/docs/styleguide/styles/20-patterns-portal-header.css b/docs/styleguide/styles/20-patterns-portal-header.css
new file mode 100644
index 0000000..11c6614
--- /dev/null
+++ b/docs/styleguide/styles/20-patterns-portal-header.css
@@ -0,0 +1,68 @@
+/* ========================================================= */
+/* Patterns: Portal Header */
+/* ========================================================= */
+
+.sg-portal-header {
+ --surface-tab-selected: var(--surface-portal-header-tab);
+ --surface-tab-unselected: var(--surface-portal-header-tab-active);
+ --text-tab-selected: var(--text-portal-header-tab);
+ --text-tab-unselected: var(--text-portal-header-tab-active);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-large);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-portal-header);
+}
+
+.sg-portal-header__main {
+ display: grid;
+ flex: 1 1 auto;
+ grid-template-columns: minmax(0, 1fr) auto;
+ grid-template-areas:
+ "brand menu"
+ "tabs tabs";
+ gap: var(--spacing-large);
+ min-width: 0;
+}
+
+.sg-portal-header__brand {
+ grid-area: brand;
+ margin: 0;
+ padding-left: 0;
+ font-size: var(--font-size-portal-header-brand);
+ color: var(--text-portal-header-brand);
+}
+
+.sg-portal-header__tabs {
+ grid-area: tabs;
+ width: 100%;
+}
+
+.sg-portal-header__menu-wrap {
+ grid-area: menu;
+ justify-self: end;
+}
+
+.sg-portal-header-pattern-variant {
+ margin-bottom: var(--spacing-large);
+}
+
+.sg-portal-header-pattern-variant__label {
+ margin: 0 0 var(--spacing-small) 0;
+}
+
+.sg-portal-header-pattern-variant__next-element {
+ margin-top: var(--spacing-large);
+}
+
+@media (max-width: calc(var(--layout-object-card-desktop-breakpoint) - 1px)) {
+ .sg-portal-header__main {
+ gap: var(--spacing-small) var(--spacing-large);
+ }
+}
diff --git a/docs/styleguide/styles/21-patterns-options-row.css b/docs/styleguide/styles/21-patterns-options-row.css
new file mode 100644
index 0000000..610ca3b
--- /dev/null
+++ b/docs/styleguide/styles/21-patterns-options-row.css
@@ -0,0 +1,164 @@
+/* ========================================================= */
+/* Patterns: Options Row */
+/* ========================================================= */
+
+.sg-options-row {
+ --surface-control-default: var(--surface-options-row-control);
+ --surface-control-active: var(--surface-options-row-control-selected);
+ --surface-input-clear: var(--surface-options-row-input-clear);
+ --surface-toggle-track: var(--surface-options-row-toggle-track);
+ --surface-toggle-handle: var(--surface-options-row-toggle-handle);
+ --surface-help-icon: var(--surface-options-row-help-icon);
+ --surface-help-panel: var(--surface-options-row-help-panel);
+ --text-control-default: var(--text-options-row-default);
+ --text-control-disabled: var(--text-options-row-placeholder);
+ --text-help-icon: var(--text-options-row-help-icon);
+ --text-help-panel: var(--text-options-row-help-panel);
+ --layout-mode-toggle-width: var(--layout-options-row-mode-toggle-width);
+ --layout-help-panel-width: var(--layout-options-row-help-panel-width);
+ margin-top: var(--layout-options-row-margin-top);
+ display: flex;
+ justify-content: space-between;
+ gap: var(--layout-options-row-main-gap);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-options-row);
+}
+
+.sg-options-row__left,
+.sg-options-row__right {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--layout-options-row-group-gap);
+ align-items: center;
+}
+
+.sg-options-row__left {
+ justify-content: flex-start;
+}
+
+.sg-options-row__right {
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ margin-left: auto;
+}
+
+@media (max-width: 48rem) {
+ .sg-options-row {
+ flex-direction: column;
+ gap: 0;
+ padding: 0;
+ }
+
+ .sg-options-row__right,
+ .sg-options-row__left {
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--card-segment-padding-horizontal);
+ }
+
+ .sg-options-row__right {
+ order: 1;
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ margin-left: 0;
+ }
+
+ .sg-options-row__left {
+ order: 2;
+ box-shadow: inset 0 1px 0 var(--divider-options-row-mobile);
+ }
+
+ .sg-options-row__left > .sg-pulldown-demo,
+ .sg-options-row__left > .sg-input-single-line-wrap,
+ .sg-options-row__left > .sg-search-field-row {
+ flex: 1 1 calc(50% - var(--layout-options-row-group-gap));
+ min-width: 0;
+ }
+
+.sg-options-row__left > .sg-input-single-line-wrap,
+.sg-options-row__left > .sg-search-field-row {
+ flex-basis: 100%;
+ }
+
+ .sg-options-row .sg-search-field-input {
+ display: inline-flex;
+ align-items: stretch;
+ }
+
+ .sg-options-row .sg-search-field-input .sg-input-single-line {
+ padding-right: var(--interaction-padding-horizontal);
+ }
+
+ .sg-options-row .sg-search-field-input[data-has-value="true"] .sg-input-single-line {
+ border-radius: var(--radius-interaction) 0 0 var(--radius-interaction);
+ }
+
+ .sg-options-row .sg-search-field-input .sg-input-clear-button {
+ position: static;
+ flex: 0 0 var(--interaction-height);
+ height: auto;
+ border-radius: 0 var(--radius-interaction) var(--radius-interaction) 0;
+ }
+
+ .sg-options-row__left > .sg-input-single-line-wrap .sg-input-single-line,
+ .sg-options-row__left > .sg-pulldown-demo .sg-pulldown {
+ width: 100%;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ width: min(
+ var(--layout-pulldown-panel-form-mobile-width),
+ calc(100vw - (2 * var(--spacing-large)))
+ );
+ min-width: 0;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ }
+
+ .sg-options-row .sg-pulldown-panel .sg-form-sections-card-wrapper,
+ .sg-options-row .sg-pulldown-panel .sg-form-sections-card {
+ min-width: 0;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-label {
+ min-width: 100%;
+ flex: 0 0 100%;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ flex: 1 1 0;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ min-width: calc(var(--interaction-height) * 1.25);
+ align-self: center;
+ white-space: nowrap;
+ flex: 0 0 auto;
+ }
+
+ .sg-pulldown-panel__row {
+ grid-template-columns: minmax(0, 1fr) var(--interaction-height);
+ }
+
+ .sg-pulldown-panel__label {
+ grid-column: 1 / -1;
+ }
+}
+
diff --git a/docs/styleguide/styles/22-patterns-object-card.css b/docs/styleguide/styles/22-patterns-object-card.css
new file mode 100644
index 0000000..8a52384
--- /dev/null
+++ b/docs/styleguide/styles/22-patterns-object-card.css
@@ -0,0 +1,69 @@
+/* ========================================================= */
+/* Patterns: Object Card */
+/* ========================================================= */
+
+.sg-object-card-grid {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+}
+
+.sg-object-card {
+ display: flex;
+ flex-direction: column;
+ flex: 1 1 var(--layout-object-card-min-width);
+ min-width: var(--layout-object-card-min-width);
+ max-width: var(--layout-object-card-max-width);
+ height: var(--layout-object-card-height);
+}
+
+.sg-object-card-grid.sg-object-card-grid--multi-row .sg-object-card {
+ flex: 0 0 var(--layout-object-card-shared-width);
+ width: var(--layout-object-card-shared-width);
+}
+
+@media (max-width: 767px) {
+ .sg-object-card {
+ width: var(--layout-object-card-mobile-width);
+ min-width: 0;
+ max-width: none;
+ height: var(--layout-object-card-mobile-height);
+ }
+
+ .sg-object-card[data-pattern="object-group-card"] {
+ flex-basis: 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ }
+}
+
+.sg-object-card__content {
+ flex: var(--layout-object-card-content-grow) 1 auto;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ background: var(--color-white);
+}
+
+.sg-object-card__header {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.sg-object-card__actions {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+ margin-top: 0;
+}
+
+.sg-object-card__action {
+ flex: 1 1 0;
+ min-width: 0;
+}
+
diff --git a/docs/styleguide/styles/23-patterns-object-group-card.css b/docs/styleguide/styles/23-patterns-object-group-card.css
new file mode 100644
index 0000000..8ada867
--- /dev/null
+++ b/docs/styleguide/styles/23-patterns-object-group-card.css
@@ -0,0 +1,46 @@
+/* ========================================================= */
+/* Patterns: Object Group Card */
+/* ========================================================= */
+
+.sg-object-group-card__actions {
+ margin-top: auto;
+}
+
+.sg-object-card[data-pattern="object-group-card"] {
+ flex: 1 1 var(--layout-object-group-card-min-width);
+ min-width: var(--layout-object-group-card-min-width);
+ max-width: var(--layout-object-group-card-max-width);
+}
+
+.sg-object-group-card__hint {
+ color: var(--color-font-light);
+}
+
+.sg-company-card__metric-negative {
+ color: var(--text-company-card-data-negative);
+}
+
+.sg-company-card__analysis-title {
+ margin: 0;
+}
+
+.sg-company-card__analysis-bars {
+ margin-top: 0;
+}
+
+.sg-company-card__moat-row {
+ display: contents;
+}
+
+.sg-company-card__moat-value {
+ justify-self: start;
+ text-align: left;
+}
+
+.sg-company-card__moat-neutral {
+ color: var(--text-company-card-moat-neutral);
+}
+
+.sg-company-card__summary {
+ margin: 0;
+}
diff --git a/docs/styleguide/styles/24-patterns-navigation-card.css b/docs/styleguide/styles/24-patterns-navigation-card.css
new file mode 100644
index 0000000..d3d3420
--- /dev/null
+++ b/docs/styleguide/styles/24-patterns-navigation-card.css
@@ -0,0 +1,4 @@
+/* ========================================================= */
+/* Patterns: Navigation Card */
+/* ========================================================= */
+
diff --git a/docs/styleguide/styles/25-patterns-form-sections.css b/docs/styleguide/styles/25-patterns-form-sections.css
new file mode 100644
index 0000000..5bba2fe
--- /dev/null
+++ b/docs/styleguide/styles/25-patterns-form-sections.css
@@ -0,0 +1,343 @@
+/* ========================================================= */
+/* Patterns: Formular mit Abschnitten */
+/* ========================================================= */
+
+.sg-form-sections-card {
+ --layout-form-sections-label-column-width: var(--layout-input-label-width);
+ --layout-form-sections-interaction-indent: calc(
+ var(--layout-form-sections-label-column-width) + var(--spacing-large)
+ );
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ min-width: min(
+ 100%,
+ calc(var(--layout-form-sections-label-column-width) + var(--spacing-small) + var(--layout-input-field-desktop-width))
+ );
+ max-width: calc(
+ var(--layout-form-sections-label-column-width) + var(--spacing-small) + var(--layout-form-input-field-max-width)
+ );
+}
+
+.sg-form-sections-card-wrapper {
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ height: auto;
+}
+
+.sg-form-sections-card__body {
+ background: var(--surface-form-preview);
+ padding: 0;
+}
+
+.sg-form-sections-card__title {
+ margin: 0 0 var(--spacing-large) 0;
+}
+
+.sg-form-sections-card__actions-segment {
+ background: var(--surface-form-preview);
+ padding: 0;
+}
+
+.sg-form-sections-card__chapter + .sg-form-sections-card__chapter {
+ margin-top: var(--spacing-large);
+}
+
+.sg-form-sections-card__chapter-title,
+.sg-form-sections-card__sentence {
+ margin: 0;
+}
+
+.sg-form-sections-card__sentence {
+ margin-top: var(--spacing-small);
+}
+
+.sg-form-sections-card__option-group,
+.sg-form-sections-card__field-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ margin-top: var(--spacing-large);
+}
+
+.sg-form-sections-card .sg-labeled-input-row .sg-label {
+ min-width: var(--layout-form-sections-label-column-width);
+ flex: 0 0 var(--layout-form-sections-label-column-width);
+ margin-right: var(--spacing-large);
+}
+
+.sg-form-sections-card__option-group,
+.sg-form-sections-card__actions {
+ padding-left: var(--layout-form-sections-interaction-indent);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > :not(.sg-form-sections-card__chapter-title) + :not(.sg-form-sections-card__chapter-title) {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-form-sections-card__chapter-title + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-slider-row + .sg-slider-row,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-checkbox-field-option + .sg-checkbox-field-option,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-radio-activatable-group + .sg-radio-activatable-group {
+ margin-top: var(--spacing-small);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-pulldown-panel__row + .sg-pulldown-panel__row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ --sg-multiselect-label-column-width: var(--layout-multiselect-pulldown-label-column-width-fallback);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ white-space: nowrap;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ display: grid;
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr) auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable {
+ opacity: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider-value,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-radio-activatable-group__choices {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-label {
+ grid-column: 2;
+ min-width: 0;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider {
+ grid-column: 3;
+ min-width: 0;
+ width: 100%;
+ max-width: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ grid-column: 4;
+ margin: 0;
+ min-width: 0;
+ line-height: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ -webkit-tap-highlight-color: transparent;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group {
+ display: grid;
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label {
+ grid-column: 2;
+ margin: 0;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-radio-activatable-group__choices {
+ grid-column: 3;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-radio-activatable-group__choices {
+ pointer-events: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable > :not(.sg-mode-toggle),
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > :not(.sg-mode-toggle),
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > :not(.sg-mode-toggle) {
+ pointer-events: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] {
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr);
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ grid-column: 2;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown {
+ grid-column: 3;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled {
+ opacity: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown-panel__label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo .sg-pulldown-panel {
+ min-width: 100%;
+ width: max-content;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+}
+
+@media (max-width: 48rem) {
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ min-width: 100%;
+ width: max-content;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ grid-template-columns: max-content minmax(0, 1fr) auto;
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] > .sg-label,
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label,
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ white-space: normal;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider {
+ grid-column: 1 / 3;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ grid-column: 3;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group {
+ grid-template-columns: max-content minmax(0, 1fr);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-radio-activatable-group__choices {
+ grid-column: 1 / -1;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] {
+ grid-template-columns: max-content minmax(0, 1fr);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown {
+ grid-column: 1 / -1;
+ grid-row: 2;
+ }
+}
+
+.sg-form-sections-card__actions {
+ display: flex;
+ justify-content: flex-start;
+ gap: var(--spacing-small);
+ margin-top: 0;
+}
+
+.sg-form-sections-card__action {
+ width: auto;
+}
+
+.sg-navigation-card-layout {
+ width: 100%;
+ margin-top: var(--spacing-large);
+}
+
+.sg-navigation-card-block {
+ --surface-card: var(--surface-navigation-card);
+ --surface-card-body: var(--surface-navigation-card-body);
+ display: block;
+ flex: none;
+ min-width: 0;
+ max-width: none;
+ width: 100%;
+}
+
+.sg-navigation-card-center {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+}
+
+.sg-content-cards-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--layout-content-cards-group-gap);
+}
+
+@media (max-width: 48rem) {
+ .sg-form-sections-card .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: 0;
+ }
+
+ .sg-form-sections-card__option-group,
+ .sg-form-sections-card__actions {
+ padding-left: 0;
+ }
+}
diff --git a/docs/styleguide/styles/26-patterns-vsf-list-card.css b/docs/styleguide/styles/26-patterns-vsf-list-card.css
new file mode 100644
index 0000000..906edec
--- /dev/null
+++ b/docs/styleguide/styles/26-patterns-vsf-list-card.css
@@ -0,0 +1,16 @@
+/* ========================================================= */
+/* Patterns: VSF List Card */
+/* ========================================================= */
+
+#layout-vsf-list-card .sg-vsf-list-card-limit-note {
+ margin: 0 0 var(--space-16) 0;
+ color: var(--text-vsf-list-card-limit-note);
+}
+
+#layout-vsf-list-card .sg-vsf-list-card__summary {
+ margin: var(--layout-vsf-list-card-summary-offset-block-start) 0 0 0;
+}
+
+.sg-vsf-list-card-context[data-pattern="overlay-card"] {
+ --layout-delete-confirmation-target-max-width: var(--layout-vsf-list-card-delete-confirmation-target-max-width);
+}
diff --git a/docs/styleguide/styles/27-patterns-delete-confirmation.css b/docs/styleguide/styles/27-patterns-delete-confirmation.css
new file mode 100644
index 0000000..06f9f9e
--- /dev/null
+++ b/docs/styleguide/styles/27-patterns-delete-confirmation.css
@@ -0,0 +1,88 @@
+/* ========================================================= */
+/* Patterns: Overlay Card */
+/* ========================================================= */
+
+.sg-delete-confirmation-pattern {
+ width: 100%;
+ max-width: var(--layout-delete-confirmation-target-max-width);
+}
+
+.sg-delete-confirmation-pattern__stage {
+ position: relative;
+}
+
+.sg-delete-confirmation-pattern__host {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-delete-confirmation-pattern__host > .sg-delete-confirmation-pattern__target {
+ flex: 1 1 auto;
+}
+
+.sg-delete-confirmation-pattern__target {
+ position: relative;
+ overflow: hidden;
+}
+
+.sg-delete-confirmation-pattern__target::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background: var(--surface-delete-confirmation-target-dim-overlay);
+ opacity: 0;
+ pointer-events: none;
+}
+
+.sg-delete-confirmation-pattern__stage[data-dialog-open="true"] .sg-delete-confirmation-pattern__target::after {
+ opacity: var(--layout-delete-confirmation-target-dim-opacity);
+}
+
+.sg-delete-confirmation-pattern__floating-card {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: calc(100% * var(--layout-delete-confirmation-overlay-width-factor));
+ box-sizing: border-box;
+ max-width: calc(100% * var(--layout-delete-confirmation-overlay-width-factor));
+ z-index: var(--layer-delete-confirmation-overlay);
+ box-shadow: var(--shadow-overlay);
+}
+
+.sg-delete-confirmation-pattern__floating-card[hidden] {
+ display: none;
+}
+
+.sg-delete-confirmation-pattern__body {
+ display: flex;
+ flex-direction: column;
+ gap: var(--layout-delete-confirmation-content-gap);
+ background: var(--surface-delete-confirmation-overlay);
+}
+
+.sg-delete-confirmation-pattern__text {
+ margin: 0;
+ color: var(--text-delete-confirmation-overlay);
+}
+
+.sg-delete-confirmation-pattern__code {
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-delete-confirmation-pattern__input-row {
+ margin: var(--spacing-large) 0 0 0;
+}
+
+.sg-delete-confirmation-pattern__actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: var(--layout-delete-confirmation-actions-gap);
+ margin-top: var(--layout-delete-confirmation-actions-offset-block-start);
+}
+
+@media (max-width: 48rem) {
+ .sg-delete-confirmation-pattern__actions {
+ flex-wrap: wrap;
+ }
+}
diff --git a/docs/styleguide/styles/28-patterns-notifications.css b/docs/styleguide/styles/28-patterns-notifications.css
new file mode 100644
index 0000000..50ed93f
--- /dev/null
+++ b/docs/styleguide/styles/28-patterns-notifications.css
@@ -0,0 +1,94 @@
+/* ========================================================= */
+/* Patterns: Notifications */
+/* ========================================================= */
+
+.sg-notifications-pattern {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+}
+
+.sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+}
+
+/* Dokumentierte Pattern-Variante: Notifications innerhalb Group Card */
+.sg-notifications-pattern.sg-group-card > .sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+}
+
+.sg-notifications-pattern.sg-notifications-pattern--multi-row .sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__text-segment {
+ height: auto;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__title-segment {
+ height: auto;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__text-segment.sg-notifications-pattern__text-segment--small {
+ height: auto;
+}
+
+.sg-vsf-meldungen-layout {
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: var(--spacing-small);
+ align-items: start;
+ width: 100%;
+}
+
+.sg-vsf-meldungen-layout > .sg-group-card {
+ min-width: 0;
+}
+
+.sg-vsf-meldungen-mobile {
+ display: none;
+}
+
+.sg-vsf-meldungen-mobile__panels {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-meldungen-mobile__panel {
+ width: 100%;
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-meldungen-layout {
+ display: none;
+ }
+
+ .sg-vsf-meldungen-mobile {
+ display: flex;
+ width: 100%;
+ }
+
+ .sg-notifications-pattern__card {
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ flex: 1 1 auto;
+ }
+
+ .sg-notifications-pattern__card > .sg-notifications-pattern__text-segment,
+ .sg-notifications-pattern__card > .sg-notifications-pattern__title-segment,
+ .sg-notifications-pattern__card > .sg-notifications-pattern__text-segment.sg-notifications-pattern__text-segment--small {
+ height: auto;
+ }
+}
diff --git a/docs/styleguide/styles/30-layouts-card-list-page.css b/docs/styleguide/styles/30-layouts-card-list-page.css
new file mode 100644
index 0000000..94f8ba1
--- /dev/null
+++ b/docs/styleguide/styles/30-layouts-card-list-page.css
@@ -0,0 +1,186 @@
+/* ========================================================= */
+/* Layouts: Card Listen Seite */
+/* ========================================================= */
+
+.sg-card-list-page {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-card-list-page-drawer {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ width: var(--layout-card-list-drawer-width);
+ max-width: 100%;
+ display: flex;
+ flex-direction: column;
+ transform: translateX(100%);
+ transition: transform 220ms ease;
+ background: var(--surface-card-list-drawer);
+ color: var(--text-card-list-drawer);
+ box-shadow: var(--shadow-overlay);
+ z-index: 1000;
+ overflow-y: auto;
+}
+
+.sg-card-list-page-drawer[data-open="true"] {
+ transform: translateX(0);
+}
+
+.sg-card-list-page-drawer__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+}
+
+.sg-card-list-page-drawer__title {
+ margin: 0;
+ color: inherit;
+}
+
+.sg-card-list-page-drawer__content {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-large);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline)
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+}
+
+.sg-card-list-page > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-card-list-page > .sg-options-row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-card-list-page > .sg-card-list-page__intro-block {
+ margin-top: calc(var(--spacing-large) - 0.5rem);
+}
+
+.sg-card-list-page__intro-block {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-large);
+}
+
+.sg-card-list-page__title-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ width: fit-content;
+ max-width: 100%;
+}
+
+.sg-card-list-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: min(60vw, 100%);
+}
+
+@media (max-width: 767px) {
+ .sg-card-list-page-drawer {
+ display: none;
+ }
+
+ .sg-card-list-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: 100%;
+ }
+}
+
+.sg-card-list-page__object-grid,
+.sg-card-list-page__navigation {
+ width: 100%;
+}
+
+.sg-vsf-drawer-card {
+ --surface-card-header-primary: var(--surface-vsf-drawer-object-card-header);
+ --surface-card: var(--surface-vsf-drawer-object-card-body);
+ --surface-card-body: var(--surface-vsf-drawer-object-card-body);
+ --text-card-header: var(--text-vsf-drawer-object-card-heading);
+ --text-card-body: var(--text-vsf-drawer-object-card-body);
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ align-self: stretch;
+ height: auto;
+}
+
+.sg-vsf-drawer-card__content {
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card .sg-text-layout-pattern__two-column,
+.sg-vsf-drawer-card .sg-text-layout-pattern__column {
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card .sg-text-layout-pattern__two-column {
+ gap: var(--layout-vsf-drawer-object-card-column-gap);
+}
+
+.sg-vsf-drawer-card__actions-segment {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: flex-start;
+ gap: var(--spacing-large);
+ background: var(--surface-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card__actions-segment .sg-interaction-element.sg-button {
+ height: auto;
+ width: 100%;
+}
+
+#vsf-business-model-toggle.sg-interaction-element.sg-button {
+ background: var(--surface-portal-header-tab);
+ color: var(--text-portal-header-tab);
+}
+
+.sg-inline-controls-card {
+ --surface-card-body: var(--surface-card-segment-neutral);
+}
+
+.sg-card-segment.sg-inline-header-row {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+}
+
+.sg-card-segment.sg-inline-controls-row {
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ gap: var(--spacing-small);
+ flex-wrap: nowrap;
+}
+
+.sg-vsf-drawer-object-card__heading {
+ color: var(--text-vsf-drawer-object-card-heading);
+ margin: 0;
+}
+
+.sg-analysis-intro-block {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+}
+
+.sg-analysis-intro-block .sg-heading-h2 {
+ margin: 0;
+}
+
+.sg-analysis-intro-block .sg-text-layout-pattern__sample {
+ margin: 0;
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
diff --git a/docs/styleguide/styles/31-patterns-text-layouts.css b/docs/styleguide/styles/31-patterns-text-layouts.css
new file mode 100644
index 0000000..5a6f365
--- /dev/null
+++ b/docs/styleguide/styles/31-patterns-text-layouts.css
@@ -0,0 +1,79 @@
+/* ========================================================= */
+/* Patterns: Text Layouts */
+/* ========================================================= */
+
+.sg-text-layout-pattern {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+}
+
+.sg-text-layout-pattern__preview-surface {
+ width: 100%;
+ box-sizing: border-box;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ background: var(--surface-text-layout-preview);
+}
+
+.sg-text-layout-pattern__sample {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__sample--full-width {
+ width: 100%;
+}
+
+.sg-text-layout-pattern__sample--sixty-width {
+ width: 60%;
+}
+
+.sg-text-layout-pattern__sample--two-column {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__two-column {
+ width: 100%;
+ min-width: 0;
+ display: grid;
+ grid-template-columns: var(--layout-text-layout-two-column-columns);
+ column-gap: var(--layout-text-layout-column-gap);
+}
+
+.sg-text-layout-pattern__three-column-distributed {
+ width: 100%;
+ min-width: 0;
+ display: grid;
+ grid-template-columns: var(--layout-text-layout-three-column-columns);
+ column-gap: var(--layout-text-layout-column-gap);
+}
+
+.sg-text-layout-pattern__column {
+ margin: 0;
+ min-width: 0;
+}
+
+.sg-text-layout-pattern__three-column-distributed > .sg-body {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__column--align-left {
+ text-align: var(--text-align-text-layout-column-left);
+}
+
+.sg-text-layout-pattern__column--align-center {
+ text-align: var(--text-align-text-layout-column-center);
+}
+
+.sg-text-layout-pattern__column--align-right {
+ text-align: var(--text-align-text-layout-column-right);
+}
+
+@media (max-width: 767px) {
+ .sg-text-layout-pattern__sample--sixty-width,
+ .sg-text-layout-pattern__sample--two-column,
+ .sg-text-layout-pattern__two-column,
+ .sg-text-layout-pattern__three-column-distributed {
+ width: 100%;
+ }
+}
diff --git a/docs/styleguide/styles/32-patterns-card-group-keyboard-nav.css b/docs/styleguide/styles/32-patterns-card-group-keyboard-nav.css
new file mode 100644
index 0000000..3f01f66
--- /dev/null
+++ b/docs/styleguide/styles/32-patterns-card-group-keyboard-nav.css
@@ -0,0 +1,43 @@
+/* ========================================================= */
+/* Patterns: Card Gruppe mit Tastennavigation */
+/* ========================================================= */
+
+.sg-content-block-card-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-content-block-card-group__tabs,
+.sg-content-block-card-group__panels,
+.sg-content-block-card-group__panel,
+.sg-content-block-card-group__card {
+ width: 100%;
+}
+
+.sg-content-block-card-group__panel[hidden] {
+ display: none;
+}
+
+.sg-content-block-card-group__title {
+ color: var(--text-content-block-card-title);
+ background: var(--surface-content-block-card-title);
+}
+
+.sg-content-block-card-group__content {
+ color: var(--text-content-block-card-content);
+ background: var(--surface-content-block-card-content);
+}
+
+.sg-content-block-card-group__content .sg-body {
+ margin: 0;
+}
+
+@media (max-width: 767px) {
+ .sg-content-block-card-group__tabs[role="tablist"] > [role="tab"] {
+ flex: 1 1 auto;
+ min-width: max-content;
+ white-space: nowrap;
+ }
+}
diff --git a/docs/styleguide/styles/33-layouts-vsf-list-detailseite.css b/docs/styleguide/styles/33-layouts-vsf-list-detailseite.css
new file mode 100644
index 0000000..d360a7f
--- /dev/null
+++ b/docs/styleguide/styles/33-layouts-vsf-list-detailseite.css
@@ -0,0 +1,108 @@
+/* ========================================================= */
+/* Layouts: VSF List Detailseite */
+/* ========================================================= */
+
+.sg-vsf-list-detail-page {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-detail-page > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page > .sg-options-row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page > .sg-vsf-list-detail-page__intro-block {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page__intro-block {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-detail-page__intro-block .sg-vsf-list-detail-page__title,
+.sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ color: var(--color-font-light);
+}
+
+.sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: min(60vw, 100%);
+}
+
+.sg-vsf-list-detail-page__content {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__left-column {
+ width: 30%;
+ min-width: 30%;
+}
+
+.sg-vsf-list-detail-page__right-column {
+ width: 70%;
+ min-width: 0;
+}
+
+.sg-vsf-list-detail-page__left-column .sg-group-card {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__left-column .sg-group-card > .sg-card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__notification-card.sg-vsf-list-detail-page__notification-card--hidden {
+ display: none;
+}
+
+.sg-vsf-list-detail-page__meldungen-overlay-pattern {
+ max-width: 100%;
+}
+
+.sg-vsf-list-detail-page__meldungen-overlay-pattern .sg-delete-confirmation-pattern__floating-card {
+ top: calc(var(--spacing-large) * 5);
+ transform: translateX(-50%);
+}
+
+.sg-vsf-list-detail-page__mobile-toggle {
+ display: none;
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: 100%;
+ }
+
+ .sg-vsf-list-detail-page__content {
+ display: block;
+ }
+
+ .sg-vsf-list-detail-page__left-column {
+ width: 100%;
+ min-width: 0;
+ }
+
+ .sg-vsf-list-detail-page__right-column {
+ width: 100%;
+ }
+
+ .sg-vsf-list-detail-page__left-column .sg-group-card,
+ .sg-vsf-list-detail-page__right-column .sg-group-card {
+ margin-bottom: var(--spacing-large);
+ }
+
+ .sg-vsf-list-detail-page__mobile-toggle {
+ display: inline-flex;
+ width: 100%;
+ margin-bottom: var(--spacing-large);
+ }
+}
diff --git a/docs/styleguide/styles/34-layouts-vsf-listen-uebersicht-seite-v2.css b/docs/styleguide/styles/34-layouts-vsf-listen-uebersicht-seite-v2.css
new file mode 100644
index 0000000..8ed26fd
--- /dev/null
+++ b/docs/styleguide/styles/34-layouts-vsf-listen-uebersicht-seite-v2.css
@@ -0,0 +1,55 @@
+/* ========================================================= */
+/* Layouts: VSF Listen Übersicht Seite V2 */
+/* ========================================================= */
+
+.sg-vsf-list-overview-page-v2 {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-overview-page-v2 > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-overview-page-v2 .sg-portal-header-pattern-variant {
+ margin-bottom: 0;
+}
+
+.sg-vsf-list-overview-page-v2 > .sg-vsf-list-overview-page-v2__intro {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-overview-page-v2__content {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-list-overview-page-v2__primary {
+ width: 70%;
+ min-width: 0;
+}
+
+.sg-vsf-list-overview-page-v2__secondary {
+ width: 30%;
+ min-width: 0;
+}
+
+.sg-vsf-list-overview-page-v2__intro .sg-text-layout-pattern__sample--sixty-width {
+ color: var(--color-font-light);
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-list-overview-page-v2__content {
+ display: block;
+ }
+
+ .sg-vsf-list-overview-page-v2__primary,
+ .sg-vsf-list-overview-page-v2__secondary {
+ width: 100%;
+ }
+
+ .sg-vsf-list-overview-page-v2__secondary {
+ margin-top: var(--spacing-large);
+ }
+}
diff --git a/docs/styleguide/styles/40-components-cards.css b/docs/styleguide/styles/40-components-cards.css
new file mode 100644
index 0000000..fce5486
--- /dev/null
+++ b/docs/styleguide/styles/40-components-cards.css
@@ -0,0 +1,238 @@
+/* ========================================================= */
+/* Components: Cards */
+/* ========================================================= */
+
+.sg-card {
+ --layout-card-segment-padding-top: var(--card-segment-padding-vertical);
+ --layout-card-segment-padding-right: var(--card-segment-padding-horizontal);
+ --layout-card-segment-padding-bottom: var(--card-segment-padding-vertical);
+ --layout-card-segment-padding-left: var(--card-segment-padding-horizontal);
+ --layout-card-body-padding-top: var(--layout-card-segment-padding-top);
+ --layout-card-body-padding-right: var(--layout-card-segment-padding-right);
+ --layout-card-body-padding-bottom: var(--layout-card-segment-padding-bottom);
+ --layout-card-body-padding-left: var(--layout-card-segment-padding-left);
+ --layout-card-body-text-margin: 0;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ width: 100%;
+ box-sizing: border-box;
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-card);
+}
+
+.sg-card.sg-card--overlay-host {
+ overflow: visible;
+}
+
+.sg-card > .sg-card-segment:first-child {
+ border-top-left-radius: var(--radius-card);
+ border-top-right-radius: var(--radius-card);
+}
+
+.sg-card > .sg-card-segment:last-child {
+ border-bottom-left-radius: var(--radius-card);
+ border-bottom-right-radius: var(--radius-card);
+}
+
+@media (max-width: 48rem) {
+ :root {
+ --card-segment-padding-horizontal: var(--card-segment-padding-horizontal-mobile);
+ }
+}
+
+.sg-card-segment {
+ display: flex;
+ flex-direction: column;
+ height: auto;
+ justify-content: flex-start;
+ align-items: stretch;
+ align-content: flex-start;
+ padding:
+ var(--layout-card-segment-padding-top)
+ var(--layout-card-segment-padding-right)
+ var(--layout-card-segment-padding-bottom)
+ var(--layout-card-segment-padding-left);
+ gap: var(--layout-card-segment-content-gap);
+}
+
+.sg-card-segment--header {
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--body {
+ justify-content: var(--layout-card-body-content-justify);
+ padding:
+ var(--layout-card-body-padding-top)
+ var(--layout-card-body-padding-right)
+ var(--layout-card-body-padding-bottom)
+ var(--layout-card-body-padding-left);
+ color: var(--text-card-body);
+ background: var(--surface-card-body);
+}
+
+.sg-card-segment--body > .sg-body {
+ margin: var(--layout-card-body-text-margin, 0);
+}
+
+.sg-card-segment--body.sg-object-card__content > .sg-body.sg-company-card__summary {
+ margin: var(--layout-company-card-analysis-gap-after-moat) 0 0 0;
+}
+
+.sg-card-segment--darkblue {
+ background: var(--surface-card-header-primary);
+}
+
+.sg-card-segment--darkgreen {
+ background: var(--surface-card-header-alternative);
+}
+
+.sg-card-segment--darkbrown {
+ background: var(--surface-card-header-muted);
+}
+
+.sg-card-segment--signal-red {
+ background: var(--color-signal-red);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--signal-green {
+ background: var(--color-signal-green);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--signal-yellow {
+ background: var(--color-signal-yellow);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--gray {
+ background: var(--surface-card-segment-neutral);
+}
+
+.sg-card-segment--white {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card.sg-card--notification-white {
+ --text-card-header: var(--text-card-body);
+}
+
+.sg-card--content-card {
+ --surface-card-header-primary: var(--surface-content-block-card-title);
+ --surface-card-body: var(--surface-content-block-card-content);
+ --text-card-header: var(--text-content-block-card-title);
+ --text-card-body: var(--text-content-block-card-content);
+}
+
+.sg-card-segment + .sg-card-segment {
+ box-shadow: inset 0 1px 0 var(--divider-card-segment);
+}
+
+.sg-card-segment--darkbrown + .sg-card-segment--body {
+ box-shadow: none;
+}
+
+.sg-card-segment.sg-object-card__header {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.sg-card-segment--body.sg-object-card__content {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card-segment--body.sg-object-card__actions-segment {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card-segment.sg-vsf-drawer-card__actions-segment {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--spacing-large);
+}
+
+.sg-group-card {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+ box-sizing: border-box;
+ padding: var(--spacing-small);
+ border-radius: var(--radius-card);
+ background: var(--surface-card-group);
+}
+
+.sg-group-card > .sg-card {
+ flex: 1 1 calc(50% - var(--spacing-small));
+ width: calc(50% - var(--spacing-small));
+}
+
+.sg-group-card--margin-after-large {
+ margin-bottom: var(--spacing-large);
+}
+
+.sg-group-card__header-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+ width: 100%;
+ margin-bottom: var(--spacing-small);
+}
+
+.sg-group-card__heading {
+ flex: 0 0 100%;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: var(--spacing-small);
+ margin-left: var(--card-segment-padding-horizontal);
+}
+
+.sg-group-card__header-row .sg-group-card__heading {
+ flex: 1 1 auto;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: 0;
+ margin-left: var(--card-segment-padding-horizontal);
+}
+
+.sg-group-card__header-row .sg-sandwich-menu-wrap {
+ margin-right: var(--card-segment-padding-horizontal);
+}
+
+.sg-page-cards .sg-preview-area {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.sg-page-cards .sg-preview-area > .sg-card,
+.sg-page-cards .sg-preview-area > .sg-transparent-card {
+ width: 100%;
+ max-width: none;
+}
+
+.sg-page-cards .sg-group-card > .sg-card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-transparent-card {
+ color: var(--text-card-transparent);
+ background: var(--surface-card-transparent);
+ padding:
+ 0
+ var(--card-segment-padding-horizontal)
+ 0
+ var(--card-segment-padding-horizontal);
+}
+
+.sg-transparent-card p {
+ margin: 0;
+ color: var(--text-card-transparent);
+}
diff --git a/docs/styleguide/styles/41-components-charts.css b/docs/styleguide/styles/41-components-charts.css
new file mode 100644
index 0000000..62dafa7
--- /dev/null
+++ b/docs/styleguide/styles/41-components-charts.css
@@ -0,0 +1,273 @@
+/* ========================================================= */
+/* Components: Charts */
+/* ========================================================= */
+
+.sg-score-bar-list {
+ display: grid;
+ grid-template-columns: var(--layout-score-bar-item-columns);
+ column-gap: var(--layout-score-bar-item-gap);
+ row-gap: var(--spacing-small);
+ align-items: center;
+ width: 100%;
+}
+
+.sg-score-bar-item {
+ display: contents;
+}
+
+.sg-score-bar-list--single-score {
+ --layout-score-bar-item-columns: var(--layout-score-bar-item-single-score-columns);
+}
+
+.sg-score-state--positive,
+.sg-score-state--neutral,
+.sg-score-state--negative {
+ margin: 0;
+ justify-self: end;
+ text-align: right;
+}
+
+.sg-score-state--positive {
+ color: var(--text-score-state-positive);
+}
+
+.sg-score-state--neutral {
+ color: var(--text-score-state-neutral);
+}
+
+.sg-score-state--negative {
+ color: var(--text-score-state-negative);
+}
+
+.sg-score-bar-label {
+ margin: 0;
+ color: var(--text-chart-default);
+}
+
+.sg-score-bar {
+ position: relative;
+ height: var(--score-bar-height);
+ overflow: visible;
+ border-radius: var(--radius-graph-bar);
+ background: var(--surface-score-bar-track);
+}
+
+.sg-score-bar--marker-mid {
+ --score-marker-position: 50%;
+}
+
+.sg-score-bar__value {
+ height: 100%;
+ border-radius: var(--radius-graph-bar);
+}
+
+.sg-score-bar__value--w96 { width: 96%; }
+.sg-score-bar__value--w64 { width: 64%; }
+.sg-score-bar__value--w35 { width: 35%; }
+
+.sg-score-bar__value--positive { background: var(--chart-value-positive); }
+.sg-score-bar__value--neutral { background: var(--chart-value-neutral); }
+.sg-score-bar__value--negative { background: var(--chart-value-negative); }
+
+.sg-score-bar__median-marker {
+ position: absolute;
+ top: 50%;
+ left: var(--score-marker-position);
+ width: var(--score-marker-width);
+ height: var(--score-marker-height);
+ border-radius: 0;
+ background: var(--chart-marker-line);
+ transform: translate(-50%, -50%);
+}
+
+.sg-score-bar__median-marker--outline {
+ border: var(--chart-grid-line-width) solid var(--chart-marker-line);
+ background: transparent;
+}
+
+.sg-chart-preview-area {
+ min-width: var(--layout-object-card-min-width);
+ max-width: var(--layout-object-card-max-width);
+ width: 100%;
+}
+
+.sg-bar-chart {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0;
+ background: var(--surface-chart-area);
+ color: var(--text-chart-default);
+}
+
+.sg-chart-frame {
+ display: grid;
+ grid-template-columns: min-content 1fr;
+ column-gap: var(--chart-axis-label-gap);
+ height: calc(var(--chart-height-bar) * 0.7);
+}
+
+.sg-chart-y-labels {
+ position: relative;
+ width: min-content;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ color: var(--text-chart-default);
+ text-align: right;
+ pointer-events: none;
+}
+
+.sg-chart-y-labels li {
+ position: absolute;
+ white-space: nowrap;
+ right: 0;
+ top: var(--chart-label-position);
+ transform: translateY(-50%);
+}
+
+.sg-chart-x-labels {
+ display: grid;
+ grid-template-columns: repeat(10, 1fr);
+ margin: var(--spacing-small) 0 var(--spacing-large) 0;
+ padding: 0 0 0 calc(var(--interaction-height) + var(--chart-axis-label-gap));
+ list-style: none;
+ color: var(--text-chart-default);
+ text-align: center;
+}
+
+.sg-chart-x-labels--line {
+ position: relative;
+ display: block;
+ height: var(--spacing-large);
+ grid-template-columns: none;
+}
+
+.sg-chart-x-labels--line li {
+ position: absolute;
+ left: var(--chart-label-position);
+ transform: translateX(-50%);
+}
+
+.sg-chart-y-labels li,
+.sg-chart-x-labels li {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-bar-chart__svg,
+.sg-line-chart__svg {
+ display: block;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+}
+
+.sg-bar-chart__grid-line,
+.sg-line-chart__grid-line {
+ stroke: var(--chart-grid-line);
+ stroke-width: var(--chart-grid-line-width);
+}
+
+.sg-bar-chart__axis-line,
+.sg-line-chart__axis-line {
+ stroke: var(--chart-axis-line);
+ stroke-width: var(--chart-grid-line-width);
+}
+
+.sg-bar-chart__bar {
+ rx: var(--radius-graph-bar);
+ ry: var(--radius-graph-bar);
+}
+
+.sg-bar-chart__bar--value { fill: var(--chart-value-primary); }
+.sg-bar-chart__bar--median { fill: var(--chart-value-reference); }
+.sg-bar-chart__label,
+.sg-line-chart__label { display: none; }
+
+.sg-bar-chart__legend,
+.sg-line-chart__legend {
+ display: flex;
+ gap: var(--spacing-large);
+ padding-left: 0;
+ margin-left: 0;
+}
+
+.sg-bar-chart__legend {
+ flex-wrap: wrap;
+ margin-top: 0;
+ color: var(--text-chart-default);
+}
+
+.sg-line-chart__legend {
+ margin-top: var(--spacing-large);
+}
+
+.sg-bar-chart__legend-item,
+.sg-line-chart__legend-item {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ color: var(--text-chart-default);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-bar-chart__legend-swatch {
+ display: inline-block;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ border-radius: var(--radius-interaction);
+}
+
+.sg-bar-chart__legend-swatch--value { background: var(--chart-value-primary); }
+.sg-bar-chart__legend-swatch--median { background: var(--chart-value-reference); }
+
+.sg-line-chart {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0;
+ background: var(--surface-chart-area);
+ color: var(--text-chart-default);
+}
+
+.sg-chart-frame--line {
+ height: calc(var(--chart-height-line) * 0.7);
+}
+
+.sg-line-chart__line {
+ fill: none;
+ stroke: var(--chart-value-primary);
+ stroke-width: var(--chart-line-width);
+ stroke-linecap: round;
+ stroke-linejoin: round;
+}
+
+.sg-line-chart__median-line {
+ fill: none;
+ stroke: var(--chart-median-line);
+ stroke-width: var(--chart-grid-line-width);
+ stroke-dasharray: var(--sandwich-line-height) var(--sandwich-line-height);
+}
+
+.sg-line-chart__legend-line {
+ display: inline-block;
+ width: var(--spacing-large);
+ height: var(--chart-line-width);
+ background: var(--chart-value-primary);
+}
+
+.sg-line-chart__legend-line--median {
+ height: var(--chart-grid-line-width);
+ background: repeating-linear-gradient(
+ to right,
+ var(--chart-median-line) 0,
+ var(--chart-median-line) var(--sandwich-line-height),
+ transparent var(--sandwich-line-height),
+ transparent calc(var(--sandwich-line-height) * 2)
+ );
+}
diff --git a/docs/styleguide/styles/42-components-data-display.css b/docs/styleguide/styles/42-components-data-display.css
new file mode 100644
index 0000000..bf6af2a
--- /dev/null
+++ b/docs/styleguide/styles/42-components-data-display.css
@@ -0,0 +1,69 @@
+/* ========================================================= */
+/* Components: Data Display */
+/* ========================================================= */
+
+.sg-data-table {
+ --data-table-column-count: 3;
+ width: 100%;
+ border-collapse: collapse;
+ background: var(--surface-data-table);
+ table-layout: fixed;
+}
+
+.sg-data-table th,
+.sg-data-table td {
+ width: calc(100% / var(--data-table-column-count));
+ padding: 0 0 var(--spacing-small) 0;
+ border: var(--border-none);
+ text-align: left;
+ vertical-align: top;
+}
+
+.sg-data-table[data-component="data-columns"] {
+ --data-table-column-count: 2;
+}
+
+.sg-data-table th {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--text-data-table-default);
+ background: var(--surface-data-table-header);
+}
+
+.sg-data-table td {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--text-data-table-default);
+ background: var(--surface-data-table-cell);
+}
+
+.sg-data-table__label,
+.sg-data-table__value {
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-data-table__value--warning {
+ color: var(--text-data-table-warning);
+}
+
+.sg-data-table__help-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ color: var(--text-data-table-help-icon);
+ background: var(--surface-data-table-help-icon);
+}
+
diff --git a/docs/styleguide/styles/43-components-typography.css b/docs/styleguide/styles/43-components-typography.css
new file mode 100644
index 0000000..c8f8855
--- /dev/null
+++ b/docs/styleguide/styles/43-components-typography.css
@@ -0,0 +1,17 @@
+/* ========================================================= */
+/* Components: Typography */
+/* ========================================================= */
+
+.sg-typography-preview {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ color: var(--text-typography-preview);
+}
+
+.sg-typography-preview h1,
+.sg-typography-preview h2,
+.sg-typography-preview p {
+ color: var(--text-typography-preview);
+ margin-top: 0;
+}
diff --git a/public/assets/styleguide.upstream.css b/public/assets/styleguide.upstream.css
new file mode 100644
index 0000000..c64b7ff
--- /dev/null
+++ b/public/assets/styleguide.upstream.css
@@ -0,0 +1,3899 @@
+/* ========================================================= */
+/* Foundations */
+/* ========================================================= */
+
+:root {
+ /* Colors */
+ --color-darkblue: #4661A9;
+ --color-midblue: #657FBA;
+ --color-darkgreen: #4D646E;
+ --color-darkbrown: #665F57;
+ --color-light-grey: #E2E5E9;
+ --color-medium-grey: #CDCFD4;
+ --color-dark-grey: #7B879D;
+ --color-black: #000000;
+ --color-white: #FFFFFF;
+ --color-process-inactive: #FFAE79;
+ --color-signal-green: #009101;
+ --color-signal-yellow: #9C7A00;
+ --color-signal-red: #9B3B2F;
+ --color-font-dark: #414959;
+ --color-font-light: #FFFFFF;
+ --color-font-hyperlink: #FF6900;
+ --color-background-purple: #373C4A;
+ --color-background-purple-light: #656C7D;
+ --color-transparent: transparent;
+
+ /* Semantic component tokens: Cards */
+ --surface-card: var(--color-light-grey);
+ --surface-card-body: var(--color-light-grey);
+ --surface-card-segment-neutral: var(--color-light-grey);
+ --surface-card-group: var(--color-background-purple-light);
+ --surface-card-transparent: var(--color-transparent);
+ --surface-card-header-primary: var(--color-darkblue);
+ --surface-card-header-alternative: var(--color-darkgreen);
+ --surface-card-header-muted: var(--color-darkbrown);
+ --divider-card-segment: var(--color-white);
+ --text-card-header: var(--color-font-light);
+ --text-card-body: var(--color-font-dark);
+ --text-card-transparent: var(--color-font-light);
+ --layout-card-body-content-justify: flex-start;
+ --layout-card-segment-content-gap: var(--spacing-small);
+
+ /* Semantic component tokens: Interactive elements */
+ --surface-form-preview: var(--color-light-grey);
+ --surface-control-default: var(--color-white);
+ --surface-control-active: var(--color-white);
+ --surface-control-inactive: var(--color-white);
+ --surface-control-disabled: var(--color-white);
+ --surface-button-active: var(--color-medium-grey);
+ --surface-button-process: var(--color-font-hyperlink);
+ --surface-button-process-inactive: var(--color-process-inactive);
+ --surface-button-inactive: var(--color-light-grey);
+ --surface-tab-selected: var(--color-dark-grey);
+ --surface-tab-unselected: var(--color-white);
+ --surface-tab-compact-background: var(--surface-form-preview);
+ --surface-tab-compact-unselected: var(--color-medium-grey);
+ --surface-input-clear: var(--color-medium-grey);
+ --surface-toggle-track: var(--color-medium-grey);
+ --surface-toggle-handle: var(--color-darkblue);
+ --surface-menu-panel-portal: var(--color-light-grey);
+ --surface-help-icon: var(--color-medium-grey);
+ --surface-help-panel: var(--color-light-grey);
+ --surface-pulldown-panel: var(--color-light-grey);
+ --surface-activatable-remove: var(--surface-control-default);
+ --surface-slider-track: var(--color-medium-grey);
+ --surface-slider-progress: var(--color-dark-grey);
+ --surface-slider-thumb: var(--color-dark-grey);
+ --surface-checkbox-default: var(--color-white);
+ --surface-checkbox-on-context: var(--color-white);
+ --surface-radio-default: var(--color-white);
+ --layout-pulldown-panel-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-option-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-chevron-offset: var(--compact-interaction-padding-horizontal);
+ --layout-tab-navigation-large-padding-inline: var(--interaction-padding-horizontal);
+ --layout-pulldown-chevron-reserved-space: var(--spacing-large);
+ --layout-pulldown-panel-form-mobile-width: 90%;
+ --layer-pulldown-panel: var(--dimension-layer-pulldown-panel);
+ --layout-multiselect-pulldown-panel-desktop-width: var(--dimension-multiselect-pulldown-panel-desktop-width);
+ --layout-multiselect-pulldown-panel-mobile-width: var(--dimension-multiselect-pulldown-panel-mobile-width);
+ --layout-multiselect-pulldown-label-column-width-fallback: max-content;
+ --layout-input-label-width: var(--dimension-input-label-width);
+ --layout-input-field-desktop-width: var(--dimension-input-field-desktop-width);
+ --layout-input-field-max-width: var(--dimension-input-field-max-width);
+ --layout-form-input-field-max-width: calc(var(--layout-input-field-max-width) + 100px);
+ --layout-search-field-width: var(--dimension-search-field-width);
+ --layout-mode-toggle-local-height: var(--compact-interaction-height);
+ --layout-mode-toggle-local-width-factor: 3;
+ --layout-mode-toggle-width: calc(var(--interaction-height) * 3.5);
+ --layout-help-panel-width: calc(var(--interaction-height) * 8);
+ --text-control-default: var(--color-font-dark);
+ --text-control-disabled: var(--color-dark-grey);
+ --text-button-process: var(--color-font-light);
+ --text-tab-selected: var(--color-font-light);
+ --text-tab-unselected: var(--color-dark-grey);
+ --text-toggle-label-active: var(--color-font-light);
+ --text-menu-link-portal: var(--color-font-dark);
+ --text-help-icon: var(--color-font-dark);
+ --text-help-panel: var(--color-font-dark);
+ --text-activatable-remove: var(--text-control-default);
+ --text-hyperlink: var(--color-font-hyperlink);
+ --icon-pulldown-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M2 2l4 4 4-4' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'/%3E%3C/svg%3E");
+ --icon-sandwich-line-portal: var(--color-font-dark);
+ --icon-radio-mark: var(--color-font-dark);
+
+ /* Semantic component tokens: Charts */
+ --surface-score-bar-track: var(--color-medium-grey);
+ --surface-chart-area: var(--color-light-grey);
+ --chart-value-positive: var(--color-signal-green);
+ --chart-value-neutral: var(--color-signal-yellow);
+ --chart-value-negative: var(--color-signal-red);
+ --chart-value-primary: var(--color-darkblue);
+ --chart-value-reference: var(--color-medium-grey);
+ --chart-grid-line: var(--color-medium-grey);
+ --chart-axis-line: var(--color-font-dark);
+ --chart-marker-line: var(--color-font-dark);
+ --chart-median-line: var(--color-font-dark);
+ --text-chart-default: var(--color-font-dark);
+ --text-score-state-positive: var(--chart-value-positive);
+ --layout-score-bar-item-columns: max-content 1fr;
+ --layout-score-bar-item-gap: var(--spacing-large);
+ --layout-score-bar-item-single-score-columns: max-content 1fr max-content;
+
+ /* Semantic component tokens: Data display */
+ --surface-data-table: var(--color-light-grey);
+ --surface-data-table-header: var(--color-light-grey);
+ --surface-data-table-cell: var(--color-light-grey);
+ --surface-data-table-help-icon: var(--color-medium-grey);
+
+ --text-data-table-default: var(--color-font-dark);
+ --text-data-table-warning: var(--color-signal-yellow);
+ --text-data-table-help-icon: var(--color-font-dark);
+
+ /* Semantic component tokens: Typography */
+ --text-typography-preview: var(--color-font-light);
+ --layout-preview-align-items: flex-start;
+
+ /* Semantic pattern tokens: Portal header */
+ --surface-portal-header: var(--color-darkblue);
+ --surface-portal-header-tab: var(--color-midblue);
+ --surface-portal-header-tab-active: var(--color-light-grey);
+ --text-portal-header-brand: var(--color-font-light);
+ --font-size-portal-header-brand: calc(var(--font-size-brand) * 1.1);
+ --text-portal-header-tab: var(--color-font-light);
+ --text-portal-header-tab-active: var(--color-font-dark);
+ --layout-page-content-inset-inline: var(--card-segment-padding-horizontal);
+ --surface-options-row: var(--color-light-grey);
+ --surface-options-row-control: var(--surface-control-default);
+ --surface-options-row-control-selected: var(--surface-control-active);
+ --surface-options-row-input-clear: var(--surface-input-clear);
+ --surface-options-row-toggle-track: var(--surface-toggle-track);
+ --surface-options-row-toggle-handle: var(--surface-toggle-handle);
+ --surface-options-row-help-icon: var(--surface-help-icon);
+ --surface-options-row-help-panel: var(--surface-help-panel);
+ --divider-options-row-mobile: var(--color-white);
+ --text-options-row-default: var(--text-control-default);
+ --text-options-row-placeholder: var(--text-control-disabled);
+ --text-options-row-help-icon: var(--color-font-light);
+ --text-options-row-help-panel: var(--text-help-panel);
+ --text-options-row-description: var(--color-font-light);
+ --layout-options-row-margin-top: var(--spacing-small);
+ --layout-options-row-main-gap: var(--spacing-large);
+ --layout-options-row-group-gap: var(--spacing-small);
+ --layout-options-row-mode-toggle-width: var(--dimension-options-row-mode-toggle-width);
+ --layout-options-row-help-panel-width: var(--dimension-options-row-help-panel-width);
+ --layout-object-card-min-width: var(--dimension-object-card-min-width);
+ --layout-object-card-max-width: var(--dimension-object-card-max-width);
+ --layout-object-card-height: var(--dimension-object-card-height);
+ --layout-object-card-content-grow: var(--dimension-object-card-content-grow);
+ --layout-object-card-mobile-width: var(--dimension-object-card-mobile-width);
+ --layout-object-card-mobile-height: var(--dimension-object-card-mobile-height);
+ --layout-object-card-desktop-breakpoint: var(--dimension-object-card-desktop-breakpoint);
+ --dimension-notifications-card-min-width: 445px;
+ --layout-notifications-card-flex-basis: var(--dimension-notifications-card-min-width);
+ --layout-notifications-card-min-width: var(--dimension-notifications-card-min-width);
+ --layout-notifications-card-max-width: var(--layout-object-card-max-width);
+ --dimension-notifications-text-segment-fixed-height: 150px;
+ --dimension-notifications-text-segment-fixed-height-small: 60px;
+ --layout-notifications-text-segment-fixed-height: var(--dimension-notifications-text-segment-fixed-height);
+ --layout-notifications-text-segment-fixed-height-small: var(--dimension-notifications-text-segment-fixed-height-small);
+ --layout-object-group-card-min-width: var(--dimension-object-group-card-min-width);
+ --layout-object-group-card-max-width: var(--dimension-object-group-card-max-width);
+ --surface-object-card-lower-segment: var(--color-white);
+ --text-company-card-data-negative: var(--chart-value-negative);
+ --text-company-card-moat-neutral: var(--chart-value-neutral);
+ --layout-company-card-analysis-gap-after-moat: var(--spacing-large);
+ --surface-navigation-card: var(--color-white);
+ --surface-navigation-card-body: var(--color-white);
+ --surface-content-block-card-title: var(--color-light-grey);
+ --surface-content-block-card-content: var(--color-white);
+ --layout-content-cards-group-gap: var(--spacing-small);
+ --surface-card-list-drawer: var(--color-background-purple);
+ --text-content-block-card-title: var(--color-font-dark);
+ --text-content-block-card-content: var(--color-font-dark);
+ --text-card-list-drawer: var(--color-font-dark);
+ --layout-card-list-drawer-width: var(--dimension-card-list-drawer-width);
+ --surface-vsf-drawer-object-card-header: var(--color-darkblue);
+ --surface-vsf-drawer-object-card-body: var(--color-darkblue);
+ --text-vsf-drawer-object-card-heading: var(--color-font-light);
+ --text-vsf-drawer-object-card-body: var(--color-font-light);
+ --layout-vsf-drawer-object-card-column-gap: var(--spacing-large);
+ --text-vsf-list-card-limit-note: var(--color-signal-red);
+ --layout-vsf-list-card-summary-offset-block-start: var(--layout-company-card-analysis-gap-after-moat);
+ --layout-vsf-list-card-delete-confirmation-target-max-width: var(--layout-object-group-card-max-width);
+ --surface-text-layout-preview: var(--color-light-grey);
+ --layout-text-layout-column-gap: var(--spacing-large);
+ --layout-text-layout-two-column-columns: repeat(2, minmax(0, 1fr));
+ --layout-text-layout-three-column-columns: repeat(3, minmax(0, 1fr));
+ --text-align-text-layout-column-left: left;
+ --text-align-text-layout-column-center: center;
+ --text-align-text-layout-column-right: right;
+ --surface-delete-confirmation-overlay: var(--color-light-grey);
+ --surface-delete-confirmation-target-dim-overlay: var(--color-black);
+ --text-delete-confirmation-overlay: var(--color-font-dark);
+ --layout-delete-confirmation-target-max-width: 35rem;
+ --layout-delete-confirmation-overlay-width-factor: 0.8;
+ --layout-delete-confirmation-overlay-offset-block-start: var(--spacing-large);
+ --layout-delete-confirmation-content-gap: var(--spacing-small);
+ --layout-delete-confirmation-actions-gap: var(--spacing-small);
+ --layout-delete-confirmation-actions-offset-block-start: var(--spacing-large);
+ --layout-delete-confirmation-label-width: var(--dimension-input-label-width);
+ --layout-delete-confirmation-target-dim-opacity: 0.5;
+ --layer-delete-confirmation-overlay: 50;
+
+ /* Typography */
+ --font-family-base: "Open Sans", sans-serif;
+ --font-size-base: 1rem;
+ --font-size-small: 0.8rem;
+ --font-size-brand: 1.6rem;
+ --font-size-h1: 1.5rem;
+ --font-size-h2: 1.25rem;
+ --font-weight-regular: 400;
+ --font-weight-semibold: 600;
+ --line-height-base: 1.5;
+
+ /* Spacing */
+ --spacing-small: 0.3rem;
+ --spacing-large: 1rem;
+ --card-segment-padding-vertical: 0.75rem;
+ --card-segment-padding-horizontal: 1rem;
+ --card-segment-padding-horizontal-mobile: 0.5rem;
+ --interaction-padding-vertical: 0.25rem;
+ --interaction-padding-horizontal: 1rem;
+
+ /* Dimensions */
+ --interaction-height: 2rem;
+ --compact-interaction-height: 1.5rem;
+ --compact-interaction-padding-vertical: 0.15rem;
+ --compact-interaction-padding-horizontal: 0.75rem;
+ --small-interaction-element-size: 1.25rem;
+ --disabled-opacity: 0.7;
+ --sandwich-line-width: 1.25rem;
+ --sandwich-line-height: 4px;
+ --sandwich-line-gap: 3px;
+ --score-bar-height: 1rem;
+ --score-marker-width: 6px;
+ --score-marker-height: calc(var(--score-bar-height) + 2px);
+ --chart-height-bar: 24rem;
+ --chart-height-line: 18rem;
+ --chart-axis-label-column-width: 4rem;
+ --chart-axis-label-gap: 5px;
+ --chart-grid-line-width: 1px;
+ --chart-line-width: 2px;
+ --chart-label-position-default: 50%;
+ --dimension-object-card-min-width: 395px;
+ --dimension-object-card-max-width: 600px;
+ --dimension-object-card-height: 600px;
+ --dimension-object-card-content-grow: 1;
+ --dimension-object-card-mobile-width: 100%;
+ --dimension-object-card-mobile-height: auto;
+ --dimension-object-card-desktop-breakpoint: 768px;
+ --dimension-object-group-card-min-width: 550px;
+ --dimension-object-group-card-max-width: 800px;
+ --dimension-input-label-width: 9rem;
+ --dimension-input-field-desktop-width: 400px;
+ --dimension-input-field-max-width: 600px;
+ --dimension-search-field-width: 15.3rem;
+ --dimension-layer-pulldown-panel: 40;
+ --dimension-multiselect-pulldown-panel-desktop-width: 500px;
+ --dimension-multiselect-pulldown-panel-mobile-width: 80vw;
+ --dimension-options-row-mode-toggle-width: 7rem;
+ --dimension-options-row-help-panel-width: 16rem;
+ --dimension-card-list-drawer-width: 40%;
+ --dimension-slider-track-height: 6px;
+ --dimension-slider-thumb-size: 22px;
+ --dimension-slider-thumb-offset-top: -8px;
+ --radius-slider-track: 999px;
+
+ /* Radius */
+ --radius-card: 8px;
+ --radius-graph-bar: 2px;
+ --radius-interaction: 4px;
+
+ /* Shadows */
+ --shadow-none: none;
+ --shadow-overlay: 0 10px 24px rgba(0, 0, 0, 0.22);
+ --shadow-interaction-inset: none;
+
+ /* Borders */
+ --border-none: none;
+ --border-control: none;
+
+ /* Runtime defaults */
+ --layout-object-card-shared-width: auto;
+ --sg-slider-progress: 0%;
+ --chart-label-position: var(--chart-label-position-default);
+}
+
+:root {
+ --color-darkblue: #354A52;
+ --font-family-base: "Avenir", sans-serif;
+}
+
+/* ========================================================= */
+/* Base */
+/* ========================================================= */
+
+body {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--color-font-dark);
+ background: var(--color-background-purple);
+ margin: 0;
+ padding: var(--spacing-small);
+}
+
+@media (max-width: 48rem) {
+ :root {
+ --layout-tab-navigation-large-padding-inline: 0.7rem;
+ }
+
+ body {
+ padding: var(--spacing-small);
+ }
+}
+
+section {
+ margin-bottom: var(--spacing-large);
+}
+
+section + section {
+ margin-top: var(--spacing-large);
+}
+
+.sg-main-heading {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-brand);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--color-font-light);
+}
+
+.sg-sub-heading {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+}
+
+.sg-text-on-dark {
+ color: var(--color-font-light);
+}
+
+.sg-brand-title {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-brand);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-heading-h1 {
+ margin: 0 0 calc(var(--spacing-large) - 0.5rem) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-h1);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-heading-h2 {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-h2);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-preview-label {
+ margin: 0 0 var(--spacing-small) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--color-font-light);
+}
+
+.sg-preview-area {
+ display: inline-flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: var(--layout-preview-align-items);
+ padding: 0;
+ border-radius: 0;
+ background: transparent;
+}
+
+
+/* ========================================================= */
+/* Typography helpers */
+/* ========================================================= */
+
+.sg-body,
+.sg-strong,
+.sg-section-title,
+.sg-bar-label,
+.sg-table-label,
+.sg-table-value {
+ font-family: var(--font-family-base);
+ line-height: var(--line-height-base);
+}
+
+.sg-body,
+.sg-section-title {
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+}
+
+.sg-body {
+ margin: 0;
+}
+
+.sg-body:not(:last-child) {
+ margin: 0 0 var(--spacing-large) 0;
+}
+
+.sg-strong,
+.sg-bar-label {
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-table-label {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+}
+
+.sg-table-value {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-index a {
+ color: var(--color-font-hyperlink);
+}
+
+.sg-index .sg-sub-heading {
+ color: var(--color-font-light);
+}
+
+.sg-foundation-table {
+ width: 100%;
+ margin-bottom: var(--spacing-large);
+ color: var(--color-font-light);
+ border: 1px solid var(--color-white);
+}
+
+.sg-foundation-table th,
+.sg-foundation-table td {
+ color: var(--color-font-light);
+ border: 1px solid var(--color-white);
+ vertical-align: top;
+}
+
+.sg-section-h2,
+.sg-section-h3 {
+ margin: 0 0 var(--spacing-small) 0;
+ color: var(--color-font-light);
+}
+
+/* ========================================================= */
+/* Components: Interactive Elements */
+/* ========================================================= */
+
+
+
+ .sg-component-row {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-component-column {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ }
+
+ /*
+ Form preview surface only:
+ All form elements in this component are intentionally shown on the form-area background.
+ This wrapper provides only that evaluation background and must not be implemented as part of the form control itself.
+ The current preview background uses light-grey according to the style foundations.
+ */
+ .sg-form-preview-area {
+ display: inline-flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ background: var(--surface-form-preview);
+ }
+
+ .sg-pulldown-demo {
+ position: relative;
+ display: inline-flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ }
+
+
+ .sg-state-example {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 6) auto;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-state-example__label {
+ margin: 0;
+ color: var(--text-control-default);
+ }
+
+ .sg-activatable-control {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-activatable-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-interaction-element {
+ box-sizing: border-box;
+ height: var(--interaction-height);
+ padding:
+ var(--interaction-padding-vertical)
+ var(--interaction-padding-horizontal);
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ background: var(--surface-control-default);
+ }
+
+ .sg-form-active {
+ background: var(--surface-control-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-form-inactive-selectable {
+ background: var(--surface-control-inactive);
+ color: var(--text-control-default);
+ }
+
+ .sg-form-disabled {
+ background: var(--surface-control-disabled);
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-interaction-element:focus,
+ .sg-interaction-element:focus-visible {
+ outline: none;
+ }
+
+ .sg-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: var(--font-weight-semibold);
+ cursor: pointer;
+ text-decoration: none;
+ }
+
+ .sg-button--active {
+ background: var(--surface-button-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-button--process {
+ background: var(--surface-button-process);
+ color: var(--text-button-process);
+ }
+
+ .sg-button--process-inactive {
+ background: var(--surface-button-process-inactive);
+ color: var(--text-button-process);
+ }
+
+ .sg-button--inactive {
+ background: var(--surface-button-active);
+ color: var(--text-control-disabled);
+ }
+
+ .sg-button:disabled,
+ .sg-button--disabled {
+ cursor: not-allowed;
+ color: var(--text-control-disabled);
+ }
+
+ .sg-button--process-inactive:disabled {
+ color: var(--text-button-process);
+ }
+
+ .sg-tab-button-group {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-tab-button-group[data-component-size="compact"] {
+ background: var(--surface-tab-compact-background);
+ }
+
+ .sg-tab-button-group[data-component-context="content"] {
+ background: var(--surface-tab-compact-background);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button {
+ padding-inline: var(--layout-tab-navigation-large-padding-inline);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button[aria-selected="true"] {
+ background: var(--surface-tab-unselected);
+ color: var(--text-tab-unselected);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-selected);
+ color: var(--text-tab-selected);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"][data-component-context="content"] .sg-tab-button[aria-selected="true"] {
+ background: var(--surface-control-default);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"][data-component-context="content"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-compact-unselected);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button-group[data-component-size="compact"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-compact-unselected);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button--compact {
+ height: var(--compact-interaction-height);
+ padding:
+ var(--compact-interaction-padding-vertical)
+ var(--compact-interaction-padding-horizontal);
+ font-size: var(--font-size-small);
+ }
+
+ .sg-pulldown {
+ font-weight: var(--font-weight-regular);
+ appearance: none;
+ padding-left: var(--layout-pulldown-padding-inline);
+ padding-right: calc(
+ var(--layout-pulldown-chevron-offset)
+ + var(--layout-pulldown-chevron-reserved-space)
+ );
+ background-image: var(--icon-pulldown-chevron);
+ background-position: right var(--layout-pulldown-chevron-offset) center;
+ background-size: calc(var(--interaction-height) * 0.375) calc(var(--interaction-height) * 0.25);
+ background-repeat: no-repeat;
+ }
+
+ .sg-pulldown-demo__trigger {
+ display: block;
+ width: 100%;
+ min-width: 0;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .sg-pulldown-demo[data-component-context="form"],
+ .sg-pulldown-demo[data-component-context="overlay"] {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown-demo[data-component-context="form"] .sg-pulldown-demo__trigger,
+ .sg-pulldown-demo[data-component-context="overlay"] .sg-pulldown-demo__trigger {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown--selected {
+ background-color: var(--surface-control-active);
+ color: var(--text-control-default);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .sg-pulldown--inactive-selectable {
+ background-color: var(--surface-control-inactive);
+ color: var(--text-control-default);
+ }
+
+ .sg-pulldown-demo[data-activatable="true"] .sg-pulldown-demo__trigger.sg-pulldown--inactive-selectable {
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-labeled-input-row .sg-pulldown-demo,
+ .sg-labeled-input-row .sg-pulldown-demo .sg-pulldown {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown--disabled {
+ background-color: var(--surface-control-disabled);
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-input-single-line {
+ font-weight: var(--font-weight-regular);
+ color: var(--text-control-default);
+ -webkit-appearance: none;
+ appearance: none;
+ }
+
+ .sg-input-single-line::placeholder {
+ color: var(--text-control-disabled);
+ opacity: 1;
+ }
+
+ .sg-input-single-line--inactive-selectable {
+ color: var(--text-control-default);
+ }
+
+ .sg-input-single-line--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-input-single-line-wrap {
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ }
+
+ .sg-input-single-line-wrap .sg-input-single-line {
+ padding-right: calc(var(--interaction-padding-horizontal) + var(--interaction-height));
+ }
+
+ .sg-input-clear-button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: none;
+ align-items: center;
+ justify-content: center;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ padding: 0;
+ margin: 0;
+ border: var(--border-none);
+ border-radius: 0 var(--radius-interaction) var(--radius-interaction) 0;
+ box-shadow: var(--shadow-none);
+ -webkit-appearance: none;
+ appearance: none;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: 1;
+ color: var(--text-control-default);
+ background: var(--surface-input-clear);
+ cursor: pointer;
+ }
+
+ .sg-input-single-line-wrap[data-has-value="true"] .sg-input-clear-button {
+ display: inline-flex;
+ }
+
+ .sg-search-field-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ white-space: nowrap;
+ flex-wrap: nowrap;
+ }
+
+ .sg-search-field-input {
+ width: var(--layout-search-field-width);
+ }
+
+ .sg-search-result-count {
+ color: var(--color-dark-grey);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ }
+
+ .sg-labeled-input-row {
+ display: flex;
+ align-items: center;
+ gap: 0;
+ width: auto;
+ max-width: none;
+ }
+
+ .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: var(--spacing-large);
+ }
+
+ .sg-labeled-input-row .sg-input-single-line,
+ .sg-labeled-input-row .sg-input-multi-line {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-form-input-field-max-width);
+ }
+
+ .sg-labeled-input-row:has(.sg-input-multi-line) {
+ align-items: flex-start;
+ }
+
+ .sg-input-multi-line {
+ box-sizing: border-box;
+ min-height: calc(var(--interaction-height) * 2.75);
+ padding: var(--interaction-padding-vertical) var(--interaction-padding-horizontal);
+ border: var(--border-control);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-interaction-inset);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ background: var(--surface-control-inactive);
+ resize: vertical;
+ }
+
+ .sg-input-component .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ width: 100%;
+ }
+
+ #component-pulldown .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-labeled-input-row {
+ width: 100%;
+ max-width: none;
+ }
+
+ #component-pulldown .sg-labeled-input-row .sg-pulldown,
+ #component-pulldown .sg-labeled-input-row .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-pulldown-demo__trigger,
+ #component-pulldown .sg-state-example > .sg-pulldown {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-activatable-row {
+ display: grid;
+ grid-template-columns: max-content minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header {
+ display: grid;
+ grid-template-columns: max-content max-content;
+ align-items: center;
+ column-gap: var(--spacing-small);
+ width: 100%;
+ justify-content: start;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header .sg-label {
+ grid-column: 2;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-activatable-row .sg-pulldown-demo {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ }
+
+ .sg-input-component .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ }
+
+ @media (max-width: 48rem) {
+ .sg-input-component .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ .sg-input-component .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ #component-pulldown .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ .sg-input-component .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-labeled-input-row .sg-pulldown,
+ #component-pulldown .sg-labeled-input-row .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: 100%;
+ }
+
+ #component-pulldown .sg-activatable-row {
+ grid-template-columns: 1fr;
+ align-items: start;
+ row-gap: var(--spacing-small);
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-labeled-input-row {
+ flex-direction: column;
+ align-items: flex-start;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: 0;
+ margin-bottom: var(--spacing-large);
+ }
+
+ .sg-labeled-input-row .sg-input-single-line,
+ .sg-labeled-input-row .sg-input-multi-line {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ }
+ }
+
+ .sg-mode-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ height: auto;
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 0;
+ box-shadow: var(--shadow-none);
+ appearance: none;
+ -webkit-tap-highlight-color: transparent;
+ background: transparent;
+ cursor: pointer;
+ }
+
+ .sg-mode-toggle:focus,
+ .sg-mode-toggle:focus-visible {
+ outline: none;
+ }
+
+ .sg-mode-toggle__label {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ }
+
+ .sg-mode-toggle__switch {
+ position: relative;
+ width: var(--layout-mode-toggle-width);
+ height: var(--interaction-height);
+ border-radius: var(--radius-interaction);
+ background: var(--surface-toggle-track);
+ }
+
+ .sg-mode-toggle__handle {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: calc(100% / 2);
+ height: 100%;
+ border-radius: var(--radius-interaction);
+ background: var(--surface-toggle-handle);
+ }
+
+ .sg-mode-toggle[data-active="absolute"] .sg-mode-toggle__handle {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-mode-toggle[data-active="relative"] .sg-mode-toggle__handle {
+ left: auto;
+ right: 0;
+ }
+
+ .sg-mode-toggle--local .sg-mode-toggle__label {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ }
+
+ .sg-mode-toggle--local .sg-mode-toggle__switch {
+ width: calc(var(--layout-mode-toggle-local-height) * var(--layout-mode-toggle-local-width-factor));
+ height: var(--layout-mode-toggle-local-height);
+ }
+
+ .sg-activation-toggle-pattern {
+ display: flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-activation-mode-toggle {
+ gap: 0;
+ }
+
+ .sg-activation-mode-toggle .sg-mode-toggle__switch {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ align-items: center;
+ overflow: hidden;
+ }
+
+ .sg-activation-mode-toggle .sg-mode-toggle__handle {
+ z-index: 1;
+ }
+
+ .sg-activation-mode-toggle__switch-label {
+ position: relative;
+ z-index: 2;
+ text-align: center;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--layout-mode-toggle-local-height);
+ text-transform: lowercase;
+ color: var(--text-control-default);
+ }
+
+ .sg-activation-mode-toggle[data-active="absolute"] .sg-activation-mode-toggle__switch-label--left,
+ .sg-activation-mode-toggle[data-active="relative"] .sg-activation-mode-toggle__switch-label--right {
+ color: var(--text-toggle-label-active);
+ }
+
+ .sg-slider-row {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: var(--spacing-small);
+ width: 100%;
+ max-width: none;
+ }
+
+ .sg-slider-row .sg-label {
+ min-width: var(--layout-input-label-width);
+ flex: 0 0 var(--layout-input-label-width);
+ color: var(--text-control-default);
+ }
+
+ .sg-slider {
+ flex: 1 1 14rem;
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ height: var(--interaction-height);
+ margin: 0;
+ padding: 0;
+ border: 0;
+ -webkit-appearance: none;
+ appearance: none;
+ background: transparent;
+ cursor: pointer;
+ }
+
+ .sg-slider::-webkit-slider-runnable-track {
+ height: var(--dimension-slider-track-height);
+ border-radius: var(--radius-slider-track);
+ background:
+ linear-gradient(
+ to right,
+ var(--surface-slider-progress) 0%,
+ var(--surface-slider-progress) var(--sg-slider-progress, 0%),
+ var(--surface-slider-track) var(--sg-slider-progress, 0%),
+ var(--surface-slider-track) 100%
+ );
+ }
+
+ .sg-slider::-webkit-slider-thumb {
+ width: var(--dimension-slider-thumb-size);
+ height: var(--dimension-slider-thumb-size);
+ margin-top: var(--dimension-slider-thumb-offset-top);
+ border: 0;
+ border-radius: 50%;
+ -webkit-appearance: none;
+ appearance: none;
+ background: var(--surface-slider-thumb);
+ }
+
+ .sg-slider::-moz-range-track {
+ height: var(--dimension-slider-track-height);
+ border: 0;
+ border-radius: var(--radius-slider-track);
+ background: var(--surface-slider-track);
+ }
+
+ .sg-slider::-moz-range-progress {
+ height: var(--dimension-slider-track-height);
+ border-radius: var(--radius-slider-track);
+ background: var(--surface-slider-progress);
+ }
+
+ .sg-slider::-moz-range-thumb {
+ width: var(--dimension-slider-thumb-size);
+ height: var(--dimension-slider-thumb-size);
+ border: 0;
+ border-radius: 50%;
+ background: var(--surface-slider-thumb);
+ }
+
+ .sg-slider-value {
+ flex: 0 0 auto;
+ min-width: calc(var(--interaction-height) * 1.25);
+ white-space: nowrap;
+ text-align: right;
+ color: var(--text-control-default);
+ }
+
+ .sg-slider-row--inactive-selectable {
+ opacity: var(--disabled-opacity);
+ }
+
+ #component-slider .sg-slider-row {
+ display: grid;
+ grid-template-columns:
+ max-content
+ minmax(0, 1fr)
+ auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ width: 100%;
+ }
+
+ #component-slider .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-slider .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-slider .sg-slider-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ grid-column: 1;
+ }
+
+ #component-slider .sg-slider-row .sg-slider {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ grid-column: 2;
+ }
+
+ #component-slider .sg-state-example > .sg-slider-row,
+ #component-slider .sg-activatable-row .sg-slider-row {
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-slider .sg-slider-row .sg-slider-value {
+ min-width: 0;
+ grid-column: 3;
+ justify-self: start;
+ align-self: center;
+ display: block;
+ margin: 0;
+ line-height: 1;
+ }
+
+ #component-slider .sg-activatable-row {
+ display: grid;
+ grid-template-columns: max-content minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-slider-activatable-header {
+ display: grid;
+ grid-template-columns: max-content max-content;
+ column-gap: var(--spacing-large);
+ align-items: center;
+ width: 100%;
+ justify-content: start;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-label {
+ grid-column: 2;
+ min-width: 0;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ grid-column: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider-value {
+ grid-column: 2;
+ justify-self: start;
+ min-width: 0;
+ align-self: center;
+ display: block;
+ margin: 0;
+ line-height: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] {
+ display: grid;
+ grid-template-columns:
+ var(--layout-input-label-width)
+ minmax(0, 1fr)
+ auto;
+ align-items: center;
+ column-gap: var(--spacing-small);
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ min-width: calc(var(--interaction-height) * 1.25);
+ justify-self: end;
+ align-self: center;
+ white-space: nowrap;
+ grid-column: 3;
+ grid-row: 1;
+ }
+
+ @media (max-width: 48rem) {
+ #component-slider .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-slider .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ #component-slider .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-slider .sg-activatable-row {
+ grid-template-columns: 1fr;
+ align-items: start;
+ row-gap: var(--spacing-small);
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row {
+ grid-template-columns: minmax(0, 1fr) auto;
+ column-gap: var(--spacing-large);
+ align-items: center;
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider {
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider-value {
+ justify-self: start;
+ align-self: center;
+ margin: 0;
+ line-height: 1;
+ }
+
+ }
+
+ .sg-sandwich-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: calc(var(--interaction-height) + var(--spacing-small));
+ height: calc(var(--interaction-height) + var(--spacing-small));
+ padding: 0;
+ cursor: pointer;
+ }
+
+ .sg-sandwich-button--small {
+ width: calc(var(--interaction-height) * 0.9);
+ height: calc(var(--interaction-height) * 0.9);
+ }
+
+ .sg-sandwich-button__icon {
+ width: var(--sandwich-line-width);
+ height: auto;
+ display: flex;
+ flex-direction: column;
+ gap: var(--sandwich-line-gap);
+ justify-content: center;
+ }
+
+ .sg-sandwich-button__line {
+ display: block;
+ width: 100%;
+ height: var(--sandwich-line-height);
+ border-radius: var(--radius-interaction);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-button__line {
+ background: var(--icon-sandwich-line-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-button__line {
+ height: calc(var(--sandwich-line-height) - 1px);
+ background: var(--icon-sandwich-line-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-button__icon {
+ width: calc(var(--sandwich-line-width) - 3px);
+ }
+
+ .sg-sandwich-menu-wrap {
+ position: relative;
+ display: inline-flex;
+ }
+
+ .sg-sandwich-menu-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ right: 0;
+ display: none;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: max-content;
+ padding: var(--spacing-large);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-overlay);
+ z-index: var(--layer-pulldown-panel);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-menu-panel {
+ background: var(--surface-menu-panel-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-menu-panel {
+ background: var(--surface-menu-panel-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-open="true"] .sg-sandwich-menu-panel {
+ display: flex;
+ }
+
+ .sg-sandwich-menu-link {
+ margin: 0;
+ text-decoration: none;
+ white-space: nowrap;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-menu-link {
+ color: var(--text-menu-link-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-menu-link {
+ color: var(--text-menu-link-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-align="left"] .sg-sandwich-menu-panel {
+ right: auto;
+ left: 0;
+ }
+
+ .sg-sandwich-menu-wrap[data-align="right"] .sg-sandwich-menu-panel {
+ right: 0;
+ left: auto;
+ }
+
+ .sg-help-icon-wrap {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle;
+ }
+
+ .sg-help-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ color: var(--text-help-icon);
+ background: var(--surface-help-icon);
+ cursor: pointer;
+ }
+
+ .sg-help-icon-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ left: 0;
+ z-index: var(--layer-pulldown-panel);
+ display: none;
+ width: var(--layout-help-panel-width);
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ box-sizing: border-box;
+ overflow-wrap: anywhere;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ color: var(--text-help-panel);
+ background: var(--surface-help-panel);
+ box-shadow: var(--shadow-overlay);
+ }
+
+ @supports (width: 100dvw) {
+ .sg-help-icon-panel {
+ width: min(var(--layout-help-panel-width), calc(100dvw - (2 * var(--spacing-large))));
+ max-width: calc(100dvw - (2 * var(--spacing-large)));
+ }
+ }
+
+ .sg-help-icon-wrap[data-open="true"] .sg-help-icon-panel {
+ display: block;
+ }
+
+ .sg-help-icon-wrap[data-open="true"] {
+ z-index: var(--layer-pulldown-panel);
+ }
+
+ .sg-help-icon-wrap[data-align="left"] .sg-help-icon-panel {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-help-icon-wrap[data-align="right"] .sg-help-icon-panel {
+ left: auto;
+ right: 0;
+ }
+
+ .sg-pulldown-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ left: 0;
+ z-index: var(--layer-pulldown-panel);
+ display: none;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ min-width: 100%;
+ width: max-content;
+ max-width: min(
+ var(--layout-multiselect-pulldown-panel-desktop-width),
+ calc(100vw - (2 * var(--spacing-large)))
+ );
+ box-sizing: border-box;
+ padding-block: var(--spacing-large);
+ padding-inline: var(--layout-pulldown-panel-padding-inline);
+ border-radius: var(--radius-card);
+ background: var(--surface-pulldown-panel);
+ box-shadow: var(--shadow-overlay);
+ }
+
+ @supports (width: 100dvw) {
+ .sg-pulldown-panel {
+ max-width: min(
+ var(--layout-multiselect-pulldown-panel-desktop-width),
+ calc(100dvw - (2 * var(--spacing-large)))
+ );
+ }
+ }
+
+ .sg-pulldown-demo[data-open="true"] .sg-pulldown-panel {
+ display: inline-flex;
+ }
+
+ .sg-pulldown-demo[data-align="left"] .sg-pulldown-panel {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-pulldown-demo[data-align="right"] .sg-pulldown-panel {
+ left: auto;
+ right: 0;
+ }
+
+ @media (max-width: 48rem) {
+ .sg-pulldown-demo[data-component-context="overlay"] .sg-pulldown-panel {
+ left: auto;
+ right: 0;
+ }
+ }
+
+ .sg-pulldown-panel__row {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 5) calc(var(--interaction-height) * 7) var(--interaction-height);
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-pulldown-panel__label {
+ margin: 0;
+ color: var(--text-control-default);
+ }
+
+.sg-pulldown-panel__remove {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ background: var(--surface-activatable-remove);
+ color: var(--text-activatable-remove);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: 1;
+ -webkit-appearance: none;
+ appearance: none;
+ cursor: pointer;
+}
+
+ .sg-pulldown-panel__remove[hidden] {
+ display: none;
+ }
+
+ .sg-pulldown-panel__row--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-pulldown-panel__row--disabled .sg-pulldown,
+ .sg-pulldown-panel__row--disabled .sg-pulldown-panel__label {
+ color: var(--text-control-disabled);
+ }
+
+ .sg-pulldown-option-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ }
+
+ .sg-pulldown-option {
+ display: flex;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ padding-block: var(--interaction-padding-vertical);
+ padding-inline: var(--layout-pulldown-option-padding-inline);
+ border-radius: var(--radius-interaction);
+ white-space: normal;
+ overflow-wrap: anywhere;
+ color: var(--text-control-default);
+ cursor: pointer;
+ }
+
+ .sg-pulldown-option--selected {
+ background: var(--surface-control-active);
+ }
+
+ .sg-pulldown-option--disabled {
+ color: var(--text-control-disabled);
+ }
+
+ .sg-pulldown-option__checkbox {
+ width: var(--font-size-base);
+ height: var(--font-size-base);
+ margin: 0;
+ }
+
+ .sg-checkbox-field {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-none);
+ color: var(--text-control-default);
+ background: var(--surface-checkbox-default);
+ cursor: pointer;
+ }
+
+ .sg-checkbox-field--on-grey,
+ .sg-checkbox-field--on-color {
+ background: var(--surface-checkbox-on-context);
+ }
+
+ .sg-checkbox-field__mark {
+ display: none;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ }
+
+ .sg-checkbox-field[aria-checked="true"] .sg-checkbox-field__mark {
+ display: inline;
+ }
+
+ .sg-checkbox-field.sg-form-active {
+ background: var(--surface-control-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-checkbox-field--inactive-selectable {
+ color: var(--text-control-default);
+ background: var(--surface-control-inactive);
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-checkbox-field--disabled {
+ color: var(--text-control-disabled);
+ background: var(--surface-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-checkbox-field-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ }
+
+ .sg-checkbox-field-option {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ color: var(--text-control-default);
+ flex-wrap: wrap;
+ }
+
+ .sg-pulldown-panel__checkbox-list .sg-checkbox-field-option.sg-body {
+ margin-bottom: 0;
+ }
+
+ #component-checkbox-field .sg-checkbox-field-option .sg-state-example__label,
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label {
+ flex: 0 0 100%;
+ margin-bottom: var(--spacing-small);
+ }
+
+ .sg-checkbox-field-option--inactive-selectable {
+ color: var(--text-control-default);
+ }
+
+ #component-checkbox-field .sg-checkbox-field-option[data-activatable="true"],
+ #component-radio-field .sg-checkbox-field-option[data-activatable="true"] {
+ gap: var(--spacing-large);
+ }
+
+ .sg-radio-activatable-group__choices {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-radio-activatable-group__choice {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-radio-activatable-group__choice > span {
+ color: var(--text-control-default);
+ opacity: 1;
+ }
+
+ #component-radio-activatable[data-component-state="inactive-selectable"] .sg-radio-activatable-group__choice > span {
+ opacity: var(--disabled-opacity);
+ }
+
+ #component-radio-activatable[data-component-state="active"] .sg-radio-activatable-group__choice > span {
+ opacity: 1;
+ }
+
+ #component-radio-field .sg-checkbox-field-option {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-small);
+ width: 100%;
+ }
+
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label {
+ grid-column: 1;
+ margin-bottom: 0;
+ }
+
+ #component-radio-field .sg-radio-field-row {
+ grid-column: 2;
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ min-width: 0;
+ flex-wrap: nowrap;
+ }
+
+ #component-radio-field .sg-radio-field-row > .sg-radio-activatable-group__choices {
+ margin-left: var(--spacing-large);
+ }
+
+ #component-radio-field .sg-radio-field-row--without-label > .sg-radio-activatable-group__choices {
+ margin-left: 0;
+ }
+
+ @media (max-width: 48rem) {
+ #component-radio-field .sg-checkbox-field-option {
+ grid-template-columns: 1fr;
+ align-items: start;
+ }
+
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label,
+ #component-radio-field .sg-radio-field-row {
+ grid-column: 1;
+ }
+
+ #component-radio-field .sg-radio-field-row {
+ flex-wrap: wrap;
+ }
+
+ #component-radio-field .sg-radio-field-row > .sg-radio-activatable-group__choices {
+ flex: 0 0 100%;
+ margin-left: 0;
+ }
+ }
+
+ .sg-checkbox-field-option--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-radio-field {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ color: var(--text-control-default);
+ background: var(--surface-radio-default);
+ cursor: pointer;
+ }
+
+ .sg-radio-field__mark {
+ display: none;
+ width: calc(var(--small-interaction-element-size) * 0.44);
+ height: calc(var(--small-interaction-element-size) * 0.44);
+ border-radius: 50%;
+ background: var(--icon-radio-mark);
+ }
+
+ .sg-radio-field[aria-checked="true"] .sg-radio-field__mark {
+ display: block;
+ }
+
+ .sg-radio-field--inactive-selectable {
+ color: var(--text-control-default);
+ background: var(--surface-radio-default);
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-radio-field--disabled {
+ color: var(--text-control-disabled);
+ background: var(--surface-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-hyperlink {
+ color: var(--text-hyperlink);
+ text-decoration: none;
+ }
+
+/* ========================================================= */
+/* Patterns: Portal Header */
+/* ========================================================= */
+
+.sg-portal-header {
+ --surface-tab-selected: var(--surface-portal-header-tab);
+ --surface-tab-unselected: var(--surface-portal-header-tab-active);
+ --text-tab-selected: var(--text-portal-header-tab);
+ --text-tab-unselected: var(--text-portal-header-tab-active);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-large);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-portal-header);
+}
+
+.sg-portal-header__main {
+ display: grid;
+ flex: 1 1 auto;
+ grid-template-columns: minmax(0, 1fr) auto;
+ grid-template-areas:
+ "brand menu"
+ "tabs tabs";
+ gap: var(--spacing-large);
+ min-width: 0;
+}
+
+.sg-portal-header__brand {
+ grid-area: brand;
+ margin: 0;
+ padding-left: 0;
+ font-size: var(--font-size-portal-header-brand);
+ color: var(--text-portal-header-brand);
+}
+
+.sg-portal-header__tabs {
+ grid-area: tabs;
+ width: 100%;
+}
+
+.sg-portal-header__menu-wrap {
+ grid-area: menu;
+ justify-self: end;
+}
+
+.sg-portal-header-pattern-variant {
+ margin-bottom: var(--spacing-large);
+}
+
+.sg-portal-header-pattern-variant__label {
+ margin: 0 0 var(--spacing-small) 0;
+}
+
+.sg-portal-header-pattern-variant__next-element {
+ margin-top: var(--spacing-large);
+}
+
+@media (max-width: calc(var(--layout-object-card-desktop-breakpoint) - 1px)) {
+ .sg-portal-header__main {
+ gap: var(--spacing-small) var(--spacing-large);
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Options Row */
+/* ========================================================= */
+
+.sg-options-row {
+ --surface-control-default: var(--surface-options-row-control);
+ --surface-control-active: var(--surface-options-row-control-selected);
+ --surface-input-clear: var(--surface-options-row-input-clear);
+ --surface-toggle-track: var(--surface-options-row-toggle-track);
+ --surface-toggle-handle: var(--surface-options-row-toggle-handle);
+ --surface-help-icon: var(--surface-options-row-help-icon);
+ --surface-help-panel: var(--surface-options-row-help-panel);
+ --text-control-default: var(--text-options-row-default);
+ --text-control-disabled: var(--text-options-row-placeholder);
+ --text-help-icon: var(--text-options-row-help-icon);
+ --text-help-panel: var(--text-options-row-help-panel);
+ --layout-mode-toggle-width: var(--layout-options-row-mode-toggle-width);
+ --layout-help-panel-width: var(--layout-options-row-help-panel-width);
+ margin-top: var(--layout-options-row-margin-top);
+ display: flex;
+ justify-content: space-between;
+ gap: var(--layout-options-row-main-gap);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-options-row);
+}
+
+.sg-options-row__left,
+.sg-options-row__right {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--layout-options-row-group-gap);
+ align-items: center;
+}
+
+.sg-options-row__left {
+ justify-content: flex-start;
+}
+
+.sg-options-row__right {
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ margin-left: auto;
+}
+
+@media (max-width: 48rem) {
+ .sg-options-row {
+ flex-direction: column;
+ gap: 0;
+ padding: 0;
+ }
+
+ .sg-options-row__right,
+ .sg-options-row__left {
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--card-segment-padding-horizontal);
+ }
+
+ .sg-options-row__right {
+ order: 1;
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ margin-left: 0;
+ }
+
+ .sg-options-row__left {
+ order: 2;
+ box-shadow: inset 0 1px 0 var(--divider-options-row-mobile);
+ }
+
+ .sg-options-row__left > .sg-pulldown-demo,
+ .sg-options-row__left > .sg-input-single-line-wrap,
+ .sg-options-row__left > .sg-search-field-row {
+ flex: 1 1 calc(50% - var(--layout-options-row-group-gap));
+ min-width: 0;
+ }
+
+.sg-options-row__left > .sg-input-single-line-wrap,
+.sg-options-row__left > .sg-search-field-row {
+ flex-basis: 100%;
+ }
+
+ .sg-options-row .sg-search-field-input {
+ display: inline-flex;
+ align-items: stretch;
+ }
+
+ .sg-options-row .sg-search-field-input .sg-input-single-line {
+ padding-right: var(--interaction-padding-horizontal);
+ }
+
+ .sg-options-row .sg-search-field-input[data-has-value="true"] .sg-input-single-line {
+ border-radius: var(--radius-interaction) 0 0 var(--radius-interaction);
+ }
+
+ .sg-options-row .sg-search-field-input .sg-input-clear-button {
+ position: static;
+ flex: 0 0 var(--interaction-height);
+ height: auto;
+ border-radius: 0 var(--radius-interaction) var(--radius-interaction) 0;
+ }
+
+ .sg-options-row__left > .sg-input-single-line-wrap .sg-input-single-line,
+ .sg-options-row__left > .sg-pulldown-demo .sg-pulldown {
+ width: 100%;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ width: min(
+ var(--layout-pulldown-panel-form-mobile-width),
+ calc(100vw - (2 * var(--spacing-large)))
+ );
+ min-width: 0;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ }
+
+ .sg-options-row .sg-pulldown-panel .sg-form-sections-card-wrapper,
+ .sg-options-row .sg-pulldown-panel .sg-form-sections-card {
+ min-width: 0;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-label {
+ min-width: 100%;
+ flex: 0 0 100%;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ flex: 1 1 0;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ min-width: calc(var(--interaction-height) * 1.25);
+ align-self: center;
+ white-space: nowrap;
+ flex: 0 0 auto;
+ }
+
+ .sg-pulldown-panel__row {
+ grid-template-columns: minmax(0, 1fr) var(--interaction-height);
+ }
+
+ .sg-pulldown-panel__label {
+ grid-column: 1 / -1;
+ }
+}
+
+
+/* ========================================================= */
+/* Patterns: Object Card */
+/* ========================================================= */
+
+.sg-object-card-grid {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+}
+
+.sg-object-card {
+ display: flex;
+ flex-direction: column;
+ flex: 1 1 var(--layout-object-card-min-width);
+ min-width: var(--layout-object-card-min-width);
+ max-width: var(--layout-object-card-max-width);
+ height: var(--layout-object-card-height);
+}
+
+.sg-object-card-grid.sg-object-card-grid--multi-row .sg-object-card {
+ flex: 0 0 var(--layout-object-card-shared-width);
+ width: var(--layout-object-card-shared-width);
+}
+
+@media (max-width: 767px) {
+ .sg-object-card {
+ width: var(--layout-object-card-mobile-width);
+ min-width: 0;
+ max-width: none;
+ height: var(--layout-object-card-mobile-height);
+ }
+
+ .sg-object-card[data-pattern="object-group-card"] {
+ flex-basis: 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ }
+}
+
+.sg-object-card__content {
+ flex: var(--layout-object-card-content-grow) 1 auto;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ background: var(--color-white);
+}
+
+.sg-object-card__header {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.sg-object-card__actions {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+ margin-top: 0;
+}
+
+.sg-object-card__action {
+ flex: 1 1 0;
+ min-width: 0;
+}
+
+
+/* ========================================================= */
+/* Patterns: Object Group Card */
+/* ========================================================= */
+
+.sg-object-group-card__actions {
+ margin-top: auto;
+}
+
+.sg-object-card[data-pattern="object-group-card"] {
+ flex: 1 1 var(--layout-object-group-card-min-width);
+ min-width: var(--layout-object-group-card-min-width);
+ max-width: var(--layout-object-group-card-max-width);
+}
+
+.sg-object-group-card__hint {
+ color: var(--color-font-light);
+}
+
+.sg-company-card__metric-negative {
+ color: var(--text-company-card-data-negative);
+}
+
+.sg-company-card__analysis-title {
+ margin: 0;
+}
+
+.sg-company-card__analysis-bars {
+ margin-top: 0;
+}
+
+.sg-company-card__moat-row {
+ display: contents;
+}
+
+.sg-company-card__moat-value {
+ justify-self: start;
+ text-align: left;
+}
+
+.sg-company-card__moat-neutral {
+ color: var(--text-company-card-moat-neutral);
+}
+
+.sg-company-card__summary {
+ margin: 0;
+}
+
+/* ========================================================= */
+/* Patterns: Navigation Card */
+/* ========================================================= */
+
+
+/* ========================================================= */
+/* Patterns: Formular mit Abschnitten */
+/* ========================================================= */
+
+.sg-form-sections-card {
+ --layout-form-sections-label-column-width: var(--layout-input-label-width);
+ --layout-form-sections-interaction-indent: calc(
+ var(--layout-form-sections-label-column-width) + var(--spacing-large)
+ );
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ min-width: min(
+ 100%,
+ calc(var(--layout-form-sections-label-column-width) + var(--spacing-small) + var(--layout-input-field-desktop-width))
+ );
+ max-width: calc(
+ var(--layout-form-sections-label-column-width) + var(--spacing-small) + var(--layout-form-input-field-max-width)
+ );
+}
+
+.sg-form-sections-card-wrapper {
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ height: auto;
+}
+
+.sg-form-sections-card__body {
+ background: var(--surface-form-preview);
+ padding: 0;
+}
+
+.sg-form-sections-card__title {
+ margin: 0 0 var(--spacing-large) 0;
+}
+
+.sg-form-sections-card__actions-segment {
+ background: var(--surface-form-preview);
+ padding: 0;
+}
+
+.sg-form-sections-card__chapter + .sg-form-sections-card__chapter {
+ margin-top: var(--spacing-large);
+}
+
+.sg-form-sections-card__chapter-title,
+.sg-form-sections-card__sentence {
+ margin: 0;
+}
+
+.sg-form-sections-card__sentence {
+ margin-top: var(--spacing-small);
+}
+
+.sg-form-sections-card__option-group,
+.sg-form-sections-card__field-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ margin-top: var(--spacing-large);
+}
+
+.sg-form-sections-card .sg-labeled-input-row .sg-label {
+ min-width: var(--layout-form-sections-label-column-width);
+ flex: 0 0 var(--layout-form-sections-label-column-width);
+ margin-right: var(--spacing-large);
+}
+
+.sg-form-sections-card__option-group,
+.sg-form-sections-card__actions {
+ padding-left: var(--layout-form-sections-interaction-indent);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > :not(.sg-form-sections-card__chapter-title) + :not(.sg-form-sections-card__chapter-title) {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-form-sections-card__chapter-title + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-slider-row + .sg-slider-row,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-checkbox-field-option + .sg-checkbox-field-option,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-radio-activatable-group + .sg-radio-activatable-group {
+ margin-top: var(--spacing-small);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-pulldown-panel__row + .sg-pulldown-panel__row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ --sg-multiselect-label-column-width: var(--layout-multiselect-pulldown-label-column-width-fallback);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ white-space: nowrap;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ display: grid;
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr) auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable {
+ opacity: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider-value,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-radio-activatable-group__choices {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-label {
+ grid-column: 2;
+ min-width: 0;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider {
+ grid-column: 3;
+ min-width: 0;
+ width: 100%;
+ max-width: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ grid-column: 4;
+ margin: 0;
+ min-width: 0;
+ line-height: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ -webkit-tap-highlight-color: transparent;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group {
+ display: grid;
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label {
+ grid-column: 2;
+ margin: 0;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-radio-activatable-group__choices {
+ grid-column: 3;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-radio-activatable-group__choices {
+ pointer-events: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable > :not(.sg-mode-toggle),
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > :not(.sg-mode-toggle),
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > :not(.sg-mode-toggle) {
+ pointer-events: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] {
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr);
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ grid-column: 2;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown {
+ grid-column: 3;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled {
+ opacity: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown-panel__label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo .sg-pulldown-panel {
+ min-width: 100%;
+ width: max-content;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+}
+
+@media (max-width: 48rem) {
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ min-width: 100%;
+ width: max-content;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ grid-template-columns: max-content minmax(0, 1fr) auto;
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] > .sg-label,
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label,
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ white-space: normal;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider {
+ grid-column: 1 / 3;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ grid-column: 3;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group {
+ grid-template-columns: max-content minmax(0, 1fr);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-radio-activatable-group__choices {
+ grid-column: 1 / -1;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] {
+ grid-template-columns: max-content minmax(0, 1fr);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown {
+ grid-column: 1 / -1;
+ grid-row: 2;
+ }
+}
+
+.sg-form-sections-card__actions {
+ display: flex;
+ justify-content: flex-start;
+ gap: var(--spacing-small);
+ margin-top: 0;
+}
+
+.sg-form-sections-card__action {
+ width: auto;
+}
+
+.sg-navigation-card-layout {
+ width: 100%;
+ margin-top: var(--spacing-large);
+}
+
+.sg-navigation-card-block {
+ --surface-card: var(--surface-navigation-card);
+ --surface-card-body: var(--surface-navigation-card-body);
+ display: block;
+ flex: none;
+ min-width: 0;
+ max-width: none;
+ width: 100%;
+}
+
+.sg-navigation-card-center {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+}
+
+.sg-content-cards-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--layout-content-cards-group-gap);
+}
+
+@media (max-width: 48rem) {
+ .sg-form-sections-card .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: 0;
+ }
+
+ .sg-form-sections-card__option-group,
+ .sg-form-sections-card__actions {
+ padding-left: 0;
+ }
+}
+
+/* ========================================================= */
+/* Patterns: VSF List Card */
+/* ========================================================= */
+
+#layout-vsf-list-card .sg-vsf-list-card-limit-note {
+ margin: 0 0 var(--space-16) 0;
+ color: var(--text-vsf-list-card-limit-note);
+}
+
+#layout-vsf-list-card .sg-vsf-list-card__summary {
+ margin: var(--layout-vsf-list-card-summary-offset-block-start) 0 0 0;
+}
+
+.sg-vsf-list-card-context[data-pattern="overlay-card"] {
+ --layout-delete-confirmation-target-max-width: var(--layout-vsf-list-card-delete-confirmation-target-max-width);
+}
+
+/* ========================================================= */
+/* Patterns: Overlay Card */
+/* ========================================================= */
+
+.sg-delete-confirmation-pattern {
+ width: 100%;
+ max-width: var(--layout-delete-confirmation-target-max-width);
+}
+
+.sg-delete-confirmation-pattern__stage {
+ position: relative;
+}
+
+.sg-delete-confirmation-pattern__host {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-delete-confirmation-pattern__host > .sg-delete-confirmation-pattern__target {
+ flex: 1 1 auto;
+}
+
+.sg-delete-confirmation-pattern__target {
+ position: relative;
+ overflow: hidden;
+}
+
+.sg-delete-confirmation-pattern__target::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background: var(--surface-delete-confirmation-target-dim-overlay);
+ opacity: 0;
+ pointer-events: none;
+}
+
+.sg-delete-confirmation-pattern__stage[data-dialog-open="true"] .sg-delete-confirmation-pattern__target::after {
+ opacity: var(--layout-delete-confirmation-target-dim-opacity);
+}
+
+.sg-delete-confirmation-pattern__floating-card {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: calc(100% * var(--layout-delete-confirmation-overlay-width-factor));
+ box-sizing: border-box;
+ max-width: calc(100% * var(--layout-delete-confirmation-overlay-width-factor));
+ z-index: var(--layer-delete-confirmation-overlay);
+ box-shadow: var(--shadow-overlay);
+}
+
+.sg-delete-confirmation-pattern__floating-card[hidden] {
+ display: none;
+}
+
+.sg-delete-confirmation-pattern__body {
+ display: flex;
+ flex-direction: column;
+ gap: var(--layout-delete-confirmation-content-gap);
+ background: var(--surface-delete-confirmation-overlay);
+}
+
+.sg-delete-confirmation-pattern__text {
+ margin: 0;
+ color: var(--text-delete-confirmation-overlay);
+}
+
+.sg-delete-confirmation-pattern__code {
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-delete-confirmation-pattern__input-row {
+ margin: var(--spacing-large) 0 0 0;
+}
+
+.sg-delete-confirmation-pattern__actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: var(--layout-delete-confirmation-actions-gap);
+ margin-top: var(--layout-delete-confirmation-actions-offset-block-start);
+}
+
+@media (max-width: 48rem) {
+ .sg-delete-confirmation-pattern__actions {
+ flex-wrap: wrap;
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Notifications */
+/* ========================================================= */
+
+.sg-notifications-pattern {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+}
+
+.sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+}
+
+/* Dokumentierte Pattern-Variante: Notifications innerhalb Group Card */
+.sg-notifications-pattern.sg-group-card > .sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+}
+
+.sg-notifications-pattern.sg-notifications-pattern--multi-row .sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__text-segment {
+ height: auto;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__title-segment {
+ height: auto;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__text-segment.sg-notifications-pattern__text-segment--small {
+ height: auto;
+}
+
+.sg-vsf-meldungen-layout {
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: var(--spacing-small);
+ align-items: start;
+ width: 100%;
+}
+
+.sg-vsf-meldungen-layout > .sg-group-card {
+ min-width: 0;
+}
+
+.sg-vsf-meldungen-mobile {
+ display: none;
+}
+
+.sg-vsf-meldungen-mobile__panels {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-meldungen-mobile__panel {
+ width: 100%;
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-meldungen-layout {
+ display: none;
+ }
+
+ .sg-vsf-meldungen-mobile {
+ display: flex;
+ width: 100%;
+ }
+
+ .sg-notifications-pattern__card {
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ flex: 1 1 auto;
+ }
+
+ .sg-notifications-pattern__card > .sg-notifications-pattern__text-segment,
+ .sg-notifications-pattern__card > .sg-notifications-pattern__title-segment,
+ .sg-notifications-pattern__card > .sg-notifications-pattern__text-segment.sg-notifications-pattern__text-segment--small {
+ height: auto;
+ }
+}
+
+/* ========================================================= */
+/* Layouts: Card Listen Seite */
+/* ========================================================= */
+
+.sg-card-list-page {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-card-list-page-drawer {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ width: var(--layout-card-list-drawer-width);
+ max-width: 100%;
+ display: flex;
+ flex-direction: column;
+ transform: translateX(100%);
+ transition: transform 220ms ease;
+ background: var(--surface-card-list-drawer);
+ color: var(--text-card-list-drawer);
+ box-shadow: var(--shadow-overlay);
+ z-index: 1000;
+ overflow-y: auto;
+}
+
+.sg-card-list-page-drawer[data-open="true"] {
+ transform: translateX(0);
+}
+
+.sg-card-list-page-drawer__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+}
+
+.sg-card-list-page-drawer__title {
+ margin: 0;
+ color: inherit;
+}
+
+.sg-card-list-page-drawer__content {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-large);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline)
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+}
+
+.sg-card-list-page > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-card-list-page > .sg-options-row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-card-list-page > .sg-card-list-page__intro-block {
+ margin-top: calc(var(--spacing-large) - 0.5rem);
+}
+
+.sg-card-list-page__intro-block {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-large);
+}
+
+.sg-card-list-page__title-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ width: fit-content;
+ max-width: 100%;
+}
+
+.sg-card-list-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: min(60vw, 100%);
+}
+
+@media (max-width: 767px) {
+ .sg-card-list-page-drawer {
+ display: none;
+ }
+
+ .sg-card-list-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: 100%;
+ }
+}
+
+.sg-card-list-page__object-grid,
+.sg-card-list-page__navigation {
+ width: 100%;
+}
+
+.sg-vsf-drawer-card {
+ --surface-card-header-primary: var(--surface-vsf-drawer-object-card-header);
+ --surface-card: var(--surface-vsf-drawer-object-card-body);
+ --surface-card-body: var(--surface-vsf-drawer-object-card-body);
+ --text-card-header: var(--text-vsf-drawer-object-card-heading);
+ --text-card-body: var(--text-vsf-drawer-object-card-body);
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ align-self: stretch;
+ height: auto;
+}
+
+.sg-vsf-drawer-card__content {
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card .sg-text-layout-pattern__two-column,
+.sg-vsf-drawer-card .sg-text-layout-pattern__column {
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card .sg-text-layout-pattern__two-column {
+ gap: var(--layout-vsf-drawer-object-card-column-gap);
+}
+
+.sg-vsf-drawer-card__actions-segment {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: flex-start;
+ gap: var(--spacing-large);
+ background: var(--surface-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card__actions-segment .sg-interaction-element.sg-button {
+ height: auto;
+ width: 100%;
+}
+
+#vsf-business-model-toggle.sg-interaction-element.sg-button {
+ background: var(--surface-portal-header-tab);
+ color: var(--text-portal-header-tab);
+}
+
+.sg-inline-controls-card {
+ --surface-card-body: var(--surface-card-segment-neutral);
+}
+
+.sg-card-segment.sg-inline-header-row {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+}
+
+.sg-card-segment.sg-inline-controls-row {
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ gap: var(--spacing-small);
+ flex-wrap: nowrap;
+}
+
+.sg-vsf-drawer-object-card__heading {
+ color: var(--text-vsf-drawer-object-card-heading);
+ margin: 0;
+}
+
+.sg-analysis-intro-block {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+}
+
+.sg-analysis-intro-block .sg-heading-h2 {
+ margin: 0;
+}
+
+.sg-analysis-intro-block .sg-text-layout-pattern__sample {
+ margin: 0;
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+
+/* ========================================================= */
+/* Layouts: VSF List Detailseite */
+/* ========================================================= */
+
+.sg-vsf-list-detail-page {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-detail-page > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page > .sg-options-row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page > .sg-vsf-list-detail-page__intro-block {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page__intro-block {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-detail-page__intro-block .sg-vsf-list-detail-page__title,
+.sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ color: var(--color-font-light);
+}
+
+.sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: min(60vw, 100%);
+}
+
+.sg-vsf-list-detail-page__content {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__left-column {
+ width: 30%;
+ min-width: 30%;
+}
+
+.sg-vsf-list-detail-page__right-column {
+ width: 70%;
+ min-width: 0;
+}
+
+.sg-vsf-list-detail-page__left-column .sg-group-card {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__left-column .sg-group-card > .sg-card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__notification-card.sg-vsf-list-detail-page__notification-card--hidden {
+ display: none;
+}
+
+.sg-vsf-list-detail-page__meldungen-overlay-pattern {
+ max-width: 100%;
+}
+
+.sg-vsf-list-detail-page__meldungen-overlay-pattern .sg-delete-confirmation-pattern__floating-card {
+ top: calc(var(--spacing-large) * 5);
+ transform: translateX(-50%);
+}
+
+.sg-vsf-list-detail-page__mobile-toggle {
+ display: none;
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: 100%;
+ }
+
+ .sg-vsf-list-detail-page__content {
+ display: block;
+ }
+
+ .sg-vsf-list-detail-page__left-column {
+ width: 100%;
+ min-width: 0;
+ }
+
+ .sg-vsf-list-detail-page__right-column {
+ width: 100%;
+ }
+
+ .sg-vsf-list-detail-page__left-column .sg-group-card,
+ .sg-vsf-list-detail-page__right-column .sg-group-card {
+ margin-bottom: var(--spacing-large);
+ }
+
+ .sg-vsf-list-detail-page__mobile-toggle {
+ display: inline-flex;
+ width: 100%;
+ margin-bottom: var(--spacing-large);
+ }
+}
+
+/* ========================================================= */
+/* Layouts: VSF Listen Übersicht Seite V2 */
+/* ========================================================= */
+
+.sg-vsf-list-overview-page-v2 {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-overview-page-v2 > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-overview-page-v2 .sg-portal-header-pattern-variant {
+ margin-bottom: 0;
+}
+
+.sg-vsf-list-overview-page-v2 > .sg-vsf-list-overview-page-v2__intro {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-overview-page-v2__content {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-list-overview-page-v2__primary {
+ width: 70%;
+ min-width: 0;
+}
+
+.sg-vsf-list-overview-page-v2__secondary {
+ width: 30%;
+ min-width: 0;
+}
+
+.sg-vsf-list-overview-page-v2__intro .sg-text-layout-pattern__sample--sixty-width {
+ color: var(--color-font-light);
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-list-overview-page-v2__content {
+ display: block;
+ }
+
+ .sg-vsf-list-overview-page-v2__primary,
+ .sg-vsf-list-overview-page-v2__secondary {
+ width: 100%;
+ }
+
+ .sg-vsf-list-overview-page-v2__secondary {
+ margin-top: var(--spacing-large);
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Text Layouts */
+/* ========================================================= */
+
+.sg-text-layout-pattern {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+}
+
+.sg-text-layout-pattern__preview-surface {
+ width: 100%;
+ box-sizing: border-box;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ background: var(--surface-text-layout-preview);
+}
+
+.sg-text-layout-pattern__sample {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__sample--full-width {
+ width: 100%;
+}
+
+.sg-text-layout-pattern__sample--sixty-width {
+ width: 60%;
+}
+
+.sg-text-layout-pattern__sample--two-column {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__two-column {
+ width: 100%;
+ min-width: 0;
+ display: grid;
+ grid-template-columns: var(--layout-text-layout-two-column-columns);
+ column-gap: var(--layout-text-layout-column-gap);
+}
+
+.sg-text-layout-pattern__three-column-distributed {
+ width: 100%;
+ min-width: 0;
+ display: grid;
+ grid-template-columns: var(--layout-text-layout-three-column-columns);
+ column-gap: var(--layout-text-layout-column-gap);
+}
+
+.sg-text-layout-pattern__column {
+ margin: 0;
+ min-width: 0;
+}
+
+.sg-text-layout-pattern__three-column-distributed > .sg-body {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__column--align-left {
+ text-align: var(--text-align-text-layout-column-left);
+}
+
+.sg-text-layout-pattern__column--align-center {
+ text-align: var(--text-align-text-layout-column-center);
+}
+
+.sg-text-layout-pattern__column--align-right {
+ text-align: var(--text-align-text-layout-column-right);
+}
+
+@media (max-width: 767px) {
+ .sg-text-layout-pattern__sample--sixty-width,
+ .sg-text-layout-pattern__sample--two-column,
+ .sg-text-layout-pattern__two-column,
+ .sg-text-layout-pattern__three-column-distributed {
+ width: 100%;
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Card Gruppe mit Tastennavigation */
+/* ========================================================= */
+
+.sg-content-block-card-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-content-block-card-group__tabs,
+.sg-content-block-card-group__panels,
+.sg-content-block-card-group__panel,
+.sg-content-block-card-group__card {
+ width: 100%;
+}
+
+.sg-content-block-card-group__panel[hidden] {
+ display: none;
+}
+
+.sg-content-block-card-group__title {
+ color: var(--text-content-block-card-title);
+ background: var(--surface-content-block-card-title);
+}
+
+.sg-content-block-card-group__content {
+ color: var(--text-content-block-card-content);
+ background: var(--surface-content-block-card-content);
+}
+
+.sg-content-block-card-group__content .sg-body {
+ margin: 0;
+}
+
+@media (max-width: 767px) {
+ .sg-content-block-card-group__tabs[role="tablist"] > [role="tab"] {
+ flex: 1 1 auto;
+ min-width: max-content;
+ white-space: nowrap;
+ }
+}
+
+/* ========================================================= */
+/* Components: Cards */
+/* ========================================================= */
+
+.sg-card {
+ --layout-card-segment-padding-top: var(--card-segment-padding-vertical);
+ --layout-card-segment-padding-right: var(--card-segment-padding-horizontal);
+ --layout-card-segment-padding-bottom: var(--card-segment-padding-vertical);
+ --layout-card-segment-padding-left: var(--card-segment-padding-horizontal);
+ --layout-card-body-padding-top: var(--layout-card-segment-padding-top);
+ --layout-card-body-padding-right: var(--layout-card-segment-padding-right);
+ --layout-card-body-padding-bottom: var(--layout-card-segment-padding-bottom);
+ --layout-card-body-padding-left: var(--layout-card-segment-padding-left);
+ --layout-card-body-text-margin: 0;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ width: 100%;
+ box-sizing: border-box;
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-card);
+}
+
+.sg-card.sg-card--overlay-host {
+ overflow: visible;
+}
+
+.sg-card > .sg-card-segment:first-child {
+ border-top-left-radius: var(--radius-card);
+ border-top-right-radius: var(--radius-card);
+}
+
+.sg-card > .sg-card-segment:last-child {
+ border-bottom-left-radius: var(--radius-card);
+ border-bottom-right-radius: var(--radius-card);
+}
+
+@media (max-width: 48rem) {
+ :root {
+ --card-segment-padding-horizontal: var(--card-segment-padding-horizontal-mobile);
+ }
+}
+
+.sg-card-segment {
+ display: flex;
+ flex-direction: column;
+ height: auto;
+ justify-content: flex-start;
+ align-items: stretch;
+ align-content: flex-start;
+ padding:
+ var(--layout-card-segment-padding-top)
+ var(--layout-card-segment-padding-right)
+ var(--layout-card-segment-padding-bottom)
+ var(--layout-card-segment-padding-left);
+ gap: var(--layout-card-segment-content-gap);
+}
+
+.sg-card-segment--header {
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--body {
+ justify-content: var(--layout-card-body-content-justify);
+ padding:
+ var(--layout-card-body-padding-top)
+ var(--layout-card-body-padding-right)
+ var(--layout-card-body-padding-bottom)
+ var(--layout-card-body-padding-left);
+ color: var(--text-card-body);
+ background: var(--surface-card-body);
+}
+
+.sg-card-segment--body > .sg-body {
+ margin: var(--layout-card-body-text-margin, 0);
+}
+
+.sg-card-segment--body.sg-object-card__content > .sg-body.sg-company-card__summary {
+ margin: var(--layout-company-card-analysis-gap-after-moat) 0 0 0;
+}
+
+.sg-card-segment--darkblue {
+ background: var(--surface-card-header-primary);
+}
+
+.sg-card-segment--darkgreen {
+ background: var(--surface-card-header-alternative);
+}
+
+.sg-card-segment--darkbrown {
+ background: var(--surface-card-header-muted);
+}
+
+.sg-card-segment--signal-red {
+ background: var(--color-signal-red);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--signal-green {
+ background: var(--color-signal-green);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--signal-yellow {
+ background: var(--color-signal-yellow);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--gray {
+ background: var(--surface-card-segment-neutral);
+}
+
+.sg-card-segment--white {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card.sg-card--notification-white {
+ --text-card-header: var(--text-card-body);
+}
+
+.sg-card--content-card {
+ --surface-card-header-primary: var(--surface-content-block-card-title);
+ --surface-card-body: var(--surface-content-block-card-content);
+ --text-card-header: var(--text-content-block-card-title);
+ --text-card-body: var(--text-content-block-card-content);
+}
+
+.sg-card-segment + .sg-card-segment {
+ box-shadow: inset 0 1px 0 var(--divider-card-segment);
+}
+
+.sg-card-segment--darkbrown + .sg-card-segment--body {
+ box-shadow: none;
+}
+
+.sg-card-segment.sg-object-card__header {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.sg-card-segment--body.sg-object-card__content {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card-segment--body.sg-object-card__actions-segment {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card-segment.sg-vsf-drawer-card__actions-segment {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--spacing-large);
+}
+
+.sg-group-card {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+ box-sizing: border-box;
+ padding: var(--spacing-small);
+ border-radius: var(--radius-card);
+ background: var(--surface-card-group);
+}
+
+.sg-group-card > .sg-card {
+ flex: 1 1 calc(50% - var(--spacing-small));
+ width: calc(50% - var(--spacing-small));
+}
+
+.sg-group-card--margin-after-large {
+ margin-bottom: var(--spacing-large);
+}
+
+.sg-group-card__header-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+ width: 100%;
+ margin-bottom: var(--spacing-small);
+}
+
+.sg-group-card__heading {
+ flex: 0 0 100%;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: var(--spacing-small);
+ margin-left: var(--card-segment-padding-horizontal);
+}
+
+.sg-group-card__header-row .sg-group-card__heading {
+ flex: 1 1 auto;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: 0;
+ margin-left: var(--card-segment-padding-horizontal);
+}
+
+.sg-group-card__header-row .sg-sandwich-menu-wrap {
+ margin-right: var(--card-segment-padding-horizontal);
+}
+
+.sg-page-cards .sg-preview-area {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.sg-page-cards .sg-preview-area > .sg-card,
+.sg-page-cards .sg-preview-area > .sg-transparent-card {
+ width: 100%;
+ max-width: none;
+}
+
+.sg-page-cards .sg-group-card > .sg-card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-transparent-card {
+ color: var(--text-card-transparent);
+ background: var(--surface-card-transparent);
+ padding:
+ 0
+ var(--card-segment-padding-horizontal)
+ 0
+ var(--card-segment-padding-horizontal);
+}
+
+.sg-transparent-card p {
+ margin: 0;
+ color: var(--text-card-transparent);
+}
+
+/* ========================================================= */
+/* Components: Charts */
+/* ========================================================= */
+
+.sg-score-bar-list {
+ display: grid;
+ grid-template-columns: var(--layout-score-bar-item-columns);
+ column-gap: var(--layout-score-bar-item-gap);
+ row-gap: var(--spacing-small);
+ align-items: center;
+ width: 100%;
+}
+
+.sg-score-bar-item {
+ display: contents;
+}
+
+.sg-score-bar-list--single-score {
+ --layout-score-bar-item-columns: var(--layout-score-bar-item-single-score-columns);
+}
+
+.sg-score-state--positive,
+.sg-score-state--neutral,
+.sg-score-state--negative {
+ margin: 0;
+ justify-self: end;
+ text-align: right;
+}
+
+.sg-score-state--positive {
+ color: var(--text-score-state-positive);
+}
+
+.sg-score-state--neutral {
+ color: var(--text-score-state-neutral);
+}
+
+.sg-score-state--negative {
+ color: var(--text-score-state-negative);
+}
+
+.sg-score-bar-label {
+ margin: 0;
+ color: var(--text-chart-default);
+}
+
+.sg-score-bar {
+ position: relative;
+ height: var(--score-bar-height);
+ overflow: visible;
+ border-radius: var(--radius-graph-bar);
+ background: var(--surface-score-bar-track);
+}
+
+.sg-score-bar--marker-mid {
+ --score-marker-position: 50%;
+}
+
+.sg-score-bar__value {
+ height: 100%;
+ border-radius: var(--radius-graph-bar);
+}
+
+.sg-score-bar__value--w96 { width: 96%; }
+.sg-score-bar__value--w64 { width: 64%; }
+.sg-score-bar__value--w35 { width: 35%; }
+
+.sg-score-bar__value--positive { background: var(--chart-value-positive); }
+.sg-score-bar__value--neutral { background: var(--chart-value-neutral); }
+.sg-score-bar__value--negative { background: var(--chart-value-negative); }
+
+.sg-score-bar__median-marker {
+ position: absolute;
+ top: 50%;
+ left: var(--score-marker-position);
+ width: var(--score-marker-width);
+ height: var(--score-marker-height);
+ border-radius: 0;
+ background: var(--chart-marker-line);
+ transform: translate(-50%, -50%);
+}
+
+.sg-score-bar__median-marker--outline {
+ border: var(--chart-grid-line-width) solid var(--chart-marker-line);
+ background: transparent;
+}
+
+.sg-chart-preview-area {
+ min-width: var(--layout-object-card-min-width);
+ max-width: var(--layout-object-card-max-width);
+ width: 100%;
+}
+
+.sg-bar-chart {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0;
+ background: var(--surface-chart-area);
+ color: var(--text-chart-default);
+}
+
+.sg-chart-frame {
+ display: grid;
+ grid-template-columns: min-content 1fr;
+ column-gap: var(--chart-axis-label-gap);
+ height: calc(var(--chart-height-bar) * 0.7);
+}
+
+.sg-chart-y-labels {
+ position: relative;
+ width: min-content;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ color: var(--text-chart-default);
+ text-align: right;
+ pointer-events: none;
+}
+
+.sg-chart-y-labels li {
+ position: absolute;
+ white-space: nowrap;
+ right: 0;
+ top: var(--chart-label-position);
+ transform: translateY(-50%);
+}
+
+.sg-chart-x-labels {
+ display: grid;
+ grid-template-columns: repeat(10, 1fr);
+ margin: var(--spacing-small) 0 var(--spacing-large) 0;
+ padding: 0 0 0 calc(var(--interaction-height) + var(--chart-axis-label-gap));
+ list-style: none;
+ color: var(--text-chart-default);
+ text-align: center;
+}
+
+.sg-chart-x-labels--line {
+ position: relative;
+ display: block;
+ height: var(--spacing-large);
+ grid-template-columns: none;
+}
+
+.sg-chart-x-labels--line li {
+ position: absolute;
+ left: var(--chart-label-position);
+ transform: translateX(-50%);
+}
+
+.sg-chart-y-labels li,
+.sg-chart-x-labels li {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-bar-chart__svg,
+.sg-line-chart__svg {
+ display: block;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+}
+
+.sg-bar-chart__grid-line,
+.sg-line-chart__grid-line {
+ stroke: var(--chart-grid-line);
+ stroke-width: var(--chart-grid-line-width);
+}
+
+.sg-bar-chart__axis-line,
+.sg-line-chart__axis-line {
+ stroke: var(--chart-axis-line);
+ stroke-width: var(--chart-grid-line-width);
+}
+
+.sg-bar-chart__bar {
+ rx: var(--radius-graph-bar);
+ ry: var(--radius-graph-bar);
+}
+
+.sg-bar-chart__bar--value { fill: var(--chart-value-primary); }
+.sg-bar-chart__bar--median { fill: var(--chart-value-reference); }
+.sg-bar-chart__label,
+.sg-line-chart__label { display: none; }
+
+.sg-bar-chart__legend,
+.sg-line-chart__legend {
+ display: flex;
+ gap: var(--spacing-large);
+ padding-left: 0;
+ margin-left: 0;
+}
+
+.sg-bar-chart__legend {
+ flex-wrap: wrap;
+ margin-top: 0;
+ color: var(--text-chart-default);
+}
+
+.sg-line-chart__legend {
+ margin-top: var(--spacing-large);
+}
+
+.sg-bar-chart__legend-item,
+.sg-line-chart__legend-item {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ color: var(--text-chart-default);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-bar-chart__legend-swatch {
+ display: inline-block;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ border-radius: var(--radius-interaction);
+}
+
+.sg-bar-chart__legend-swatch--value { background: var(--chart-value-primary); }
+.sg-bar-chart__legend-swatch--median { background: var(--chart-value-reference); }
+
+.sg-line-chart {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0;
+ background: var(--surface-chart-area);
+ color: var(--text-chart-default);
+}
+
+.sg-chart-frame--line {
+ height: calc(var(--chart-height-line) * 0.7);
+}
+
+.sg-line-chart__line {
+ fill: none;
+ stroke: var(--chart-value-primary);
+ stroke-width: var(--chart-line-width);
+ stroke-linecap: round;
+ stroke-linejoin: round;
+}
+
+.sg-line-chart__median-line {
+ fill: none;
+ stroke: var(--chart-median-line);
+ stroke-width: var(--chart-grid-line-width);
+ stroke-dasharray: var(--sandwich-line-height) var(--sandwich-line-height);
+}
+
+.sg-line-chart__legend-line {
+ display: inline-block;
+ width: var(--spacing-large);
+ height: var(--chart-line-width);
+ background: var(--chart-value-primary);
+}
+
+.sg-line-chart__legend-line--median {
+ height: var(--chart-grid-line-width);
+ background: repeating-linear-gradient(
+ to right,
+ var(--chart-median-line) 0,
+ var(--chart-median-line) var(--sandwich-line-height),
+ transparent var(--sandwich-line-height),
+ transparent calc(var(--sandwich-line-height) * 2)
+ );
+}
+
+/* ========================================================= */
+/* Components: Data Display */
+/* ========================================================= */
+
+.sg-data-table {
+ --data-table-column-count: 3;
+ width: 100%;
+ border-collapse: collapse;
+ background: var(--surface-data-table);
+ table-layout: fixed;
+}
+
+.sg-data-table th,
+.sg-data-table td {
+ width: calc(100% / var(--data-table-column-count));
+ padding: 0 0 var(--spacing-small) 0;
+ border: var(--border-none);
+ text-align: left;
+ vertical-align: top;
+}
+
+.sg-data-table[data-component="data-columns"] {
+ --data-table-column-count: 2;
+}
+
+.sg-data-table th {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--text-data-table-default);
+ background: var(--surface-data-table-header);
+}
+
+.sg-data-table td {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--text-data-table-default);
+ background: var(--surface-data-table-cell);
+}
+
+.sg-data-table__label,
+.sg-data-table__value {
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-data-table__value--warning {
+ color: var(--text-data-table-warning);
+}
+
+.sg-data-table__help-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ color: var(--text-data-table-help-icon);
+ background: var(--surface-data-table-help-icon);
+}
+
+
+/* ========================================================= */
+/* Components: Typography */
+/* ========================================================= */
+
+.sg-typography-preview {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ color: var(--text-typography-preview);
+}
+
+.sg-typography-preview h1,
+.sg-typography-preview h2,
+.sg-typography-preview p {
+ color: var(--text-typography-preview);
+ margin-top: 0;
+}
+
diff --git a/public/assets/styleguide.upstream.meta.json b/public/assets/styleguide.upstream.meta.json
new file mode 100644
index 0000000..f892531
--- /dev/null
+++ b/public/assets/styleguide.upstream.meta.json
@@ -0,0 +1,7 @@
+{
+ "styleguideVersion": "2026.05.18.1",
+ "styleguideCommit": "f59701c",
+ "syncedAtUtc": "2026-06-03T14:25:03Z",
+ "sourceRepo": "/Users/mathias/Documents/Dokumente Chouchou/Codebases/Styleguide",
+ "mirroredDocsPath": "docs/styleguide"
+}
diff --git a/public/assets/styles.css b/public/assets/styles.css
new file mode 100644
index 0000000..c64b7ff
--- /dev/null
+++ b/public/assets/styles.css
@@ -0,0 +1,3899 @@
+/* ========================================================= */
+/* Foundations */
+/* ========================================================= */
+
+:root {
+ /* Colors */
+ --color-darkblue: #4661A9;
+ --color-midblue: #657FBA;
+ --color-darkgreen: #4D646E;
+ --color-darkbrown: #665F57;
+ --color-light-grey: #E2E5E9;
+ --color-medium-grey: #CDCFD4;
+ --color-dark-grey: #7B879D;
+ --color-black: #000000;
+ --color-white: #FFFFFF;
+ --color-process-inactive: #FFAE79;
+ --color-signal-green: #009101;
+ --color-signal-yellow: #9C7A00;
+ --color-signal-red: #9B3B2F;
+ --color-font-dark: #414959;
+ --color-font-light: #FFFFFF;
+ --color-font-hyperlink: #FF6900;
+ --color-background-purple: #373C4A;
+ --color-background-purple-light: #656C7D;
+ --color-transparent: transparent;
+
+ /* Semantic component tokens: Cards */
+ --surface-card: var(--color-light-grey);
+ --surface-card-body: var(--color-light-grey);
+ --surface-card-segment-neutral: var(--color-light-grey);
+ --surface-card-group: var(--color-background-purple-light);
+ --surface-card-transparent: var(--color-transparent);
+ --surface-card-header-primary: var(--color-darkblue);
+ --surface-card-header-alternative: var(--color-darkgreen);
+ --surface-card-header-muted: var(--color-darkbrown);
+ --divider-card-segment: var(--color-white);
+ --text-card-header: var(--color-font-light);
+ --text-card-body: var(--color-font-dark);
+ --text-card-transparent: var(--color-font-light);
+ --layout-card-body-content-justify: flex-start;
+ --layout-card-segment-content-gap: var(--spacing-small);
+
+ /* Semantic component tokens: Interactive elements */
+ --surface-form-preview: var(--color-light-grey);
+ --surface-control-default: var(--color-white);
+ --surface-control-active: var(--color-white);
+ --surface-control-inactive: var(--color-white);
+ --surface-control-disabled: var(--color-white);
+ --surface-button-active: var(--color-medium-grey);
+ --surface-button-process: var(--color-font-hyperlink);
+ --surface-button-process-inactive: var(--color-process-inactive);
+ --surface-button-inactive: var(--color-light-grey);
+ --surface-tab-selected: var(--color-dark-grey);
+ --surface-tab-unselected: var(--color-white);
+ --surface-tab-compact-background: var(--surface-form-preview);
+ --surface-tab-compact-unselected: var(--color-medium-grey);
+ --surface-input-clear: var(--color-medium-grey);
+ --surface-toggle-track: var(--color-medium-grey);
+ --surface-toggle-handle: var(--color-darkblue);
+ --surface-menu-panel-portal: var(--color-light-grey);
+ --surface-help-icon: var(--color-medium-grey);
+ --surface-help-panel: var(--color-light-grey);
+ --surface-pulldown-panel: var(--color-light-grey);
+ --surface-activatable-remove: var(--surface-control-default);
+ --surface-slider-track: var(--color-medium-grey);
+ --surface-slider-progress: var(--color-dark-grey);
+ --surface-slider-thumb: var(--color-dark-grey);
+ --surface-checkbox-default: var(--color-white);
+ --surface-checkbox-on-context: var(--color-white);
+ --surface-radio-default: var(--color-white);
+ --layout-pulldown-panel-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-option-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-padding-inline: var(--compact-interaction-padding-horizontal);
+ --layout-pulldown-chevron-offset: var(--compact-interaction-padding-horizontal);
+ --layout-tab-navigation-large-padding-inline: var(--interaction-padding-horizontal);
+ --layout-pulldown-chevron-reserved-space: var(--spacing-large);
+ --layout-pulldown-panel-form-mobile-width: 90%;
+ --layer-pulldown-panel: var(--dimension-layer-pulldown-panel);
+ --layout-multiselect-pulldown-panel-desktop-width: var(--dimension-multiselect-pulldown-panel-desktop-width);
+ --layout-multiselect-pulldown-panel-mobile-width: var(--dimension-multiselect-pulldown-panel-mobile-width);
+ --layout-multiselect-pulldown-label-column-width-fallback: max-content;
+ --layout-input-label-width: var(--dimension-input-label-width);
+ --layout-input-field-desktop-width: var(--dimension-input-field-desktop-width);
+ --layout-input-field-max-width: var(--dimension-input-field-max-width);
+ --layout-form-input-field-max-width: calc(var(--layout-input-field-max-width) + 100px);
+ --layout-search-field-width: var(--dimension-search-field-width);
+ --layout-mode-toggle-local-height: var(--compact-interaction-height);
+ --layout-mode-toggle-local-width-factor: 3;
+ --layout-mode-toggle-width: calc(var(--interaction-height) * 3.5);
+ --layout-help-panel-width: calc(var(--interaction-height) * 8);
+ --text-control-default: var(--color-font-dark);
+ --text-control-disabled: var(--color-dark-grey);
+ --text-button-process: var(--color-font-light);
+ --text-tab-selected: var(--color-font-light);
+ --text-tab-unselected: var(--color-dark-grey);
+ --text-toggle-label-active: var(--color-font-light);
+ --text-menu-link-portal: var(--color-font-dark);
+ --text-help-icon: var(--color-font-dark);
+ --text-help-panel: var(--color-font-dark);
+ --text-activatable-remove: var(--text-control-default);
+ --text-hyperlink: var(--color-font-hyperlink);
+ --icon-pulldown-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M2 2l4 4 4-4' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'/%3E%3C/svg%3E");
+ --icon-sandwich-line-portal: var(--color-font-dark);
+ --icon-radio-mark: var(--color-font-dark);
+
+ /* Semantic component tokens: Charts */
+ --surface-score-bar-track: var(--color-medium-grey);
+ --surface-chart-area: var(--color-light-grey);
+ --chart-value-positive: var(--color-signal-green);
+ --chart-value-neutral: var(--color-signal-yellow);
+ --chart-value-negative: var(--color-signal-red);
+ --chart-value-primary: var(--color-darkblue);
+ --chart-value-reference: var(--color-medium-grey);
+ --chart-grid-line: var(--color-medium-grey);
+ --chart-axis-line: var(--color-font-dark);
+ --chart-marker-line: var(--color-font-dark);
+ --chart-median-line: var(--color-font-dark);
+ --text-chart-default: var(--color-font-dark);
+ --text-score-state-positive: var(--chart-value-positive);
+ --layout-score-bar-item-columns: max-content 1fr;
+ --layout-score-bar-item-gap: var(--spacing-large);
+ --layout-score-bar-item-single-score-columns: max-content 1fr max-content;
+
+ /* Semantic component tokens: Data display */
+ --surface-data-table: var(--color-light-grey);
+ --surface-data-table-header: var(--color-light-grey);
+ --surface-data-table-cell: var(--color-light-grey);
+ --surface-data-table-help-icon: var(--color-medium-grey);
+
+ --text-data-table-default: var(--color-font-dark);
+ --text-data-table-warning: var(--color-signal-yellow);
+ --text-data-table-help-icon: var(--color-font-dark);
+
+ /* Semantic component tokens: Typography */
+ --text-typography-preview: var(--color-font-light);
+ --layout-preview-align-items: flex-start;
+
+ /* Semantic pattern tokens: Portal header */
+ --surface-portal-header: var(--color-darkblue);
+ --surface-portal-header-tab: var(--color-midblue);
+ --surface-portal-header-tab-active: var(--color-light-grey);
+ --text-portal-header-brand: var(--color-font-light);
+ --font-size-portal-header-brand: calc(var(--font-size-brand) * 1.1);
+ --text-portal-header-tab: var(--color-font-light);
+ --text-portal-header-tab-active: var(--color-font-dark);
+ --layout-page-content-inset-inline: var(--card-segment-padding-horizontal);
+ --surface-options-row: var(--color-light-grey);
+ --surface-options-row-control: var(--surface-control-default);
+ --surface-options-row-control-selected: var(--surface-control-active);
+ --surface-options-row-input-clear: var(--surface-input-clear);
+ --surface-options-row-toggle-track: var(--surface-toggle-track);
+ --surface-options-row-toggle-handle: var(--surface-toggle-handle);
+ --surface-options-row-help-icon: var(--surface-help-icon);
+ --surface-options-row-help-panel: var(--surface-help-panel);
+ --divider-options-row-mobile: var(--color-white);
+ --text-options-row-default: var(--text-control-default);
+ --text-options-row-placeholder: var(--text-control-disabled);
+ --text-options-row-help-icon: var(--color-font-light);
+ --text-options-row-help-panel: var(--text-help-panel);
+ --text-options-row-description: var(--color-font-light);
+ --layout-options-row-margin-top: var(--spacing-small);
+ --layout-options-row-main-gap: var(--spacing-large);
+ --layout-options-row-group-gap: var(--spacing-small);
+ --layout-options-row-mode-toggle-width: var(--dimension-options-row-mode-toggle-width);
+ --layout-options-row-help-panel-width: var(--dimension-options-row-help-panel-width);
+ --layout-object-card-min-width: var(--dimension-object-card-min-width);
+ --layout-object-card-max-width: var(--dimension-object-card-max-width);
+ --layout-object-card-height: var(--dimension-object-card-height);
+ --layout-object-card-content-grow: var(--dimension-object-card-content-grow);
+ --layout-object-card-mobile-width: var(--dimension-object-card-mobile-width);
+ --layout-object-card-mobile-height: var(--dimension-object-card-mobile-height);
+ --layout-object-card-desktop-breakpoint: var(--dimension-object-card-desktop-breakpoint);
+ --dimension-notifications-card-min-width: 445px;
+ --layout-notifications-card-flex-basis: var(--dimension-notifications-card-min-width);
+ --layout-notifications-card-min-width: var(--dimension-notifications-card-min-width);
+ --layout-notifications-card-max-width: var(--layout-object-card-max-width);
+ --dimension-notifications-text-segment-fixed-height: 150px;
+ --dimension-notifications-text-segment-fixed-height-small: 60px;
+ --layout-notifications-text-segment-fixed-height: var(--dimension-notifications-text-segment-fixed-height);
+ --layout-notifications-text-segment-fixed-height-small: var(--dimension-notifications-text-segment-fixed-height-small);
+ --layout-object-group-card-min-width: var(--dimension-object-group-card-min-width);
+ --layout-object-group-card-max-width: var(--dimension-object-group-card-max-width);
+ --surface-object-card-lower-segment: var(--color-white);
+ --text-company-card-data-negative: var(--chart-value-negative);
+ --text-company-card-moat-neutral: var(--chart-value-neutral);
+ --layout-company-card-analysis-gap-after-moat: var(--spacing-large);
+ --surface-navigation-card: var(--color-white);
+ --surface-navigation-card-body: var(--color-white);
+ --surface-content-block-card-title: var(--color-light-grey);
+ --surface-content-block-card-content: var(--color-white);
+ --layout-content-cards-group-gap: var(--spacing-small);
+ --surface-card-list-drawer: var(--color-background-purple);
+ --text-content-block-card-title: var(--color-font-dark);
+ --text-content-block-card-content: var(--color-font-dark);
+ --text-card-list-drawer: var(--color-font-dark);
+ --layout-card-list-drawer-width: var(--dimension-card-list-drawer-width);
+ --surface-vsf-drawer-object-card-header: var(--color-darkblue);
+ --surface-vsf-drawer-object-card-body: var(--color-darkblue);
+ --text-vsf-drawer-object-card-heading: var(--color-font-light);
+ --text-vsf-drawer-object-card-body: var(--color-font-light);
+ --layout-vsf-drawer-object-card-column-gap: var(--spacing-large);
+ --text-vsf-list-card-limit-note: var(--color-signal-red);
+ --layout-vsf-list-card-summary-offset-block-start: var(--layout-company-card-analysis-gap-after-moat);
+ --layout-vsf-list-card-delete-confirmation-target-max-width: var(--layout-object-group-card-max-width);
+ --surface-text-layout-preview: var(--color-light-grey);
+ --layout-text-layout-column-gap: var(--spacing-large);
+ --layout-text-layout-two-column-columns: repeat(2, minmax(0, 1fr));
+ --layout-text-layout-three-column-columns: repeat(3, minmax(0, 1fr));
+ --text-align-text-layout-column-left: left;
+ --text-align-text-layout-column-center: center;
+ --text-align-text-layout-column-right: right;
+ --surface-delete-confirmation-overlay: var(--color-light-grey);
+ --surface-delete-confirmation-target-dim-overlay: var(--color-black);
+ --text-delete-confirmation-overlay: var(--color-font-dark);
+ --layout-delete-confirmation-target-max-width: 35rem;
+ --layout-delete-confirmation-overlay-width-factor: 0.8;
+ --layout-delete-confirmation-overlay-offset-block-start: var(--spacing-large);
+ --layout-delete-confirmation-content-gap: var(--spacing-small);
+ --layout-delete-confirmation-actions-gap: var(--spacing-small);
+ --layout-delete-confirmation-actions-offset-block-start: var(--spacing-large);
+ --layout-delete-confirmation-label-width: var(--dimension-input-label-width);
+ --layout-delete-confirmation-target-dim-opacity: 0.5;
+ --layer-delete-confirmation-overlay: 50;
+
+ /* Typography */
+ --font-family-base: "Open Sans", sans-serif;
+ --font-size-base: 1rem;
+ --font-size-small: 0.8rem;
+ --font-size-brand: 1.6rem;
+ --font-size-h1: 1.5rem;
+ --font-size-h2: 1.25rem;
+ --font-weight-regular: 400;
+ --font-weight-semibold: 600;
+ --line-height-base: 1.5;
+
+ /* Spacing */
+ --spacing-small: 0.3rem;
+ --spacing-large: 1rem;
+ --card-segment-padding-vertical: 0.75rem;
+ --card-segment-padding-horizontal: 1rem;
+ --card-segment-padding-horizontal-mobile: 0.5rem;
+ --interaction-padding-vertical: 0.25rem;
+ --interaction-padding-horizontal: 1rem;
+
+ /* Dimensions */
+ --interaction-height: 2rem;
+ --compact-interaction-height: 1.5rem;
+ --compact-interaction-padding-vertical: 0.15rem;
+ --compact-interaction-padding-horizontal: 0.75rem;
+ --small-interaction-element-size: 1.25rem;
+ --disabled-opacity: 0.7;
+ --sandwich-line-width: 1.25rem;
+ --sandwich-line-height: 4px;
+ --sandwich-line-gap: 3px;
+ --score-bar-height: 1rem;
+ --score-marker-width: 6px;
+ --score-marker-height: calc(var(--score-bar-height) + 2px);
+ --chart-height-bar: 24rem;
+ --chart-height-line: 18rem;
+ --chart-axis-label-column-width: 4rem;
+ --chart-axis-label-gap: 5px;
+ --chart-grid-line-width: 1px;
+ --chart-line-width: 2px;
+ --chart-label-position-default: 50%;
+ --dimension-object-card-min-width: 395px;
+ --dimension-object-card-max-width: 600px;
+ --dimension-object-card-height: 600px;
+ --dimension-object-card-content-grow: 1;
+ --dimension-object-card-mobile-width: 100%;
+ --dimension-object-card-mobile-height: auto;
+ --dimension-object-card-desktop-breakpoint: 768px;
+ --dimension-object-group-card-min-width: 550px;
+ --dimension-object-group-card-max-width: 800px;
+ --dimension-input-label-width: 9rem;
+ --dimension-input-field-desktop-width: 400px;
+ --dimension-input-field-max-width: 600px;
+ --dimension-search-field-width: 15.3rem;
+ --dimension-layer-pulldown-panel: 40;
+ --dimension-multiselect-pulldown-panel-desktop-width: 500px;
+ --dimension-multiselect-pulldown-panel-mobile-width: 80vw;
+ --dimension-options-row-mode-toggle-width: 7rem;
+ --dimension-options-row-help-panel-width: 16rem;
+ --dimension-card-list-drawer-width: 40%;
+ --dimension-slider-track-height: 6px;
+ --dimension-slider-thumb-size: 22px;
+ --dimension-slider-thumb-offset-top: -8px;
+ --radius-slider-track: 999px;
+
+ /* Radius */
+ --radius-card: 8px;
+ --radius-graph-bar: 2px;
+ --radius-interaction: 4px;
+
+ /* Shadows */
+ --shadow-none: none;
+ --shadow-overlay: 0 10px 24px rgba(0, 0, 0, 0.22);
+ --shadow-interaction-inset: none;
+
+ /* Borders */
+ --border-none: none;
+ --border-control: none;
+
+ /* Runtime defaults */
+ --layout-object-card-shared-width: auto;
+ --sg-slider-progress: 0%;
+ --chart-label-position: var(--chart-label-position-default);
+}
+
+:root {
+ --color-darkblue: #354A52;
+ --font-family-base: "Avenir", sans-serif;
+}
+
+/* ========================================================= */
+/* Base */
+/* ========================================================= */
+
+body {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--color-font-dark);
+ background: var(--color-background-purple);
+ margin: 0;
+ padding: var(--spacing-small);
+}
+
+@media (max-width: 48rem) {
+ :root {
+ --layout-tab-navigation-large-padding-inline: 0.7rem;
+ }
+
+ body {
+ padding: var(--spacing-small);
+ }
+}
+
+section {
+ margin-bottom: var(--spacing-large);
+}
+
+section + section {
+ margin-top: var(--spacing-large);
+}
+
+.sg-main-heading {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-brand);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--color-font-light);
+}
+
+.sg-sub-heading {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+}
+
+.sg-text-on-dark {
+ color: var(--color-font-light);
+}
+
+.sg-brand-title {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-brand);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-heading-h1 {
+ margin: 0 0 calc(var(--spacing-large) - 0.5rem) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-h1);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-heading-h2 {
+ margin: 0 0 var(--spacing-large) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-h2);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-preview-label {
+ margin: 0 0 var(--spacing-small) 0;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--color-font-light);
+}
+
+.sg-preview-area {
+ display: inline-flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: var(--layout-preview-align-items);
+ padding: 0;
+ border-radius: 0;
+ background: transparent;
+}
+
+
+/* ========================================================= */
+/* Typography helpers */
+/* ========================================================= */
+
+.sg-body,
+.sg-strong,
+.sg-section-title,
+.sg-bar-label,
+.sg-table-label,
+.sg-table-value {
+ font-family: var(--font-family-base);
+ line-height: var(--line-height-base);
+}
+
+.sg-body,
+.sg-section-title {
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+}
+
+.sg-body {
+ margin: 0;
+}
+
+.sg-body:not(:last-child) {
+ margin: 0 0 var(--spacing-large) 0;
+}
+
+.sg-strong,
+.sg-bar-label {
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-table-label {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+}
+
+.sg-table-value {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-index a {
+ color: var(--color-font-hyperlink);
+}
+
+.sg-index .sg-sub-heading {
+ color: var(--color-font-light);
+}
+
+.sg-foundation-table {
+ width: 100%;
+ margin-bottom: var(--spacing-large);
+ color: var(--color-font-light);
+ border: 1px solid var(--color-white);
+}
+
+.sg-foundation-table th,
+.sg-foundation-table td {
+ color: var(--color-font-light);
+ border: 1px solid var(--color-white);
+ vertical-align: top;
+}
+
+.sg-section-h2,
+.sg-section-h3 {
+ margin: 0 0 var(--spacing-small) 0;
+ color: var(--color-font-light);
+}
+
+/* ========================================================= */
+/* Components: Interactive Elements */
+/* ========================================================= */
+
+
+
+ .sg-component-row {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-component-column {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ }
+
+ /*
+ Form preview surface only:
+ All form elements in this component are intentionally shown on the form-area background.
+ This wrapper provides only that evaluation background and must not be implemented as part of the form control itself.
+ The current preview background uses light-grey according to the style foundations.
+ */
+ .sg-form-preview-area {
+ display: inline-flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ background: var(--surface-form-preview);
+ }
+
+ .sg-pulldown-demo {
+ position: relative;
+ display: inline-flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: fit-content;
+ }
+
+
+ .sg-state-example {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 6) auto;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-state-example__label {
+ margin: 0;
+ color: var(--text-control-default);
+ }
+
+ .sg-activatable-control {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-activatable-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-interaction-element {
+ box-sizing: border-box;
+ height: var(--interaction-height);
+ padding:
+ var(--interaction-padding-vertical)
+ var(--interaction-padding-horizontal);
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ background: var(--surface-control-default);
+ }
+
+ .sg-form-active {
+ background: var(--surface-control-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-form-inactive-selectable {
+ background: var(--surface-control-inactive);
+ color: var(--text-control-default);
+ }
+
+ .sg-form-disabled {
+ background: var(--surface-control-disabled);
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-interaction-element:focus,
+ .sg-interaction-element:focus-visible {
+ outline: none;
+ }
+
+ .sg-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: var(--font-weight-semibold);
+ cursor: pointer;
+ text-decoration: none;
+ }
+
+ .sg-button--active {
+ background: var(--surface-button-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-button--process {
+ background: var(--surface-button-process);
+ color: var(--text-button-process);
+ }
+
+ .sg-button--process-inactive {
+ background: var(--surface-button-process-inactive);
+ color: var(--text-button-process);
+ }
+
+ .sg-button--inactive {
+ background: var(--surface-button-active);
+ color: var(--text-control-disabled);
+ }
+
+ .sg-button:disabled,
+ .sg-button--disabled {
+ cursor: not-allowed;
+ color: var(--text-control-disabled);
+ }
+
+ .sg-button--process-inactive:disabled {
+ color: var(--text-button-process);
+ }
+
+ .sg-tab-button-group {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-tab-button-group[data-component-size="compact"] {
+ background: var(--surface-tab-compact-background);
+ }
+
+ .sg-tab-button-group[data-component-context="content"] {
+ background: var(--surface-tab-compact-background);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button {
+ padding-inline: var(--layout-tab-navigation-large-padding-inline);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button[aria-selected="true"] {
+ background: var(--surface-tab-unselected);
+ color: var(--text-tab-unselected);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-selected);
+ color: var(--text-tab-selected);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"][data-component-context="content"] .sg-tab-button[aria-selected="true"] {
+ background: var(--surface-control-default);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button-group[data-component="tab-navigation"][data-component-size="large"][data-component-context="content"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-compact-unselected);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button-group[data-component-size="compact"] .sg-tab-button[aria-selected="false"] {
+ background: var(--surface-tab-compact-unselected);
+ color: var(--text-control-default);
+ }
+
+ .sg-tab-button--compact {
+ height: var(--compact-interaction-height);
+ padding:
+ var(--compact-interaction-padding-vertical)
+ var(--compact-interaction-padding-horizontal);
+ font-size: var(--font-size-small);
+ }
+
+ .sg-pulldown {
+ font-weight: var(--font-weight-regular);
+ appearance: none;
+ padding-left: var(--layout-pulldown-padding-inline);
+ padding-right: calc(
+ var(--layout-pulldown-chevron-offset)
+ + var(--layout-pulldown-chevron-reserved-space)
+ );
+ background-image: var(--icon-pulldown-chevron);
+ background-position: right var(--layout-pulldown-chevron-offset) center;
+ background-size: calc(var(--interaction-height) * 0.375) calc(var(--interaction-height) * 0.25);
+ background-repeat: no-repeat;
+ }
+
+ .sg-pulldown-demo__trigger {
+ display: block;
+ width: 100%;
+ min-width: 0;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .sg-pulldown-demo[data-component-context="form"],
+ .sg-pulldown-demo[data-component-context="overlay"] {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown-demo[data-component-context="form"] .sg-pulldown-demo__trigger,
+ .sg-pulldown-demo[data-component-context="overlay"] .sg-pulldown-demo__trigger {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown--selected {
+ background-color: var(--surface-control-active);
+ color: var(--text-control-default);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .sg-pulldown--inactive-selectable {
+ background-color: var(--surface-control-inactive);
+ color: var(--text-control-default);
+ }
+
+ .sg-pulldown-demo[data-activatable="true"] .sg-pulldown-demo__trigger.sg-pulldown--inactive-selectable {
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-labeled-input-row .sg-pulldown-demo,
+ .sg-labeled-input-row .sg-pulldown-demo .sg-pulldown {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ .sg-pulldown--disabled {
+ background-color: var(--surface-control-disabled);
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-input-single-line {
+ font-weight: var(--font-weight-regular);
+ color: var(--text-control-default);
+ -webkit-appearance: none;
+ appearance: none;
+ }
+
+ .sg-input-single-line::placeholder {
+ color: var(--text-control-disabled);
+ opacity: 1;
+ }
+
+ .sg-input-single-line--inactive-selectable {
+ color: var(--text-control-default);
+ }
+
+ .sg-input-single-line--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-input-single-line-wrap {
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ }
+
+ .sg-input-single-line-wrap .sg-input-single-line {
+ padding-right: calc(var(--interaction-padding-horizontal) + var(--interaction-height));
+ }
+
+ .sg-input-clear-button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: none;
+ align-items: center;
+ justify-content: center;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ padding: 0;
+ margin: 0;
+ border: var(--border-none);
+ border-radius: 0 var(--radius-interaction) var(--radius-interaction) 0;
+ box-shadow: var(--shadow-none);
+ -webkit-appearance: none;
+ appearance: none;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: 1;
+ color: var(--text-control-default);
+ background: var(--surface-input-clear);
+ cursor: pointer;
+ }
+
+ .sg-input-single-line-wrap[data-has-value="true"] .sg-input-clear-button {
+ display: inline-flex;
+ }
+
+ .sg-search-field-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ white-space: nowrap;
+ flex-wrap: nowrap;
+ }
+
+ .sg-search-field-input {
+ width: var(--layout-search-field-width);
+ }
+
+ .sg-search-result-count {
+ color: var(--color-dark-grey);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ }
+
+ .sg-labeled-input-row {
+ display: flex;
+ align-items: center;
+ gap: 0;
+ width: auto;
+ max-width: none;
+ }
+
+ .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: var(--spacing-large);
+ }
+
+ .sg-labeled-input-row .sg-input-single-line,
+ .sg-labeled-input-row .sg-input-multi-line {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-form-input-field-max-width);
+ }
+
+ .sg-labeled-input-row:has(.sg-input-multi-line) {
+ align-items: flex-start;
+ }
+
+ .sg-input-multi-line {
+ box-sizing: border-box;
+ min-height: calc(var(--interaction-height) * 2.75);
+ padding: var(--interaction-padding-vertical) var(--interaction-padding-horizontal);
+ border: var(--border-control);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-interaction-inset);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ background: var(--surface-control-inactive);
+ resize: vertical;
+ }
+
+ .sg-input-component .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ width: 100%;
+ }
+
+ #component-pulldown .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-labeled-input-row {
+ width: 100%;
+ max-width: none;
+ }
+
+ #component-pulldown .sg-labeled-input-row .sg-pulldown,
+ #component-pulldown .sg-labeled-input-row .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-pulldown-demo__trigger,
+ #component-pulldown .sg-state-example > .sg-pulldown {
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-pulldown .sg-activatable-row {
+ display: grid;
+ grid-template-columns: max-content minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header {
+ display: grid;
+ grid-template-columns: max-content max-content;
+ align-items: center;
+ column-gap: var(--spacing-small);
+ width: 100%;
+ justify-content: start;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ }
+
+ #component-pulldown .sg-pulldown-activatable-header .sg-label {
+ grid-column: 2;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-activatable-row .sg-pulldown-demo {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ }
+
+ .sg-input-component .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ }
+
+ @media (max-width: 48rem) {
+ .sg-input-component .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-pulldown .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ .sg-input-component .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ #component-pulldown .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ .sg-input-component .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-pulldown .sg-labeled-input-row .sg-pulldown,
+ #component-pulldown .sg-labeled-input-row .sg-pulldown-demo {
+ width: 100%;
+ min-width: 0;
+ max-width: 100%;
+ }
+
+ #component-pulldown .sg-activatable-row {
+ grid-template-columns: 1fr;
+ align-items: start;
+ row-gap: var(--spacing-small);
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-labeled-input-row {
+ flex-direction: column;
+ align-items: flex-start;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: 0;
+ margin-bottom: var(--spacing-large);
+ }
+
+ .sg-labeled-input-row .sg-input-single-line,
+ .sg-labeled-input-row .sg-input-multi-line {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ }
+ }
+
+ .sg-mode-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ height: auto;
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 0;
+ box-shadow: var(--shadow-none);
+ appearance: none;
+ -webkit-tap-highlight-color: transparent;
+ background: transparent;
+ cursor: pointer;
+ }
+
+ .sg-mode-toggle:focus,
+ .sg-mode-toggle:focus-visible {
+ outline: none;
+ }
+
+ .sg-mode-toggle__label {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: var(--line-height-base);
+ color: var(--text-control-default);
+ }
+
+ .sg-mode-toggle__switch {
+ position: relative;
+ width: var(--layout-mode-toggle-width);
+ height: var(--interaction-height);
+ border-radius: var(--radius-interaction);
+ background: var(--surface-toggle-track);
+ }
+
+ .sg-mode-toggle__handle {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: calc(100% / 2);
+ height: 100%;
+ border-radius: var(--radius-interaction);
+ background: var(--surface-toggle-handle);
+ }
+
+ .sg-mode-toggle[data-active="absolute"] .sg-mode-toggle__handle {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-mode-toggle[data-active="relative"] .sg-mode-toggle__handle {
+ left: auto;
+ right: 0;
+ }
+
+ .sg-mode-toggle--local .sg-mode-toggle__label {
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ }
+
+ .sg-mode-toggle--local .sg-mode-toggle__switch {
+ width: calc(var(--layout-mode-toggle-local-height) * var(--layout-mode-toggle-local-width-factor));
+ height: var(--layout-mode-toggle-local-height);
+ }
+
+ .sg-activation-toggle-pattern {
+ display: flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-activation-mode-toggle {
+ gap: 0;
+ }
+
+ .sg-activation-mode-toggle .sg-mode-toggle__switch {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ align-items: center;
+ overflow: hidden;
+ }
+
+ .sg-activation-mode-toggle .sg-mode-toggle__handle {
+ z-index: 1;
+ }
+
+ .sg-activation-mode-toggle__switch-label {
+ position: relative;
+ z-index: 2;
+ text-align: center;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--layout-mode-toggle-local-height);
+ text-transform: lowercase;
+ color: var(--text-control-default);
+ }
+
+ .sg-activation-mode-toggle[data-active="absolute"] .sg-activation-mode-toggle__switch-label--left,
+ .sg-activation-mode-toggle[data-active="relative"] .sg-activation-mode-toggle__switch-label--right {
+ color: var(--text-toggle-label-active);
+ }
+
+ .sg-slider-row {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: var(--spacing-small);
+ width: 100%;
+ max-width: none;
+ }
+
+ .sg-slider-row .sg-label {
+ min-width: var(--layout-input-label-width);
+ flex: 0 0 var(--layout-input-label-width);
+ color: var(--text-control-default);
+ }
+
+ .sg-slider {
+ flex: 1 1 14rem;
+ width: 100%;
+ min-width: 0;
+ max-width: var(--layout-input-field-max-width);
+ height: var(--interaction-height);
+ margin: 0;
+ padding: 0;
+ border: 0;
+ -webkit-appearance: none;
+ appearance: none;
+ background: transparent;
+ cursor: pointer;
+ }
+
+ .sg-slider::-webkit-slider-runnable-track {
+ height: var(--dimension-slider-track-height);
+ border-radius: var(--radius-slider-track);
+ background:
+ linear-gradient(
+ to right,
+ var(--surface-slider-progress) 0%,
+ var(--surface-slider-progress) var(--sg-slider-progress, 0%),
+ var(--surface-slider-track) var(--sg-slider-progress, 0%),
+ var(--surface-slider-track) 100%
+ );
+ }
+
+ .sg-slider::-webkit-slider-thumb {
+ width: var(--dimension-slider-thumb-size);
+ height: var(--dimension-slider-thumb-size);
+ margin-top: var(--dimension-slider-thumb-offset-top);
+ border: 0;
+ border-radius: 50%;
+ -webkit-appearance: none;
+ appearance: none;
+ background: var(--surface-slider-thumb);
+ }
+
+ .sg-slider::-moz-range-track {
+ height: var(--dimension-slider-track-height);
+ border: 0;
+ border-radius: var(--radius-slider-track);
+ background: var(--surface-slider-track);
+ }
+
+ .sg-slider::-moz-range-progress {
+ height: var(--dimension-slider-track-height);
+ border-radius: var(--radius-slider-track);
+ background: var(--surface-slider-progress);
+ }
+
+ .sg-slider::-moz-range-thumb {
+ width: var(--dimension-slider-thumb-size);
+ height: var(--dimension-slider-thumb-size);
+ border: 0;
+ border-radius: 50%;
+ background: var(--surface-slider-thumb);
+ }
+
+ .sg-slider-value {
+ flex: 0 0 auto;
+ min-width: calc(var(--interaction-height) * 1.25);
+ white-space: nowrap;
+ text-align: right;
+ color: var(--text-control-default);
+ }
+
+ .sg-slider-row--inactive-selectable {
+ opacity: var(--disabled-opacity);
+ }
+
+ #component-slider .sg-slider-row {
+ display: grid;
+ grid-template-columns:
+ max-content
+ minmax(0, 1fr)
+ auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-state-example {
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ width: 100%;
+ }
+
+ #component-slider .sg-form-preview-area {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-slider .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-slider .sg-slider-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ grid-column: 1;
+ }
+
+ #component-slider .sg-slider-row .sg-slider {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ grid-column: 2;
+ }
+
+ #component-slider .sg-state-example > .sg-slider-row,
+ #component-slider .sg-activatable-row .sg-slider-row {
+ max-width: var(--layout-input-field-max-width);
+ }
+
+ #component-slider .sg-slider-row .sg-slider-value {
+ min-width: 0;
+ grid-column: 3;
+ justify-self: start;
+ align-self: center;
+ display: block;
+ margin: 0;
+ line-height: 1;
+ }
+
+ #component-slider .sg-activatable-row {
+ display: grid;
+ grid-template-columns: max-content minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-slider-activatable-header {
+ display: grid;
+ grid-template-columns: max-content max-content;
+ column-gap: var(--spacing-large);
+ align-items: center;
+ width: 100%;
+ justify-content: start;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-label {
+ grid-column: 2;
+ min-width: 0;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider {
+ width: 100%;
+ max-width: var(--layout-input-field-max-width);
+ min-width: 0;
+ grid-column: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider-value {
+ grid-column: 2;
+ justify-self: start;
+ min-width: 0;
+ align-self: center;
+ display: block;
+ margin: 0;
+ line-height: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] {
+ display: grid;
+ grid-template-columns:
+ var(--layout-input-label-width)
+ minmax(0, 1fr)
+ auto;
+ align-items: center;
+ column-gap: var(--spacing-small);
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ min-width: calc(var(--interaction-height) * 1.25);
+ justify-self: end;
+ align-self: center;
+ white-space: nowrap;
+ grid-column: 3;
+ grid-row: 1;
+ }
+
+ @media (max-width: 48rem) {
+ #component-slider .sg-form-preview-area {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ }
+
+ #component-slider .sg-state-example {
+ grid-template-columns: 1fr;
+ align-items: start;
+ width: 100%;
+ }
+
+ #component-slider .sg-state-example > :last-child {
+ width: 100%;
+ min-width: 0;
+ }
+
+ #component-slider .sg-activatable-row {
+ grid-template-columns: 1fr;
+ align-items: start;
+ row-gap: var(--spacing-small);
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ #component-slider .sg-slider-activatable-header .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row {
+ grid-template-columns: minmax(0, 1fr) auto;
+ column-gap: var(--spacing-large);
+ align-items: center;
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider {
+ width: 100%;
+ }
+
+ #component-slider .sg-activatable-row .sg-slider-row .sg-slider-value {
+ justify-self: start;
+ align-self: center;
+ margin: 0;
+ line-height: 1;
+ }
+
+ }
+
+ .sg-sandwich-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: calc(var(--interaction-height) + var(--spacing-small));
+ height: calc(var(--interaction-height) + var(--spacing-small));
+ padding: 0;
+ cursor: pointer;
+ }
+
+ .sg-sandwich-button--small {
+ width: calc(var(--interaction-height) * 0.9);
+ height: calc(var(--interaction-height) * 0.9);
+ }
+
+ .sg-sandwich-button__icon {
+ width: var(--sandwich-line-width);
+ height: auto;
+ display: flex;
+ flex-direction: column;
+ gap: var(--sandwich-line-gap);
+ justify-content: center;
+ }
+
+ .sg-sandwich-button__line {
+ display: block;
+ width: 100%;
+ height: var(--sandwich-line-height);
+ border-radius: var(--radius-interaction);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-button__line {
+ background: var(--icon-sandwich-line-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-button__line {
+ height: calc(var(--sandwich-line-height) - 1px);
+ background: var(--icon-sandwich-line-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-button__icon {
+ width: calc(var(--sandwich-line-width) - 3px);
+ }
+
+ .sg-sandwich-menu-wrap {
+ position: relative;
+ display: inline-flex;
+ }
+
+ .sg-sandwich-menu-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ right: 0;
+ display: none;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: max-content;
+ padding: var(--spacing-large);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-overlay);
+ z-index: var(--layer-pulldown-panel);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-menu-panel {
+ background: var(--surface-menu-panel-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-menu-panel {
+ background: var(--surface-menu-panel-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-open="true"] .sg-sandwich-menu-panel {
+ display: flex;
+ }
+
+ .sg-sandwich-menu-link {
+ margin: 0;
+ text-decoration: none;
+ white-space: nowrap;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="default"] .sg-sandwich-menu-link {
+ color: var(--text-menu-link-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-component-size="small"] .sg-sandwich-menu-link {
+ color: var(--text-menu-link-portal);
+ }
+
+ .sg-sandwich-menu-wrap[data-align="left"] .sg-sandwich-menu-panel {
+ right: auto;
+ left: 0;
+ }
+
+ .sg-sandwich-menu-wrap[data-align="right"] .sg-sandwich-menu-panel {
+ right: 0;
+ left: auto;
+ }
+
+ .sg-help-icon-wrap {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle;
+ }
+
+ .sg-help-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ color: var(--text-help-icon);
+ background: var(--surface-help-icon);
+ cursor: pointer;
+ }
+
+ .sg-help-icon-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ left: 0;
+ z-index: var(--layer-pulldown-panel);
+ display: none;
+ width: var(--layout-help-panel-width);
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ box-sizing: border-box;
+ overflow-wrap: anywhere;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ color: var(--text-help-panel);
+ background: var(--surface-help-panel);
+ box-shadow: var(--shadow-overlay);
+ }
+
+ @supports (width: 100dvw) {
+ .sg-help-icon-panel {
+ width: min(var(--layout-help-panel-width), calc(100dvw - (2 * var(--spacing-large))));
+ max-width: calc(100dvw - (2 * var(--spacing-large)));
+ }
+ }
+
+ .sg-help-icon-wrap[data-open="true"] .sg-help-icon-panel {
+ display: block;
+ }
+
+ .sg-help-icon-wrap[data-open="true"] {
+ z-index: var(--layer-pulldown-panel);
+ }
+
+ .sg-help-icon-wrap[data-align="left"] .sg-help-icon-panel {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-help-icon-wrap[data-align="right"] .sg-help-icon-panel {
+ left: auto;
+ right: 0;
+ }
+
+ .sg-pulldown-panel {
+ position: absolute;
+ top: calc(100% + var(--spacing-small));
+ left: 0;
+ z-index: var(--layer-pulldown-panel);
+ display: none;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ min-width: 100%;
+ width: max-content;
+ max-width: min(
+ var(--layout-multiselect-pulldown-panel-desktop-width),
+ calc(100vw - (2 * var(--spacing-large)))
+ );
+ box-sizing: border-box;
+ padding-block: var(--spacing-large);
+ padding-inline: var(--layout-pulldown-panel-padding-inline);
+ border-radius: var(--radius-card);
+ background: var(--surface-pulldown-panel);
+ box-shadow: var(--shadow-overlay);
+ }
+
+ @supports (width: 100dvw) {
+ .sg-pulldown-panel {
+ max-width: min(
+ var(--layout-multiselect-pulldown-panel-desktop-width),
+ calc(100dvw - (2 * var(--spacing-large)))
+ );
+ }
+ }
+
+ .sg-pulldown-demo[data-open="true"] .sg-pulldown-panel {
+ display: inline-flex;
+ }
+
+ .sg-pulldown-demo[data-align="left"] .sg-pulldown-panel {
+ left: 0;
+ right: auto;
+ }
+
+ .sg-pulldown-demo[data-align="right"] .sg-pulldown-panel {
+ left: auto;
+ right: 0;
+ }
+
+ @media (max-width: 48rem) {
+ .sg-pulldown-demo[data-component-context="overlay"] .sg-pulldown-panel {
+ left: auto;
+ right: 0;
+ }
+ }
+
+ .sg-pulldown-panel__row {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 5) calc(var(--interaction-height) * 7) var(--interaction-height);
+ gap: var(--spacing-small);
+ align-items: center;
+ }
+
+ .sg-pulldown-panel__label {
+ margin: 0;
+ color: var(--text-control-default);
+ }
+
+.sg-pulldown-panel__remove {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ background: var(--surface-activatable-remove);
+ color: var(--text-activatable-remove);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ line-height: 1;
+ -webkit-appearance: none;
+ appearance: none;
+ cursor: pointer;
+}
+
+ .sg-pulldown-panel__remove[hidden] {
+ display: none;
+ }
+
+ .sg-pulldown-panel__row--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-pulldown-panel__row--disabled .sg-pulldown,
+ .sg-pulldown-panel__row--disabled .sg-pulldown-panel__label {
+ color: var(--text-control-disabled);
+ }
+
+ .sg-pulldown-option-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ }
+
+ .sg-pulldown-option {
+ display: flex;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ padding-block: var(--interaction-padding-vertical);
+ padding-inline: var(--layout-pulldown-option-padding-inline);
+ border-radius: var(--radius-interaction);
+ white-space: normal;
+ overflow-wrap: anywhere;
+ color: var(--text-control-default);
+ cursor: pointer;
+ }
+
+ .sg-pulldown-option--selected {
+ background: var(--surface-control-active);
+ }
+
+ .sg-pulldown-option--disabled {
+ color: var(--text-control-disabled);
+ }
+
+ .sg-pulldown-option__checkbox {
+ width: var(--font-size-base);
+ height: var(--font-size-base);
+ margin: 0;
+ }
+
+ .sg-checkbox-field {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: var(--radius-interaction);
+ box-shadow: var(--shadow-none);
+ color: var(--text-control-default);
+ background: var(--surface-checkbox-default);
+ cursor: pointer;
+ }
+
+ .sg-checkbox-field--on-grey,
+ .sg-checkbox-field--on-color {
+ background: var(--surface-checkbox-on-context);
+ }
+
+ .sg-checkbox-field__mark {
+ display: none;
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ }
+
+ .sg-checkbox-field[aria-checked="true"] .sg-checkbox-field__mark {
+ display: inline;
+ }
+
+ .sg-checkbox-field.sg-form-active {
+ background: var(--surface-control-active);
+ color: var(--text-control-default);
+ }
+
+ .sg-checkbox-field--inactive-selectable {
+ color: var(--text-control-default);
+ background: var(--surface-control-inactive);
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-checkbox-field--disabled {
+ color: var(--text-control-disabled);
+ background: var(--surface-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-checkbox-field-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ }
+
+ .sg-checkbox-field-option {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ color: var(--text-control-default);
+ flex-wrap: wrap;
+ }
+
+ .sg-pulldown-panel__checkbox-list .sg-checkbox-field-option.sg-body {
+ margin-bottom: 0;
+ }
+
+ #component-checkbox-field .sg-checkbox-field-option .sg-state-example__label,
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label {
+ flex: 0 0 100%;
+ margin-bottom: var(--spacing-small);
+ }
+
+ .sg-checkbox-field-option--inactive-selectable {
+ color: var(--text-control-default);
+ }
+
+ #component-checkbox-field .sg-checkbox-field-option[data-activatable="true"],
+ #component-radio-field .sg-checkbox-field-option[data-activatable="true"] {
+ gap: var(--spacing-large);
+ }
+
+ .sg-radio-activatable-group__choices {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-radio-activatable-group__choice {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ }
+
+ .sg-radio-activatable-group__choice > span {
+ color: var(--text-control-default);
+ opacity: 1;
+ }
+
+ #component-radio-activatable[data-component-state="inactive-selectable"] .sg-radio-activatable-group__choice > span {
+ opacity: var(--disabled-opacity);
+ }
+
+ #component-radio-activatable[data-component-state="active"] .sg-radio-activatable-group__choice > span {
+ opacity: 1;
+ }
+
+ #component-radio-field .sg-checkbox-field-option {
+ display: grid;
+ grid-template-columns: calc(var(--interaction-height) * 6) minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-small);
+ width: 100%;
+ }
+
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label {
+ grid-column: 1;
+ margin-bottom: 0;
+ }
+
+ #component-radio-field .sg-radio-field-row {
+ grid-column: 2;
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ min-width: 0;
+ flex-wrap: nowrap;
+ }
+
+ #component-radio-field .sg-radio-field-row > .sg-radio-activatable-group__choices {
+ margin-left: var(--spacing-large);
+ }
+
+ #component-radio-field .sg-radio-field-row--without-label > .sg-radio-activatable-group__choices {
+ margin-left: 0;
+ }
+
+ @media (max-width: 48rem) {
+ #component-radio-field .sg-checkbox-field-option {
+ grid-template-columns: 1fr;
+ align-items: start;
+ }
+
+ #component-radio-field .sg-checkbox-field-option .sg-state-example__label,
+ #component-radio-field .sg-radio-field-row {
+ grid-column: 1;
+ }
+
+ #component-radio-field .sg-radio-field-row {
+ flex-wrap: wrap;
+ }
+
+ #component-radio-field .sg-radio-field-row > .sg-radio-activatable-group__choices {
+ flex: 0 0 100%;
+ margin-left: 0;
+ }
+ }
+
+ .sg-checkbox-field-option--disabled {
+ color: var(--text-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-radio-field {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ padding: 0;
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ color: var(--text-control-default);
+ background: var(--surface-radio-default);
+ cursor: pointer;
+ }
+
+ .sg-radio-field__mark {
+ display: none;
+ width: calc(var(--small-interaction-element-size) * 0.44);
+ height: calc(var(--small-interaction-element-size) * 0.44);
+ border-radius: 50%;
+ background: var(--icon-radio-mark);
+ }
+
+ .sg-radio-field[aria-checked="true"] .sg-radio-field__mark {
+ display: block;
+ }
+
+ .sg-radio-field--inactive-selectable {
+ color: var(--text-control-default);
+ background: var(--surface-radio-default);
+ opacity: var(--disabled-opacity);
+ }
+
+ .sg-radio-field--disabled {
+ color: var(--text-control-disabled);
+ background: var(--surface-control-disabled);
+ opacity: var(--disabled-opacity);
+ cursor: not-allowed;
+ }
+
+ .sg-hyperlink {
+ color: var(--text-hyperlink);
+ text-decoration: none;
+ }
+
+/* ========================================================= */
+/* Patterns: Portal Header */
+/* ========================================================= */
+
+.sg-portal-header {
+ --surface-tab-selected: var(--surface-portal-header-tab);
+ --surface-tab-unselected: var(--surface-portal-header-tab-active);
+ --text-tab-selected: var(--text-portal-header-tab);
+ --text-tab-unselected: var(--text-portal-header-tab-active);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-large);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-portal-header);
+}
+
+.sg-portal-header__main {
+ display: grid;
+ flex: 1 1 auto;
+ grid-template-columns: minmax(0, 1fr) auto;
+ grid-template-areas:
+ "brand menu"
+ "tabs tabs";
+ gap: var(--spacing-large);
+ min-width: 0;
+}
+
+.sg-portal-header__brand {
+ grid-area: brand;
+ margin: 0;
+ padding-left: 0;
+ font-size: var(--font-size-portal-header-brand);
+ color: var(--text-portal-header-brand);
+}
+
+.sg-portal-header__tabs {
+ grid-area: tabs;
+ width: 100%;
+}
+
+.sg-portal-header__menu-wrap {
+ grid-area: menu;
+ justify-self: end;
+}
+
+.sg-portal-header-pattern-variant {
+ margin-bottom: var(--spacing-large);
+}
+
+.sg-portal-header-pattern-variant__label {
+ margin: 0 0 var(--spacing-small) 0;
+}
+
+.sg-portal-header-pattern-variant__next-element {
+ margin-top: var(--spacing-large);
+}
+
+@media (max-width: calc(var(--layout-object-card-desktop-breakpoint) - 1px)) {
+ .sg-portal-header__main {
+ gap: var(--spacing-small) var(--spacing-large);
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Options Row */
+/* ========================================================= */
+
+.sg-options-row {
+ --surface-control-default: var(--surface-options-row-control);
+ --surface-control-active: var(--surface-options-row-control-selected);
+ --surface-input-clear: var(--surface-options-row-input-clear);
+ --surface-toggle-track: var(--surface-options-row-toggle-track);
+ --surface-toggle-handle: var(--surface-options-row-toggle-handle);
+ --surface-help-icon: var(--surface-options-row-help-icon);
+ --surface-help-panel: var(--surface-options-row-help-panel);
+ --text-control-default: var(--text-options-row-default);
+ --text-control-disabled: var(--text-options-row-placeholder);
+ --text-help-icon: var(--text-options-row-help-icon);
+ --text-help-panel: var(--text-options-row-help-panel);
+ --layout-mode-toggle-width: var(--layout-options-row-mode-toggle-width);
+ --layout-help-panel-width: var(--layout-options-row-help-panel-width);
+ margin-top: var(--layout-options-row-margin-top);
+ display: flex;
+ justify-content: space-between;
+ gap: var(--layout-options-row-main-gap);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-options-row);
+}
+
+.sg-options-row__left,
+.sg-options-row__right {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--layout-options-row-group-gap);
+ align-items: center;
+}
+
+.sg-options-row__left {
+ justify-content: flex-start;
+}
+
+.sg-options-row__right {
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ margin-left: auto;
+}
+
+@media (max-width: 48rem) {
+ .sg-options-row {
+ flex-direction: column;
+ gap: 0;
+ padding: 0;
+ }
+
+ .sg-options-row__right,
+ .sg-options-row__left {
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--card-segment-padding-horizontal);
+ }
+
+ .sg-options-row__right {
+ order: 1;
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ margin-left: 0;
+ }
+
+ .sg-options-row__left {
+ order: 2;
+ box-shadow: inset 0 1px 0 var(--divider-options-row-mobile);
+ }
+
+ .sg-options-row__left > .sg-pulldown-demo,
+ .sg-options-row__left > .sg-input-single-line-wrap,
+ .sg-options-row__left > .sg-search-field-row {
+ flex: 1 1 calc(50% - var(--layout-options-row-group-gap));
+ min-width: 0;
+ }
+
+.sg-options-row__left > .sg-input-single-line-wrap,
+.sg-options-row__left > .sg-search-field-row {
+ flex-basis: 100%;
+ }
+
+ .sg-options-row .sg-search-field-input {
+ display: inline-flex;
+ align-items: stretch;
+ }
+
+ .sg-options-row .sg-search-field-input .sg-input-single-line {
+ padding-right: var(--interaction-padding-horizontal);
+ }
+
+ .sg-options-row .sg-search-field-input[data-has-value="true"] .sg-input-single-line {
+ border-radius: var(--radius-interaction) 0 0 var(--radius-interaction);
+ }
+
+ .sg-options-row .sg-search-field-input .sg-input-clear-button {
+ position: static;
+ flex: 0 0 var(--interaction-height);
+ height: auto;
+ border-radius: 0 var(--radius-interaction) var(--radius-interaction) 0;
+ }
+
+ .sg-options-row__left > .sg-input-single-line-wrap .sg-input-single-line,
+ .sg-options-row__left > .sg-pulldown-demo .sg-pulldown {
+ width: 100%;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ width: min(
+ var(--layout-pulldown-panel-form-mobile-width),
+ calc(100vw - (2 * var(--spacing-large)))
+ );
+ min-width: 0;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ }
+
+ .sg-options-row .sg-pulldown-panel .sg-form-sections-card-wrapper,
+ .sg-options-row .sg-pulldown-panel .sg-form-sections-card {
+ min-width: 0;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ column-gap: var(--spacing-large);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-label {
+ min-width: 100%;
+ flex: 0 0 100%;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider {
+ min-width: 0;
+ max-width: 100%;
+ width: 100%;
+ flex: 1 1 0;
+ }
+
+ .sg-pulldown-panel .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ min-width: calc(var(--interaction-height) * 1.25);
+ align-self: center;
+ white-space: nowrap;
+ flex: 0 0 auto;
+ }
+
+ .sg-pulldown-panel__row {
+ grid-template-columns: minmax(0, 1fr) var(--interaction-height);
+ }
+
+ .sg-pulldown-panel__label {
+ grid-column: 1 / -1;
+ }
+}
+
+
+/* ========================================================= */
+/* Patterns: Object Card */
+/* ========================================================= */
+
+.sg-object-card-grid {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+}
+
+.sg-object-card {
+ display: flex;
+ flex-direction: column;
+ flex: 1 1 var(--layout-object-card-min-width);
+ min-width: var(--layout-object-card-min-width);
+ max-width: var(--layout-object-card-max-width);
+ height: var(--layout-object-card-height);
+}
+
+.sg-object-card-grid.sg-object-card-grid--multi-row .sg-object-card {
+ flex: 0 0 var(--layout-object-card-shared-width);
+ width: var(--layout-object-card-shared-width);
+}
+
+@media (max-width: 767px) {
+ .sg-object-card {
+ width: var(--layout-object-card-mobile-width);
+ min-width: 0;
+ max-width: none;
+ height: var(--layout-object-card-mobile-height);
+ }
+
+ .sg-object-card[data-pattern="object-group-card"] {
+ flex-basis: 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ }
+}
+
+.sg-object-card__content {
+ flex: var(--layout-object-card-content-grow) 1 auto;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ background: var(--color-white);
+}
+
+.sg-object-card__header {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.sg-object-card__actions {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+ margin-top: 0;
+}
+
+.sg-object-card__action {
+ flex: 1 1 0;
+ min-width: 0;
+}
+
+
+/* ========================================================= */
+/* Patterns: Object Group Card */
+/* ========================================================= */
+
+.sg-object-group-card__actions {
+ margin-top: auto;
+}
+
+.sg-object-card[data-pattern="object-group-card"] {
+ flex: 1 1 var(--layout-object-group-card-min-width);
+ min-width: var(--layout-object-group-card-min-width);
+ max-width: var(--layout-object-group-card-max-width);
+}
+
+.sg-object-group-card__hint {
+ color: var(--color-font-light);
+}
+
+.sg-company-card__metric-negative {
+ color: var(--text-company-card-data-negative);
+}
+
+.sg-company-card__analysis-title {
+ margin: 0;
+}
+
+.sg-company-card__analysis-bars {
+ margin-top: 0;
+}
+
+.sg-company-card__moat-row {
+ display: contents;
+}
+
+.sg-company-card__moat-value {
+ justify-self: start;
+ text-align: left;
+}
+
+.sg-company-card__moat-neutral {
+ color: var(--text-company-card-moat-neutral);
+}
+
+.sg-company-card__summary {
+ margin: 0;
+}
+
+/* ========================================================= */
+/* Patterns: Navigation Card */
+/* ========================================================= */
+
+
+/* ========================================================= */
+/* Patterns: Formular mit Abschnitten */
+/* ========================================================= */
+
+.sg-form-sections-card {
+ --layout-form-sections-label-column-width: var(--layout-input-label-width);
+ --layout-form-sections-interaction-indent: calc(
+ var(--layout-form-sections-label-column-width) + var(--spacing-large)
+ );
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ min-width: min(
+ 100%,
+ calc(var(--layout-form-sections-label-column-width) + var(--spacing-small) + var(--layout-input-field-desktop-width))
+ );
+ max-width: calc(
+ var(--layout-form-sections-label-column-width) + var(--spacing-small) + var(--layout-form-input-field-max-width)
+ );
+}
+
+.sg-form-sections-card-wrapper {
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ height: auto;
+}
+
+.sg-form-sections-card__body {
+ background: var(--surface-form-preview);
+ padding: 0;
+}
+
+.sg-form-sections-card__title {
+ margin: 0 0 var(--spacing-large) 0;
+}
+
+.sg-form-sections-card__actions-segment {
+ background: var(--surface-form-preview);
+ padding: 0;
+}
+
+.sg-form-sections-card__chapter + .sg-form-sections-card__chapter {
+ margin-top: var(--spacing-large);
+}
+
+.sg-form-sections-card__chapter-title,
+.sg-form-sections-card__sentence {
+ margin: 0;
+}
+
+.sg-form-sections-card__sentence {
+ margin-top: var(--spacing-small);
+}
+
+.sg-form-sections-card__option-group,
+.sg-form-sections-card__field-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ margin-top: var(--spacing-large);
+}
+
+.sg-form-sections-card .sg-labeled-input-row .sg-label {
+ min-width: var(--layout-form-sections-label-column-width);
+ flex: 0 0 var(--layout-form-sections-label-column-width);
+ margin-right: var(--spacing-large);
+}
+
+.sg-form-sections-card__option-group,
+.sg-form-sections-card__actions {
+ padding-left: var(--layout-form-sections-interaction-indent);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > :not(.sg-form-sections-card__chapter-title) + :not(.sg-form-sections-card__chapter-title) {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-form-sections-card__chapter-title + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-slider-row + .sg-slider-row,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-checkbox-field-option + .sg-checkbox-field-option,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-radio-activatable-group + .sg-radio-activatable-group {
+ margin-top: var(--spacing-small);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > .sg-pulldown-panel__row + .sg-pulldown-panel__row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ --sg-multiselect-label-column-width: var(--layout-multiselect-pulldown-label-column-width-fallback);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ white-space: nowrap;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ display: grid;
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr) auto;
+ align-items: center;
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable {
+ opacity: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider-value,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-radio-activatable-group__choices {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-label {
+ grid-column: 2;
+ min-width: 0;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider {
+ grid-column: 3;
+ min-width: 0;
+ width: 100%;
+ max-width: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ grid-column: 4;
+ margin: 0;
+ min-width: 0;
+ line-height: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ -webkit-tap-highlight-color: transparent;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group {
+ display: grid;
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr);
+ align-items: center;
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label {
+ grid-column: 2;
+ margin: 0;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-radio-activatable-group__choices {
+ grid-column: 3;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-radio-activatable-group__choices {
+ pointer-events: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable > :not(.sg-mode-toggle),
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > :not(.sg-mode-toggle),
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > :not(.sg-mode-toggle) {
+ pointer-events: none;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] {
+ grid-template-columns: max-content var(--sg-multiselect-label-column-width) minmax(0, 1fr);
+ column-gap: var(--spacing-large);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-mode-toggle {
+ grid-column: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ grid-column: 2;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown {
+ grid-column: 3;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled {
+ opacity: 1;
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown-panel__label,
+.sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown {
+ opacity: var(--disabled-opacity);
+}
+
+.sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-demo .sg-pulldown-panel {
+ min-width: 100%;
+ width: max-content;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+}
+
+@media (max-width: 48rem) {
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel {
+ min-width: 100%;
+ width: max-content;
+ max-width: calc(100vw - (2 * var(--spacing-large)));
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] {
+ grid-template-columns: max-content minmax(0, 1fr) auto;
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] > .sg-label,
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label,
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ white-space: normal;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider {
+ grid-column: 1 / 3;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-slider-value {
+ grid-column: 3;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group {
+ grid-template-columns: max-content minmax(0, 1fr);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-radio-activatable-group__choices {
+ grid-column: 1 / -1;
+ grid-row: 2;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] {
+ grid-template-columns: max-content minmax(0, 1fr);
+ row-gap: var(--spacing-small);
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-mode-toggle {
+ grid-column: 1;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__label {
+ grid-column: 2;
+ grid-row: 1;
+ }
+
+ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown {
+ grid-column: 1 / -1;
+ grid-row: 2;
+ }
+}
+
+.sg-form-sections-card__actions {
+ display: flex;
+ justify-content: flex-start;
+ gap: var(--spacing-small);
+ margin-top: 0;
+}
+
+.sg-form-sections-card__action {
+ width: auto;
+}
+
+.sg-navigation-card-layout {
+ width: 100%;
+ margin-top: var(--spacing-large);
+}
+
+.sg-navigation-card-block {
+ --surface-card: var(--surface-navigation-card);
+ --surface-card-body: var(--surface-navigation-card-body);
+ display: block;
+ flex: none;
+ min-width: 0;
+ max-width: none;
+ width: 100%;
+}
+
+.sg-navigation-card-center {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+}
+
+.sg-content-cards-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--layout-content-cards-group-gap);
+}
+
+@media (max-width: 48rem) {
+ .sg-form-sections-card .sg-labeled-input-row .sg-label {
+ min-width: 0;
+ flex: 0 0 auto;
+ margin-right: 0;
+ }
+
+ .sg-form-sections-card__option-group,
+ .sg-form-sections-card__actions {
+ padding-left: 0;
+ }
+}
+
+/* ========================================================= */
+/* Patterns: VSF List Card */
+/* ========================================================= */
+
+#layout-vsf-list-card .sg-vsf-list-card-limit-note {
+ margin: 0 0 var(--space-16) 0;
+ color: var(--text-vsf-list-card-limit-note);
+}
+
+#layout-vsf-list-card .sg-vsf-list-card__summary {
+ margin: var(--layout-vsf-list-card-summary-offset-block-start) 0 0 0;
+}
+
+.sg-vsf-list-card-context[data-pattern="overlay-card"] {
+ --layout-delete-confirmation-target-max-width: var(--layout-vsf-list-card-delete-confirmation-target-max-width);
+}
+
+/* ========================================================= */
+/* Patterns: Overlay Card */
+/* ========================================================= */
+
+.sg-delete-confirmation-pattern {
+ width: 100%;
+ max-width: var(--layout-delete-confirmation-target-max-width);
+}
+
+.sg-delete-confirmation-pattern__stage {
+ position: relative;
+}
+
+.sg-delete-confirmation-pattern__host {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-delete-confirmation-pattern__host > .sg-delete-confirmation-pattern__target {
+ flex: 1 1 auto;
+}
+
+.sg-delete-confirmation-pattern__target {
+ position: relative;
+ overflow: hidden;
+}
+
+.sg-delete-confirmation-pattern__target::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background: var(--surface-delete-confirmation-target-dim-overlay);
+ opacity: 0;
+ pointer-events: none;
+}
+
+.sg-delete-confirmation-pattern__stage[data-dialog-open="true"] .sg-delete-confirmation-pattern__target::after {
+ opacity: var(--layout-delete-confirmation-target-dim-opacity);
+}
+
+.sg-delete-confirmation-pattern__floating-card {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: calc(100% * var(--layout-delete-confirmation-overlay-width-factor));
+ box-sizing: border-box;
+ max-width: calc(100% * var(--layout-delete-confirmation-overlay-width-factor));
+ z-index: var(--layer-delete-confirmation-overlay);
+ box-shadow: var(--shadow-overlay);
+}
+
+.sg-delete-confirmation-pattern__floating-card[hidden] {
+ display: none;
+}
+
+.sg-delete-confirmation-pattern__body {
+ display: flex;
+ flex-direction: column;
+ gap: var(--layout-delete-confirmation-content-gap);
+ background: var(--surface-delete-confirmation-overlay);
+}
+
+.sg-delete-confirmation-pattern__text {
+ margin: 0;
+ color: var(--text-delete-confirmation-overlay);
+}
+
+.sg-delete-confirmation-pattern__code {
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-delete-confirmation-pattern__input-row {
+ margin: var(--spacing-large) 0 0 0;
+}
+
+.sg-delete-confirmation-pattern__actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: var(--layout-delete-confirmation-actions-gap);
+ margin-top: var(--layout-delete-confirmation-actions-offset-block-start);
+}
+
+@media (max-width: 48rem) {
+ .sg-delete-confirmation-pattern__actions {
+ flex-wrap: wrap;
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Notifications */
+/* ========================================================= */
+
+.sg-notifications-pattern {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+}
+
+.sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+}
+
+/* Dokumentierte Pattern-Variante: Notifications innerhalb Group Card */
+.sg-notifications-pattern.sg-group-card > .sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+}
+
+.sg-notifications-pattern.sg-notifications-pattern--multi-row .sg-notifications-pattern__card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__text-segment {
+ height: auto;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__title-segment {
+ height: auto;
+}
+
+.sg-notifications-pattern__card > .sg-notifications-pattern__text-segment.sg-notifications-pattern__text-segment--small {
+ height: auto;
+}
+
+.sg-vsf-meldungen-layout {
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: var(--spacing-small);
+ align-items: start;
+ width: 100%;
+}
+
+.sg-vsf-meldungen-layout > .sg-group-card {
+ min-width: 0;
+}
+
+.sg-vsf-meldungen-mobile {
+ display: none;
+}
+
+.sg-vsf-meldungen-mobile__panels {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-meldungen-mobile__panel {
+ width: 100%;
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-meldungen-layout {
+ display: none;
+ }
+
+ .sg-vsf-meldungen-mobile {
+ display: flex;
+ width: 100%;
+ }
+
+ .sg-notifications-pattern__card {
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ flex: 1 1 auto;
+ }
+
+ .sg-notifications-pattern__card > .sg-notifications-pattern__text-segment,
+ .sg-notifications-pattern__card > .sg-notifications-pattern__title-segment,
+ .sg-notifications-pattern__card > .sg-notifications-pattern__text-segment.sg-notifications-pattern__text-segment--small {
+ height: auto;
+ }
+}
+
+/* ========================================================= */
+/* Layouts: Card Listen Seite */
+/* ========================================================= */
+
+.sg-card-list-page {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-card-list-page-drawer {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ width: var(--layout-card-list-drawer-width);
+ max-width: 100%;
+ display: flex;
+ flex-direction: column;
+ transform: translateX(100%);
+ transition: transform 220ms ease;
+ background: var(--surface-card-list-drawer);
+ color: var(--text-card-list-drawer);
+ box-shadow: var(--shadow-overlay);
+ z-index: 1000;
+ overflow-y: auto;
+}
+
+.sg-card-list-page-drawer[data-open="true"] {
+ transform: translateX(0);
+}
+
+.sg-card-list-page-drawer__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+}
+
+.sg-card-list-page-drawer__title {
+ margin: 0;
+ color: inherit;
+}
+
+.sg-card-list-page-drawer__content {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-large);
+ padding:
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline)
+ var(--card-segment-padding-vertical)
+ var(--layout-page-content-inset-inline);
+}
+
+.sg-card-list-page > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-card-list-page > .sg-options-row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-card-list-page > .sg-card-list-page__intro-block {
+ margin-top: calc(var(--spacing-large) - 0.5rem);
+}
+
+.sg-card-list-page__intro-block {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-large);
+}
+
+.sg-card-list-page__title-row {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ width: fit-content;
+ max-width: 100%;
+}
+
+.sg-card-list-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: min(60vw, 100%);
+}
+
+@media (max-width: 767px) {
+ .sg-card-list-page-drawer {
+ display: none;
+ }
+
+ .sg-card-list-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: 100%;
+ }
+}
+
+.sg-card-list-page__object-grid,
+.sg-card-list-page__navigation {
+ width: 100%;
+}
+
+.sg-vsf-drawer-card {
+ --surface-card-header-primary: var(--surface-vsf-drawer-object-card-header);
+ --surface-card: var(--surface-vsf-drawer-object-card-body);
+ --surface-card-body: var(--surface-vsf-drawer-object-card-body);
+ --text-card-header: var(--text-vsf-drawer-object-card-heading);
+ --text-card-body: var(--text-vsf-drawer-object-card-body);
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ align-self: stretch;
+ height: auto;
+}
+
+.sg-vsf-drawer-card__content {
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card .sg-text-layout-pattern__two-column,
+.sg-vsf-drawer-card .sg-text-layout-pattern__column {
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card .sg-text-layout-pattern__two-column {
+ gap: var(--layout-vsf-drawer-object-card-column-gap);
+}
+
+.sg-vsf-drawer-card__actions-segment {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: flex-start;
+ gap: var(--spacing-large);
+ background: var(--surface-vsf-drawer-object-card-body);
+}
+
+.sg-vsf-drawer-card__actions-segment .sg-interaction-element.sg-button {
+ height: auto;
+ width: 100%;
+}
+
+#vsf-business-model-toggle.sg-interaction-element.sg-button {
+ background: var(--surface-portal-header-tab);
+ color: var(--text-portal-header-tab);
+}
+
+.sg-inline-controls-card {
+ --surface-card-body: var(--surface-card-segment-neutral);
+}
+
+.sg-card-segment.sg-inline-header-row {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+}
+
+.sg-card-segment.sg-inline-controls-row {
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-end;
+ gap: var(--spacing-small);
+ flex-wrap: nowrap;
+}
+
+.sg-vsf-drawer-object-card__heading {
+ color: var(--text-vsf-drawer-object-card-heading);
+ margin: 0;
+}
+
+.sg-analysis-intro-block {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+}
+
+.sg-analysis-intro-block .sg-heading-h2 {
+ margin: 0;
+}
+
+.sg-analysis-intro-block .sg-text-layout-pattern__sample {
+ margin: 0;
+ color: var(--text-vsf-drawer-object-card-body);
+}
+
+
+/* ========================================================= */
+/* Layouts: VSF List Detailseite */
+/* ========================================================= */
+
+.sg-vsf-list-detail-page {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-detail-page > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page > .sg-options-row {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page > .sg-vsf-list-detail-page__intro-block {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-detail-page__intro-block {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-detail-page__intro-block .sg-vsf-list-detail-page__title,
+.sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ color: var(--color-font-light);
+}
+
+.sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: min(60vw, 100%);
+}
+
+.sg-vsf-list-detail-page__content {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__left-column {
+ width: 30%;
+ min-width: 30%;
+}
+
+.sg-vsf-list-detail-page__right-column {
+ width: 70%;
+ min-width: 0;
+}
+
+.sg-vsf-list-detail-page__left-column .sg-group-card {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__left-column .sg-group-card > .sg-card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-vsf-list-detail-page__notification-card.sg-vsf-list-detail-page__notification-card--hidden {
+ display: none;
+}
+
+.sg-vsf-list-detail-page__meldungen-overlay-pattern {
+ max-width: 100%;
+}
+
+.sg-vsf-list-detail-page__meldungen-overlay-pattern .sg-delete-confirmation-pattern__floating-card {
+ top: calc(var(--spacing-large) * 5);
+ transform: translateX(-50%);
+}
+
+.sg-vsf-list-detail-page__mobile-toggle {
+ display: none;
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-list-detail-page__intro-block .sg-text-layout-pattern__sample--sixty-width {
+ width: 100%;
+ }
+
+ .sg-vsf-list-detail-page__content {
+ display: block;
+ }
+
+ .sg-vsf-list-detail-page__left-column {
+ width: 100%;
+ min-width: 0;
+ }
+
+ .sg-vsf-list-detail-page__right-column {
+ width: 100%;
+ }
+
+ .sg-vsf-list-detail-page__left-column .sg-group-card,
+ .sg-vsf-list-detail-page__right-column .sg-group-card {
+ margin-bottom: var(--spacing-large);
+ }
+
+ .sg-vsf-list-detail-page__mobile-toggle {
+ display: inline-flex;
+ width: 100%;
+ margin-bottom: var(--spacing-large);
+ }
+}
+
+/* ========================================================= */
+/* Layouts: VSF Listen Übersicht Seite V2 */
+/* ========================================================= */
+
+.sg-vsf-list-overview-page-v2 {
+ display: flex;
+ flex-direction: column;
+}
+
+.sg-vsf-list-overview-page-v2 > * + * {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-overview-page-v2 .sg-portal-header-pattern-variant {
+ margin-bottom: 0;
+}
+
+.sg-vsf-list-overview-page-v2 > .sg-vsf-list-overview-page-v2__intro {
+ margin-top: var(--spacing-large);
+}
+
+.sg-vsf-list-overview-page-v2__content {
+ display: flex;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-vsf-list-overview-page-v2__primary {
+ width: 70%;
+ min-width: 0;
+}
+
+.sg-vsf-list-overview-page-v2__secondary {
+ width: 30%;
+ min-width: 0;
+}
+
+.sg-vsf-list-overview-page-v2__intro .sg-text-layout-pattern__sample--sixty-width {
+ color: var(--color-font-light);
+}
+
+@media (max-width: 767px) {
+ .sg-vsf-list-overview-page-v2__content {
+ display: block;
+ }
+
+ .sg-vsf-list-overview-page-v2__primary,
+ .sg-vsf-list-overview-page-v2__secondary {
+ width: 100%;
+ }
+
+ .sg-vsf-list-overview-page-v2__secondary {
+ margin-top: var(--spacing-large);
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Text Layouts */
+/* ========================================================= */
+
+.sg-text-layout-pattern {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+}
+
+.sg-text-layout-pattern__preview-surface {
+ width: 100%;
+ box-sizing: border-box;
+ padding: var(--spacing-large);
+ border-radius: var(--radius-card);
+ background: var(--surface-text-layout-preview);
+}
+
+.sg-text-layout-pattern__sample {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__sample--full-width {
+ width: 100%;
+}
+
+.sg-text-layout-pattern__sample--sixty-width {
+ width: 60%;
+}
+
+.sg-text-layout-pattern__sample--two-column {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__two-column {
+ width: 100%;
+ min-width: 0;
+ display: grid;
+ grid-template-columns: var(--layout-text-layout-two-column-columns);
+ column-gap: var(--layout-text-layout-column-gap);
+}
+
+.sg-text-layout-pattern__three-column-distributed {
+ width: 100%;
+ min-width: 0;
+ display: grid;
+ grid-template-columns: var(--layout-text-layout-three-column-columns);
+ column-gap: var(--layout-text-layout-column-gap);
+}
+
+.sg-text-layout-pattern__column {
+ margin: 0;
+ min-width: 0;
+}
+
+.sg-text-layout-pattern__three-column-distributed > .sg-body {
+ margin: 0;
+}
+
+.sg-text-layout-pattern__column--align-left {
+ text-align: var(--text-align-text-layout-column-left);
+}
+
+.sg-text-layout-pattern__column--align-center {
+ text-align: var(--text-align-text-layout-column-center);
+}
+
+.sg-text-layout-pattern__column--align-right {
+ text-align: var(--text-align-text-layout-column-right);
+}
+
+@media (max-width: 767px) {
+ .sg-text-layout-pattern__sample--sixty-width,
+ .sg-text-layout-pattern__sample--two-column,
+ .sg-text-layout-pattern__two-column,
+ .sg-text-layout-pattern__three-column-distributed {
+ width: 100%;
+ }
+}
+
+/* ========================================================= */
+/* Patterns: Card Gruppe mit Tastennavigation */
+/* ========================================================= */
+
+.sg-content-block-card-group {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ width: 100%;
+}
+
+.sg-content-block-card-group__tabs,
+.sg-content-block-card-group__panels,
+.sg-content-block-card-group__panel,
+.sg-content-block-card-group__card {
+ width: 100%;
+}
+
+.sg-content-block-card-group__panel[hidden] {
+ display: none;
+}
+
+.sg-content-block-card-group__title {
+ color: var(--text-content-block-card-title);
+ background: var(--surface-content-block-card-title);
+}
+
+.sg-content-block-card-group__content {
+ color: var(--text-content-block-card-content);
+ background: var(--surface-content-block-card-content);
+}
+
+.sg-content-block-card-group__content .sg-body {
+ margin: 0;
+}
+
+@media (max-width: 767px) {
+ .sg-content-block-card-group__tabs[role="tablist"] > [role="tab"] {
+ flex: 1 1 auto;
+ min-width: max-content;
+ white-space: nowrap;
+ }
+}
+
+/* ========================================================= */
+/* Components: Cards */
+/* ========================================================= */
+
+.sg-card {
+ --layout-card-segment-padding-top: var(--card-segment-padding-vertical);
+ --layout-card-segment-padding-right: var(--card-segment-padding-horizontal);
+ --layout-card-segment-padding-bottom: var(--card-segment-padding-vertical);
+ --layout-card-segment-padding-left: var(--card-segment-padding-horizontal);
+ --layout-card-body-padding-top: var(--layout-card-segment-padding-top);
+ --layout-card-body-padding-right: var(--layout-card-segment-padding-right);
+ --layout-card-body-padding-bottom: var(--layout-card-segment-padding-bottom);
+ --layout-card-body-padding-left: var(--layout-card-segment-padding-left);
+ --layout-card-body-text-margin: 0;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ width: 100%;
+ box-sizing: border-box;
+ border: var(--border-none);
+ border-radius: var(--radius-card);
+ box-shadow: var(--shadow-none);
+ background: var(--surface-card);
+}
+
+.sg-card.sg-card--overlay-host {
+ overflow: visible;
+}
+
+.sg-card > .sg-card-segment:first-child {
+ border-top-left-radius: var(--radius-card);
+ border-top-right-radius: var(--radius-card);
+}
+
+.sg-card > .sg-card-segment:last-child {
+ border-bottom-left-radius: var(--radius-card);
+ border-bottom-right-radius: var(--radius-card);
+}
+
+@media (max-width: 48rem) {
+ :root {
+ --card-segment-padding-horizontal: var(--card-segment-padding-horizontal-mobile);
+ }
+}
+
+.sg-card-segment {
+ display: flex;
+ flex-direction: column;
+ height: auto;
+ justify-content: flex-start;
+ align-items: stretch;
+ align-content: flex-start;
+ padding:
+ var(--layout-card-segment-padding-top)
+ var(--layout-card-segment-padding-right)
+ var(--layout-card-segment-padding-bottom)
+ var(--layout-card-segment-padding-left);
+ gap: var(--layout-card-segment-content-gap);
+}
+
+.sg-card-segment--header {
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--body {
+ justify-content: var(--layout-card-body-content-justify);
+ padding:
+ var(--layout-card-body-padding-top)
+ var(--layout-card-body-padding-right)
+ var(--layout-card-body-padding-bottom)
+ var(--layout-card-body-padding-left);
+ color: var(--text-card-body);
+ background: var(--surface-card-body);
+}
+
+.sg-card-segment--body > .sg-body {
+ margin: var(--layout-card-body-text-margin, 0);
+}
+
+.sg-card-segment--body.sg-object-card__content > .sg-body.sg-company-card__summary {
+ margin: var(--layout-company-card-analysis-gap-after-moat) 0 0 0;
+}
+
+.sg-card-segment--darkblue {
+ background: var(--surface-card-header-primary);
+}
+
+.sg-card-segment--darkgreen {
+ background: var(--surface-card-header-alternative);
+}
+
+.sg-card-segment--darkbrown {
+ background: var(--surface-card-header-muted);
+}
+
+.sg-card-segment--signal-red {
+ background: var(--color-signal-red);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--signal-green {
+ background: var(--color-signal-green);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--signal-yellow {
+ background: var(--color-signal-yellow);
+ color: var(--text-card-header);
+}
+
+.sg-card-segment--gray {
+ background: var(--surface-card-segment-neutral);
+}
+
+.sg-card-segment--white {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card.sg-card--notification-white {
+ --text-card-header: var(--text-card-body);
+}
+
+.sg-card--content-card {
+ --surface-card-header-primary: var(--surface-content-block-card-title);
+ --surface-card-body: var(--surface-content-block-card-content);
+ --text-card-header: var(--text-content-block-card-title);
+ --text-card-body: var(--text-content-block-card-content);
+}
+
+.sg-card-segment + .sg-card-segment {
+ box-shadow: inset 0 1px 0 var(--divider-card-segment);
+}
+
+.sg-card-segment--darkbrown + .sg-card-segment--body {
+ box-shadow: none;
+}
+
+.sg-card-segment.sg-object-card__header {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.sg-card-segment--body.sg-object-card__content {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card-segment--body.sg-object-card__actions-segment {
+ background: var(--surface-object-card-lower-segment);
+}
+
+.sg-card-segment.sg-vsf-drawer-card__actions-segment {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--spacing-large);
+}
+
+.sg-group-card {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--spacing-small);
+ align-items: flex-start;
+ width: 100%;
+ box-sizing: border-box;
+ padding: var(--spacing-small);
+ border-radius: var(--radius-card);
+ background: var(--surface-card-group);
+}
+
+.sg-group-card > .sg-card {
+ flex: 1 1 calc(50% - var(--spacing-small));
+ width: calc(50% - var(--spacing-small));
+}
+
+.sg-group-card--margin-after-large {
+ margin-bottom: var(--spacing-large);
+}
+
+.sg-group-card__header-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--spacing-small);
+ width: 100%;
+ margin-bottom: var(--spacing-small);
+}
+
+.sg-group-card__heading {
+ flex: 0 0 100%;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: var(--spacing-small);
+ margin-left: var(--card-segment-padding-horizontal);
+}
+
+.sg-group-card__header-row .sg-group-card__heading {
+ flex: 1 1 auto;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: 0;
+ margin-left: var(--card-segment-padding-horizontal);
+}
+
+.sg-group-card__header-row .sg-sandwich-menu-wrap {
+ margin-right: var(--card-segment-padding-horizontal);
+}
+
+.sg-page-cards .sg-preview-area {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.sg-page-cards .sg-preview-area > .sg-card,
+.sg-page-cards .sg-preview-area > .sg-transparent-card {
+ width: 100%;
+ max-width: none;
+}
+
+.sg-page-cards .sg-group-card > .sg-card {
+ flex: 0 0 100%;
+ width: 100%;
+}
+
+.sg-transparent-card {
+ color: var(--text-card-transparent);
+ background: var(--surface-card-transparent);
+ padding:
+ 0
+ var(--card-segment-padding-horizontal)
+ 0
+ var(--card-segment-padding-horizontal);
+}
+
+.sg-transparent-card p {
+ margin: 0;
+ color: var(--text-card-transparent);
+}
+
+/* ========================================================= */
+/* Components: Charts */
+/* ========================================================= */
+
+.sg-score-bar-list {
+ display: grid;
+ grid-template-columns: var(--layout-score-bar-item-columns);
+ column-gap: var(--layout-score-bar-item-gap);
+ row-gap: var(--spacing-small);
+ align-items: center;
+ width: 100%;
+}
+
+.sg-score-bar-item {
+ display: contents;
+}
+
+.sg-score-bar-list--single-score {
+ --layout-score-bar-item-columns: var(--layout-score-bar-item-single-score-columns);
+}
+
+.sg-score-state--positive,
+.sg-score-state--neutral,
+.sg-score-state--negative {
+ margin: 0;
+ justify-self: end;
+ text-align: right;
+}
+
+.sg-score-state--positive {
+ color: var(--text-score-state-positive);
+}
+
+.sg-score-state--neutral {
+ color: var(--text-score-state-neutral);
+}
+
+.sg-score-state--negative {
+ color: var(--text-score-state-negative);
+}
+
+.sg-score-bar-label {
+ margin: 0;
+ color: var(--text-chart-default);
+}
+
+.sg-score-bar {
+ position: relative;
+ height: var(--score-bar-height);
+ overflow: visible;
+ border-radius: var(--radius-graph-bar);
+ background: var(--surface-score-bar-track);
+}
+
+.sg-score-bar--marker-mid {
+ --score-marker-position: 50%;
+}
+
+.sg-score-bar__value {
+ height: 100%;
+ border-radius: var(--radius-graph-bar);
+}
+
+.sg-score-bar__value--w96 { width: 96%; }
+.sg-score-bar__value--w64 { width: 64%; }
+.sg-score-bar__value--w35 { width: 35%; }
+
+.sg-score-bar__value--positive { background: var(--chart-value-positive); }
+.sg-score-bar__value--neutral { background: var(--chart-value-neutral); }
+.sg-score-bar__value--negative { background: var(--chart-value-negative); }
+
+.sg-score-bar__median-marker {
+ position: absolute;
+ top: 50%;
+ left: var(--score-marker-position);
+ width: var(--score-marker-width);
+ height: var(--score-marker-height);
+ border-radius: 0;
+ background: var(--chart-marker-line);
+ transform: translate(-50%, -50%);
+}
+
+.sg-score-bar__median-marker--outline {
+ border: var(--chart-grid-line-width) solid var(--chart-marker-line);
+ background: transparent;
+}
+
+.sg-chart-preview-area {
+ min-width: var(--layout-object-card-min-width);
+ max-width: var(--layout-object-card-max-width);
+ width: 100%;
+}
+
+.sg-bar-chart {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0;
+ background: var(--surface-chart-area);
+ color: var(--text-chart-default);
+}
+
+.sg-chart-frame {
+ display: grid;
+ grid-template-columns: min-content 1fr;
+ column-gap: var(--chart-axis-label-gap);
+ height: calc(var(--chart-height-bar) * 0.7);
+}
+
+.sg-chart-y-labels {
+ position: relative;
+ width: min-content;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ color: var(--text-chart-default);
+ text-align: right;
+ pointer-events: none;
+}
+
+.sg-chart-y-labels li {
+ position: absolute;
+ white-space: nowrap;
+ right: 0;
+ top: var(--chart-label-position);
+ transform: translateY(-50%);
+}
+
+.sg-chart-x-labels {
+ display: grid;
+ grid-template-columns: repeat(10, 1fr);
+ margin: var(--spacing-small) 0 var(--spacing-large) 0;
+ padding: 0 0 0 calc(var(--interaction-height) + var(--chart-axis-label-gap));
+ list-style: none;
+ color: var(--text-chart-default);
+ text-align: center;
+}
+
+.sg-chart-x-labels--line {
+ position: relative;
+ display: block;
+ height: var(--spacing-large);
+ grid-template-columns: none;
+}
+
+.sg-chart-x-labels--line li {
+ position: absolute;
+ left: var(--chart-label-position);
+ transform: translateX(-50%);
+}
+
+.sg-chart-y-labels li,
+.sg-chart-x-labels li {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-bar-chart__svg,
+.sg-line-chart__svg {
+ display: block;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+}
+
+.sg-bar-chart__grid-line,
+.sg-line-chart__grid-line {
+ stroke: var(--chart-grid-line);
+ stroke-width: var(--chart-grid-line-width);
+}
+
+.sg-bar-chart__axis-line,
+.sg-line-chart__axis-line {
+ stroke: var(--chart-axis-line);
+ stroke-width: var(--chart-grid-line-width);
+}
+
+.sg-bar-chart__bar {
+ rx: var(--radius-graph-bar);
+ ry: var(--radius-graph-bar);
+}
+
+.sg-bar-chart__bar--value { fill: var(--chart-value-primary); }
+.sg-bar-chart__bar--median { fill: var(--chart-value-reference); }
+.sg-bar-chart__label,
+.sg-line-chart__label { display: none; }
+
+.sg-bar-chart__legend,
+.sg-line-chart__legend {
+ display: flex;
+ gap: var(--spacing-large);
+ padding-left: 0;
+ margin-left: 0;
+}
+
+.sg-bar-chart__legend {
+ flex-wrap: wrap;
+ margin-top: 0;
+ color: var(--text-chart-default);
+}
+
+.sg-line-chart__legend {
+ margin-top: var(--spacing-large);
+}
+
+.sg-bar-chart__legend-item,
+.sg-line-chart__legend-item {
+ display: inline-flex;
+ align-items: center;
+ gap: var(--spacing-small);
+ color: var(--text-chart-default);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+}
+
+.sg-bar-chart__legend-swatch {
+ display: inline-block;
+ width: var(--interaction-height);
+ height: var(--interaction-height);
+ border-radius: var(--radius-interaction);
+}
+
+.sg-bar-chart__legend-swatch--value { background: var(--chart-value-primary); }
+.sg-bar-chart__legend-swatch--median { background: var(--chart-value-reference); }
+
+.sg-line-chart {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0;
+ background: var(--surface-chart-area);
+ color: var(--text-chart-default);
+}
+
+.sg-chart-frame--line {
+ height: calc(var(--chart-height-line) * 0.7);
+}
+
+.sg-line-chart__line {
+ fill: none;
+ stroke: var(--chart-value-primary);
+ stroke-width: var(--chart-line-width);
+ stroke-linecap: round;
+ stroke-linejoin: round;
+}
+
+.sg-line-chart__median-line {
+ fill: none;
+ stroke: var(--chart-median-line);
+ stroke-width: var(--chart-grid-line-width);
+ stroke-dasharray: var(--sandwich-line-height) var(--sandwich-line-height);
+}
+
+.sg-line-chart__legend-line {
+ display: inline-block;
+ width: var(--spacing-large);
+ height: var(--chart-line-width);
+ background: var(--chart-value-primary);
+}
+
+.sg-line-chart__legend-line--median {
+ height: var(--chart-grid-line-width);
+ background: repeating-linear-gradient(
+ to right,
+ var(--chart-median-line) 0,
+ var(--chart-median-line) var(--sandwich-line-height),
+ transparent var(--sandwich-line-height),
+ transparent calc(var(--sandwich-line-height) * 2)
+ );
+}
+
+/* ========================================================= */
+/* Components: Data Display */
+/* ========================================================= */
+
+.sg-data-table {
+ --data-table-column-count: 3;
+ width: 100%;
+ border-collapse: collapse;
+ background: var(--surface-data-table);
+ table-layout: fixed;
+}
+
+.sg-data-table th,
+.sg-data-table td {
+ width: calc(100% / var(--data-table-column-count));
+ padding: 0 0 var(--spacing-small) 0;
+ border: var(--border-none);
+ text-align: left;
+ vertical-align: top;
+}
+
+.sg-data-table[data-component="data-columns"] {
+ --data-table-column-count: 2;
+}
+
+.sg-data-table th {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--text-data-table-default);
+ background: var(--surface-data-table-header);
+}
+
+.sg-data-table td {
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-regular);
+ line-height: var(--line-height-base);
+ color: var(--text-data-table-default);
+ background: var(--surface-data-table-cell);
+}
+
+.sg-data-table__label,
+.sg-data-table__value {
+ font-weight: var(--font-weight-semibold);
+}
+
+.sg-data-table__value--warning {
+ color: var(--text-data-table-warning);
+}
+
+.sg-data-table__help-icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: var(--small-interaction-element-size);
+ height: var(--small-interaction-element-size);
+ border: var(--border-none);
+ border-radius: 50%;
+ box-shadow: var(--shadow-none);
+ font-family: var(--font-family-base);
+ font-size: var(--font-size-small);
+ font-weight: var(--font-weight-semibold);
+ line-height: 1;
+ color: var(--text-data-table-help-icon);
+ background: var(--surface-data-table-help-icon);
+}
+
+
+/* ========================================================= */
+/* Components: Typography */
+/* ========================================================= */
+
+.sg-typography-preview {
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-small);
+ color: var(--text-typography-preview);
+}
+
+.sg-typography-preview h1,
+.sg-typography-preview h2,
+.sg-typography-preview p {
+ color: var(--text-typography-preview);
+ margin-top: 0;
+}
+