/*
Theme Name: GeSK
Theme URI: https://gesk.berlin
Author: aitema GmbH
Author URI: https://aitema.de
Description: Custom Theme für GeSK – PR & Kommunikationsagentur Berlin. Pixelgenaue Umsetzung des Figma-Designs (Stand 18.05.2026): 6 Seiten, ACF-basierte Inhaltspflege, Presselounge, Scroll-Interaktionen gemäß Interaktions-PDF, DE-Erstumsetzung. Typografie: Archivo / Syne / Montserrat / Playfair Display.
Version: 1.1.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 8.1
Tags: custom-theme, agency, portfolio, editorial, one-column, custom-menu
Text Domain: gesk
*/

/* ============================================================
   GeSK Berlin — PR & Communications Agency
   Full-fidelity edition (matches all 8 Figma frames)
   ============================================================ */


/* ============================================================
   ECHTE HAUSSCHRIFTEN (GeSK-Lieferung 16.07.2026, self-hosted)
   Kommon Grotesk Extended UltraBold = Display (bisher Archivo-Ersatz),
   Playfair Display Italic (variabel) = Serif-Kursive,
   Poppins = Fliesstext/UI. Poppins+Playfair: OFL; Kommon: Lizenz GeSK.
   ============================================================ */
/**
 * @license
 * MyFonts Webfont Build ID 3867246 — Kommon Grotesk Extended UltraBold by TypeK
 * Lizenz: MyFonts-Bestellung #7297303 vom 23.07.2026 (Konto GeSK,
 * Webfonts / 10.000 Pageviews pro Monat). Die Schrift unterliegt dem EULA des
 * Website-Betreibers; Nutzung durch Dritte ist ausgeschlossen.
 * URL: https://www.myfonts.com/collections/typek-foundry
 */
@font-face {
  font-family: "Kommon Grotesk Extended";
  src: url("assets/fonts/kommon-grotesk-extended-ultrabold.woff2") format("woff2");
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
}
/* Playfair Display und Poppins (SIL Open Font License 1.1): GK-06, 24.09.2026 — Latin als eigene Datei (pyftsubset, Latin-Bereich
   wie Googles CSS; Poppins 50 → 9 KB, Playfair 104 → 52 KB, vorher über 300 KB Schriften vor der ersten Darstellung). Die
   vollständige Datei bleibt für Latin-Ext-Zeichen und lädt nur, wenn eine Seite solche Zeichen enthält. */
@font-face {
  font-family: "Playfair Display";
  src: url("assets/fonts/playfair-display-italic-var.woff2") format("woff2");
  font-weight: 400 900;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Playfair Display";
  src: url("assets/fonts/playfair-display-italic-var-latin.woff2") format("woff2");
  font-weight: 400 900;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-400-latin.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-500.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-500-latin.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-600-latin.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-700.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-700-latin.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-400i.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  src: url("assets/fonts/poppins-400i-latin.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Montserrat, Roboto, Roboto Condensed — bis 22.09.2026 von fonts.googleapis.com geladen (render-blockierend,
   ~0,8 s auf Slow 4G, und jede Seite übermittelte die IP-Adresse der Besucher an Google). Jetzt selbst gehostet:
   dieselben variablen WOFF2-Dateien, die Google an Chrome ausliefert (Stand 22.09.2026), nur Latin + Latin-Ext,
   unicode-range und Schnittbereiche wie in Googles CSS. Lizenz: SIL Open Font License 1.1. */
@font-face {
  font-family: "Montserrat";
  src: url("assets/fonts/montserrat-var-latin-ext.woff2") format("woff2");
  font-weight: 500 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Montserrat";
  src: url("assets/fonts/montserrat-var-latin.woff2") format("woff2");
  font-weight: 500 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Roboto";
  src: url("assets/fonts/roboto-var-latin-ext.woff2") format("woff2");
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Roboto";
  src: url("assets/fonts/roboto-var-latin.woff2") format("woff2");
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Roboto Condensed";
  src: url("assets/fonts/roboto-condensed-var-latin-ext.woff2") format("woff2");
  font-weight: 100 300;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Roboto Condensed";
  src: url("assets/fonts/roboto-condensed-var-latin.woff2") format("woff2");
  font-weight: 100 300;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --bg: #ffffff;
  --bg-alt: #efefef;
  --ink: #000000;
  --ink-soft: #1a1a1a;
  --ink-muted: #6c6c6c;
  --line: #c4c4c4;

  /* Display-Font: Archivo als Kommon-Grotesk-Ersatz. Figma-Update 06.07.2026:
     das neue Design nutzt KEINE Extended-Breite mehr — Normalbreite (wdth 100),
     Headlines kleiner und kompakter. Siehe README. */
  --font-display: "Kommon Grotesk Extended", "Archivo", "Helvetica Neue", Arial, sans-serif;
  --font-italic: "Playfair Display", Georgia, serif;
  --font-body: "Poppins", "Helvetica Neue", Arial, sans-serif;
  /* Neues Design-System (Figma 30.06.2026): zusätzliche Familien.
     Roboto ExtraBold = DE-Sublines/Nav, Poppins = Meta/Labels/Body,
     Montserrat Black = Stats. Display bleibt Archivo (Kommon-Ersatz). */
  --font-roboto: "Roboto", "Helvetica Neue", Arial, sans-serif;
  --font-meta: "Poppins", "Helvetica Neue", Arial, sans-serif;
  --font-stats: "Montserrat", "Helvetica Neue", Arial, sans-serif;

  --container: 1560px;
  --pad-x: clamp(20px, 4vw, 64px);
  /* Notch/Dynamic Island (GK-05): Ränder im Querformat; 0 auf allen anderen Geräten */
  --sa-l: env(safe-area-inset-left, 0px);
  --sa-r: env(safe-area-inset-right, 0px);
  --sa-b: env(safe-area-inset-bottom, 0px);
  --pad-x: max(clamp(20px, 4vw, 64px), var(--sa-l), var(--sa-r));
}

* { box-sizing: border-box; }

html, body {
  margin: 0; padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body { overflow-x: hidden; }

a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; }

img, svg { display: block; max-width: 100%; }

.display {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal; /* Figma 06.07.2026: Normalbreite statt Extended */
  font-variation-settings: "wght" 900, "wdth" 100;
  /* Feedback #43 (23.07.2026): Headlines überall lh 96,2 %, Kerning -5 %
     (Figma-Headline-Nodes: letterSpacing -5 %, lineHeight 96.2 %). */
  letter-spacing: -0.05em;
  /* Feedback-Button #98/#106 (Moritz, 09.09.2026): Wortabstände wirkten zu eng
     und uneinheitlich. Der Browser zieht letter-spacing auch vom Leerzeichen ab;
     word-spacing gibt genau diesen Betrag zurück — Kerning zwischen den
     Buchstaben bleibt −5 % wie im Figma, die Wortlücke hat wieder Schriftbreite
     (Entscheidung Kolja 09.09.). Gilt über die Kaskade für alle Display-Headlines. */
  word-spacing: 0.05em;
  line-height: 0.962;
  text-transform: uppercase;
}
/* #98/#106, Fortsetzung: dieselbe Wortlücken-Korrektur für alle Headline-Regeln,
   die letter-spacing −5 % ohne die Klasse .display tragen (Kaskade greift dort
   nicht). Liste = alle Vorkommen von „letter-spacing: -0.05em“ in dieser Datei. */
.hero-headline, .aboutblend-title, .accordion-trigger, .refz-hero-title, .projects-hero-title,
.recent-works-wordmark, .rw-title, .agentur-hero-title, .agentur-prose-title, .reveal-hero-title,
.career-intro-title, .page-hero-title, .proj-rotated, .proj-highlights-title, .proj-mosaic-card-title,
.case-next-marker, .contacts-hero-title { word-spacing: 0.05em; }

.italic-accent {
  font-family: var(--font-italic);
  font-style: italic;
  font-weight: 400;
  text-transform: none;
  letter-spacing: -0.01em;
}

.section-eyebrow {
  display: inline-block;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.25em;
  color: var(--ink-muted);
  text-transform: uppercase;
  margin-bottom: 16px;
}

/* ============================================================
   NAV
   ============================================================ */
/* Feedback #8 (20.07.2026): Navbar kompakter skaliert (68→56px, Logo 30→26px)
   und Logo IMMER exakt zentriert (absolut positioniert — das Grid schob es bei
   schmalen Fenstern nach rechts, sobald die linke Spalte breiter als ihr
   1fr-Anteil wurde; @1280 waren das 83px Versatz).
   Feedback #25 (21.07.): Seitenränder enger (Figma: 28px @1728), Menüpunkte
   kleiner — die Logo-Schutzzone links hält jetzt.
   Feedback #36/#38 (21.07.): KEINE weiße Leiste mehr — Balken transparent,
   Logo + Menüpunkte weiß im Blend-Mode "Exclusion" wie die Referenzen-Headline.
   Der Blend liegt auf .nav SELBST (fixed + z-index = eigener Stacking-Context;
   auf Kindern käme er nie unten an — Lehre aus #24). Fallback ohne
   Blend-Support: weiße Leiste wie bisher. */
.nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: clamp(14px, 2vw, 32px);
  height: 56px;
  padding: 0 clamp(16px, 1.62vw, 28px);
  background: #fff;
  box-shadow: 0 2px 12px 2px rgba(0,0,0,0.05);
  transition: background .25s ease, color .25s ease, box-shadow .25s ease;
}
@supports (mix-blend-mode: exclusion) {
  .nav {
    background: transparent;
    box-shadow: none;
    mix-blend-mode: exclusion;
    color: #fff;
  }
  /* 23.07.2026: Klasse `.nav` vorangestellt — die Basisregeln `.nav-cta` und
     `.lang-switch-btn` (color:#000) stehen SPÄTER im File und schlugen diese
     Regel bei gleicher Spezifität. Folge: „Für Redaktionen", „Kontakt" und
     „English" blieben schwarz — und schwarz ist unter mix-blend-mode:exclusion
     die Identität (a=0 ⇒ Ergebnis = Hintergrund), die Einträge waren also
     unsichtbar. Gleiche Kaskadenfalle wie beim Logo-Invert (#36/#38). */
  .nav .nav-links,
  .nav .nav-links a,
  .nav .nav-cta,
  .nav .lang-switch-btn { color: #fff; }
  /* doppelte Klasse: muss die spätere Basisregel .nav-logo img (brightness(0)) schlagen */
  .nav .nav-logo img { filter: brightness(0) invert(1); }
  /* Ales Korrekturen 28.09.2026: Burger auf seinem iPhone unsichtbar (Logo daneben sichtbar). Die Striche hingen
     über currentColor an der geerbten Button-Farbe — jetzt wie die übrigen Einträge ausdrücklich weiß. */
  .nav .nav-burger span { background: #fff; }
}

.admin-bar .nav { top: 32px; }

/* Scroll-Verhalten lt. Interaktions-PDF (18.05.2026): Transform/Opacity
   der Navbar setzt das JS progressiv am Scrollweg. */

.nav-links {
  display: flex; gap: clamp(13px, 1.4vw, 22px);
  justify-self: start;
  font-family: var(--font-roboto); /* Figma: Nav-Items klein, fett, uppercase */
  /* 23.07.2026: 800 → 700. Der Live-Proto (Frame „MacBook Pro 16" - 12",
     Group 14) setzt die Nav-Items in Roboto BOLD 700, nicht ExtraBold —
     daher wirkte die Leiste fetter als im Entwurf. Nichts mit der
     Kommon-Grotesk-Lizenz zu tun: die Nav war nie Kommon. */
  font-weight: 700;
  font-size: 10.5px; /* Feedback #25: etwas kleiner zugunsten der Logo-Schutzzone */
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #000;
}
.nav-links ul { display: contents; list-style: none; margin: 0; padding: 0; }
.nav-links li { display: contents; }

/* Feedback #21 (20.07.2026): Beim Hover wechselt nur die Schriftart — die
   Einträge dürfen nicht mehr springen. Feste Höhe fixiert die Zeile vertikal;
   zwei unsichtbare Ghost-Zeilen (je eine pro Schriftart, Höhe 0) reservieren
   die breitere der beiden Breiten, damit auch horizontal nichts rückt. */
.nav-links a {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 24px;
  line-height: 1;
  padding: 0 2px;
  white-space: nowrap;
}
.nav-links a::before,
.nav-links a::after,
.nav-cta--kontakt::before,
.nav-cta--kontakt::after {
  content: attr(data-label);
  display: block;
  height: 0;
  overflow: hidden;
  visibility: hidden;
}
.nav-links a::before,
.nav-cta--kontakt::before {
  font-family: var(--font-italic);
  font-style: italic;
  font-weight: 500;
  letter-spacing: 0.02em;
}
.nav-links a::after,
.nav-cta--kontakt::after {
  font-family: var(--font-roboto);
  font-weight: 700; /* muss dem sichtbaren Schnitt folgen, sonst misst der Ghost falsch */
  letter-spacing: 0.05em;
}
/* Hover nach Figma-Proto (Kolja-Abgleich 16.07.): Menüeintrag wechselt in
   die kursive Serif-Schrift — keine Unterstreichung. */
@media (hover: hover) { .nav-links a:hover,
.nav-cta--kontakt:hover {
  font-family: var(--font-italic);
  font-style: italic;
  font-weight: 500;
  letter-spacing: 0.02em;
} }
/* Feedback #27 (21.07.): "Kontakt" rechts neben "Für Redaktionen" — gleiche
   Optik wie die Menüpunkte links, mit Breiten-Ghosts gegen Hover-Springen. */
.nav-cta--kontakt {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 24px;
  line-height: 1;
  white-space: nowrap;
}

/* Logo absolut zentriert im Balken, komplett schwarz (Figma: kein rotes 360°) */
.nav-logo {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
}
.nav-logo img {
  height: 26px;
  width: auto;
  filter: brightness(0); /* PNG hat rotes 360°-Zeichen — Design ist 100% schwarz */
}

.nav-right {
  display: flex; gap: clamp(16px, 1.6vw, 24px); align-items: center;
  grid-column: 2;
  justify-self: end;
}

.nav-cta {
  font-family: var(--font-roboto); /* Figma: "Für Redaktionen" klein, fett, uppercase */
  font-weight: 700; /* wie .nav-links: Figma-Proto = Roboto Bold 700 (23.07.2026) */
  font-size: 11.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  color: #000;
}

/* Sprachumschalter (Figma: Flagge + "English" + Caret; Dropdown rein per CSS) */
.lang-switch { position: relative; }
.lang-switch-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 0;
  background: transparent;
  padding: 6px 0;
  /* Figma 15.07.2026: „English" gemischt-groß, regular (~14px) — nicht
     uppercase/fett wie die Nav-Punkte. */
  font-family: var(--font-meta);
  font-weight: 500;
  font-size: 14px;
  letter-spacing: 0;
  text-transform: none;
  color: #000;
}
.lang-flag { border-radius: 2px; flex-shrink: 0; }
.lang-caret { font-size: 9px; line-height: 1; }
.lang-switch-menu {
  position: absolute;
  top: 100%;
  right: 0;
  min-width: 128px;
  margin: 0;
  padding: 8px 0;
  list-style: none;
  background: #fff;
  box-shadow: 0 8px 24px rgba(0,0,0,0.12);
  opacity: 0;
  pointer-events: none;
  transform: translateY(-4px);
  transition: opacity .2s ease, transform .2s ease;
}
/* Offen per Klasse (js/main.js, GK-05); ohne JavaScript per Tastaturfokus */
.lang-switch.is-open .lang-switch-menu,
.lang-switch:not(.is-bereit):focus-within .lang-switch-menu {
  opacity: 1;
  pointer-events: auto;
  transform: none;
}
@media (hover: hover) { .lang-switch:hover .lang-switch-menu {
  opacity: 1;
  pointer-events: auto;
  transform: none;
} }
.lang-switch-menu a {
  display: block;
  padding: 7px 16px;
  font-family: var(--font-roboto);
  font-weight: 700;
  font-size: 12px;
  color: #000;
}
@media (hover: hover) { .lang-switch-menu a:hover { background: #f0f0f0; } }
.lang-switch-menu a[aria-current="true"] { font-weight: 800; }

/* Burger + Fullscreen-Overlay (Mobil) */
.nav-burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 40px; height: 40px;
  background: transparent;
  border: 0;
  padding: 8px;
}
.nav-burger span {
  display: block;
  width: 24px;
  height: 2px;
  background: currentColor;
  transition: transform .3s ease, opacity .3s ease;
}
.nav-burger[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
.nav-burger[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }
/* Zwischenbreiten: Menü kompakter, damit es dem absolut zentrierten Logo
   nicht in die Quere kommt; darunter übernimmt der Burger (vorher 900px —
   zwischen 900 und ~1180px kollidierten Links und Logo sonst). */
@media (max-width: 1360px) {
  .nav-links { gap: clamp(8px, 1vw, 14px); font-size: 10px; }
}
@media (max-width: 1100px) {
  .nav-burger { display: flex; }
  .nav-right .nav-cta { display: none; }
  .nav-right .lang-switch { display: none; }
}

.nav-overlay {
  position: fixed;
  inset: 0;
  z-index: 49;
  background: #000;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
.nav-overlay.open { opacity: 1; pointer-events: auto; }
.nav-overlay ul { list-style: none; margin: 0; padding: 0; text-align: center; }
.nav-overlay li { margin: 4px 0; }
.nav-overlay a {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(32px, 9vw, 56px);
  text-transform: uppercase;
  line-height: 1.15;
  display: inline-block;
  transition: opacity .2s ease;
}
@media (hover: hover) { .nav-overlay a:hover { opacity: .6; } }
.nav-overlay-cta {
  margin-top: 28px;
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: .14em;
  opacity: .7;
}
/* Sprachwahl im Overlay (21.09.2026): eigene Zeile unter „Für Redaktionen“, gleiche Schrift */
/* Selektor mit „a“: .nav-overlay a (inline-block) hat sonst die höhere Spezifität und die Zeile rutscht neben den Knopf. */
.nav-overlay a.nav-overlay-lang { display: block; margin-top: 14px; } /* linksbündig wie „Für Redaktionen“ darüber (abgenommener Stand) */

/* Globale Politur */
::selection { background: #000; color: #fff; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible {
  outline: 2px solid #000;
  outline-offset: 3px;
}
.fade-up {
  opacity: 0;
  transform: translateY(28px);
}
.fade-up.is-visible {
  opacity: 1;
  transform: none;
  transition: opacity .8s ease, transform .8s cubic-bezier(.2,.7,.2,1);
}

/* ============================================================
   PAGE HEAD (Unterseiten ohne Hero)
   ============================================================ */
.page-head {
  padding: clamp(160px, 18vw, 240px) var(--pad-x) clamp(40px, 5vw, 64px);
  background: var(--bg);
}
.page-head-inner {
  max-width: var(--container);
  margin: 0 auto;
}
.page-head h1 {
  margin: 0;
  font-size: clamp(36px, 3.85vw, 58px); /* Figma 06.07.2026: Headlines kompakter */
}
.page-head .lede {
  max-width: 640px;
  margin: 28px 0 0;
  font-size: 18px;
  line-height: 1.55;
  color: var(--ink-soft);
}

/* ============================================================
   HERO  (Figma: weiße Fläche, schwarze Headline mit kursivem "pr",
   Bild darunter — der Text scrollt langsamer und verschwindet
   hinter dem Bild, vgl. Interaktions-PDF S.1)
   ============================================================ */
.hero {
  position: relative;
  background: var(--bg);
}

.hero-headline-wrap {
  position: relative;
  z-index: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  /* Feedback Alessandro 07.09.2026 (PDF „GeSK_Webseite_edits“, Punkt 1): die
     Bildoberkante liegt auf allen Above-the-Fold-Seiten auf derselben Höhe —
     Referenz ist „Über uns“ (.projects-hero: 72vh + Polster 240/100 @1728).
     Vorher 65vh/150px → Bild begann 7 % Viewport höher als auf „Über uns“. */
  min-height: 72vh;
  min-height: 72svh; /* iOS: Adressleiste (GK-05) */
  padding: clamp(160px, 20vw, 240px) var(--pad-x) clamp(60px, 8vw, 100px);
  will-change: opacity, transform;
}

/* Figma 06.07.2026: Hero auf WEISSEM Grund, Headline SCHWARZ, zwei zentrierte
   Zeilen, Block ~55–60% Viewportbreite, kein Scrim. Die Zeilen setzt das
   explizite <br> im Content; die Box darf die Zeile "pr & KOMMUNIKATIONS-
   AGENTUR" nie umbrechen (sonst 3 Zeilen + schief zentrierter Überlauf),
   deshalb Font per vw so skaliert, dass die lange Zeile ~60vw bleibt. */
.hero-headline {
  text-align: center;
  color: #000;
  max-width: min(1100px, 66vw);
  /* Figma-Vermessung 15.07.2026 (Proto Website_Final, Frame DE-Home @1728):
     Cap-Höhe 42px → ~58px Font (vorher 52px). Zeile 2 „pr & KOMMUNIKATIONS-
     AGENTUR" ist 1021px breit → max-width 1100px, sonst Zwangsumbruch. */
  font-size: clamp(28px, 3.35vw, 58px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  margin: 0;
}
.hero-headline .italic-accent {
  font-family: "Playfair Display", Georgia, serif;
  font-weight: 600;
}

.hero-media-block {
  position: relative;
  z-index: 1;
  /* Feedback #9 (20.07.2026): Above-the-Fold-Medium exakt im Proto-Maß
     1728×1267 → proportional 73.32vw (gilt für Start UND Agentur). */
  height: min(73.32vw, 1267px);
  overflow: hidden;
  background: #0a0a0a;
}

.hero-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background-image: url('assets/figma/db-gesk-3bc23b96.png');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  animation: heroPan 18s ease-in-out infinite alternate;
}
@keyframes heroPan {
  0%   { transform: scale(1.04) translate(0, 0); }
  100% { transform: scale(1.10) translate(-1.5%, -1%); }
}

/* ============================================================
   SECTION: STATEMENT
   ============================================================ */
/* Figma 06.07.2026: CLAIM als hellgrauer Band (#eaeaea–#ececec), schwarz,
   zentriert, Display-Font (nicht-extended), "Eure" kursiv-serif. */
.statement {
  background: #ececec;
  /* Feedback-Button #121 (Moritz, 11.09.2026): Band „minimal zu hoch“ — Polster
     160 → 120 px @1728, „nicht zu dünn“. */
  padding: clamp(60px, 9vw, 120px) var(--pad-x);
}
.statement-inner {
  max-width: var(--container);
  margin: 0 auto;
  font-size: clamp(28px, 3.2vw, 48px);
}
.statement-subline {
  max-width: var(--container);
  margin: 0 auto;
  text-align: center;
  font-size: clamp(28px, 3.2vw, 55px); /* Figma 1:1876: 60px @1728 ≈ 55px Cap */
  line-height: 0.962; /* Feedback #43 */
  color: #000;
}
.statement .italic-accent {
  font-family: "Playfair Display", Georgia, serif;
  font-weight: 600;
}

/* ============================================================
   CLIENTS
   ============================================================ */
.clients {
  /* Feedback-Button #119 (Moritz, 10.09.2026): Abstand über der Überschrift
     („REFERENZEN“) war etwas zu groß — 138 → 80 px @1728. */
  padding: clamp(40px, 5vw, 80px) 0 clamp(40px, 6vw, 80px);
  background: var(--bg);
}
.clients h2 {
  margin: 0 0 clamp(40px, 5vw, 60px);
  padding: 0 var(--pad-x);
  font-size: clamp(30px, 3.2vw, 48px); /* Figma 06.07.2026: Sektions-Headlines ~40–48px */
}
/* Two horizontal logo marquees, one per row, second runs reverse */
/* Feedback #20 (20.07.2026): keine grauen Linien mehr über/unter den Logos —
   das Figma (1:1876) zeigt die Reihen ohne Rahmen. */
.clients-marquee {
  position: relative;
  width: 100%;
  overflow: hidden;
  padding: 22px 0;
  contain: layout paint;
  mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%);
}
.clients-marquee + .clients-marquee {
  margin-top: -1px;
}
.clients-marquee-track {
  display: inline-flex;
  align-items: center;
  gap: 69px;
  /* Feedback 06.07.: lief viel zu langsam (200s) — flottes, sichtbares Tempo */
  animation: clientsMarquee 42s linear infinite;
  white-space: nowrap;
  will-change: transform;
}
.clients-marquee.reverse .clients-marquee-track {
  animation-direction: reverse;
  animation-duration: 52s;
}
/* Feedback #44 + #47 (23.07.2026): Logos laufen beim Hover WEITER —
   die frühere Hover-Pause ist bewusst entfernt. */
/* #96 (09.09.2026): Laufweg = genau ein Set. js/main.js setzt --marquee-shift in px,
   sobald es Sets angehängt hat (schmales Set); ohne JS bleibt −50 % = ein Set
   von zweien. */
@keyframes clientsMarquee {
  0%   { transform: translate3d(0, 0, 0); }
  100% { transform: translate3d(var(--marquee-shift, -50%), 0, 0); }
}

/* Referenzen: Logo-Wand STATISCH (Feedback #13, 20.07.2026) — 5 Reihen à
   6 Logos wie im Proto, keine Marquee-Bewegung mehr. */
.refz-logos {
  padding: clamp(50px, 6vw, 90px) var(--pad-x);
  background: var(--bg);
}
.refz-logos-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  /* Feedback-Button #94 (Moritz, 09.09.2026): die Reihen hatten unterschiedliche
     Abstände — der Flex-Gap war gleich, aber Reihen mit Gmundner/Leonardo
     (Höhenbudget 104/97 px) waren höher als Reihen mit nur 56-px-Logos, also
     schwankte der Pitch zwischen 151 und 199 px. Jetzt hat JEDE Reihe die Höhe
     des größten Logo-Budgets (min-height) und der Gap ist so gesetzt, dass der
     Pitch überall ≈ 176 px @1728 beträgt (wie ursprünglich gemeint). */
  gap: clamp(30px, 4.2vw, 72px);
}
.refz-logo-row { min-height: clamp(48px, 6vw, 104px); }
/* Feedback-Mail 23.07.2026 (Alessandro, Referenzbild): striktes 6-Spalten-
   Raster — alle Reihen teilen dieselben Spalten (gleichmäßige vertikale
   Reihen), jedes Logo mittig in seiner Zelle. Die einheitliche Logo-Box
   (max-height/max-width) ersetzt die früheren Einzelhöhen, damit alle
   Logos die gleichen Proportionen bekommen. */
.refz-logo-row {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  align-items: center;
  justify-items: center;
  column-gap: clamp(20px, 3vw, 48px);
}
.refz-logo-row .brand { justify-content: center; }
.refz-logos .refz-logo-row img {
  height: auto;
  width: auto;
  max-height: var(--refz-logo-h, clamp(26px, 3.24vw, 56px));
  max-width: min(11vw, 190px);
}
/* Feedback #58/#59 (03.08.2026): Gmundner und Leonardo wirkten im
   einheitlichen Höhen-Raster deutlich kleiner als ihre Nachbarn. Grund ist
   die Kontur, nicht die Regel: beide Marken sind nahezu quadratisch
   (Gmundner 1:1,15) bzw. hochformatig (Leonardo 1:0,77), während die übrigen
   Logos 1:3 bis 1:6 laufen. Bei gleicher Boxhöhe bleibt davon nur rund die
   halbe Fläche übrig. Deshalb ein größeres Höhenbudget für genau diese
   zwei — die Spalten fluchten unverändert (Feedback-Mail 23.07.). */
/* Feedback #78 (10.08.2026): Gmundner „noch ein bisschen größer" — 5,2 → 6vw. */
.refz-logo-row .brand-logo--gmundner { --refz-logo-h: clamp(48px, 6vw, 104px); }
.refz-logo-row .brand-logo--leonardo { --refz-logo-h: clamp(45px, 5.6vw, 97px); }
/* Feedback #55 (23.07.2026): mobil 3 Logos pro Zeile, kleiner und homogen
   im Raum — gleicher vertikaler Rhythmus zwischen allen Zeilen. */
@media (max-width: 760px) {
  .refz-logos-inner { gap: 34px; }
  .refz-logo-row {
    grid-template-columns: repeat(3, 1fr);
    row-gap: 34px;
    column-gap: 18px;
  }
  .refz-logos .refz-logo-row img {
    max-height: var(--refz-logo-h-mob, 30px);
    max-width: 24vw;
  }
  /* Feedback #78: mobil im gleichen Verhältnis mitgezogen */
  .refz-logo-row .brand-logo--gmundner { --refz-logo-h-mob: 48px; }
  .refz-logo-row .brand-logo--leonardo { --refz-logo-h-mob: 46px; }
}

/* Referenzen: Magazin-Wand (Feedback #13, 20.07.2026) — Überschrift, graues
   Band 735px @1728 (42.53vw); Magazin-Logos laufen von LINKS nach RECHTS und
   verschwinden hinter dem Folie-Mockup: das Marquee-Fenster endet an der
   Mockup-Kante (Figma Frame 2206 clippt bei x≈1064). Bandfarbe = Hintergrund
   des Original-Mockup-PNGs (#c9c9ca) → nahtloser Übergang. */
.refz-media { padding: clamp(40px, 5vw, 80px) 0 0; margin-bottom: clamp(48px, 5.6vw, 100px); }
.refz-media-heading {
  padding: 0 var(--pad-x);
  text-transform: uppercase;
  font-size: clamp(30px, 3.4vw, 52px);
  margin: 0 0 clamp(28px, 3.5vw, 56px);
}
.refz-media-band {
  position: relative;
  background: #c9c9ca;
  height: clamp(300px, 42.53vw, 735px);
  overflow: hidden;
}
.refz-media-marquee {
  position: absolute;
  left: 0;
  /* Feedback #23 (21.07.): Fenster reicht bis UNTER die Folie (74%) — die
     Logos bleiben bis zur sichtbaren Magazin-Kante zu sehen und tauchen erst
     dort ab (Mockup ist jetzt Freisteller mit Alpha, s. page-referenzen.php);
     der harte Schnitt bei 74% liegt unsichtbar hinter der Folie. */
  width: 74%;
  top: 50%;
  transform: translateY(-50%);
  padding: 0;
  /* weiche Einlauf-Kante links, harte Kante rechts (hinter der Folie) */
  mask-image: linear-gradient(90deg, transparent 0, #000 5%, #000 100%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 5%, #000 100%);
}
.refz-media-marquee .clients-marquee-track {
  /* Feedback #47 (23.07.2026): Kantenabstand nach Figma ≈106px @1728 (6,1vw) */
  gap: clamp(60px, 6.1vw, 106px);
  animation-duration: 60s;
}
/* Feedback #47 (23.07.2026): Logos kleiner, korrekt nach Figma. Die 12,1vw
   aus #40 waren die UNSKALIERTE Reihenhöhe der Komponente — die Instanz
   (1:2057, 3778px) skaliert ihren Inhalt (Group 30, 7421px) mit Faktor 0,509;
   real sind die Magazin-Logos 60–86px @1728 (≈ 3,5–5vw). Einheitlich 4,05vw.
   (Doppelte Klasse weiterhin nötig — Kaskade gegen .brand-logo img.) */
.refz-media .refz-media-marquee img {
  height: clamp(36px, 4.05vw, 70px);
  width: auto;
  max-width: none;
}
/* Feedback Alessandro 07.09.2026 (PDF Punkt 3): das F.A.Z.-Magazin-Logo wirkt zu
   klein und zu hoch — die Unterlänge des „g“ gehört zur Bildhöhe, deshalb ist
   „mathematisch zentriert“ nicht „optisch zentriert“ (Wortbild-Mitte liegt bei
   39 % der Bildhöhe statt 50 %, gemessen am PNG). Um ein Viertel größer und um
   die halbe Unterlänge nach unten; die Serife darf die Unterkante der Nachbarn
   kreuzen (ausdrücklich freigegeben). Greift über die Logo-Kennung (Slug mag-faz,
   s. gesk_get_medienlogos / brand-logo--<slug> in page-referenzen.php) — ein neu
   angelegter F.A.Z.-Eintrag mit anderem Slug bekommt die Sonderregel nicht. */
.refz-media .refz-media-marquee .brand-logo--mag-faz img {
  height: clamp(45px, 5.06vw, 87px);
  transform: translateY(10.7%);
}
/* Feedback #40 (22.07.): Original-Freisteller Mockup_6 — Platzierung exakt nach
   der Figma-Transformationsmatrix von Node 1:2055 (relativeTransform):
   Bildrechteck 1537,9×1153,4 @1728 (= Quell-Seitenverhältnis 4:3), Rotation
   +40,48°, Ursprung x1083/y-558 relativ zum Band. Beschnitt auf die Bandhöhe
   übernimmt overflow:hidden des Bandes. */
/* Feedback #47 + #55 (23.07.2026): Magazin minimal verkleinert (scale 0.94)
   und über top:50% vertikal im grauen Band zentriert — die 51vw sind der
   Abstand Rotationsursprung → Hüllenmitte (108,6vw Hüllhöhe × 0,94 / 2),
   dadurch stimmt die Zentrierung auf ALLEN Viewports (auch mobil, #55). */
.refz-media-mockup {
  position: absolute;
  left: 0;
  top: 50%;
  width: 89vw;
  height: 66.75vw;
  transform: translate(62.68vw, -51vw) rotate(40.48deg) scale(0.94);
  transform-origin: 0 0;
  z-index: 1;
  pointer-events: none;
}

.brand {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-display);
  color: #000;
  font-weight: 700;
  letter-spacing: -0.005em;
  font-size: 28px;
  line-height: 1;
  flex-shrink: 0;
}

/* Echte Kundenlogos (PNG von gesk.berlin), vereinheitlicht auf Schwarz */
.brand-logo img {
  height: 36px;
  width: auto;
  max-width: 220px;
  object-fit: contain;
  filter: grayscale(1) brightness(0);
  opacity: 0.9;
}

/* — Artemide — serif italic w/ ® */
.brand-artemide {
  font-family: "Times New Roman", Georgia, serif;
  font-style: italic;
  font-weight: 700;
  font-size: 32px;
  letter-spacing: -0.01em;
}
.brand-artemide sup { font-size: 12px; font-style: normal; margin-left: 2px; vertical-align: super; }

/* — TEAM 7 — bold geometric + framed 7 */
.brand-team7 {
  font-weight: 900;
  letter-spacing: 0.06em;
  font-size: 26px;
  gap: 6px;
}
.brand-team7 .seven {
  display: inline-block;
  border: 2px solid #000;
  padding: 2px 6px;
  font-size: 22px;
  line-height: 1;
}

/* — KLAFS — bold sans, A as upward triangle */
.brand-klafs {
  font-weight: 900;
  font-size: 30px;
  letter-spacing: 0.04em;
  display: inline-flex;
  align-items: baseline;
}
.brand-klafs .a-mark {
  display: inline-block;
  width: 0; height: 0;
  border-left: 11px solid transparent;
  border-right: 11px solid transparent;
  border-bottom: 22px solid #000;
  margin: 0 1px;
  position: relative;
  top: 2px;
}

/* — Alape — light italic w/ smile */
.brand-alape {
  font-family: "Times New Roman", Georgia, serif;
  font-weight: 400;
  font-style: italic;
  font-size: 30px;
}
.brand-alape .alape-mark {
  font-style: normal;
  font-size: 18px;
  margin-left: 2px;
  vertical-align: super;
}

/* — DORNBRACHT — black box double line */
.brand-dornbracht {
  font-weight: 900;
  font-size: 18px;
  letter-spacing: 0.06em;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  background: #000;
  color: #fff;
  padding: 8px 14px;
  line-height: 1.05;
}

/* — fm Büromöbel */
.brand-fm {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
}
.brand-fm .fm-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #000;
  color: #fff;
  font-weight: 800;
  font-size: 22px;
  padding: 4px 8px;
  letter-spacing: -0.04em;
}

/* — Gmundner Keramik */
.brand-gmundner {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  letter-spacing: 0.18em;
  font-weight: 700;
}
.brand-gmundner .gk-frame {
  border: 1px solid #000;
  padding: 6px 8px;
  font-size: 14px;
  letter-spacing: 0.08em;
}
.brand-gmundner .gk-name { font-size: 16px; letter-spacing: 0.16em; }
.brand-gmundner .gk-sub { font-size: 9px; letter-spacing: 0.32em; opacity: 0.75; }

/* — BORN to be ALIVE — boxed three-line lockup */
.brand-born {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  padding: 6px 14px;
  border: 1px solid #000;
  font-family: "Playfair Display", Georgia, serif;
  line-height: 1;
  text-align: center;
}
.brand-born em { font-style: italic; font-weight: 600; font-size: 18px; letter-spacing: 0.04em; }
.brand-born small { font-style: italic; font-size: 11px; opacity: 0.85; letter-spacing: 0.04em; }
.brand-born strong { font-family: var(--font-display, "Kommon Grotesk Extended", "Inter", sans-serif); font-weight: 700; font-size: 14px; letter-spacing: 0.18em; margin-top: 2px; }

/* — NCS — round dot + wordmark */
.brand-ncs {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-display, "Kommon Grotesk Extended", "Inter", sans-serif);
  font-weight: 700;
  font-size: 22px;
  letter-spacing: 0.04em;
}
.brand-ncs .ncs-mark {
  display: inline-block;
  width: 18px; height: 18px;
  border-radius: 999px;
  background: #000;
  font-size: 0;
}

/* — kymo — script lowercase */
.brand-kymo {
  font-family: "Brush Script MT", "Snell Roundhand", cursive;
  font-weight: 400;
  font-size: 38px;
  letter-spacing: -0.02em;
}
.brand-kymo sup { font-size: 11px; }

/* — DOVIT */
.brand-dovit {
  font-weight: 900;
  font-size: 28px;
  letter-spacing: 0.05em;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  line-height: 1;
}
.brand-dovit small { font-size: 8px; letter-spacing: 0.4em; margin-top: 4px; }

/* — sedda */
.brand-sedda {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
}
.brand-sedda .sedda-mark { font-size: 26px; font-weight: 400; }
.brand-sedda .sedda-name { font-size: 28px; font-weight: 800; letter-spacing: -0.01em; }
.brand-sedda .sedda-sub { font-size: 11px; letter-spacing: 0.04em; }

/* — AOA */
.brand-aoa {
  font-weight: 900;
  font-size: 32px;
  letter-spacing: 0.04em;
}
.brand-aoa .aoa-tri { font-size: 22px; margin: 0 1px; vertical-align: 1px; }

/* — ewe */
.brand-ewe {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-weight: 800;
  font-size: 36px;
  letter-spacing: -0.02em;
}

/* — vist */
.brand-vist {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-weight: 800;
  font-size: 32px;
  letter-spacing: -0.02em;
  font-style: italic;
}

/* — Christine Kröncke */
.brand-kroncke {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1.15;
}
.brand-kroncke .kk-sub { font-size: 9px; letter-spacing: 0.18em; font-weight: 500; opacity: 0.75; }

/* — Gerd van Well — condensed */
.brand-gerd {
  font-family: "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  font-weight: 900;
  font-size: 22px;
  letter-spacing: 0.02em;
  font-stretch: condensed;
}

/* — CONTI+ */
.brand-conti {
  font-weight: 900;
  font-size: 28px;
  letter-spacing: 0.04em;
}
.brand-conti .conti-plus { font-weight: 800; margin-left: 2px; }

/* — walden Austria */
.brand-walden {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  line-height: 1;
}
.brand-walden em {
  font-family: "Brush Script MT", "Snell Roundhand", cursive;
  font-style: normal;
  font-size: 38px;
  font-weight: 400;
}
.brand-walden small { font-size: 9px; letter-spacing: 0.3em; margin-top: 4px; }

/* — recozy+ */
.brand-recozy {
  font-family: "Times New Roman", Georgia, serif;
  font-weight: 700;
  font-size: 30px;
  letter-spacing: -0.01em;
  font-style: italic;
}
.brand-recozy sup { font-size: 18px; vertical-align: super; }

/* ============================================================
   STATS  (WAS UNS ANTREIBT / UNSER ANSPRUCH)
   ============================================================ */
.stats {
  background: var(--bg-alt);
  padding: clamp(80px, 10vw, 140px) var(--pad-x);
  position: relative;
  overflow: hidden;
}
.stats::before {
  content: "";
  position: absolute;
  left: -3%;
  right: -3%;
  top: 8%;
  height: 38%;
  background: rgb(239,239,239);
  transform: rotate(-0.4deg);
  z-index: 0;
}
.stats-inner {
  max-width: var(--container);
  margin: 0 auto;
  position: relative;
  z-index: 1;
}
.stats-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  align-items: end;
  border-bottom: 1px solid var(--ink);
  padding: 32px 0;
}
.stats-row > div {
  padding: 0 32px;
  position: relative;
}
.stats-row > div:first-child { padding-left: 0; }
.stats-row > div:last-child { padding-right: 0; }
.stats-row > div + div::before {
  content: "";
  position: absolute;
  left: 0;
  top: 8%;
  bottom: 8%;
  width: 5px;
  background: #000;
}
.stat-num {
  font-family: "Montserrat", "Helvetica Neue", Arial, sans-serif;
  font-weight: 900; /* Figma: Montserrat Black */
  font-size: clamp(80px, 12vw, 170px);
  line-height: 0.85;
  letter-spacing: -0.04em;
  color: #000;
}
.stat-num .plus {
  font-weight: 700;
  font-size: 0.62em;
  vertical-align: 0.16em;
  margin-left: 0.02em;
}
.stat-num .deg {
  font-weight: 600;
  font-size: 0.55em;
  vertical-align: 0.32em;
  margin-left: -0.02em;
}
.stat-label {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(14px, 1.4vw, 24px); /* Figma: Stat-Labels 24px @1728 */
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #000; /* Figma: Stat-Labels schwarz, nicht muted */
  margin-top: 16px;
}
.stats-text-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 100px);
  margin-top: clamp(60px, 8vw, 100px);
}
.stats-text-row h3 {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(22px, 2vw, 32px); /* Figma: 32px @1728 */
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin: 0 0 24px;
  display: inline-block;
  transform: rotate(-0.7deg);
  transform-origin: 0 50%;
  position: relative;
  padding-bottom: 14px;
}
.stats-text-row h3::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 60%;
  height: 5px;
  background: #000;
}
.stats-text-row p {
  font-size: clamp(17px, 1.4vw, 20px); /* Figma: Body 20px @1728 */
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
}
@media (max-width: 760px) {
  .stats-row, .stats-text-row { grid-template-columns: 1fr; }
}

/* ============================================================
   ABOUT BLEND  (Playfair italic + big sans, mix-blend over photo)
   ============================================================ */
.aboutblend {
  position: relative;
  background: #000;
  overflow: hidden;
  isolation: isolate;
  min-height: clamp(600px, 80vh, 880px);
  min-height: clamp(600px, 80svh, 880px); /* iOS: Adressleiste (GK-05) */
  display: flex;
  align-items: center;
  justify-content: center;
}
.aboutblend-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
}
.aboutblend-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.18);
}
.aboutblend-inner {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: clamp(60px, 10vw, 120px) clamp(20px, 6vw, 80px);
  max-width: 1100px;
  width: 100%;
}
.aboutblend-eyebrow {
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-weight: 700;
  font-size: clamp(40px, 5.5vw, 64px);
  color: #fff; /* Feedback #57: kein Blend mehr */
  line-height: 1;
  margin: 0 0 28px;
}
.aboutblend-title {
  font-family: var(--font-display);
  font-weight: 800; /* Figma: UltraBold */
  font-size: clamp(28px, 4vw, 48px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  color: #fff; /* Feedback #57: kein Blend mehr */
  margin: 0;
  text-transform: uppercase;
}
@media (max-width: 760px) {
  .aboutblend { min-height: 520px; }
}

/* ============================================================
   ABOUT-PAIR  (image + text)
   ============================================================ */
.aboutpair {
  background: var(--bg);
  padding: clamp(60px, 8vw, 120px) var(--pad-x);
}
.aboutpair-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: clamp(40px, 6vw, 100px);
  align-items: center;
}
.aboutpair .photo {
  aspect-ratio: 5/3;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.aboutpair h3 {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(36px, 4.5vw, 64px);
  text-transform: uppercase;
  margin: 0 0 24px;
  line-height: 0.96;
}
.aboutpair p {
  margin: 0;
  font-size: 17px;
  line-height: 1.55;
  color: var(--ink-soft);
}
@media (max-width: 900px) {
  .aboutpair-inner { grid-template-columns: 1fr; }
}

/* ============================================================
   PROJECTS — TILTED LEAD  (matches MacBook 7)
   ============================================================ */
.projects-lead {
  background: var(--bg);
  position: relative;
  padding: clamp(60px, 8vw, 100px) var(--pad-x) clamp(40px, 6vw, 80px);
  overflow: hidden;
}
.projects-lead-inner {
  position: relative;
  max-width: 1700px;
  margin: 0 auto;
  min-height: 720px;
}
.projects-tilt-card {
  position: relative;
  aspect-ratio: 5/4;
  max-width: 720px;
  margin-left: auto;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-color: #ebebeb;
  transform: rotate(-4.8deg);
  box-shadow: 0 30px 80px -10px rgba(0,0,0,0.18);
}
.projects-rotated-title {
  position: absolute;
  left: clamp(60px, 8vw, 140px);
  bottom: 80px;
  transform-origin: left bottom;
  transform: rotate(-90deg) translateX(0);
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(80px, 9vw, 126px);
  line-height: 0.96;
  letter-spacing: -0.005em;
  text-transform: uppercase;
  pointer-events: none;
}
.projects-rotated-meta {
  position: absolute;
  left: 6px;
  bottom: 80px;
  transform-origin: left bottom;
  transform: rotate(-90deg);
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  white-space: nowrap;
}
.projects-card-caption {
  position: absolute;
  right: 0;
  bottom: 60px;
  max-width: 320px;
  padding: 24px 28px;
  background: #000;
  color: #fff;
  transform: rotate(-4.8deg) translate(20px, 60px);
  font-family: var(--font-italic);
  font-size: 16px;
  line-height: 1.4;
}
.projects-card-caption strong {
  display: block;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  margin-bottom: 8px;
}
@media (max-width: 900px) {
  .projects-lead-inner { min-height: auto; }
  .projects-tilt-card { transform: none; max-width: none; margin-top: 80px; }
  .projects-rotated-title {
    position: static;
    transform: none;
    margin-bottom: 16px;
    font-size: 64px;
  }
  .projects-rotated-meta { display: none; }
  .projects-card-caption {
    position: static;
    transform: none;
    max-width: none;
    margin-top: 24px;
  }
}

/* ============================================================
   PROJECTS LIST  (alternating hero + label sections)
   ============================================================ */
.projects-list {
  background: var(--bg);
  padding: clamp(40px, 6vw, 80px) 0;
}

.project-section-title {
  padding: clamp(40px, 6vw, 80px) var(--pad-x) clamp(20px, 3vw, 32px);
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(28px, 3vw, 40px);
  text-transform: uppercase;
  letter-spacing: 0.01em;
  max-width: var(--container);
  margin: 0 auto;
}

/* Aktuell head — eyebrow + tag list (matches Figma frame 8) */
.aktuell-head {
  max-width: var(--container);
  margin: clamp(60px, 7vw, 100px) auto clamp(20px, 3vw, 32px);
  padding: 0 var(--pad-x);
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 24px 56px;
  align-items: start;
  border-top: 1px solid rgba(0,0,0,0.18);
  padding-top: 28px;
}
.aktuell-label {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(24px, 3.2vw, 48px); /* Figma: Sektions-Köpfe 48px @1728 */
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #000;
}
.aktuell-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 32px;
  align-items: center;
}
.aktuell-tag {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #000;
  padding: 8px 14px;
  border: 1px solid rgba(0,0,0,0.6);
  border-radius: 999px;
  white-space: nowrap;
}
.aktuell-tag.is-empty {
  width: 36px;
  height: 36px;
  padding: 0;
  border-radius: 50%;
  border-color: rgba(0,0,0,0.5);
}
@media (max-width: 700px) {
  .aktuell-head { grid-template-columns: 1fr; }
  .aktuell-tag { font-size: 11px; letter-spacing: 0.14em; padding: 6px 10px; }
}

.project-banner.is-event {
  aspect-ratio: 16/9;
}

.project-banner {
  position: relative;
  aspect-ratio: 5/2;
  margin: 24px 0;
  overflow: hidden;
  background: #000;
  isolation: isolate;
}
.project-banner.dark { background: #000; aspect-ratio: 16/7; }
.project-banner .img {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform .9s cubic-bezier(.2,.7,.2,1);
}
@media (hover: hover) { .project-banner:hover .img { transform: scale(1.03); } }
.project-banner .meta {
  position: relative;
  z-index: 2;
  padding: clamp(40px, 6vw, 100px) var(--pad-x);
  color: #fff;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  height: 100%;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,0.5));
  max-width: var(--container);
  margin: 0 auto;
}
.project-banner .eyebrow {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.9;
  margin-bottom: 10px;
}
.project-banner h3 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(32px, 5vw, 64px);
  text-transform: uppercase;
  letter-spacing: 0.005em;
  line-height: 0.96;
  max-width: 16ch;
}

/* Centered text-only project tile (CRAFT OVER CODE on dark) */
.project-text {
  background: #000;
  color: #fff;
  padding: clamp(60px, 8vw, 120px) var(--pad-x);
  text-align: left;
}
.project-text-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 48px;
  align-items: center;
}
.project-text h3 {
  margin: 0 0 16px;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(36px, 4.5vw, 64px);
  text-transform: uppercase;
}
.project-text p {
  margin: 0;
  font-size: clamp(20px, 1.45vw, 25px); /* Figma: Projektbeschreibung ~25px Syne @1728 */
  line-height: 1.6;
  opacity: 0.9;
}
@media (max-width: 760px) {
  .project-text-inner { grid-template-columns: 1fr; }
}

/* Two-up split (DORNBRACHT + OBJECT CARPET) */
.projects-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
}
.projects-split .project-banner { margin: 0; aspect-ratio: 4/3; }
@media (max-width: 760px) {
  .projects-split { grid-template-columns: 1fr; }
}

/* ============================================================
   SERVICES
   ============================================================ */
/* Feedback #64 (03.08.2026): Der Abstand zwischen Above-the-Fold-Bereich und
   den Leistungs-Dropdowns war zu groß (140px @1512). Oben deutlich enger,
   unten unverändert — das Akkordeon rückt näher an den Hero. */
.services {
  background: var(--bg);
  padding: clamp(36px, 4.1vw, 62px) var(--pad-x) clamp(80px, 10vw, 140px);
}
.services-inner {
  max-width: var(--container);
  margin: 0 auto;
}
.services h2 {
  margin: 0 0 clamp(40px, 5vw, 60px);
  font-size: clamp(40px, 5vw, 64px);
  max-width: 16ch;
}
.accordion {
  border-top: 1px solid var(--ink);
}
.accordion-item {
  border-bottom: 1px solid var(--ink);
}
.accordion-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 28px 8px;
  background: transparent;
  border: 0;
  text-align: left;
  font-family: var(--font-display);
  /* Figma Website_Final 15.07.2026: Trigger deutlich größer (~52px @1728);
     4.2vw wie .career-intro-title, damit Trigger und Section-Headline auch
     unterhalb der Design-Breite gleich groß bleiben. */
  font-weight: 900;
  font-size: clamp(26px, 4.2vw, 52px);
  line-height: 1; /* Figma Leistungen-Panels: lh 100 % */
  text-transform: uppercase;
  letter-spacing: -0.05em; /* Feedback #43 */
  transition: padding-left .25s ease;
}
/* Feedback #10/#12 (20.07.2026): Trigger bleibt beim Hover STABIL — der
   frühere Einrück-Shift (padding-left 18px) und der Bounce sind raus. */
.accordion-trigger .icon {
  width: 28px; height: 28px; position: relative;
  flex-shrink: 0;
}
.accordion-trigger .icon::before,
.accordion-trigger .icon::after {
  content: ""; position: absolute; background: currentColor;
  transition: transform .3s ease;
}
.accordion-trigger .icon::before {
  left: 0; right: 0; top: 50%; height: 2px; transform: translateY(-50%);
}
.accordion-trigger .icon::after {
  top: 0; bottom: 0; left: 50%; width: 2px; transform: translateX(-50%);
}
.accordion-item.open .accordion-trigger .icon::after { transform: translateX(-50%) scaleY(0); }

.accordion-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height .5s cubic-bezier(.2,.7,.2,1);
}
.accordion-inner {
  /* Figma Website_Final: einspaltig — Kicker (fett) + Liste, kein rechter Absatz */
  padding: 0 8px 36px;
  font-size: 16px;
  line-height: 1.5;
  color: var(--ink-soft);
}
.accordion-inner ul { margin: 0; padding-left: 20px; list-style: disc; }
.accordion-inner ul li { margin-bottom: 5px; font-family: var(--font-meta); }
.accordion-inner h4.accordion-kicker {
  margin: 0 0 10px;
  font-family: var(--font-meta);
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0;
  /* kein text-transform: die Kicker stehen teils gemischt-groß im Design */
  text-transform: none;
}

/* ============================================================
   ABOUT (UNSERE AUFGABE) + OFFENE STELLEN
   ============================================================ */
.about {
  background: var(--bg);
  padding: clamp(80px, 10vw, 140px) var(--pad-x);
  border-top: 1px solid var(--line);
}
.about-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: clamp(40px, 6vw, 100px);
}
.about h2 {
  margin: 0;
  font-size: clamp(32px, 3.5vw, 48px);
}
.about p {
  margin: 0 0 16px;
  font-size: clamp(17px, 1.4vw, 20px); /* Figma: Body 20px */
  line-height: 1.55;
  color: var(--ink-soft);
}
.about p strong { font-weight: 600; color: var(--ink); }
@media (max-width: 760px) {
  .about-inner { grid-template-columns: 1fr; }
}

/* Feedback #67 (03.08.2026, Figma-Prototyp aktualisiert): „Offene Stellen" ist
   jetzt die Sektions-Überschrift, darunter trägt JEDES Dropdown den Titel der
   konkreten Stelle (Aufbau wie „Leistungen"). Die Trennlinien liefert das
   Akkordeon selbst (border-top + border-bottom je Item) — die früheren Rahmen
   der .jobs-row hätten sie oben und unten verdoppelt. */
.jobs {
  background: var(--bg);
  padding: clamp(40px, 5vw, 64px) var(--pad-x) clamp(80px, 10vw, 140px);
}
.jobs-inner {
  max-width: var(--container);
  margin: 0 auto;
}
.jobs-heading {
  margin: 0 0 clamp(24px, 3vw, 44px);
  /* wie die übrigen Sektions-Headlines (Figma 1:2513: 52px @1728) */
  font-size: clamp(30px, 3.4vw, 52px);
}
.jobs-row {
  max-width: var(--container);
  margin: 0 auto;
}
/* Trigger erbt die Basisgröße aus .accordion-trigger. */

/* ============================================================
   FORSCHUNG SECTION  (matches MacBook 6)
   ============================================================ */
.forschung {
  background: var(--bg);
  padding: clamp(80px, 10vw, 140px) var(--pad-x);
}
.forschung-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 6vw, 100px);
  align-items: center;
}
.forschung .photo {
  aspect-ratio: 3/4;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.forschung .brochure-mockup {
  aspect-ratio: 4/5;
  background-size: contain;
  background-color: #ebebeb;
  background-position: center;
  background-repeat: no-repeat;
  transform: rotate(-2.4deg);
  filter: drop-shadow(0 30px 50px rgba(0,0,0,0.18));
}
.forschung h3 {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(34px, 4vw, 52px); /* Spec: "KONTAKTE MIT SUBSTANZ" 52px (neue, kleinere Skala) */
  text-transform: uppercase;
  margin: 0 0 24px;
}
/* Forschung: einspaltiger ACF-Fallback ohne Mockup-Spalte */
.forschung-inner--single { grid-template-columns: 1fr; }
.forschung p {
  margin: 0 0 24px;
  font-size: clamp(18px, 1.6vw, 24px); /* Figma: 24px Syne @1728 */
  line-height: 1.6;
  color: var(--ink-soft);
}
@media (max-width: 900px) {
  .forschung-inner { grid-template-columns: 1fr; }
}

/* ============================================================
   PRESSELOUNGE  (erhaltenes Element — GeSK-Branding)
   ============================================================ */
.presselounge {
  background: var(--bg);
  padding: clamp(40px, 6vw, 80px) var(--pad-x) clamp(80px, 10vw, 140px);
}
.presselounge-inner {
  max-width: var(--container);
  margin: 0 auto;
}
.presse-intro {
  max-width: 640px;
  font-size: 17px;
  line-height: 1.6;
  color: var(--ink-soft);
  margin: 0 0 clamp(40px, 5vw, 64px);
}
.presse-list {
  border-top: 1px solid var(--ink);
}
.presse-item {
  display: grid;
  grid-template-columns: 140px 1fr auto;
  gap: 24px 40px;
  align-items: center;
  padding: 28px 8px;
  border-bottom: 1px solid var(--ink);
  transition: padding-left .25s ease;
}
@media (hover: hover) { .presse-item:hover { padding-left: 18px; } }
.presse-date {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.14em;
  color: var(--ink-muted);
  text-transform: uppercase;
}
.presse-item h3 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(18px, 2vw, 26px);
  text-transform: uppercase;
  letter-spacing: 0.01em;
}
.presse-item .presse-client {
  display: block;
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 14px;
  text-transform: none;
  color: var(--ink-muted);
  margin-top: 6px;
  letter-spacing: 0;
}
@media (max-width: 760px) {
  .presse-item { grid-template-columns: 1fr; gap: 12px; }
}

/* ============================================================
   UNSERE VERTEILER  (Press distribution — magazine mockup + media logos)
   ============================================================ */
.verteiler {
  position: relative;
  background: #efeeec;
  padding: 140px var(--pad-x) 160px;
  overflow: hidden;
}
.verteiler::before {
  content: "";
  position: absolute;
  left: -6%;
  right: -6%;
  top: 0;
  height: 1px;
  background: rgba(0,0,0,0.18);
  transform: rotate(-1.4deg);
}
.verteiler-mockup {
  position: absolute;
  top: -40px;
  right: -8%;
  width: 60%;
  max-width: 880px;
  transform: rotate(4.6deg);
  z-index: 1;
  pointer-events: none;
}
.verteiler-mockup img {
  width: 100%;
  height: auto;
  display: block;
  filter: drop-shadow(0 30px 60px rgba(0,0,0,0.18));
}
.verteiler-content {
  position: relative;
  z-index: 2;
  max-width: 1560px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 56px;
}
.verteiler-title {
  font-size: clamp(56px, 8vw, 132px);
  margin: 0;
  line-height: 0.92;
  letter-spacing: -0.01em;
  color: #000;
  transform: rotate(-0.6deg);
  transform-origin: 0 0;
}
.verteiler-lede {
  max-width: 520px;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 1.55;
  color: #1a1a1a;
  margin: 0;
}
.verteiler-logos {
  list-style: none;
  margin: 40px 0 0;
  padding: 56px 0 0;
  border-top: 1px solid rgba(0,0,0,0.2);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 56px 40px;
  align-items: center;
  justify-items: center;
}
.verteiler-logos li {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 22px;
  letter-spacing: 0.02em;
  color: #000;
  text-align: center;
  line-height: 1;
  text-transform: uppercase;
  display: flex;
  flex-direction: column;
  gap: 2px;
  align-items: center;
}
.verteiler-logos li.vl-schoener {
  font-style: italic;
  font-weight: 900;
  font-size: 17px;
  letter-spacing: 0;
  line-height: 0.95;
}
.verteiler-logos li.vl-ideat {
  font-size: 28px;
  font-weight: 900;
  letter-spacing: 0;
}
.verteiler-logos li.vl-ideat small {
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.18em;
  margin-top: 4px;
}
.verteiler-logos li.vl-deco {
  font-family: "Times New Roman", serif;
  font-weight: 700;
  font-size: 32px;
  letter-spacing: -0.02em;
}
.verteiler-logos li.vl-hauser {
  font-family: "Times New Roman", serif;
  font-weight: 700;
  font-size: 28px;
  letter-spacing: 0.04em;
}
.verteiler-logos li.vl-ad {
  font-family: "Times New Roman", serif;
  font-weight: 700;
  font-size: 36px;
  letter-spacing: 0.02em;
}
.verteiler-logos li.vl-goodlife {
  font-family: "Times New Roman", serif;
  font-weight: 600;
  font-size: 18px;
  line-height: 0.95;
  letter-spacing: 0.02em;
}
@media (max-width: 1100px) {
  .verteiler-mockup { position: relative; top: 0; right: 0; width: 80%; margin: 0 auto 32px; transform: rotate(2deg); }
  .verteiler { padding: 80px var(--pad-x); }
  .verteiler-title { font-size: 56px; }
}

/* ============================================================
   CONNECT  (Figma: langsam durchlaufende Design-Bilder mit
   Overlay-Titel "CONNECT WITH us / GEMACHT FÜR DIE EWIGKEIT",
   darunter schwarze Pills auf Weiß)
   ============================================================ */
/* Feedback #18 (20.07.2026): jedes Strip-Bild exakt im Figma-Maß 1120×630
   (Component 6, 2356:1634) — proportional 64.81vw × 36.46vw, Gap 20px @1728
   (1.16vw). Die Bilder behalten damit ihr 16:9-Format (vorher 63.9×23.8vw
   beschnitten). KEIN Scrim — weißer Titel direkt auf den Bildern. */
.connect {
  position: relative;
  background: var(--bg);
  overflow: hidden;
  height: clamp(320px, 36.46vw, 630px);
  isolation: isolate;
}
/* Feedback #60 + #62 (03.08.2026): Auf Forschung stieß die animierte Galerie
   direkt an das Above-the-Fold-Bild, auf der Startseite direkt an das graue
   Band „Aktuelle Themen" (gemessen: 0px). Referenz ist laut Alessandro der
   Abstand auf „Referenzen" zwischen Media-Outlets-Band und Galerie — das ist
   exakt `.refz-media`s margin-bottom, deshalb hier derselbe Wert. */
.reveal-hero + .connect,
.reveal-hero + .connect-pills, /* #91: Forschung ohne Bildstreifen — Pills bekommen denselben Abstand zum Kopfbereich */
.recent-works + .connect {
  margin-top: clamp(48px, 5.6vw, 100px);
}
.connect-strip {
  position: absolute;
  inset: 0;
  overflow: hidden;
}
.connect-strip-track {
  display: flex;
  gap: 1.16vw;
  height: 100%;
  width: max-content;
  /* Spec: Loop-Carousel deutlich langsamer/ruhiger (~2x: 90s → 180s) */
  animation: marquee 180s linear infinite;
  will-change: transform;
}
.connect-img {
  width: 64.81vw;
  height: 100%;
  align-self: stretch;
  background-size: cover;
  background-position: center;
  flex-shrink: 0;
}
@keyframes marquee {
  0%   { transform: translate3d(0, 0, 0); }
  100% { transform: translate3d(-50%, 0, 0); }
}
.connect-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(6px, 1vw, 14px);
  text-align: center;
  color: #fff;
  padding: 0 var(--pad-x);
  pointer-events: none;
}
/* Figma 06.07.2026: nur noch die Display-Headline "GEMACHT FÜR DIE EWIGKEIT" —
   die Eyebrow-Zeile "Connect with us" existiert im neuen Design nicht mehr. */
.connect-title {
  font-size: clamp(28px, 3vw, 46px);
  line-height: 0.96;
  text-shadow: 0 0 24px rgba(0, 0, 0, 0.18);
}
.connect-overlay .italic-accent {
  font-family: "Playfair Display", Georgia, serif;
  font-weight: 600;
}
.connect-pills {
  display: flex;
  gap: clamp(48px, 9vw, 136px);
  justify-content: center;
  padding: clamp(40px, 5vw, 64px) var(--pad-x);
  background: var(--bg);
}
/* GK-06 Runde 1 (23.09.2026, Nachmessung 320–412 px): zwei Pillen à 154 px + 48 px Abstand = 356 px,
   zentriert in 345 px (375) bzw. 330 px (360) — die linke Pille rückte auf 9 bzw. 2 px an den Rand,
   bei 320 px lief die Reihe beidseitig über. Bis 380 px engerer Abstand, notfalls zwei Reihen. */
@media (max-width: 380px) {
  .connect-pills { flex-wrap: wrap; gap: 16px clamp(12px, 4vw, 48px); } /* Innenbreite 375 px: 335 → eine Reihe; 360 px: 320 → zwei Reihen (2 × 156 + Abstand passen nicht) */
}
/* Figma 06.07.2026: Pill-Labels "Kontakt" / "Rufe uns an" in Mischschreibung,
   Regular-Gewicht, weißer Kreis mit dünnem Pfeil rechts. */
/* Feedback #68 (03.08.2026): „E-Mail" und „Jetzt kontaktieren" laufen in
   Poppins Medium statt in der Display-Schrift (--font-meta = Poppins, 500). */
.connect-pills .pill { font-family: var(--font-meta); text-transform: none; letter-spacing: 0.01em; font-size: 14px; font-weight: 500; }
/* Hover (Fedo 06.07. + Kolja-Korrektur 16.07. + Feedback #7 20.07.): der weiße
   Kreis wächst von rechts nach links auf, bis die Pille weiß gefüllt ist —
   das Label bleibt sichtbar und wechselt auf Schwarz (vorher blendete es aus);
   der Pfeil bleibt RECHTS stehen (nicht mittig). */
.pill.solid {
  background: #000;
  color: #fff;
  border-color: #000;
  min-width: clamp(156px, 11vw, 190px); /* 190 @1728 wie im Figma, s. --pill-h */
  position: relative;
  overflow: hidden;
  padding-right: var(--pill-h); /* Platz für den absolut gesetzten Kreis */
}
.pill.solid .dot {
  background: #fff;
  color: #000;
  position: absolute;
  top: 2px;
  right: 2px;
  bottom: 2px;
  height: auto;
  width: calc(var(--pill-h) - 6px); /* echter Kreis: Höhe minus Rand (1px) und Abstand (2px) je Seite */
  /* Feedback #50 (23.07.2026): SVG-Pfeil (20px, 2px-Strich) EXAKT im
     Ruhekreis zentriert: (Kreis − 20) / 2 Randabstand — 11px @48, 7px @40.
     Beim Hover-Aufwachsen bleibt er rechts an Ort und Stelle (flex-end). */
  justify-content: flex-end;
  padding-right: calc((var(--pill-h) - 6px - 20px) / 2);
  transition: width 0.38s cubic-bezier(0.65, 0, 0.35, 1);
}
.pill .dot .dot-arrow { display: block; flex-shrink: 0; }
.pill.solid > span:first-child {
  position: relative;
  z-index: 1; /* Label liegt über dem aufwachsenden weißen Kreis */
  transition: color 0.25s ease;
}
@media (hover: hover) { .pill.solid:hover { background: #000; color: #fff; transform: none; } }
@media (hover: hover) { .pill.solid:hover .dot { width: calc(100% - 4px); background: #fff; color: #000; } }
@media (hover: hover) { .pill.solid:hover > span:first-child { color: #000; } }
/* Feedback-Button #92 (Moritz, 09.09.2026): Forschung-CTA in umgekehrten Farben —
   weiße Pille, schwarze Schrift, schwarzer Kreis mit weißem Pfeil; beim Hover
   wächst der schwarze Kreis über die Pille, die Schrift wird weiß (Spiegelbild
   der schwarzen Pille). */
.pill.solid.pill--invert { background: #fff; color: #000; border-color: #fff; }
.pill.solid.pill--invert .dot { background: #000; color: #fff; }
@media (hover: hover) { .pill.solid.pill--invert:hover { background: #fff; color: #000; } }
@media (hover: hover) { .pill.solid.pill--invert:hover .dot { background: #000; color: #fff; } }
@media (hover: hover) { .pill.solid.pill--invert:hover > span:first-child { color: #fff; } }

/* ============================================================
   BUTTONS
   ============================================================ */
.pill {
  /* Feedback Alessandro 07.09.2026 (PDF Punkt 2): Call-to-Actions „ein bisschen
     kleiner“ — Referenzgröße ist der Absenden-Pill im Figma (≈190×48 @1728 =
     11vw × 2,78vw). Die Pille skaliert deshalb wie der Rest des Designs mit der
     Viewportbreite, statt auf jedem Bildschirm fix 190×48 zu bleiben: auf einem
     ~1365px-Fenster (Ales Screenshots) 156×40, ab 1728px unverändert wie im
     Figma. Kreis, Platz für den Kreis und Pfeil-Zentrierung hängen an --pill-h. */
  --pill-h: clamp(40px, 2.78vw, 48px);
  display: inline-flex; align-items: center; gap: 8px;
  padding: 2px 2px 2px 16px;
  min-width: clamp(132px, 9.2vw, 159px);
  height: var(--pill-h);
  background: #fff; color: #000;
  border: 1px solid #000;
  border-radius: 192px;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  transition: transform .2s ease, background .25s ease, color .25s ease;
  justify-content: space-between;
}
.pill > span:first-child {
  flex: 1;
  text-align: left;
  padding-left: 4px;
}
.pill .dot {
  width: calc(var(--pill-h) - 4px); height: calc(var(--pill-h) - 4px);
  border-radius: 136px;
  background: rgb(30,30,30);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  /* Figma Buttons/03+4: solider Pfeil. Der Display-Font rendert "→" als dünnen
     Strich-Pfeil → neutraler System-Font mit klarem Glyph. */
  font-family: Arial, "Helvetica Neue", sans-serif;
  font-size: 18px;
  font-weight: 700;
  flex-shrink: 0;
  transition: background .25s ease;
}
@media (hover: hover) { .pill:hover { transform: translateY(-1px); background: #000; color: #fff; } }
@media (hover: hover) { .pill:hover .dot { background: #fff; color: #000; } }
.pill.outline { background: transparent; color: inherit; border-color: currentColor; }
.pill.outline .dot { background: currentColor; color: #000; }
@media (hover: hover) { .pill.outline:hover { background: currentColor; color: #000; } }
@media (hover: hover) { .pill.outline:hover .dot { background: #000; color: currentColor; } }

/* ============================================================
   NEWSLETTER  (slightly tilted as in figma)
   ============================================================ */
.newsletter {
  background: var(--bg);
  padding: clamp(80px, 10vw, 140px) var(--pad-x);
  border-top: 1px solid var(--line);
}
.newsletter-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: clamp(24px, 4vw, 64px);
  align-items: end;
  transform: rotate(-1deg);
  transform-origin: left center;
}
.newsletter h2 {
  margin: 0;
  font-size: clamp(40px, 4.5vw, 48px); /* Figma: BLEIB VERBUNDEN 48px @1728 */
  line-height: 0.95;
}
.newsletter .subtitle {
  margin: 0;
  font-size: 20px; /* Figma: 20px */
  font-family: var(--font-italic);
  font-weight: 500;
  line-height: 1.3;
}
.newsletter form { width: 100%; }
.email-field {
  display: flex; align-items: center;
  border-bottom: 1.5px solid var(--ink);
  padding-bottom: 12px;
}
.email-field input {
  flex: 1;
  border: 0; outline: 0;
  background: transparent;
  padding: 8px 0;
  font: inherit;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 24px; /* Figma: E-MAIL ADRESSE 24px @1728 */
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--ink);
}
.email-field input::placeholder { color: var(--ink); }
.email-field button {
  width: 44px; height: 44px;
  border: 0; background: transparent;
  display: inline-flex; align-items: center; justify-content: center;
  transition: transform .25s ease;
}
@media (hover: hover) { .email-field button:hover { transform: translateX(4px); } }
.email-field button svg { width: 28px; height: 28px; }
.newsletter .pill { margin-top: 18px; }
.newsletter .thanks {
  display: inline-block;
  margin-left: 12px;
  font-size: 13px;
}

@media (max-width: 900px) {
  .newsletter-inner { grid-template-columns: 1fr; transform: none; }
}

/* ============================================================
   FOOTER LINKS BAR
   ============================================================ */
.foot-bar {
  /* Feedback #52 (23.07.2026): alle Einträge auf gemeinsamer Text-Unterkante */
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 24px var(--pad-x);
  /* kein border-top: im Figma trennt keine Linie den Footer */
  background: #fff;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(11px, 0.9vw, 14px); /* Figma 06.07.2026: eine Zeile, klein, fett */
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #000; /* Figma 06.07.2026: schwarz */
  flex-wrap: wrap;
  gap: 16px;
}
.foot-bar nav { display: flex; gap: 32px; flex-wrap: wrap; }
.foot-bar nav ul { display: contents; list-style: none; margin: 0; padding: 0; }
.foot-bar nav li { display: contents; }
@media (hover: hover) { .foot-bar a:hover { opacity: .6; } }

/* ============================================================
   BIG GESK FOOTER MARK  (Figma 06.07.2026: riesige, komplett schwarze
   360°-Wortmarke über die volle Breite, Baseline unten angeschnitten)
   ============================================================ */
.giant-mark {
  background: var(--bg);
  padding: clamp(24px, 3vw, 48px) 0 0;
  overflow: hidden;
  position: relative;
}
/* 17.07.2026: Wortmarke = Vektor-Render des Original-Logos (600dpi aus
   GeSK_logo_schwarz.pdf) statt CSS-Nachbau — die Figma-Wortmarke IST das
   Logo-Lockup (schmalere Letterformen als Kommon Extended, Kreis mit
   feiner "360" + Grad-Ring). Randlos volle Breite; Anschnitt unten:
   sichtbare Ink-Höhe 224/1413 Screenbreite (Figma f05) — Bildhöhe
   24.74vw (Aspekt 4.0416), Soll sichtbar 15.85vw → Rest wegschneiden. */
.giant-mark-img {
  display: block;
  width: 100%;
  height: auto;
  /* srcset-Stufen (22.09.2026) haben durch Rundung ein minimal anderes Seitenverhältnis als das
     4200×1039-Original — die Höhe bleibt so exakt wie vorher. */
  aspect-ratio: 4200 / 1039;
  margin-bottom: -8.89vw;
}

/* ============================================================
   AKTUELLE THEMEN  (Interaktions-PDF S.2 — Kartenreihe mit
   rotierter Überschrift und Headline-Reveal im #efefef-Streifen)
   ============================================================ */
.aktuell {
  position: relative;
  background: var(--bg-alt);
  padding: clamp(80px, 10vw, 140px) var(--pad-x);
  overflow: hidden;
}
.aktuell-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: clamp(24px, 4vw, 56px);
  align-items: stretch;
}
.aktuell-rotated {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(28px, 3vw, 44px);
  text-transform: uppercase;
  letter-spacing: 0.01em;
  align-self: end;
}
.aktuell-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 3vw, 40px);
}
.aktuell-card .img {
  aspect-ratio: 3/4;
  background-size: cover;
  background-position: center;
  background-color: #ddd;
}
.aktuell-card .month {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin: 16px 0 6px;
}
.aktuell-card h3 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(18px, 1.8vw, 24px);
  text-transform: uppercase;
}
.aktuell-card h3 .serif { font-family: "Times New Roman", Georgia, serif; font-style: italic; font-weight: 600; text-transform: none; }
.aktuell-card .sub {
  font-size: 14px;
  color: var(--ink-muted);
  margin: 4px 0 14px;
}
.aktuell-card .more {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  border-bottom: 2px solid #000;
  padding-bottom: 3px;
}
@media (hover: hover) { .aktuell-card .more:hover { opacity: .6; } }
@media (max-width: 900px) {
  .aktuell-inner { grid-template-columns: 1fr; }
  .aktuell-rotated { writing-mode: horizontal-tb; transform: none; }
  .aktuell-cards { grid-template-columns: 1fr; }
}

/* Headline-Reveal (Interaktions-PDF S.2): Überschrift blendet beim
   Scrollen ein, feine Linie verschwindet, sobald sie ganz sichtbar ist */
.reveal-init {
  opacity: 0;
  transform: translateY(24px);
  position: relative;
}
.reveal-init::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -6px;
  height: 1px;
  /* Spec: sehr feine, kaum sichtbare Linie, die verschwindet sobald
     die Überschrift vollständig sichtbar ist */
  background: rgba(0,0,0,0.10);
  transform: scaleX(0);
  transform-origin: left center;
  opacity: 1;
  transition: transform .55s ease, opacity .4s ease .5s;
}
.reveal-init.is-revealed::after {
  transform: scaleX(1);
}
.reveal-init.is-revealed {
  opacity: 1;
  transform: none;
  transition: opacity .7s ease, transform .7s ease;
}
.reveal-init.is-revealed::after { opacity: 0; }

/* Rotierte Überschrift behält ihre Rotation in beiden Reveal-Zuständen */
.aktuell-rotated.reveal-init { transform: rotate(180deg) translateY(-24px); }
.aktuell-rotated.reveal-init.is-revealed { transform: rotate(180deg); }

/* ============================================================
   SERVICES-HERO-LABEL  (Leistungen: „Services"-Eyebrow — der Hero selbst
   ist seit dem Figma-Update 20.07.2026 ein .reveal-hero, s. oben)
   ============================================================ */
.services-hero-label {
  /* Figma Website_Final 15.07.2026: "Services" kursiv-serif, gemischt-groß —
     wie die "Über uns"-Eyebrows (Playfair Bold Italic), nicht Display-Caps. */
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-weight: 700;
  font-stretch: normal;
  font-size: clamp(24px, 2.2vw, 34px);
  letter-spacing: 0;
  line-height: 1;
  text-transform: none;
  margin: 0 0 10px;
  color: #fff;
}

/* ============================================================
   PROJEKTE-HERO  (Interaktions-PDF S.1 — "Projects / AUS BERLIN.
   FÜR DIE WELT." auf Weiß; Text scrollt langsamer und verschwindet
   hinter dem nachfolgenden Bildbereich)
   ============================================================ */
.projects-hero {
  position: relative;
  background: var(--bg);
  min-height: 72vh;
  min-height: 72svh; /* iOS: Adressleiste (GK-05) */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: clamp(160px, 20vw, 240px) var(--pad-x) clamp(60px, 8vw, 100px);
  z-index: 0;
}
.projects-hero .eyebrow-serif,
.refz-hero .eyebrow-serif {
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-weight: 700; /* Figma: Playfair Display Bold Italic */
  font-size: clamp(22px, 2.4vw, 34px);
  margin: 0 0 8px;
}
.projects-hero h1 {
  margin: 0;
  font-size: clamp(36px, 4.4vw, 66px); /* Figma 06.07.2026: Headlines kompakter */
}
.projects-hero-headline {
  will-change: opacity, transform;
}

/* Referenzen-Hero (Proto 9/21, 17.07.2026): Vollflaechen-Medium bleibt
   stehen (sticky, 100vh), die Ueberschrift liegt im Scrollfluss und
   schiebt sich von unten ueber das Bild (Sektion 200vh = Scrollstrecke,
   danach schiebt die Logo-Wand den Hero regulaer hinaus). */
.refz-hero {
  position: relative;
  height: 200vh;
  height: 200svh; /* iOS: Adressleiste (GK-05) */
  isolation: isolate; /* Blend-Boundary: Exclusion-Titel invertiert nur das Hero-Bild, nicht die Seite */
}
.refz-hero-media {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh; /* iOS: Adressleiste (GK-05) */
  overflow: hidden;
}
.refz-hero-media video,
.refz-hero-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  background-size: cover;
  background-position: center;
}
/* Feedback #24 (21.07.): Chrome komponiert H.264-Videos in einen Hardware-
   Overlay-Layer, auf den mix-blend-mode NICHT angewendet wird — die
   Exclusion-Headline stand dann statisch weiß auf dem Video statt dynamisch
   zu invertieren. Ein (unsichtbarer) Filter zwingt das Video in den
   regulären Compositing-Pfad, damit der Blend greift. Seit der Exclusion-
   Navbar (#36, 22.07.) global: die Navbar überfährt JEDES Video. */
video {
  filter: brightness(1.001);
}
.refz-hero-headline {
  position: absolute;
  /* Startzustand wie im Proto: Eyebrow + 1. Zeile lugen unten heraus */
  top: calc(100vh - 180px);
  top: calc(100svh - 180px); /* iOS: Adressleiste (GK-05) */
  left: 0;
  right: 0;
  /* KEIN z-index (Feedback #24, 21.07.): z-index erzeugt einen Stacking-
     Context = isolierte Blend-Gruppe — der Exclusion-Blend erreichte das
     Bild darunter nicht und die Headline stand statisch weiß. Über dem
     Sticky-Medium liegt der Text trotzdem (positioniert + später im DOM). */
  padding: 0 var(--pad-x);
}
/* Figma (Node 662:2494): Eyebrow + Headline sind EIN Textknoten, Fill #ffffff
   mit blendMode EXCLUSION. Der Blend invertiert den Hintergrund darunter — daher
   erscheint der Titel über dem hellen Hero dunkel und verschiebt beim Scrollen
   über die farbige Fläche den Farbton (das war die vermeintliche „Lavendel/Schiefer"-
   Färbung: ein Sampling-Artefakt des Exclusion-Blends, keine Buchstabenfarben). */
.refz-hero-eyebrow {
  color: #fff;
  /* 29.07.2026 (Kolja): Exclusion wiederhergestellt — der invertierende
     Hero steht so im Figma (Node „References…" = weiß + EXCLUSION).
     #57 galt dem Leistungen-Hero, der im Figma OHNE Blend angelegt ist. */
  mix-blend-mode: exclusion;
  margin: 0 0 6px;
}
.refz-hero-title {
  color: #fff;
  mix-blend-mode: exclusion; /* 29.07.2026: wiederhergestellt, s. Eyebrow */
  font-size: clamp(30px, 3.2vw, 50px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  text-transform: none;
  margin: 0;
}
/* Alt-Markup (gespeicherte ACF-Werte) neutralisieren: Akzent-Spans erben Weiß. */
.refz-hero-title .hl-lav,
.refz-hero-title .hl-slate { color: inherit; }
/* GK-06 Runde 1 (23.09.2026, iPhone 15/16 Safari, Befund A3 Referenzen): Die Überschrift
   invertierte nur, solange ihre Einblend-Transition lief, danach stand sie weiß auf dem Bild —
   Eyebrow („References“) von Anfang an. WebKit rechnet den Blend einer NICHT komposit
   gezeichneten Schrift nur gegen die eigene Zeichenfläche der Gruppe, nicht gegen das
   gepinnte Medium, das auf iOS immer eine eigene Compositing-Ebene ist (die fixe
   Exclusion-Menüleiste invertiert dagegen — sie ist komposit). will-change hält die
   Schriftelemente dauerhaft komposit; nur die Elemente selbst, nicht der Rahmen (ein
   Stacking-Context am Rahmen isolierte den Blend, s. Feedback #24). Desktop-Chromium: Geometrie
   und Screenshots des Heros unverändert (Beleg Runbook §16). */
.refz-hero-eyebrow,
.refz-hero-title,
.reveal-hero--exclusion .reveal-hero-eyebrow,
.reveal-hero--exclusion .reveal-hero-title,
.reveal-hero--exclusion .services-hero-label,
.reveal-hero--exclusion .reveal-hero-copy p { will-change: transform; }

/* Referenzen-Hero (frame-3): Titel weiß, 52px, gemischte Schreibweise
   (text-transform:none, da "References" literal gemischt ist). */
.projects-title {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  text-transform: none;
  line-height: 0.96;
  letter-spacing: -0.005em;
  font-size: clamp(34px, 4.2vw, 52px);
  color: #000;
  margin: 0;
}
/* Weiße Hero-Headline braucht dunklen Grund: Referenzen-Hero (kein Media-BG). */
.projects-hero:has(.projects-title),
body.page-template-page-referenzen .projects-hero {
  background: #fff;
  color: #000;
}

/* Projekte-Hero (frame-8): dunkel/bildbasiert, weiße Wortmarke 64px. */
.projects-hero--dark {
  background: #fff;
  color: #000;
}
.projects-hero-eyebrow {
  font-family: "Playfair Display", Georgia, serif; /* Live-Figma 06.07.2026: kursives Serif-Eyebrow */
  font-style: italic;
  font-weight: 700;
  font-stretch: normal;
  text-transform: none;
  color: #000;
  font-size: clamp(22px, 2.4vw, 34px);
  line-height: 1.1;
  letter-spacing: 0;
  margin: 0 0 8px;
}
.projects-hero-title {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  color: #000;
  font-size: clamp(32px, 3.85vw, 58px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  margin: 0;
}
/* Der nachfolgende Inhalt schiebt sich über den Hero-Text */
.projects-hero + * {
  position: relative;
  z-index: 1;
  background: var(--bg);
}

/* ============================================================
   LOGO-WAND (Referenzen, Figma f07)
   ============================================================ */
.logo-wall {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: clamp(32px, 4vw, 64px) clamp(24px, 3vw, 48px);
  align-items: center;
  justify-items: center;
}
.logo-wall-item img {
  max-height: 44px;
  max-width: 180px;
  object-fit: contain;
  filter: grayscale(1) brightness(0);
  opacity: 0.85;
  transition: opacity .25s ease;
}
@media (hover: hover) { .logo-wall-item:hover img { opacity: 1; } }

/* ============================================================
   KONTAKT (Figma f16 — Formular + Karte)
   ============================================================ */
.kontakt-form {
  background: var(--bg-alt);
  padding: clamp(80px, 10vw, 140px) var(--pad-x);
}
.kontakt-form-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: clamp(40px, 6vw, 100px);
  align-items: start;
}
.kontakt-form h2 { margin: 0 0 16px; font-size: clamp(32px, 3.5vw, 56px); }
.kontakt-form p { font-size: 16px; line-height: 1.55; color: var(--ink-soft); }
.kontakt-form .form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
.kontakt-form input,
.kontakt-form textarea {
  width: 100%;
  border: 0;
  border-bottom: 1.5px solid var(--ink);
  background: transparent;
  padding: 12px 4px;
  font: inherit;
  font-size: 15px;
  outline: 0;
}
.kontakt-form textarea { margin-bottom: 24px; resize: vertical; }
@media (max-width: 900px) {
  .kontakt-form-inner { grid-template-columns: 1fr; }
  .kontakt-form .form-grid { grid-template-columns: 1fr; }
}

.kontakt-map iframe {
  display: block;
  width: 100%;
  height: clamp(360px, 50vh, 560px);
  height: clamp(360px, 50svh, 560px); /* iOS: Adressleiste (GK-05) */
  border: 0;
  filter: grayscale(1) contrast(1.05);
}

/* ============================================================
   LEGAL PAGES (Impressum / Datenschutz / Barrierefreiheit)
   ============================================================ */
.legal-content {
  max-width: 860px;
  margin: 0 auto;
  padding: 0 var(--pad-x) clamp(80px, 10vw, 140px);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-soft);
}
.legal-content h2 {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 24px;
  text-transform: uppercase;
  margin: 40px 0 16px;
}

/* ============================================================
   HERO-CTA (Feedback #39, 22.07.2026) — Figma 2735:1805–1807:
   Block unten rechts der Mitte auf dem Hero-Video (x 63,7 %, Unterkante
   ~8 % über Medium-Ende), weiß; Titel/CTA 32px Kommon Extended,
   Sub Poppins 24px, CTA unterstrichen.
   ============================================================ */
.hero-media-block { position: relative; }
.hero-cta {
  position: absolute;
  left: 63.66%;
  bottom: 8.3%;
  max-width: 33vw;
  color: #fff;
  text-shadow: 0 1px 14px rgba(0,0,0,0.25); /* Lesbarkeit über hellem Himmel */
}
.hero-cta-title {
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  font-size: clamp(18px, 1.85vw, 32px);
  line-height: 0.96;
  color: #fff;
  margin: 0 0 clamp(6px, 0.6vw, 10px);
}
.hero-cta-text {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(13px, 1.39vw, 24px);
  line-height: 1.12;
  color: #fff;
  /* Feedback #71 (07.08.2026): Abstand zu „Erfahre hier mehr" war zu groß —
     2,6vw → 1,6vw, bleibt sichtbar abgesetzt. */
  margin: 0 0 clamp(14px, 1.6vw, 28px);
}
.hero-cta-link {
  display: inline-block;
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  font-size: clamp(16px, 1.85vw, 32px);
  line-height: 1;
  color: #fff;
  border-bottom: 3px solid #fff;
  padding-bottom: 4px;
}
@media (max-width: 760px) {
  .hero-cta { left: var(--pad-x); right: var(--pad-x); max-width: none; }
}

/* Feedback #48 (23.07.2026): FORSCHUNG-GALERIE (#34) entfernt — die Sektion
   stand doppelt zum Connect-Strip; die Motive laufen jetzt im Footer-Strip. */

/* ============================================================
   RESPONSIVE  — Mobile + Tablet (Kickoff: Tablet via Media Queries)
   ============================================================ */
@media (max-width: 1100px) {
  .nav-links { display: none; }
}

/* Mobile/kleine Tablets: Hero-Headline darf nicht überlaufen (Figma Mobil-Mockup).
   Längstes Wort "COMMUNICATIONS" muss ohne Umbruch in den Viewport passen. */
@media (max-width: 760px) {
  .hero-headline { font-size: clamp(22px, 6.4vw, 40px); max-width: none; }
  .statement-inner { font-size: clamp(24px, 6.4vw, 40px); }
  .statement-subline { font-size: clamp(24px, 6.4vw, 40px); }
}

/* Tablet refinements 761–1100px */
@media (min-width: 761px) and (max-width: 1100px) {
  /* gleiche vw-Skalierung wie Desktop, sonst bricht die lange Hero-Zeile um */
  .hero-headline { font-size: clamp(26px, 3.3vw, 52px); max-width: none; }
  .statement-inner { font-size: clamp(28px, 4vw, 44px); }
  .statement-subline { font-size: clamp(28px, 4vw, 44px); }
  .stats-row > div { padding: 0 20px; }
  .stat-num { font-size: clamp(64px, 10vw, 110px); }
  .aboutpair-inner { gap: 40px; }
  .accordion-trigger { font-size: 24px; }
  .projects-lead-inner { min-height: 560px; }
  .projects-tilt-card { max-width: 520px; }
  .projects-rotated-title { font-size: 72px; }
}

/* ============================================================
   TILT-CLAIM  (Frame-53 — black tilted blocks with type)
   ============================================================ */
.tilt-claim {
  position: relative;
  background: #fff;
  padding: clamp(80px, 12vw, 160px) var(--pad-x);
  overflow: hidden;
  isolation: isolate;
}
/* Ein einziges, sauberes schwarzes Panel mit leichter Neigung (statt der
   zwei versetzten Flächen, die als zerrissene Treppe renderten). */
.tilt-claim-panel {
  position: relative;
  max-width: 1180px;
  margin: 0 auto;
  background: #000;
  border-radius: 6px;
  padding: clamp(48px, 7vw, 110px) clamp(32px, 6vw, 96px);
  transform: rotate(-2deg);
  box-shadow: 0 40px 90px -40px rgba(0,0,0,0.5);
}
.tilt-claim-text {
  margin: 0;
  text-align: right;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(28px, 3.4vw, 56px);
  line-height: 1.05;
  color: #fff;
  letter-spacing: -0.005em;
}
@media (max-width: 900px) {
  .tilt-claim { padding: 64px 20px; }
  .tilt-claim-panel { transform: rotate(-1.4deg); padding: 40px 28px; }
  .tilt-claim-text { font-size: 28px; }
}

/* ============================================================
   NEUES FIGMA-DESIGN (Export 30.06.2026) — geteilte Sektions-
   Klassen, konsolidiert aus den Change-Requests der Seiten-Agenten.
   Display = Archivo (Kommon-Ersatz, Normalbreite via .display — Figma 06.07.2026).
   ============================================================ */

/* ---------- HOME: RECENT WORKS (frame-0) ---------- */
/* Figma 06.07.2026: hellgraue Sektion, vertikale Wortmarke links (liest von
   unten nach oben), daneben horizontale Karten-Reihe — 3 Karten sichtbar,
   die vierte läuft rechts aus dem Bild (Overflow-Scroll, ohne Scrollbar). */
.recent-works {
  position: relative;
  background: #f0f0f0;
  padding: clamp(64px, 8vw, 110px) 0 clamp(64px, 8vw, 110px) var(--pad-x);
  overflow: hidden;
  /* Feedback-Mail 23.07.2026 (Alessandro, Safari): WebKit berechnet die
     max-content-Breite verschachtelter Flex-Container mit clamp()-Basis
     falsch — die Set-Box wurde schmaler als ihre Karten, Set 2 überlappte
     Karte 5 und die Bildboxen kollabierten (Cover-Crop wirkte wie Zoom).
     Deshalb: alle Breiten deterministisch aus Variablen ableiten,
     kein Intrinsic-Sizing mehr. --rw-count liefert das Template inline. */
  --rw-card-w: clamp(250px, 27vw, 420px);
  --rw-gap: clamp(18px, 1.9vw, 30px);
  --rw-set-w: calc(var(--rw-count, 5) * (var(--rw-card-w) + var(--rw-gap)));
}
.recent-works-inner {
  display: flex;
  align-items: stretch;
  gap: clamp(24px, 3.2vw, 56px);
  position: relative;
}
/* Feedback #29 (21.07.2026): EINE Zeile, Schriftgröße nach Figma 80,5px @1728
   (Node 312:1586: ls -5%, lh 0.96); js/main.js passt die Größe zusätzlich an
   die tatsächliche Kachel-Spaltenhöhe an (Faktor 80,58/856), damit die
   Wortmarke nie über die Kacheln inkl. Text/CTA hinausragt. */
.recent-works-wordmark {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  font-size: clamp(34px, 4.66vw, 80.58px);
  letter-spacing: -0.05em;
  color: #000;
  text-transform: uppercase;
  line-height: 0.96;
  white-space: nowrap;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  align-self: stretch;
  flex-shrink: 0;
  margin: 0;
}
/* Feedback #6 (20.07.2026): Galerie ist manuell horizontal scrollbar —
   der Autolauf kommt jetzt aus js/main.js (scrollLeft-Marquee, Hover
   pausiert), nicht mehr aus einer CSS-Transform-Animation. */
.recent-works-cards {
  overflow-x: auto;
  overflow-y: hidden;
  flex: 1;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}
.recent-works-cards::-webkit-scrollbar { display: none; }
.recent-works-marquee-track {
  display: flex;
  /* Feedback #70 (07.08.2026): drei Sets (Puffer-Set für die manuelle Geste) */
  width: calc(3 * var(--rw-set-w));
}
.recent-works-set {
  display: flex;
  gap: var(--rw-gap);
  padding-right: var(--rw-gap);
  flex: 0 0 var(--rw-set-w);
  box-sizing: border-box;
}
/* Feedback #37 (21.07.2026): Karten als Flex-Spalte, CTA per margin-top:auto
   auf gemeinsamer Unterkante (Figma: alle "MEHR ERFAHREN" auf einer Höhe). */
.rw-card {
  flex: 0 0 var(--rw-card-w);
  width: var(--rw-card-w);
  display: flex;
  flex-direction: column;
}
/* Feedback #6: Zoom-Effekt beim Hover (Figma-Proto) — das Motiv skaliert
   sanft im festen Rahmen (::before erbt das Inline-Background des Rahmens). */
.rw-img {
  aspect-ratio: 1/1;
  width: 100%;
  flex: 0 0 auto;
  position: relative;
  overflow: hidden;
  background-size: cover;
  background-position: center;
  background-color: #ddd;
}
.rw-img::before {
  content: "";
  position: absolute;
  inset: 0;
  background: inherit;
  background-size: cover;
  background-position: center;
  transition: transform .7s cubic-bezier(.2,.7,.2,1);
}
@media (hover: hover) { .rw-card:hover .rw-img::before { transform: scale(1.06); } }
/* GK-06 Runde 1 (Befund B5): ganze Karte ist Klickziel (js/main.js), Zeiger zeigt es an. */
@media (hover: hover) { .rw-card { cursor: pointer; } }
.rw-month {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(12px, 1.05vw, 16px);
  color: #000;
  margin: 16px 0 6px;
}
.rw-title {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  /* Figma 1:1876: Kartentitel 52px @520px-Karte = 10% der Kartenbreite.
     Feedback #28 (21.07.): Deckel 52→42px — die Karte selbst ist auf 420px
     gedeckelt; bei 52px ragte "PERSPECTIVES" in die Nachbarkachel. */
  font-size: clamp(24px, 3vw, 42px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  text-transform: uppercase;
  color: #000;
  margin: 0;
}
.rw-title .italic-accent {
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-weight: 600;
  text-transform: none;
}
.rw-sub {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(12px, 1.05vw, 16px);
  color: #000;
  margin: 6px 0 0;
}
.rw-more {
  display: inline-block;
  align-self: flex-start;
  font-family: var(--font-display);
  font-weight: 800;
  font-stretch: normal;
  /* Feedback #49 (23.07.2026): Figma 24pt @1728 → 1.39vw, Deckel 24px */
  font-size: clamp(14px, 1.39vw, 24px);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #000;
  border-bottom: 2px solid #000;
  padding-bottom: 3px;
  /* Feedback #37: auto schiebt den CTA in allen Karten auf dieselbe Unterkante */
  margin-top: auto;
  padding-top: clamp(18px, 2.4vw, 36px);
}
/* Feedback #53 (23.07.2026): Kartenbreite mobil über die Variable steuern —
   die Set-/Track-Breiten rechnen dann automatisch mit (Safari-Fix s. o.).
   Die Wortmarken-Größe regelt js/main.js jetzt auf allen Breiten (Fit an
   die Kachelspalte), daher kein fester 32px-Wert mehr. */
@media (max-width: 900px) { .recent-works { --rw-card-w: 44vw; } }
/* Ales Korrekturen 28.09.2026: 78vw war breiter als die sichtbare Spalte neben der Wortmarke (307 statt 298 px bei 393 px) —
   eine eingerastete Karte war nie ganz zu sehen. 72vw: Karte ganz sichtbar, die nächste lugt als Wisch-Hinweis herein. */
@media (max-width: 600px) { .recent-works { --rw-card-w: 72vw; } }

/* ---------- ABOUT / AGENTUR (frame-1) ---------- */
.agentur-hero { background: #fff; color: #000; }
.agentur-hero .eyebrow-serif { color: #000; font-size: clamp(34px, 3.7vw, 64px); margin-bottom: 4px; }
.agentur-hero .agentur-hero-title { color: #000; font-size: clamp(36px, 3.85vw, 58px); letter-spacing: -0.05em; line-height: 0.962; /* Feedback #43 */ }

.agentur-office { background: var(--bg); padding: clamp(60px, 8vw, 120px) var(--pad-x); }
.agentur-office-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: clamp(40px, 6vw, 100px);
  align-items: start;
}
/* Figma 1:1958: Überschrift 52px / Adresse 30px, beide Kommon Grotesk Extended
   (vorher: ganzer Block uniform 60px Montserrat — Adresse doppelt zu groß). */
.agentur-office-head { color: #000; }
.agentur-office-title {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  font-size: clamp(30px, 3vw, 52px);
  line-height: 0.96;
  text-transform: uppercase;
}
.agentur-office-addr {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  font-size: clamp(18px, 1.74vw, 30px);
  line-height: 1.1;
  margin-top: 1em;
}
.agentur-office-body p {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(18px, 1.7vw, 30px);
  line-height: 1.2;
  color: #000;
  margin: 0 0 1em;
}

.agentur-prose { background: var(--bg); padding: clamp(50px, 7vw, 110px) var(--pad-x); }
/* Feedback-Button #104 (Moritz, 09.09.2026): der Abstand zwischen „Berliner Büro“
   und „Wer wir sind“ war zu groß (zwei volle Sektions-Paddings = 259 px @1728).
   Beide Blöcke bleiben erkennbar getrennt, der Abstand halbiert sich (≈ 120 px). */
.agentur-office { padding-bottom: clamp(30px, 3.5vw, 60px); }
.agentur-office + .agentur-prose { padding-top: clamp(30px, 3.5vw, 60px); }
.agentur-prose-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  /* Feedback #75 (10.08.2026): Fließtext-Spalte exakt wie beim Berliner Büro
     (.agentur-office-inner) — vorher 1.3fr, dadurch stand „Wer wir sind"
     ~24px weiter links als der Büro-Text. */
  grid-template-columns: 1fr 1.2fr;
  gap: clamp(40px, 6vw, 100px);
  align-items: start;
}
.agentur-prose-title {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  font-size: clamp(32px, 3vw, 52px);
  line-height: 0.96;
  /* Feedback-Button-Issue #85 (08.09.2026, Agentur): „Abstand zwischen den
     Worten zu eng … im Figma-Prototyp auf -5 eingestellt.“ Die Figma-Nodes
     „WER WIR SIND“ / „IT´S A FAMILY STORY.“ stehen wie alle Headlines auf
     letterSpacing -5 % (vgl. #43 für .display); hier stand seit dem Rebuild
     vom 30.06. -0.005em (Faktor 10 daneben). Gemessen gegen den Prototyp
     (09.09.): Buchstabenlücke Ø 0,13 statt 0,08 Versalhöhen. */
  letter-spacing: -0.05em;
  text-transform: none;
  color: #000;
  margin: 0;
}
/* Figma Website_Final 15.07.2026: "IT´S A FAMILY STORY." in CAPS,
   Titel über der Copy in der rechten Spalte */
.agentur-prose-title--caps { text-transform: uppercase; margin-bottom: clamp(24px, 3vw, 44px); }
.agentur-prose-body p {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(18px, 1.7vw, 30px);
  line-height: 1.18;
  color: #000;
  margin: 0 0 1em;
}
@media (max-width: 900px) {
  .agentur-office-inner { grid-template-columns: 1fr; }
  .agentur-prose-inner { grid-template-columns: 1fr; }
}

/* ---------- BILD ODER VIDEO (09.09.2026, Kolja) ----------
   Jedes Hauptmedien-Feld nimmt Bild oder Video an. Wo ein Bild als
   background-image liegt (Kontakt-Hero, Case-Kacheln, „Nächstes Projekt“),
   sitzt ein Video als absolut positioniertes Element im selben Rahmen und
   deckt ihn wie background-size: cover; der Ausschnitt kommt per
   object-position inline mit. Slots mit <img> bekommen das <video> mit
   derselben Klasse (object-fit: cover ist dort schon gesetzt). */
.gesk-medium-host { position: relative; overflow: hidden; }

/* ---------- BILDBESCHRIFTUNG (Feedback-Button #103, Moritz, 09.09.2026) ----------
   Ein bis zwei kurze Zeilen rechts unten auf großen Bildern/Videos, Schrift weiß
   oder schwarz (Feld je Bildplatz). Vorbild: Mail „Beispiel Bildbeschriftung“
   (Client: TEAM7 / Product: MYLON — Label fett, Wert normal, Poppins ≈16px @1728).
   Markup: gesk_caption_html() in inc/acf-helpers.php; der Host ist positioniert. */
.gesk-caption {
  position: absolute;
  right: var(--pad-x);
  bottom: clamp(14px, 1.4vw, 24px);
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  margin: 0;
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(13px, 0.93vw, 16px);
  line-height: 1.35;
  letter-spacing: 0;
  text-transform: none;
  text-align: left;
  color: #fff;
  pointer-events: none;
  max-width: 40ch;
}
.gesk-caption--schwarz { color: #000; }
.gesk-caption b { font-weight: 600; }
.gesk-caption-line { display: block; white-space: nowrap; }
/* Kleine Hosts (Bildpaar, Kacheln): knapper an die Ecke */
.case-duo-fig .gesk-caption, .case-split-fig .gesk-caption, .case-tile .gesk-caption, .proj-highlights-media .gesk-caption,
.connect-img .gesk-caption, .contacts-discover-card .gesk-caption {
  right: clamp(12px, 1.2vw, 20px);
  bottom: clamp(10px, 1vw, 16px);
}
/* Ale 29./30.09.2026 (Mobil): Beschriftungen 25 % kleiner (13 → 9,75 px) und nie breiter
   als das Bild — auf schmalen Bildern (Kontakt-Galerie ≈ 140 px, Bildpaar der Projektseiten)
   liefen die nowrap-Zeilen links aus dem Rahmen und wurden abgeschnitten. Jetzt brechen sie
   dort um. Desktop unverändert. */
@media (max-width: 760px) {
  .gesk-caption {
    font-size: 9.75px;
    max-width: min(40ch, calc(100% - 2 * var(--pad-x)));
  }
  .case-duo-fig .gesk-caption, .case-split-fig .gesk-caption, .case-tile .gesk-caption, .proj-highlights-media .gesk-caption,
  .connect-img .gesk-caption, .contacts-discover-card .gesk-caption {
    max-width: min(40ch, calc(100% - 2 * clamp(12px, 1.2vw, 20px)));
  }
  .gesk-caption-line { white-space: normal; }
}
/* Feedback-Button #112 (Moritz, 10.09.2026): Beschriftung auch auf den Bildern des
   Bilderbands (je Bildstrip-Eintrag) und den drei Galeriebildern auf „Kontakt“. */
.connect-img { position: relative; }
/* Hosts, die bisher nicht positioniert waren */
.projects-hero-media-inner, .proj-highlights-media, .agentur-photo-band, .case-hero-media, .case-full2, .case-tile, .case-duo-fig, .case-split-fig { position: relative; }
/* Bildpaar und Split-Bild: Wrapper übernehmen Breite/Versatz der bisherigen <img>-Regeln (#103) */
.case-duo-fig { display: block; line-height: 0; }
.case-duo-fig--left { width: 30.65%; margin-top: 15.86%; }
.case-duo-fig--right { width: 47.2%; }
.case-duo-fig .case-duo-left, .case-duo-fig .case-duo-right { width: 100%; margin-top: 0; }
.case-split-fig { width: 55.76%; flex: 0 0 auto; line-height: 0; }
.case-split-fig .case-split-img { width: 100%; }
@media (max-width: 720px) {
  .case-split-fig { width: 100%; }
}
.gesk-medium-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------- REVEAL-HERO (Feedback #10/#11/#14, 20.07.2026) ----------
   Neues Proto-Muster (Figma-Update 20.07.) für Leistungen, Karriere und
   Forschung — analog zum Referenzen-Hero: das Above-the-Fold-Medium steht
   (sticky, Höhe = 1241px @1728 bzw. Viewport), der Textblock liegt im
   Scrollfluss DAHINTER/DARUNTER und schiebt sich beim Herunterscrollen von
   unten über das stehende Bild. Danach schafft section-padding den Auslauf.
   --exclusion: Text ist weiß mit Exclusion-Blend (Karriere/Forschung) —
   auf Weiß erscheint er schwarz, über dem Bild invertiert er es. */
.reveal-hero {
  position: relative;
}
/* Pin-Auslauf als ::after-INHALT (nicht padding: die Sticky-Grenze ist die
   Content-Box — Padding würde das stehende Bild nicht länger festhalten):
   das Bild bleibt stehen, bis der Text vollständig vorbeigezogen ist. */
.reveal-hero::after {
  content: "";
  display: block;
  height: 55vh;
  height: 55svh; /* iOS: Adressleiste (GK-05) */
}
.reveal-hero--exclusion {
  isolation: isolate; /* Blend-Grenze: Exclusion wirkt nur auf das Hero-Medium */
}
.reveal-hero-media {
  position: sticky;
  top: 0;
  height: min(71.82vw, 100vh); /* Proto: 1728×1241; nie höher als der Viewport */
  height: min(71.82vw, 100svh); /* iOS: Adressleiste (GK-05) */
  overflow: hidden;
}
.reveal-hero-media video,
.reveal-hero-media .reveal-hero-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  background-size: cover;
  background-position: center;
}
.reveal-hero-text {
  position: relative;
  /* KEIN z-index (s. .refz-hero-headline): ein Stacking-Context würde den
     Exclusion-Blend vom Medium isolieren. Positioniert + später im DOM
     genügt, um über dem Sticky-Medium zu liegen. */
  padding: clamp(28px, 4vh, 64px) var(--pad-x) 0;
  padding: clamp(28px, 4svh, 64px) var(--pad-x) 0; /* iOS: Adressleiste (GK-05) */
}
/* 29.07.2026 (Kolja): Exclusion auf Karriere/Forschung WIEDERHERGESTELLT —
   die Figma-Hero-Nodes beider Seiten sind weiß + EXCLUSION. #57 betraf den
   Leistungen-Hero, der im Figma ohne Blend steht → eigene Variante --white. */
.reveal-hero--exclusion .reveal-hero-eyebrow,
.reveal-hero--exclusion .reveal-hero-title,
.reveal-hero--exclusion .services-hero-label,
.reveal-hero--exclusion .reveal-hero-copy p {
  color: #fff;
  mix-blend-mode: exclusion;
}
.reveal-hero--white .reveal-hero-eyebrow,
.reveal-hero--white .reveal-hero-title,
.reveal-hero--white .services-hero-label,
.reveal-hero--white .reveal-hero-copy p {
  color: #fff; /* Feedback #57 + Figma: Leistungen-Hero einfach weiß, ohne Blend */
}
.reveal-hero-eyebrow {
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-weight: 700;
  font-size: clamp(22px, 2.4vw, 34px);
  margin: 0 0 6px;
}
.reveal-hero-title {
  font-size: clamp(30px, 3.01vw, 52px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  margin: 0;
}
.reveal-hero-copy { margin-top: clamp(20px, 2.5vw, 40px); }
.reveal-hero-copy p {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(17px, 1.74vw, 30px);
  line-height: 1.25;
  margin: 0 0 1em;
  max-width: 62ch;
}
.reveal-hero-pill { margin-top: clamp(14px, 1.6vw, 26px); }
/* Feedback #77 (10.08.2026): „zur Webseite" wie die Footer-Pills (#68) in
   Poppins Medium und ohne Versalien. */
.reveal-hero-pill { font-family: var(--font-meta); text-transform: none; letter-spacing: 0.01em; font-size: 14px; font-weight: 500; }

/* GK-06 Runde 1 (23.09.2026, iPhone 15/16 Safari, Befund A3): Auf Hochkant-Geräten ist das
   Hero-Medium nur 71,82vw hoch, der Text steht also UNTER dem Bild — und war dort unsichtbar:
   Exclusion-Weiß über dem transparenten Backdrop der isolierten Gruppe bleibt Weiß auf Weiß
   (Leistungen, Karriere, EN Services); --white (Forschung) ebenso. Dazu ließ der Pin-Auslauf
   (55svh) rund 470 px Weißraum unter dem Text. Lösung: Die Sektion trägt den Seitenhintergrund
   (Blend hat außerhalb des Bildes Weiß als Backdrop → Schwarz), und bis 900 px wird nicht
   gepinnt: Bild statisch, kein Auslauf, --white-Text schwarz. Ab 901 px unverändert. */
.reveal-hero { background: var(--bg); }
@media (max-width: 900px) {
  .reveal-hero-media { position: relative; }
  .reveal-hero::after { height: 0; }
  .reveal-hero--white .reveal-hero-eyebrow,
  .reveal-hero--white .reveal-hero-title,
  .reveal-hero--white .services-hero-label,
  .reveal-hero--white .reveal-hero-copy p { color: #000; }
}
/* Ale 29.09.2026 (Mobil): Die weiße Forschung-Pille (#92, gedacht für den Platz über dem
   Video) steht bis 900 px unter dem Bild auf Weiß und verschwand — dort wieder schwarze Pille
   mit weißem Kreis wie überall, samt Hover. Ab 901 px unverändert weiß. */
@media (max-width: 900px) {
  .reveal-hero .pill.solid.pill--invert { background: #000; color: #fff; border-color: #000; }
  .reveal-hero .pill.solid.pill--invert .dot { background: #fff; color: #000; }
}
@media (max-width: 900px) and (hover: hover) {
  .reveal-hero .pill.solid.pill--invert:hover { background: #000; color: #fff; }
  .reveal-hero .pill.solid.pill--invert:hover .dot { background: #fff; color: #000; }
  .reveal-hero .pill.solid.pill--invert:hover > span:first-child { color: #000; }
}
/* Ale 01.10.2026: Auf Forschung entfallen die Pills „E-Mail“ und „Kontakt“ (footer.php) — die
   Fußleiste folgt direkt auf den Kopfbereich. Bis 900 px (Text steht unter dem Bild) stieß
   „zur Webseite“ damit an die Fußleiste: derselbe Abstand wie zuvor zu den Pills. Ab 901 px
   blieb die Pille am Seitenende hinter der Navigation stehen, weil die Seite kürzer wurde als
   der Weg des Textes: Der Pin-Auslauf reicht jetzt mindestens so weit, dass der Text ganz
   hinausgeschoben ist (Fensterhöhe minus Fußbereich; der Fußbereich misst 18,25vw + 66 px,
   gemessen 901–2560 px, s. tests/forschung-ende.mjs). */
@media (max-width: 900px) {
  #research .reveal-hero-text { padding-bottom: clamp(48px, 5.6vw, 100px); }
}
@media (min-width: 901px) {
  #research.reveal-hero::after { height: max(55svh, calc(100svh - 18.25vw - 42px)); }
}
/* GK-06 Runde 1, Befund A2: „KOMMUNIKATIONSAGENTUR“ ist in Kommon Extended bei 30 px 427 px
   breit (Referenzen in Poppins: 397 px), der Textrahmen auf dem iPhone 353 px — die Seite wurde
   447 bzw. 417 px breit und ließ sich seitlich schieben. Bis 760 px skaliert die Überschrift wie
   der Start-Hero mit der Breite (6vw: 393 px → 23,6 px → 336 px); overflow-wrap fängt ein
   künftig längeres Wort der Redaktion ab, bevor die Seite wächst. */
@media (max-width: 760px) {
  .reveal-hero-title,
  .refz-hero-title { font-size: clamp(19px, 6vw, 40px); overflow-wrap: anywhere; }
}
/* GK-06 Runde 1 (Touch-Suite nach dem ersten Fix, iPhone SE 375 px, aber auch 393 px): Im Leistungs-
   Akkordeon ist „MARKENAKTIVIERUNGEN“ bei 26 px 328 px breit; der Titel-Span kann nicht unter seine
   Mindestbreite und schob das Plus-Symbol über den Rand (375 px → Seite 385 px breit) bzw. in die
   Überschrift (393 px). Bis 760 px skaliert der Trigger mit der Breite (5,4vw: 393 px → 21,2 px →
   268 px), Titel darf schrumpfen und notfalls umbrechen, fester Abstand zum Symbol. */
@media (max-width: 760px) {
  .accordion-trigger { font-size: clamp(16px, 5.4vw, 26px); gap: 12px; }
  .accordion-trigger > span:first-child { min-width: 0; overflow-wrap: anywhere; }
}
/* ---------- FORSCHUNG (Figma-Update 20.07.2026, Feedback #14/#17):
   Reveal-Hero — Magazin-Bild steht (sticky), der Block FORSCHUNG + Copy +
   „Zur Webseite"-Pill schiebt sich von unten darüber.
   Logo-Lockup (.forschung-hero-logo, weiß + Exclusion, Figma 2046:1834)
   ENTFERNT am 08.09.2026: Alessandro bat um 11:14 per Mail um „einfach in
   Weiß“, um 13:17 über den Feedback-Knopf (Issue #86) um „einfach entfernen“
   — das Spätere gilt. Der Textblock beginnt jetzt mit der Überschrift. */

/* Figma Website_Final 15.07.2026: Karriere-Intro auf WEISS (nicht grau);
   ::before muss mit aus, sonst leakt das gedrehte graue Stats-Band herein. */
.career-intro { background: var(--bg); }
.career-intro::before { content: none; }
/* Feedback-Button #105 (Moritz, 09.09.2026): Abstand zwischen dem Intro-Text und
   der Stellen-Überschrift („Aktuelle Möglichkeiten“) war zu groß (173 + 86 px
   @1728). Intro-Sektion unten kürzer, ≈ 155 px insgesamt. */
.career-intro { padding-bottom: clamp(40px, 4vw, 70px); }
/* Leistungen (#93, 09.09.2026): Einleitung unter dem Medium, Typografie wie der
   Karriere-Intro; die Sektion beginnt etwas knapper, weil darüber kein Titel
   sondern das Medium steht. */
.services-intro { padding-top: clamp(48px, 6vw, 100px); }
.career-intro-title {
  color: #000000;
  font-size: clamp(30px, 4.2vw, 52px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  margin: 0;
  text-transform: uppercase;
}
.career-intro-copy {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(18px, 2vw, 30px);
  line-height: 1.0;
  color: #000000;
}
.career-intro-copy p { margin: 0 0 1em; }
/* Feedback-Button #113–#116 (Moritz, 10.09.2026): Die Absätze auf Leistungen und
   Karriere waren kleiner als auf „Über uns“ — .stats-text-row p (17–20 px) gewann
   gegen die vererbte Größe. Jetzt dieselbe Größe wie .agentur-prose-body p. */
.stats-text-row .career-intro-copy p {
  font-size: clamp(18px, 1.7vw, 30px);
  line-height: 1.18;
}
.career-intro-copy p:last-child { margin-bottom: 0; }
.career-intro-copy a { text-decoration: underline; }

/* ---------- FORSCHUNG (frame-6): generischer Page-Hero ---------- */
.page-hero {
  position: relative;
  min-height: 60vh;
  min-height: 60svh; /* iOS: Adressleiste (GK-05) */
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: clamp(160px, 20vw, 240px) var(--pad-x) clamp(60px, 8vw, 100px);
}
.page-hero--dark { background: #fff; color: #000; }
.page-hero-title {
  margin: 0;
  color: #000;
  font-size: clamp(34px, 3.4vw, 52px);
  line-height: 0.962;
  letter-spacing: -0.05em; /* Feedback #43 (23.07.2026): Kerning -5 % überall */
}

/* ---------- PROJEKTE / PROJECTS (Figma-Update 20.07.2026, Feedback #19) ---------- */
/* HIGHLIGHTS: rotierte Wortmarke (92px @1728) | Banner 977×592 | rechte
   Spalte mit Titel/Teaser oben und MEHR ERFAHREN auf Banner-Unterkante. */
/* Feedback #32 (21.07.2026): gleiche graue "Streife" als Hintergrund wie bei
   "Aktuelle Themen" (#f0f0f0, volle Breite). */
.proj-highlights { padding: clamp(48px, 7vw, 120px) var(--pad-x); background: #f0f0f0; }
.proj-highlights-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: auto minmax(0, 56.5%) minmax(0, 1fr);
  gap: clamp(20px, 2.6vw, 46px);
  align-items: stretch;
}
/* Feedback #32 (21.07.): Wortmarke + CTA dürfen nicht über die Banner-Höhe
   hinausragen — js/main.js koppelt die Zeilenhöhe der Grid-Reihe und die
   Schriftgröße (Faktor 92/592 aus dem Figma) an die tatsächliche Bannerhöhe. */
.proj-rotated {
  font-size: clamp(44px, 5.32vw, 92px); /* Figma 2046:2002: 92px @1728 */
  color: #000;
  line-height: 1;
  letter-spacing: -0.05em;
  white-space: nowrap;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  align-self: end;
}
.proj-highlights-media {
  aspect-ratio: 977 / 592;
  width: 100%;
  align-self: start; /* nicht stretchen: aspect-ratio würde die Zeilenhöhe zurück auf die Breite übertragen und den Track sprengen */
  /* Parity-Sweep 23.07.: Figma-Node 2046:1974 zeigt per imageTransform die
     UNTERE Haelfte des Screenshots bei ~81 % Bildbreite (ty=0.5, sx=1.238) —
     das Innen-Motiv mit der Teppichrolle, nicht die Palast-Fassade weiter
     oben im Bild. 124 % Breite + left/79 % reproduzieren genau den Ausschnitt. */
  background-size: 124%;
  background-position: left 79%;
  background-color: #eee;
}
.proj-highlights-side {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding-top: clamp(40px, 7.7vw, 133px); /* Titel beginnt 133px unter Banner-Oberkante (Figma) */
}
.proj-highlights-title {
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  color: #000;
  font-size: clamp(20px, 1.85vw, 32px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  margin: 0 0 clamp(12px, 2.4vw, 42px);
}
.proj-highlights-text {
  font-family: var(--font-meta);
  font-weight: 400;
  color: #000;
  font-size: clamp(15px, 1.39vw, 24px);
  line-height: 1.14;
  margin: 0;
}
.proj-highlights-more {
  align-self: flex-start;
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  color: #000;
  font-size: clamp(20px, 1.85vw, 32px);
  margin-top: clamp(20px, 3vw, 48px);
  /* Feedback #32: CTA unterstrichen (wie "MEHR ERFAHREN" der Startseite) */
  border-bottom: 3px solid #000;
  padding-bottom: 4px;
}
@media (max-width: 900px) {
  .proj-highlights-inner { grid-template-columns: 1fr; }
  .proj-rotated { writing-mode: horizontal-tb; transform: none; align-self: start; }
  .proj-highlights-side { padding-top: 0; }
}

/* AUSGEWÄHLTE PROJEKTE — Mosaik 2×2, Maße/Versatz nach Figma (Reihe 1:
   706×775 | 827×485 · Reihe 2: 879×655 | 648×432, Content-Breite 1602). */
.proj-mosaic-section {
  max-width: var(--container);
  margin: 0 auto;
  padding: clamp(40px, 6vw, 90px) var(--pad-x) clamp(60px, 8vw, 140px);
}
.proj-mosaic-section .proj-heading { margin-bottom: clamp(28px, 4.7vw, 82px); }
.proj-mosaic-row {
  display: flex;
  align-items: flex-start;
  gap: 4.3%;
}
.proj-mosaic-row + .proj-mosaic-row { margin-top: clamp(40px, 6.4vw, 110px); }
.proj-mosaic-card { flex: 0 0 auto; min-width: 0; }
.proj-mosaic-card.pm-1 { width: 44.07%; }
.proj-mosaic-card.pm-2 { width: 51.6%; }
.proj-mosaic-card.pm-3 { width: 54.9%; }
.proj-mosaic-card.pm-4 { width: 40.4%; }
/* Feedback #65 (03.08.2026): Zoom-on-Hover wie in der Startseiten-Galerie
   „Aktuelle Themen" — das Motiv skaliert sanft im festen Rahmen. Gleiche
   Mechanik wie `.rw-img`: ::before erbt das Inline-Background des Rahmens,
   damit der Bildausschnitt (background-position) je Kachel erhalten bleibt. */
.proj-mosaic-img {
  position: relative;
  overflow: hidden;
  background-size: cover;
  background-position: center;
  background-color: #eee;
}
.proj-mosaic-img::before {
  content: "";
  position: absolute;
  inset: 0;
  background: inherit;
  background-size: cover;
  transition: transform .7s cubic-bezier(.2,.7,.2,1);
}
@media (hover: hover) { .proj-mosaic-card:hover .proj-mosaic-img::before { transform: scale(1.06); } }
@media (prefers-reduced-motion: reduce) {
  .proj-mosaic-img::before { transition: none; }
  @media (hover: hover) { .proj-mosaic-card:hover .proj-mosaic-img::before { transform: none; } }
}
.pm-1 .proj-mosaic-img { aspect-ratio: 706 / 775; }
.pm-2 .proj-mosaic-img { aspect-ratio: 827 / 485; }
.pm-3 .proj-mosaic-img { aspect-ratio: 879 / 655; }
.pm-4 .proj-mosaic-img { aspect-ratio: 648 / 432; }
.proj-mosaic-card-title {
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  color: #000;
  font-size: clamp(20px, 1.85vw, 32px);
  line-height: 0.962; /* Feedback #43 */
  letter-spacing: -0.05em;
  margin: clamp(18px, 2.7vw, 48px) 0 0;
}
.proj-mosaic-card-text {
  font-family: var(--font-meta);
  font-weight: 400;
  color: #000;
  font-size: clamp(15px, 1.39vw, 24px);
  line-height: 1.14;
  margin: 8px 0 0;
}
@media (max-width: 760px) {
  .proj-mosaic-row { flex-direction: column; gap: 40px; }
  .proj-mosaic-card.pm-1, .proj-mosaic-card.pm-2,
  .proj-mosaic-card.pm-3, .proj-mosaic-card.pm-4 { width: 100%; }
}
.proj-carousel-section { max-width: var(--container); margin: 0 auto; padding: clamp(40px, 6vw, 80px) var(--pad-x); }
.proj-heading {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  color: #000;
  font-size: clamp(30px, 3.4vw, 52px);
  line-height: 0.96;
  margin: 0 0 clamp(24px, 3vw, 40px);
}
/* .proj-tiles/.proj-tile-media bleiben für die Case-Kachelreihe auf
   single-projekt.php (case-tiles) — die Projekte-Marquee-Reihe selbst wurde
   am 20.07.2026 durch das Mosaik ersetzt (Feedback #19). */
.proj-tiles-section {
  max-width: none;
  padding: clamp(36px, 5vw, 70px) 0 clamp(36px, 5vw, 70px) var(--pad-x);
}
.proj-tiles-section .proj-heading {
  max-width: calc(var(--container) - 2 * 64px);
  margin-left: 0;
}
.proj-tiles {
  overflow: hidden;
}
.proj-tile-media { background-size: cover; background-position: center; }

/* minmax(0,1fr) statt 1fr: lange, nicht umbrechbare Titel (min-width:auto)
   sprengten sonst die Spalten → 42px horizontaler Seiten-Overflow. */
.proj-carousel { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(20px, 2vw, 32px); }
.proj-card-media { aspect-ratio: 3/4; background-size: cover; background-position: center; margin-bottom: 16px; }
.proj-card-eyebrow {
  font-family: var(--font-meta);
  font-size: 13.5px;
  letter-spacing: 0.04em;
  color: #000;
  margin-bottom: 6px;
}
.proj-card-title {
  font-family: var(--font-display);
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  color: #000;
  font-size: clamp(28px, 3.2vw, 52px);
  line-height: 0.96;
  margin: 0 0 12px;
}
.proj-card-body {
  font-family: var(--font-meta);
  font-weight: 400;
  color: #000;
  font-size: clamp(14px, 1.5vw, 24px);
  line-height: 1.14;
  margin: 0;
}
.proj-carousel--sm .proj-card-title,
.proj-card--sm .proj-card-title { font-size: clamp(24px, 2.6vw, 41.2px); }
@media (max-width: 1100px) { .proj-carousel { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .proj-highlight-card { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .proj-carousel { grid-template-columns: minmax(0, 1fr); } }

/* ---------- CASE STUDY: single-projekt — Figma f15 "Website_Final",
   vermessen 16.07.2026 @1512: Titel 53px/lh0.8, Meta-Spalten x 50/281/595,
   Bild1 932h, Lead-Spalte x442 w647 (30px Bold), Duo 400×600+207 / 616×746,
   Bild2 883h, CTA 27px gleiche Spalte, Split 843×411 + Text x865,
   COMMUNICATION 43px + Kachelreihe 559|420|560+ h804. ---------- */
.case-hero {
  background: var(--bg);
  color: #000;
  padding: clamp(80px, 12.96vw, 196px) var(--pad-x) clamp(40px, 5.5vw, 84px);
}
.case-hero-inner { max-width: var(--container); margin: 0 auto; width: 100%; color: #000; }
.case-hero-title {
  margin: 0 auto;
  color: #000;
  text-align: center;
  text-transform: uppercase;
  max-width: 16em; /* zwingt lange Titel in die 2-zeilige Figma-Anmutung */
  font-size: clamp(32px, 3.5vw, 53px);
  line-height: 0.82;
  letter-spacing: -0.01em;
}
.case-meta {
  display: grid;
  grid-template-columns: clamp(170px, 15.28vw, 231px) clamp(230px, 20.77vw, 314px) auto;
  justify-content: flex-start;
  align-items: flex-start;
  margin-top: clamp(40px, 6.1vw, 92px);
  margin-left: -11px; /* Figma: Spalten beginnen bei x50, --pad-x liefert 61 */
}
.case-meta-col { display: flex; flex-direction: column; gap: 10px; color: #000; }
.case-meta-label {
  font-family: var(--font-meta);
  font-weight: 700;
  text-transform: uppercase;
  font-size: clamp(16px, 1.26vw, 19px);
  line-height: 1.2;
  letter-spacing: 0.01em;
  color: #000;
}
.case-meta-val {
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(15px, 1.12vw, 17px);
  line-height: 1.5;
  color: #000;
}
.case-meta-list {
  margin: 0;
  padding-left: 1.15em;
  list-style: disc;
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(15px, 1.12vw, 17px);
  line-height: 1.5;
  color: #000;
}
.case-meta-list li { margin: 0; }
.case-meta-list li::marker { color: #000; }
/* Feedback-Button #99 (Moritz, 09.09.2026): dritte Spalte („Thema“) als Fließtext
   ohne Aufzählungspunkt; Zeilenlänge gedeckelt, damit ein Satz nicht bis zum
   rechten Rand läuft. */
.case-meta-prose { margin: 0; max-width: 46ch; }
.case-hero-media { width: 100%; background: var(--bg); line-height: 0; }
.case-hero-media-img {
  display: block;
  width: 100%;
  height: clamp(320px, 61.6vw, 1100px);
  object-fit: cover;
  object-position: center;
}
/* Gemeinsame Textspalte Lead/CTA: beginnt bei ~29% (Figma x442@1512) */
.case-col { padding-left: 29.23%; padding-right: var(--pad-x); }
/* Feedback-Button #101 (Moritz, 09.09.2026): Textfelder etwas breiter, Blocksatz,
   und EIN Abstand zwischen Text und Bildern statt der Figma-Einzelmaße (16 px
   unter dem Lead, 166 px über dem CTA, 179 px über dem Split): --case-gap gilt
   überall, wo Text auf Bild folgt oder Bild auf Text. */
.case-hero-media, .case-lead, .case-duo, .case-full2, .case-cta, .case-split, .case-tiles-section {
  --case-gap: clamp(48px, 5.5vw, 95px);
}
.case-lead p, .case-cta-text, .case-split-text, .case-body p {
  /* #101 (09.09.) hatte Blocksatz + Silbentrennung eingeführt; Feedback-Button #120
     (Moritz, 10.09.2026): „doch nicht das Wahre mit den ganzen Bindestrichen“ —
     zurück auf linksbündig ohne automatische Trennung. */
  text-align: left;
  hyphens: manual;
  -webkit-hyphens: manual;
}
.case-lead { margin: var(--case-gap) 0 var(--case-gap); }
.case-body { --case-gap: clamp(48px, 5.5vw, 95px); margin-top: var(--case-gap); padding-bottom: 0; } /* optionaler Editor-Text: gleicher Rhythmus */
.case-lead p {
  margin: 0;
  max-width: 860px;
  font-family: var(--font-meta);
  font-weight: 700;
  font-size: clamp(20px, 1.98vw, 30px);
  line-height: 1.08;
  color: #000000;
}
/* Zwei versetzte Portraits: links 400×600 (Start x207, +207 tiefer),
   rechts 616×746 (Start x642) — Masse @1512 */
.case-duo {
  display: flex;
  align-items: flex-start;
  gap: 2.68%; /* 35/1305: Prozente beziehen sich auf die Content-Box (100%−13.69% Einzug) */
  padding-left: 13.69%;
}
.case-duo-img { display: block; object-fit: cover; }
.case-duo-left { width: 30.65%; aspect-ratio: 400 / 600; margin-top: 15.86%; }
.case-duo-right { width: 47.2%; aspect-ratio: 616 / 746; }
.case-full2 { width: 100%; margin-top: var(--case-gap); line-height: 0; } /* #101: gleicher Rhythmus */
.case-full2-img {
  display: block;
  width: 100%;
  height: clamp(300px, 58.4vw, 1050px);
  object-fit: cover;
  object-position: center;
}
.case-cta { margin-top: calc(var(--case-gap) / 2); } /* #101: gleicher Rhythmus; #117 (10.09.2026): unter dem großen Bild halbiert */
.case-cta-text {
  margin: 0;
  max-width: 820px; /* #101: breiter (vorher 630 px) */
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(18px, 1.79vw, 27px);
  line-height: 1.05;
  color: #000000;
}
/* Split: Bild links buendig am Viewport, Text rechts (Figma: Text x865–1495,
   Oberkante +200 unter Bild-Oberkante) */
.case-split {
  display: flex;
  align-items: flex-start;
  margin-top: var(--case-gap); /* #101: gleicher Rhythmus */
}
.case-split-img {
  display: block;
  width: 55.76%;
  aspect-ratio: 843 / 411;
  object-fit: cover;
  object-position: center bottom; /* Figma: Matten-Closeup = unterer Teil von oc2 */
  flex: 0 0 auto;
}
.case-split-text {
  margin: 13.2% 0 0 2.4%; /* #101: Abstand zum Bild wie die Textspalte, Feld breiter */
  padding-right: var(--pad-x);
  max-width: none;
  font-family: var(--font-meta);
  font-weight: 400;
  font-size: clamp(18px, 1.79vw, 27px);
  line-height: 1.05;
  color: #000000;
}
/* COMMUNICATION: Ueberschrift 43px + Kachelreihe (Foto | graue Karte | Foto),
   Hoehe 804 @1512, laeuft rechts aus dem Viewport (wie /projekte/) */
.case-tiles-section { margin-top: clamp(90px, 14.3vw, 216px); padding-top: 0; padding-bottom: clamp(48px, 6.4vw, 97px); }
.case-tiles-head {
  font-size: clamp(30px, 2.84vw, 43px);
  margin: 0 0 clamp(32px, 4.7vw, 71px);
}
/* Keine px-Obergrenzen: die Reihe muss bei jeder Breite rechts rauslaufen.
   Reihe beginnt bei x45 (Figma) — Ueberschrift bleibt auf --pad-x.
   Eigenes flex-Layout: .proj-tiles ist seit dem Marquee-Umbau (17.07.) nur
   noch der overflow-Rahmen — die Case-Reihe ist statisch (Proto f18). */
.case-tiles {
  margin-left: calc(2.98vw - var(--pad-x));
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.case-tiles::-webkit-scrollbar { display: none; }
.case-tile { flex: 0 0 auto; height: max(280px, 53.17vw); }
.case-tiles .case-tile:nth-child(1) { width: max(220px, 36.24vw); }
.case-tiles .case-tile:nth-child(2) { width: max(200px, 27.78vw); }
.case-tiles .case-tile:nth-child(3) { width: max(220px, 37vw); }
.case-tile-card {
  background: var(--bg-alt);
  padding: clamp(60px, 9.66vw, 146px) clamp(20px, 3.17vw, 48px) clamp(20px, 3.17vw, 48px);
}
/* Kartenfonts skalieren mit (kein px-Cap), damit "CRAFT OVER CODE" wie im
   Figma zweizeilig bricht, egal wie breit der Viewport ist */
.case-tile-card-title {
  color: #000;
  font-size: max(24px, 2.25vw);
  line-height: 1.03;
  margin: 0 0 clamp(20px, 2.84vw, 50px);
}
.case-tile-card-body {
  font-family: var(--font-meta);
  font-weight: 400;
  color: #000;
  font-size: max(15px, 1.32vw);
  line-height: 1.2;
  margin: 0;
}
/* GK-13 (02.10.2026): Auszeichnung aus dem Editor der drei Textfelder (inc/formattext.php) —
   fett für Zwischenüberschriften, kursiv, unterstrichen. Poppins 700 und 400 kursiv liegen vor. */
.case-cta-text strong, .case-split-text strong, .case-tile-card-body strong { font-weight: 700; }
.case-cta-text em, .case-split-text em, .case-tile-card-body em { font-style: italic; }
.case-cta-text u, .case-split-text u, .case-tile-card-body u { text-decoration: underline; text-decoration-thickness: 0.06em; text-underline-offset: 0.14em; }
/* ---------- NEXT PROJECT (Figma-Update 22.07.2026, Frames "MacBook Pro 16"
   - 8"/- 12", vermessen bei Design-Breite 1728):
   vertikale Marke "NEXT PROJECT" (Kommon 77px, um 90° gegen den Uhrzeigersinn
   gedreht — liest von unten nach oben, x58 y6269, 80×600), Teaser-Bild
   (977×592 ab x182), rechte Spalte ab x1206 mit Titel (32px), Subline
   (Poppins 24px) und "MEHR ERFAHREN" (32px) auf Höhe der Bildunterkante.
   Umsetzung als Flex-Zeile: 80px Marke + 45px Lücke + 61% Bild + Rest Text —
   ergibt bei 1728 exakt die Figma-Spalten. ---------- */
.case-next {
  display: flex;
  align-items: stretch;
  gap: clamp(14px, 2.6vw, 45px);
  /* Feedback-Button #102 (Moritz, 09.09.2026): „Next Project“ braucht einen
     optischen Bruch — hellgraue Unterlegung über die volle Breite (Bandfarbe wie
     „News & Insights“ / Kennzahlen), Innenabstand oben/unten, direkt gefolgt
     von der Footer-Zeile. „Ausrichtung schließt nicht ab“: die Textspalte
     bekam ihre Höhe über ein festes Seitenverhältnis (458/592) — das stimmte
     nur bei 1728 px mit der Bildhöhe überein; darunter endete „MEHR ERFAHREN“
     über oder unter der Bildunterkante. Jetzt streckt sich die Spalte auf die
     Zeilenhöhe (= Bildhöhe), der Link sitzt per margin-top:auto exakt unten. */
  background: var(--bg-alt);
  padding: clamp(48px, 5.5vw, 95px) var(--pad-x);
  margin: clamp(80px, 12vw, 200px) 0 0;
}
.case-next-marker {
  /* vertical-rl + 180° = Textfluss von unten nach oben bei normaler
     Glyphenlage (sideways-lr beherrscht nur Firefox) */
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  flex: 0 0 auto;
  margin: 0;
  color: #000;
  font-weight: 900;
  font-stretch: normal;
  font-size: clamp(34px, 4.46vw, 77px);
  line-height: 0.96;
  letter-spacing: -0.05em;
  text-transform: uppercase;
}
.case-next-media {
  flex: 0 0 61%;
  align-self: flex-start;
  aspect-ratio: 977 / 592;
  background-size: cover;
  /* Parity-Sweep 23.07.: Figma setzt das Teaser-Bild in beiden Case-Frames
     mit ~48–79 % der Bildhoehe an (Node-Offset 923/1907) — bei Hochformaten
     (OC→Coya-Motiv) zeigt "center" sonst den oberen statt den unteren
     Ausschnitt; bei Querformaten (Milan) verschiebt 88 % nur minimal. */
  background-position: center 88%;
  display: block;
}
.case-next-body {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-self: stretch; /* #102: Spaltenhöhe = Bildhöhe bei jeder Breite */
}
.case-next-title {
  margin: 0;
  color: #000;
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  font-size: clamp(20px, 1.85vw, 32px);
  line-height: 0.98;
}
.case-next-text {
  font-family: var(--font-meta);
  font-weight: 400;
  color: #000;
  font-size: clamp(15px, 1.39vw, 24px);
  line-height: 1.12;
  margin: clamp(8px, 0.93vw, 16px) 0 0;
}
.case-next-link {
  margin-top: auto;
  align-self: flex-start;
  color: #000;
  font-weight: 900;
  font-stretch: normal;
  text-transform: uppercase;
  font-size: clamp(20px, 1.85vw, 32px);
  line-height: 1;
  text-decoration: underline;
  text-underline-offset: 0.22em;
  text-decoration-thickness: 2px;
}
@media (max-width: 900px) {
  .case-next { flex-wrap: wrap; }
  .case-next-marker { writing-mode: horizontal-tb; transform: none; flex: 0 0 100%; font-size: clamp(28px, 6vw, 44px); }
  .case-next-media { flex: 0 0 100%; }
  .case-next-body { flex: 0 0 100%; aspect-ratio: auto; gap: 16px; }
  .case-next-link { margin-top: 8px; }
}

@media (max-width: 720px) {
  .case-meta { grid-template-columns: 1fr; gap: 24px; margin-left: 0; }
  .case-tiles { margin-left: 0; }
  .case-col { padding-left: var(--pad-x); }
  .case-split { flex-direction: column; }
  .case-split-img { width: 100%; }
  .case-split-text { margin: 24px 0 0; padding: 0 var(--pad-x); }
}

/* ---------- CONTACTS / KONTAKT — Figma 06.07.2026: weißer zentrierter Hero
   mit Serif-Eyebrow "Kontakte", Bild folgt als eigene Full-Width-Sektion ---------- */
.contacts-hero {
  position: relative;
  background: #fff;
  color: #000;
  /* Feedback Alessandro 07.09.2026 (Punkt 1): gleiche Bildoberkante wie „Über uns“
     (.projects-hero: 72vh + Polster 240/100 @1728); vorher 58vh/220px. */
  min-height: 72vh;
  min-height: 72svh; /* iOS: Adressleiste (GK-05) */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: clamp(160px, 20vw, 240px) var(--pad-x) clamp(60px, 8vw, 100px);
  z-index: 0; /* Feedback #15: Headline bleibt hinter dem nachfolgenden Bild zurück */
}
.contacts-hero .contacts-hero-inner { will-change: opacity, transform; }
.contacts-hero .eyebrow-serif {
  font-family: "Playfair Display", Georgia, serif;
  font-style: italic;
  font-weight: 700;
  font-size: clamp(22px, 2.4vw, 34px);
  margin: 0 0 8px;
}
.contacts-hero-media {
  /* Feedback #15 (20.07.2026): Bildhöhe nach Proto 1241px @1728 → 71.82vw;
     Bild schiebt sich über die dahinter zurückbleibende Headline (z-index).
     Feedback #35 (21.07.): neues Hochformat-Motiv (Drinks) — Ausschnitt auf
     die Gläser-Gruppe im oberen Drittel gelegt. */
  position: relative;
  z-index: 1;
  width: 100%;
  height: min(71.82vw, 1241px);
  background-size: cover;
  background-position: 50% 22%;
}
.contacts-hero-inner { max-width: var(--container); margin: 0 auto; width: 100%; }
.contacts-hero-title { font-size: clamp(36px, 4vw, 58px); line-height: 0.962; letter-spacing: -0.05em; /* Feedback #43 + Figma-Node (ls -5 %) */ color: #000; margin: 0; text-transform: uppercase; }

.contacts-discover { background: #fff; padding: clamp(80px, 10vw, 140px) var(--pad-x); }
.contacts-discover-inner { max-width: var(--container); margin: 0 auto; }
/* Feedback #51 (23.07.2026): „Entdecken Sie uns" bleibt einzeilig —
   nowrap + kleinerer Mobil-Floor, damit die Zeile auch @390px passt. */
.contacts-discover-title { font-size: clamp(26px, 4vw, 48px); line-height: 1.0; color: #000; margin: 0 0 24px; white-space: nowrap; }
.contacts-discover-sub {
  font-family: var(--font-meta);
  font-size: clamp(18px, 1.6vw, 24px);
  line-height: 1.42;
  color: #333333;
  max-width: 46ch;
  margin: 0 0 clamp(48px, 6vw, 80px);
}
.contacts-channels { display: flex; flex-direction: column; gap: clamp(28px, 3vw, 40px); max-width: 46ch; }
/* Figma Website_Final 15.07.2026: Labels in CAPS, Werte unterstrichen */
.contacts-channel-label { font-size: clamp(24px, 2.6vw, 35px); line-height: 1.0; color: #000; text-transform: uppercase; margin: 0 0 8px; }
.contacts-channel-value { font-family: var(--font-meta); font-size: clamp(17px, 1.4vw, 24px); line-height: 1.12; color: #333333; margin: 0; }
.contacts-channel-value a,
.contacts-channel-value--links { text-decoration: underline; text-underline-offset: 3px; }
.contacts-channels-note { font-family: var(--font-meta); font-size: clamp(17px, 1.4vw, 24px); line-height: 1.16; color: #333333; margin: 0; }

.contacts-form { background: var(--bg-alt); padding: clamp(80px, 10vw, 140px) var(--pad-x); }
.contacts-form-inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: clamp(40px, 6vw, 100px);
  align-items: start;
}
.contacts-form-title { font-size: clamp(34px, 4.2vw, 52px); line-height: 0.9; color: #000; margin: 0 0 20px; }
/* Figma 2059:1832: dreizeilige Subcopy unter dem Formulartitel (Poppins 24px) */
.contacts-form-sub {
  font-family: var(--font-meta);
  font-size: clamp(16px, 1.6vw, 24px);
  line-height: 1.42;
  color: #333333;
  margin: 0 0 clamp(28px, 3vw, 44px);
}
.contacts-form-note { font-family: var(--font-meta); font-size: clamp(17px, 1.4vw, 24px); line-height: 1.25; color: #000; margin: 0; }
.contacts-form-thanks { margin-top: 16px; }
.contacts-form-fields .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px 32px; margin-bottom: 24px; }
.contacts-form-fields input,
.contacts-form-fields textarea {
  width: 100%;
  border: 0;
  border-bottom: 1.5px solid #000;
  background: transparent;
  padding: 10px 2px;
  font-family: var(--font-meta);
  font-size: clamp(16px, 1.4vw, 24px);
  color: #000;
  outline: 0;
}
.contacts-form-fields ::placeholder { color: #bdbdbd; opacity: 1; }
.contacts-form-fields textarea { grid-column: 1 / -1; resize: vertical; margin-bottom: 28px; }
/* Feedback Alessandro 07.09.2026 (PDF Punkt 2): der rote Kasten („Call-to-Action-
   Grafik“, Figma-Stand 15.07. / Feedback #56) weicht der Pille mit animiertem
   Kreis, die auch die Footer-CTAs nutzen — Markup: .pill.solid + gesk_pill_arrow()
   (page-kontakt.php, template-parts/newsletter-form.php). Hier nur die Button-
   Resets und die Beschriftung in Poppins Medium wie bei den Footer-Pills (#68). */
.contacts-submit {
  appearance: none;
  -webkit-appearance: none;
  margin: 0;
  cursor: pointer;
  font-family: var(--font-meta);
  font-weight: 500;
  font-size: 14px;
  letter-spacing: 0.01em;
  text-transform: none;
  line-height: 1;
}
@media (max-width: 900px) { .contacts-form-inner { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .contacts-form-fields .form-grid { grid-template-columns: 1fr; } }
/* GK-06 Runde 1 (23.09.2026, Befund der korrigierten Touch-Suite, iPhone SE 375 px): „Kontaktformular.“
   ist bei 34 px in Kommon Extended 360 px breit, die Spalte nur 335 px — die Grid-Spalte wuchs mit
   (min-width: auto) und die Seite wurde 380 px breit. Bis 600 px skaliert der Titel mit der Breite
   (8,2vw: 375 px → 30,8 px → 326 px), die Spalten dürfen schrumpfen, overflow-wrap fängt Längeres ab. */
@media (max-width: 600px) {
  .contacts-form-inner > * { min-width: 0; }
  .contacts-form-title { font-size: clamp(22px, 8.2vw, 34px); overflow-wrap: anywhere; }
}

/* ---------- LEGAL PAGES: Impressum / Datenschutz (frame-12 / 13) ---------- */
.legal-hero { background: var(--bg); padding: clamp(150px, 18vw, 220px) var(--pad-x) clamp(32px, 4vw, 56px); }
.legal-hero-inner { max-width: var(--container); margin: 0 auto; }
.legal-title { margin: 0; color: #000; font-size: clamp(36px, 4vw, 58px); line-height: 1.0; letter-spacing: -0.01em; text-align: center; /* Figma Website_Final: Titel mittig */ }
.impressum-body { background: var(--bg); padding: clamp(24px, 4vw, 48px) var(--pad-x) clamp(80px, 10vw, 140px); }
.impressum-body-inner {
  max-width: var(--container);
  margin: 0 auto;
  font-family: var(--font-meta);
  font-weight: 400;
  color: #000;
  font-size: clamp(15px, 1.05vw, 18px);
  line-height: 1.5;
}
.impressum-body-inner p { margin: 0 0 1.1em; }
/* Zwischentitel in generischen Rechtsseiten (z. B. Barrierefreiheit via page.php) */
.impressum-body-inner h2 {
  font-family: var(--font-meta);
  font-weight: 700;
  font-size: clamp(17px, 1.2vw, 21px);
  color: #000;
  margin: 1.6em 0 0.6em;
}
.impressum-body-inner h2:first-child { margin-top: 0; }
.legal-page { background: var(--bg); padding: clamp(160px, 20vw, 240px) var(--pad-x) clamp(80px, 10vw, 140px); }
/* Feedback #22 (20.07.2026): volle Container-Breite wie das Impressum — die
   schmalere 1200px-Spalte wirkte gegenüber dem Impressum „zentriert". */
.legal-page-inner { max-width: var(--container); margin: 0 auto; }
.legal-page .legal-hero { background: transparent; padding: 0; margin-bottom: clamp(40px, 5vw, 72px); }
.legal-page .legal-content {
  font-family: var(--font-meta);
  font-weight: 400;
  color: #000;
  font-size: clamp(15px, 1.05vw, 18px);
  line-height: 1.5;
  /* Feedback #31 (21.07.2026): Fließtext linksbündig in voller Breite — die
     Basisklasse .legal-content zentrierte hier noch eine 860px-Spalte
     (max-width + margin:auto), das wirkte wie zentrierter Text (Rest von #22). */
  max-width: none;
  margin: 0;
  padding: 0;
  text-align: left;
}
.legal-page .legal-content p { margin: 0 0 1.15em; }
.legal-page .legal-content p:last-child { margin-bottom: 0; }
/* Rechtstext-Listen (gesk_legal_format): echte Bullets wie im Figma */
.legal-page .legal-content ul,
.impressum-body-inner ul {
  list-style: disc;
  margin: 0 0 1.15em;
  padding-left: 1.3em;
}
.legal-page .legal-content li,
.impressum-body-inner li { margin: 0 0 0.35em; }

/* ============================================================
   AGENTUR (About): Full-width Foto-Band
   ============================================================ */
.agentur-photo-band {
  width: 100%;
  margin: 0;
  padding: 0;
  line-height: 0;
  overflow: hidden;
}
.agentur-photo-band-img {
  display: block;
  width: 100%;
  height: clamp(360px, 46vw, 760px);
  object-fit: cover;
  object-position: center;
}

/* ============================================================
   KONTAKT: "Discover us" Zweispalter (Text links, Galerie rechts)
   + Full-width Image-Band nach dem Formular
   ============================================================ */
.contacts-discover-grid {
  display: grid;
  /* Feedback #15 (20.07.2026): Collage nach Figma deutlich größer —
     Textspalte 613px / Galerie 870px @1728 (≈ 1 : 1.42). */
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.42fr);
  gap: clamp(32px, 4vw, 70px);
  align-items: start;
}
.contacts-discover-text { min-width: 0; }
/* Feedback #15 (20.07.2026): Bilder exakt nach Figma 2059:1832 — 345×440px
   (Gong 345×467), KEINE abgerundeten Ecken, überlappend versetzt:
   Gong oben rechts, Installation links darüber liegend, Vaia unten rechts.
   Container = Figma-Cluster x700–1570 / y2058–2926 (870×868); Prozentwerte
   beziehen sich darauf. */
.contacts-discover-gallery {
  position: relative;
  aspect-ratio: 870 / 868;
}
.contacts-discover-card {
  position: absolute;
  width: 39.66%; /* 345/870 */
  border-radius: 0;
  overflow: hidden;
}
.contacts-discover-gallery .contacts-discover-card:nth-child(1) {
  left: 40.5%;  /* x1052 */
  top: 0;       /* y2058 */
  aspect-ratio: 345 / 467;
  z-index: 1;
}
.contacts-discover-gallery .contacts-discover-card:nth-child(2) {
  left: 6%;     /* x752 */
  top: 32%;     /* y2336 */
  aspect-ratio: 345 / 440;
  z-index: 3;
}
.contacts-discover-gallery .contacts-discover-card:nth-child(3) {
  left: 60.3%;  /* x1225 */
  top: 49.3%;   /* y2486 */
  aspect-ratio: 345 / 440;
  z-index: 2;
}
/* Feedback #51 (23.07.2026): Bildausschnitte exakt nach den Figma-
   imageTransforms (Frame 2059:1832):
   – Bild 2 (Object-Carpet-Installation, Node 2059:1957): Fenster deckt
     U 0,085–0,606 → object-position 17,7 % — Frau und Ball sichtbar.
   – Bild 3 (Vaia-Silhouette, Node 2059:1956): Fenster deckt U 0,524–0,873
     → object-position 80,5 % — das Objekt in der Hand ist sichtbar. */
.contacts-discover-gallery .contacts-discover-card:nth-child(2) img {
  object-position: 17.7% 50%;
}
.contacts-discover-gallery .contacts-discover-card:nth-child(3) img {
  object-position: 80.5% 50%;
}
.contacts-discover-card img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
@media (max-width: 900px) {
  .contacts-discover-grid { grid-template-columns: 1fr; }
}
.contacts-imageband {
  width: 100%;
  margin: 0;
  padding: 0;
  line-height: 0;
}
.contacts-imageband-img {
  display: block;
  width: 100%;
  height: clamp(320px, 40vw, 640px);
  object-fit: cover;
  object-position: center;
}

/* ============================================================
   PROJEKTE: Hero-Media — helles Studio-Foto full-width unter dem
   Hero, Bild deckt die Sektion (Live-Figma 06.07.2026, kein Kasten)
   ============================================================ */
.projects-hero-media {
  width: 100%;
  background: var(--bg);
  line-height: 0;
}
.projects-hero-media-inner {
  width: 100%;
}
.projects-hero-media-img {
  display: block;
  width: 100%;
  /* Figma-Update 20.07.2026: Hero-Medium 1728×1267 wie Start/Agentur */
  height: min(73.32vw, 1267px);
  object-fit: cover;
  object-position: center;
}

/* ============================================================
   ACCESSIBILITY: prefers-reduced-motion
   Loop-Carousels anhalten, Hero-Pan/Reveal-Bewegung neutralisieren.
   Scroll-gekoppelte Navbar/Hero-Transforms werden zusätzlich in
   js/main.js entschärft.
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  .clients-marquee-track,
  .clients-marquee.reverse .clients-marquee-track,
  .connect-strip-track,
  .hero-media {
    animation: none !important;
  }
  .recent-works-cards { overflow-x: auto; scrollbar-width: none; }
  .recent-works-cards::-webkit-scrollbar { display: none; }
  .reveal-init {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .reveal-init::after { display: none !important; }
  .aktuell-rotated.reveal-init,
  .aktuell-rotated.reveal-init.is-revealed { transform: rotate(180deg) !important; }
}

/* ============================================================
   BILDPIPELINE (AG0007 Ziffer 2.2, 22.09.2026)
   Die bisherigen Hintergrundbild-Rahmen tragen jetzt ein <img> mit srcset
   (inc/bilder.php, gesk_bild_hintergrund()): Das Bild deckt den Rahmen wie
   background-size: cover, der Ausschnitt (bisher background-position) liegt
   als object-position am Bild. <picture> (AVIF/WebP) ist layoutneutral.
   ============================================================ */
picture.gesk-bild { display: contents; }
/* <source> hat in Chrome display: block — mit display: contents am <picture> werden die leeren
   <source>-Boxen sonst zu Flex-Kindern: im Logoband der Startseite verschob das die Grundlinie
   (Reihe 1,5 px niedriger, gemessen 22.09.2026), in Flex-Rahmen mit gap kämen Abstände hinzu.
   Die Quellenauswahl des Browsers hängt nicht an der Darstellung. */
picture.gesk-bild > source { display: none; }
.gesk-bild-host { background-image: none; }
.gesk-bild-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
  display: block;
}
/* Rahmen, die bisher nicht positioniert waren */
.reveal-hero-img.gesk-bild-host,
.refz-hero-img.gesk-bild-host,
.case-next-media.gesk-bild-host { position: relative; overflow: hidden; }
/* „Nächstes Projekt“: Ausschnitt wie bisher (background-position: center 88 %) */
.case-next-media .gesk-bild-bg { object-position: center 88%; }
/* Highlights-Banner: bisher background-size 124 %, background-position left 79 % —
   top 79 % + translateY(−79 %) ergibt denselben Versatz (79 % der Höhendifferenz). */
.proj-highlights-media.gesk-bild-host { overflow: hidden; }
.proj-highlights-media .gesk-bild-bg {
  inset: auto;
  left: 0;
  top: 79%;
  width: 124%;
  height: auto;
  transform: translateY(-79%);
}
/* Zoom beim Hover (Feedback #6/#65): bisher skalierte ::before mit geerbtem
   Hintergrund — jetzt skaliert das Bild selbst, ::before entfällt. */
.rw-img.gesk-bild-host::before,
.proj-mosaic-img.gesk-bild-host::before { display: none; }
.rw-img .gesk-bild-bg,
.proj-mosaic-img .gesk-bild-bg { transition: transform .7s cubic-bezier(.2,.7,.2,1); }
@media (hover: hover) { .rw-card:hover .rw-img .gesk-bild-bg,
.proj-mosaic-card:hover .proj-mosaic-img .gesk-bild-bg { transform: scale(1.06); } }
@media (prefers-reduced-motion: reduce) {
  .proj-mosaic-img .gesk-bild-bg { transition: none; }
  @media (hover: hover) { .proj-mosaic-card:hover .proj-mosaic-img .gesk-bild-bg { transform: none; } }
}

/* ============================================================
   TOUCH & GERÄTE (AG0007 2.1 + 2.4, GK-05, 22.09.2026)
   ------------------------------------------------------------
   Hover-Effekte stehen seit GK-05 in @media (hover: hover) — auf Touch-Geräten
   blieben sie nach dem Antippen „kleben“ (Pille schwarz, Bild vergrößert).
   Viewport-Höhen: jede vh-Angabe hat eine svh-Zeile dahinter (iOS-Adressleiste
   verschiebt den Bildaufbau nicht mehr; ältere Browser behalten vh).
   Tippziele ≥ 44 × 44 px nur bei grobem Zeiger (Finger): wo das Ziel Luft hat,
   unsichtbar per ::after-Fläche; Pillen und die dichte Fußleiste werden auf
   Touch-Geräten sichtbar um wenige Pixel größer (Angebot: „vergrößert“).
   Am Desktop (Maus) ändert sich nichts.
   ============================================================ */

/* Geschlossenes Menü: nicht nur durchsichtig, sondern unerreichbar (Tab, Screenreader) */
.nav-overlay { visibility: hidden; transition: opacity .3s ease, visibility 0s linear .3s; }
.nav-overlay.open { visibility: visible; transition: opacity .3s ease; }
.nav-overlay {
  padding: 0 var(--sa-r) var(--sa-b) var(--sa-l);
}

/* Sprachmenü: per Klasse (js/main.js) statt nur per Hover — auf dem iPad bekam der
   angetippte Knopf keinen Fokus, das Menü öffnete nur über den „klebenden“ Hover.
   Regel oben beim Sprachumschalter („Offen per Klasse“). */

/* Notch: Kopfleiste und Fußleiste halten Abstand zu Rundungen und Home-Balken */
.nav {
  padding-left: max(clamp(16px, 1.62vw, 28px), var(--sa-l));
  padding-right: max(clamp(16px, 1.62vw, 28px), var(--sa-r));
}
.foot-bar { padding-bottom: calc(24px + var(--sa-b)); }

/* Notch: zwei Stellen mit festen Randabständen statt --pad-x. Ohne Notch (--sa-* = 0) ergeben beide Formeln
   exakt die bisherigen Werte (33vw bzw. −11 px); mit Notch bleibt der Text neben dem Randstreifen. */
.hero-cta { max-width: min(33vw, calc(36.34% - var(--sa-r))); }
.case-meta { margin-left: max(-11px, calc(var(--sa-l) - var(--pad-x))); }
@media (max-width: 760px) {
  .hero-cta { max-width: none; }
  .case-meta { margin-left: 0; }
}

@media (pointer: coarse) {
  /* Unsichtbare Tippfläche: mindestens 44 × 44 px um die Mitte des Ziels */
  .nav-burger,
  .hero-cta-link,
  .rw-more,
  .proj-highlights-more,
  .case-next-link,
  .contacts-channel-value a,
  .nav-right .nav-cta:not(.nav-cta--kontakt),
  .lang-switch-btn { position: relative; }
  .nav-logo::after,
  .nav-burger::after,
  .hero-cta-link::after,
  .rw-more::after,
  .proj-highlights-more::after,
  .case-next-link::after,
  .contacts-channel-value a::after,
  .nav-right .nav-cta:not(.nav-cta--kontakt)::after,
  .lang-switch-btn::after {
    content: "";
    position: absolute;
    top: min(0px, calc(50% - 22px));
    bottom: min(0px, calc(50% - 22px));
    left: min(0px, calc(50% - 22px));
    right: min(0px, calc(50% - 22px));
  }
  /* Menüpunkte oben (iPad quer): ::before/::after sind Breiten-Ghosts — Fläche per Polster,
     die negative Außenkante hält das Layout gleich (Text steht, wo er stand) */
  .nav-links a,
  .nav-cta--kontakt { height: 44px; margin-block: -10px; }
  .lang-switch-menu a { padding-block: 15px; }

  /* Pillen: 40 → 44 px hoch (Kreis und Pfeil wachsen über --pill-h mit) */
  .pill { --pill-h: clamp(44px, 2.78vw, 48px); }

  /* Fußleiste: Links 11 px hoch in 27-px-Zeilen — 44 px ohne Überlappung geht nur mit
     etwas mehr Zeilenabstand. Jede Zeile wird 44 px hoch, die Außenabstände bleiben. */
  .foot-bar { row-gap: 0; padding-top: 7.5px; padding-bottom: calc(7.5px + var(--sa-b)); }
  .foot-bar > div,
  .foot-bar a { padding-block: 16.5px; }
  .foot-bar nav { row-gap: 0; } /* umbrechende Rechtslinks (iPhone SE): Zeile an Zeile */

  /* Menü-Overlay: Menüpunkte (39–43 px hoch, 47–51 px Abstand) und Zusatzlinks — unsichtbare
     44-px-Fläche ohne Überlappung, Lage unverändert */
  .nav-overlay a { position: relative; }
  .nav-overlay a::after {
    content: "";
    position: absolute;
    top: min(0px, calc(50% - 22px));
    bottom: min(0px, calc(50% - 22px));
    left: min(0px, calc(50% - 22px));
    right: min(0px, calc(50% - 22px));
  }
}

/* ============================================================
   KARUSSELLS AUF TOUCH-GERÄTEN (GK-06, 24.09.2026, AG0007 Ziffer 2.1)
   Punktreihe unter den wischbaren Reihen (js/main.js „Karussell-Indikatoren“) und Einrasten der Kachelreihe
   auf Projektseiten. Die Themenreihe der Startseite rastet per js/main.js ein (CSS-Snap bräche ihren Autolauf).
   Nur Touch: Desktop bleibt pixelgleich.
   ============================================================ */
.gesk-karussell-punkte {
  display: flex;
  gap: 8px;
  margin-top: 18px;
  box-sizing: border-box;
}
.gesk-karussell-punkte i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.22;
  transition: opacity 0.25s ease;
}
.gesk-karussell-punkte i.ist-aktiv { opacity: 1; }
.recent-works .gesk-karussell-punkte { color: #000; }
@media (hover: none) and (pointer: coarse) {
  .case-tiles { scroll-snap-type: x mandatory; }
  .case-tile { scroll-snap-align: start; }
}
@media (prefers-reduced-motion: reduce) {
  .gesk-karussell-punkte i { transition: none; }
}

/* ============================================================
   ALES KORREKTUREN ZUR MOBILFASSUNG (28.09.2026, AG0007) — nur bis 760 px, Desktop und Tablet unverändert
   ============================================================ */
@media (max-width: 760px) {
  /* Eine Überschriftengröße für alle Seiten: die der Startseite (Hero + Statement, clamp(22px, 6.4vw, 40px)).
     Vorher bei 393 px sieben Größen zwischen 23,6 und 56 px. Ausgenommen: Bildunterschrift im Hero-Video
     (hero-cta-title), Anreißer „nächstes Projekt“ (case-next-title), Zwischenüberschriften in Stellenanzeigen. */
  :root body :is(h1, h2.display, h2.agentur-prose-title, h2.proj-heading):not(.hero-cta-title):not(.case-next-title) {
    font-size: clamp(22px, 6.4vw, 40px);
  }

  /* Kundenlogos Startseite um ein Viertel kleiner. Die Höhe setzt die Redaktion je Logo (Inline-Stil, --logo-h). */
  .clients .brand-logo img { height: calc(var(--logo-h, 36px) * 0.75) !important; }
  .clients-marquee-track { gap: 52px; }

  /* Logo-Wand Referenzen um ein Viertel kleiner (vorher 30 / 48 / 46 px, Breite 24vw) */
  .refz-logos .refz-logo-row img { max-height: var(--refz-logo-h-mob, 23px); max-width: 18vw; }
  .refz-logo-row .brand-logo--gmundner { --refz-logo-h-mob: 36px; }
  .refz-logo-row .brand-logo--leonardo { --refz-logo-h-mob: 35px; }

  /* Magazin-Band Referenzen: Magazin-Logos um ein Viertel kleiner */
  .refz-media .refz-media-marquee img { height: 27px; }
  .refz-media .refz-media-marquee .brand-logo--mag-faz img { height: 34px; }
  /* … und das Magazin größer: Das Band ist mobil mindestens 300 px hoch (Desktop 42,53vw), das Mockup skalierte aber
     nur mit der Breite und wirkte darin klein. Faktor 1,3 statt 0,94; Hüllenmitte bleibt bei ~74vw bzw. mittig im Band
     (x: 62,68 + 12,17·0,94 = 57,85 + 12,17·1,3; y: −54,3vw · Faktor). */
  .refz-media-mockup { transform: translate(58.3vw, -70.6vw) rotate(40.48deg) scale(1.3); }

  /* Über uns: Familienfoto auf die beiden Personen ausrichten (sie stehen bei ~56 % der Bildbreite) */
  .agentur-photo-band-img { object-position: 60% 50%; }
}
