/* Öffentliche Wissens-Seite marzi-plan.de/wissen/ - Stylesheet im Marziplan-Look
   (Creme/Gelb + CD-Rot, Schriftart Anton für Überschriften). Struktur/Mechaniken sind
   eine MÖGLICHST GENAUE Portierung von marziplan-final-gesamtansicht.html +
   marziplan-technische-spezifikation.md (Hero-Kreis via clamp(), Logo-Marquee mit
   Dopplungs-Technik, Feature-Karte-Whitepaper) - siehe Kommentare bei den jeweiligen
   Blöcken für die exakte Fundstelle. Zwei bewusste Abweichungen vom Mockup:
   1) --red ist das echte Marziplan-CD-Rot #A72925 (vgl. site/assets/style.css --cd-rot),
      NICHT das im Mockup verwendete #A9362B.
   2) Anton wird selbst gehostet (assets/fonts/), kein Google-Fonts-Request zur
      Laufzeit - die Seite bleibt bewusst ohne Cookie-/Consent-Banner.
   WICHTIG für spätere Wiederverwendung im Dashboard-Reiter "Wissen": die
   Item-Darstellung ist jetzt zweistufig (Feature-Karte + Karten-Grid statt einer
   flachen Liste), das muss bei einer Übernahme dort neu bewertet werden. */
@font-face{
  font-family:'Anton';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/Anton-Regular.woff2') format('woff2');
}
:root{
  --cream:#F3E9D4;
  --cream-bg:#FBF6EB;
  --ink:#2D2D2D;
  --ink-soft:#615A50;
  --yellow:#EFC96A;
  --yellow-deep:#D9A93E;
  --red:#A72925;
  --red-deep:#7E1F1C;
  --line:#E3D9C0;
  --white:#FFFFFF;
  /* Vier-Stufen-Schriftgrößen-Skala für Fließ-/Label-Text (Überschriften und UI-Chrome
     wie Buttons/Chips/Badges bleiben bewusst eigenständig, siehe Nutzer-Feedback 14.08.2026). */
  --ws-fs-lead:16px;
  --ws-fs-body:14px;
  --ws-fs-small:13px;
  --ws-fs-micro:12px;
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{margin:0;background:#EDE7DA;color:var(--ink);font-family:"Segoe UI",system-ui,-apple-system,sans-serif;line-height:1.6;}
a{color:inherit;text-decoration:none;}
/* text-wrap:balance verteilt Zeilen gleichmaessig, statt ein einzelnes Wort (oder zu
   wenige) verwaist in der letzten Zeile stehen zu lassen (Nutzer-Vorgabe 19.08.2026,
   gilt fuer alle Ueberschriften - kein Nachbessern von Hand per &nbsp; noetig). */
h1,h2,h3{font-family:'Anton',sans-serif;font-weight:400;text-transform:uppercase;margin:0;letter-spacing:.005em;text-wrap:balance;}
.ws-wrap{max-width:1180px;margin:0 auto;padding:0 44px;}

.ws-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 26px;border-radius:10px;font-weight:700;font-size:14px;cursor:pointer;border:none;font-family:inherit;text-decoration:none;}
.ws-btn-red{background:var(--red);color:var(--white);}
.ws-btn-red:hover{background:var(--red-deep);}
.ws-btn-yellow{background:var(--yellow);color:var(--ink);}
.ws-btn-yellow:hover{background:var(--yellow-deep);}
.ws-btn-outline{border:1.5px solid var(--ink);color:var(--ink);background:transparent;}
.ws-btn-sekundaer{border:1.5px solid var(--line);color:var(--ink);background:transparent;padding:12px 22px;}
.ws-btn-sekundaer:hover{border-color:var(--red);}
/* Größen-Modifikator statt Inline-Style - siehe DESIGN.md "Buttons". */
.ws-btn-sm{padding:11px 20px;font-size:13px;}

/* Seitenkarte bewusst breiter als .ws-wrap (1180px) - der zusaetzliche Rand rechts/links
   gibt dem Inhalt mehr Luft zum Kartenrand, siehe DESIGN.md "Seitenbreite" (Nutzer-
   Feedback 19.08.2026, gilt seitdem fuer alle Seiten des Bereichs). */
.ws-page{background:var(--white);max-width:1320px;margin:0 auto;border-radius:24px;overflow:hidden;box-shadow:0 12px 34px rgba(45,45,45,.09);}
/* Generischer Abschnitts-Innenabstand für einfache Textseiten (404/410, Freigabe-Gate,
   Download-/Anforderungs-Meldungen) - dieselbe Zahl wie .ws-hero/.ws-services/.ws-res/
   .ws-artikel, deshalb hier in dieselbe Skalierungs-Regel (900px-Breakpoint) aufgenommen. */
.ws-seite{padding:70px 0;}
/* Meldungsblock (Erfolg/Fehler) ganz oben auf der Seite, ohne eigenen Folge-Abschnitt darunter. */
.ws-meldung-wrap{padding-top:24px;}

/* ---------- KOPFZEILE ---------- */
.ws-topbar{padding:24px 0;border-bottom:1px solid var(--line);}
.ws-topbar-row{position:relative;display:flex;justify-content:space-between;align-items:center;gap:24px;}
.ws-marke{display:flex;align-items:center;gap:10px;font-family:'Anton',sans-serif;font-size:18px;text-transform:none;text-decoration:none;}
.ws-marke-icon{height:36px;width:36px;display:block;}
.ws-marke span{color:var(--red);}
.ws-topbar-actions{display:flex;align-items:center;gap:16px;}
.ws-topbar-mitte{display:flex;gap:32px;font-size:var(--ws-fs-lead);color:var(--ink-soft);}
.ws-topbar-mitte a:hover{color:var(--ink);}

/* Dropdown "Angebot" - Desktop öffnet per Hover/Fokus, Mobil (Burger-Panel) siehe
   900px-Breakpoint: dort statisch aufgeklappt statt Hover-Mechanik. */
.ws-nav-item{position:relative;padding-bottom:14px;margin-bottom:-14px;}
.ws-nav-trigger{display:inline-flex;align-items:center;gap:5px;cursor:default;outline-offset:4px;}
.ws-nav-caret{font-size:10px;transition:transform .15s ease;}
.ws-nav-drop{position:absolute;top:100%;left:0;margin-top:8px;display:flex;flex-direction:column;gap:2px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:10px;min-width:230px;box-shadow:0 12px 20px rgba(45,45,45,.08);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease,visibility .15s ease;z-index:30;}
.ws-nav-drop a{padding:8px 10px;border-radius:8px;color:var(--ink);white-space:nowrap;}
.ws-nav-drop a:hover{background:var(--cream);color:var(--red);}
.ws-nav-item:hover .ws-nav-drop,.ws-nav-item:focus-within .ws-nav-drop{opacity:1;visibility:visible;transform:translateY(0);}
.ws-nav-item:hover .ws-nav-caret,.ws-nav-item:focus-within .ws-nav-caret{transform:rotate(180deg);}

/* Burger-Menü - erst unter 900px sichtbar, siehe Breakpoint weiter unten. */
.ws-nav-toggle{display:none;flex-direction:column;justify-content:center;align-items:stretch;gap:5px;width:30px;height:26px;background:none;border:none;cursor:pointer;padding:0;flex-shrink:0;}
.ws-nav-toggle span{display:block;height:2px;background:var(--ink);border-radius:2px;transition:transform .2s ease,opacity .2s ease;}
.ws-nav-toggle.ws-offen span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.ws-nav-toggle.ws-offen span:nth-child(2){opacity:0;}
.ws-nav-toggle.ws-offen span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* Einfache Textseiten ohne Hero (404/410-Meldungen, Freigabe-Gate). */
.ws-seitentitel{font-size:32px;color:var(--ink);margin:0 0 6px;}

/* ---------- HERO (Kreis-Mechanik exakt nach Spezifikation Abschnitt 1) ---------- */
.ws-hero{padding:70px 0;position:relative;overflow:hidden;}
.ws-hero-circle{position:absolute;top:-8vw;right:-6vw;width:clamp(160px,42vw,620px);height:clamp(160px,42vw,620px);border-radius:50%;background:var(--yellow);z-index:1;}
.ws-hero-inner{position:relative;z-index:2;max-width:640px;}
.ws-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:var(--ws-fs-micro);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--red);margin-bottom:22px;}
.ws-hero h1{font-size:44px;line-height:1.08;color:var(--ink);}
.ws-hero-lead{font-size:var(--ws-fs-lead);color:var(--ink-soft);margin-top:20px;max-width:460px;}
.ws-hero-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap;}
.ws-trust-badge{display:inline-flex;align-items:center;gap:10px;margin-top:22px;padding:10px 16px;border:1px solid var(--line);border-radius:999px;background:var(--white);text-decoration:none;}
.ws-trust-badge:hover{border-color:var(--yellow-deep);}
.ws-trust-g{width:18px;height:18px;flex-shrink:0;}
.ws-trust-stars{display:inline-flex;gap:2px;}
.ws-trust-stars svg{width:14px;height:14px;fill:var(--yellow-deep);}
.ws-trust-text{font-size:var(--ws-fs-small);color:var(--ink);}
.ws-trust-text strong{color:var(--ink);}

/* ---------- LOGO-MARQUEE (Dopplungs-Technik exakt nach Spezifikation Abschnitt 2) ---------- */
.ws-logos{padding:50px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.ws-logos-label{font-size:var(--ws-fs-lead);color:var(--ink-soft);text-align:center;margin-bottom:28px;}
.ws-logos-track{overflow:hidden;width:100%;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);}
.ws-logos-slider{display:flex;align-items:center;gap:56px;width:max-content;animation:ws-logo-scroll 32s linear infinite;}
.ws-logos-track:hover .ws-logos-slider{animation-play-state:paused;}
@keyframes ws-logo-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.ws-logo-item{display:flex;align-items:center;justify-content:center;height:80px;flex-shrink:0;}
.ws-logo-item svg,.ws-logo-item img{height:100%;width:auto;filter:grayscale(100%);opacity:.5;transition:filter .25s ease,opacity .25s ease;}
.ws-logo-item:hover svg,.ws-logo-item:hover img{filter:grayscale(0%);opacity:1;}
@media (prefers-reduced-motion:reduce){
  .ws-logos-slider{animation:none;}
  .ws-logos-track{overflow-x:auto;}
}

/* ---------- LEISTUNGEN ---------- */
.ws-services{padding:70px 0;}
.ws-services-head{max-width:600px;margin-bottom:44px;}
.ws-services h2{font-size:30px;line-height:1.15;color:var(--ink);}
.ws-services-head p{color:var(--ink-soft);font-size:var(--ws-fs-lead);margin-top:14px;text-transform:none;}
.ws-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;}
.ws-card .ws-title-row{display:flex;align-items:center;gap:9px;margin-bottom:12px;}
.ws-card .ws-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.ws-card:nth-child(1) .ws-dot{background:var(--red);}
.ws-card:nth-child(2) .ws-dot{background:var(--yellow-deep);}
.ws-card:nth-child(3) .ws-dot{background:var(--ink);}
.ws-card h3{font-family:"Segoe UI",system-ui,-apple-system,sans-serif;font-weight:700;text-transform:none;font-size:17px;color:var(--ink);}
.ws-card p{font-size:var(--ws-fs-body);color:var(--ink-soft);margin:0;}
.ws-card .ws-link{font-size:13.5px;color:var(--ink);display:inline-block;margin-top:12px;text-decoration:underline;text-underline-offset:3px;}

/* ---------- FOTO-BANNER (Querformat-Break zwischen Leistungen und Whitepaper) ---------- */
.ws-photo-banner{padding:0 0 70px;}
.ws-photo-banner-inner{aspect-ratio:21/9;border-radius:20px;overflow:hidden;position:relative;}
.ws-photo-banner-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.ws-photo-banner-tag{position:absolute;top:24px;left:24px;z-index:2;background:var(--white);color:var(--ink);font-size:12px;font-weight:700;padding:7px 15px;border-radius:999px;}
.ws-photo-banner-overlay{position:absolute;left:0;right:0;bottom:0;z-index:2;background:linear-gradient(0deg,rgba(45,45,45,.82) 0%,rgba(45,45,45,.15) 80%,transparent 100%);padding:60px 44px 32px;}
.ws-photo-banner-overlay blockquote{font-family:'Anton',sans-serif;text-transform:none;color:var(--white);font-size:24px;line-height:1.3;margin:0;max-width:600px;}
.ws-photo-banner-overlay cite{font-family:"Segoe UI",system-ui,-apple-system,sans-serif;font-style:normal;color:#E8DFC8;font-size:var(--ws-fs-micro);display:block;margin-top:10px;}

/* ---------- TEAM (ersetzt den Foto-Banner auf der Startseite, 20.08.2026) ----------
   Erst als volle Kastenbreite gebaut, dann auf Nutzer-Feedback ("viel zu gross auf dem
   grossen Screen") auf ein Zweispalten-Banner umgestellt: Foto fest auf 380px begrenzt,
   Namen/Rollen daneben statt darunter - dieselbe aspect-ratio:4/3 wie zuvor, aber durch
   die feste Spaltenbreite bleibt die tatsaechliche Bildhoehe jetzt im Rahmen (vorher
   skalierte die Hoehe mit der vollen .ws-wrap-Breite mit, dadurch ca. 800px hoch). */
.ws-team{padding:0 0 70px;}
.ws-team-inner{display:flex;align-items:center;gap:44px;background:var(--cream-bg);border:1px solid var(--line);border-radius:20px;padding:32px;}
.ws-team-photo{flex:0 0 380px;border-radius:16px;overflow:hidden;position:relative;aspect-ratio:4/3;}
.ws-team-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom;display:block;}
.ws-team-list{flex:1;display:flex;flex-direction:column;gap:20px;}
.ws-team-name{font-family:"Segoe UI",system-ui,-apple-system,sans-serif;font-weight:700;font-size:17px;color:var(--ink);margin:0 0 6px;}
.ws-team-role{font-size:13px;color:var(--red);font-weight:600;margin:0;}
.ws-team-mehr{align-self:flex-start;margin-top:6px;}

/* ---------- WISSEN/WHITEPAPER-BEREICH ---------- */
.ws-res{padding:70px 0;}
.ws-res h2{font-size:28px;color:var(--ink);margin-bottom:8px;}
.ws-untertitel{margin:0 0 30px;font-size:var(--ws-fs-lead);color:var(--ink-soft);text-transform:none;}

.ws-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 26px;}
.ws-chip{border:1px solid var(--line);border-radius:999px;background:var(--white);padding:6px 15px;font-size:13px;color:var(--ink);cursor:pointer;font-family:inherit;}
.ws-chip:hover{border-color:var(--yellow-deep);}
.ws-chip.aktiv{background:var(--ink);border-color:var(--ink);color:#fff;}

.ws-item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;}

/* Kachel = ein Wissens-Eintrag; .offen spannt beim Aufklappen über die volle Breite. */
.ws-kachel{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--white);}
.ws-kachel.offen{grid-column:1/-1;}
.ws-kopf{display:block;width:100%;text-align:left;border:none;background:none;padding:0;cursor:pointer;font:inherit;color:inherit;}

/* Feature-Karte (neuestes Element): Bild/Verlauf links, Text rechts - Abschnitt 3 der Spezifikation. */
.ws-kachel-featured{grid-column:1/-1;margin-bottom:4px;}
.ws-kachel-featured .ws-kopf{display:grid;grid-template-columns:1.2fr 1fr;}
.ws-featured-bild{position:relative;min-height:280px;background:linear-gradient(150deg,var(--yellow),var(--red));}
.ws-featured-bild img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.ws-badge-abs{position:absolute;top:20px;left:20px;background:var(--white);font-size:12px;font-weight:700;padding:6px 14px;border-radius:999px;color:var(--red-deep);}
.ws-featured-body{padding:40px;display:flex;flex-direction:column;justify-content:center;}
.ws-featured-body h2{font-family:'Anton',sans-serif;font-size:26px;text-transform:none;margin:0 0 14px;color:var(--ink);}
.ws-featured-body .ws-teaser{font-size:var(--ws-fs-body);color:var(--ink-soft);margin:0 0 4px;line-height:1.6;}
.ws-featured-body .ws-mehr{align-self:flex-start;display:inline-flex;align-items:center;margin-top:18px;padding:14px 26px;border-radius:10px;background:var(--red);color:var(--white);font-size:14px;font-weight:700;}

/* Kleine Karten (weitere Elemente): reiner Text, zentriert wie im Mockup. */
.ws-kachel-small .ws-kopf{padding:24px;min-height:120px;display:flex;flex-direction:column;justify-content:center;}
.ws-kachel-small .ws-badge{display:inline-block;font-size:11.5px;font-weight:700;color:var(--red-deep);background:var(--white);border:1px solid var(--line);border-radius:999px;padding:3px 12px;margin:0 0 8px;align-self:flex-start;}
.ws-kachel-small h2{font-size:16.5px;font-weight:700;text-transform:none;line-height:1.35;margin:0 0 6px;font-family:"Segoe UI",system-ui,-apple-system,sans-serif;}
.ws-kachel-small .ws-teaser{font-size:var(--ws-fs-small);color:var(--ink-soft);}
.ws-kachel-small .ws-mehr{align-self:flex-start;display:inline-flex;align-items:center;margin-top:12px;padding:10px 20px;border-radius:9px;background:var(--red);color:var(--white);font-size:13px;font-weight:700;}

.ws-teaser p{margin:0 0 6px;}
.ws-teaser p:last-child{margin-bottom:0;}
.ws-kachel.offen .ws-mehr{display:none;}

.ws-detail{border-top:1px solid var(--line);padding:26px 40px;background:var(--cream-bg);}
.ws-detail p{margin:0 0 10px;font-size:var(--ws-fs-body);}
.ws-fuerwen{font-size:var(--ws-fs-small);color:var(--ink-soft);}
.ws-fuerwen strong{color:var(--ink);}

.ws-aktionen{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px;}

/* E-Mail-Anforderung */
.ws-anfordern{margin-top:14px;border-top:1px solid var(--line);padding-top:14px;}
.ws-anfordern-zeile{display:flex;flex-wrap:wrap;gap:8px;}
.ws-anfordern input[type=email]{flex:1;min-width:200px;border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:13.5px;font-family:inherit;background:var(--white);}
.ws-anfordern input[type=email]:focus{outline:none;border-color:var(--red);}
.ws-einwilligung{display:flex;gap:8px;align-items:flex-start;margin-top:10px;font-size:var(--ws-fs-micro);color:var(--ink-soft);line-height:1.5;}
.ws-einwilligung input{margin-top:2px;}
.ws-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;}

.ws-ok{margin:0 0 16px;padding:12px 16px;border:1px solid #C9DBB8;border-radius:10px;background:#EDF3E7;font-size:var(--ws-fs-body);}
.ws-fehler{margin:0 0 16px;padding:12px 16px;border:1px solid #E8C9C5;border-radius:10px;background:#F5E4E3;font-size:var(--ws-fs-body);}
.ws-hinweis{margin-top:14px;background:var(--white);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-size:var(--ws-fs-micro);color:var(--ink-soft);line-height:1.55;}

/* Kleines "i" hinter dem sich ein Hinweistext verbirgt - identisches Muster zu .info-note im
   Dashboard (site/assets/style.css), hier mit ws-Praefix und den Farb-Tokens dieses Bereichs
   nachgebaut (Nutzer-Vorgabe 21.08.2026: "so haben wir das auch schon im Dashboard geregelt").
   Natives <details>/<summary>, kein JS noetig. */
.ws-info-note{position:relative;flex:0 0 auto;}
.ws-info-note summary{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);color:var(--ink-soft);font-size:11px;line-height:1;cursor:pointer;list-style:none;user-select:none;opacity:.7;transition:opacity .15s,border-color .15s,color .15s;}
.ws-info-note summary::-webkit-details-marker{display:none;}
.ws-info-note summary:hover,.ws-info-note[open] summary{opacity:1;border-color:var(--ink-soft);color:var(--ink);}
.ws-info-note-body{position:absolute;bottom:26px;left:0;z-index:5;width:260px;max-width:min(260px,80vw);background:var(--white);border:1px solid var(--line);border-radius:8px;padding:12px 14px;box-shadow:0 8px 24px rgba(45,45,45,.12);font-size:var(--ws-fs-micro);color:var(--ink-soft);line-height:1.55;}

/* Kontaktformular (kontakt.php) - Eingabestile uebernehmen die Werte von .ws-anfordern
   input[type=email] (10px Radius, var(--line)-Rahmen, var(--red) im Fokus), hier verallgemeinert
   fuer alle Feldtypen statt nur E-Mail. Formular + Kontaktwege-Karte stehen nebeneinander
   (.ws-kontakt-split) - das Formular nimmt sonst nur einen Teil der Seitenbreite ein
   (Nutzer-Feedback 21.08.2026), die Flaeche daneben zeigt jetzt E-Mail/Impact Hub Berlin. */
.ws-kontakt-split{display:flex;gap:44px;align-items:flex-start;}
.ws-kontakt-form{flex:1;min-width:0;display:flex;flex-direction:column;gap:18px;}
.ws-kf-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.ws-kf-feld{display:flex;flex-direction:column;gap:6px;font-size:var(--ws-fs-small);color:var(--ink-soft);font-weight:600;}
.ws-kf-feld input,.ws-kf-feld select,.ws-kf-feld textarea{border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:13.5px;font-family:inherit;color:var(--ink);background:var(--white);font-weight:400;}
.ws-kf-feld input:focus,.ws-kf-feld select:focus,.ws-kf-feld textarea:focus{outline:none;border-color:var(--red);}
.ws-kf-feld textarea{resize:vertical;min-height:110px;}
/* Absende-Zeile: Button + kleines "i" (siehe .ws-info-note unten) nebeneinander statt
   darunter (Nutzer-Feedback 21.08.2026: der bisherige Fliesstext-Hinweis war zu praesent). */
.ws-kf-absenden{display:flex;align-items:center;gap:10px;}
/* Kontaktwege-Karte neben dem Formular: reuses dieselbe .ws-ac-module-Icon+Titel+Text-Optik
   wie .ws-mod-grid (Kommunikation-Seite), aber als eigenstaendige, durch echten Abstand
   getrennte Karten statt nahtloser Grid-Zellen (Nutzer-Fund 21.08.2026: der bisherige
   2px-Trennstrich zwischen E-Mail- und Impact-Hub-Karte wirkte wie gar kein Abstand). Jede
   .ws-ac-module-Zelle bekommt hier deshalb einen eigenen Rahmen+Radius (nur in diesem
   Kontext, die Baukasten-/Kommunikation-Grids bleiben nahtlos). Google-Bewertungen bewusst
   NICHT hier (steht schon prominent im Hero-Badge). */
.ws-kontakt-wege{flex:0 0 320px;display:flex;flex-direction:column;gap:18px;}
.ws-kontakt-wege .ws-ac-module{border:1px solid var(--line);border-radius:16px;}
@media(max-width:900px){
  .ws-kontakt-split{flex-direction:column;}
  .ws-kontakt-wege{flex:none;width:100%;}
}
@media(max-width:600px){
  .ws-kf-row{grid-template-columns:1fr;gap:18px;}
}
.ws-leer{color:var(--ink-soft);font-size:var(--ws-fs-body);padding:26px 0;}

/* Artikel-Leseseite */
.ws-artikel{max-width:720px;padding:70px 0;}
.ws-artikel-meta{margin:2px 0 18px;font-size:var(--ws-fs-small);color:var(--ink-soft);}
.ws-artikel h1{margin:8px 0 2px;font-size:32px;font-weight:400;line-height:1.2;}
.ws-artikel-text p{margin:0 0 14px;font-size:var(--ws-fs-body);}
/* Abschnitts-Zwischenüberschriften in dichtem Fließtext (Rechtstexte wie Impressum) -
   bewusst NICHT die grosse Anton-Grossschreibung wie .ws-services h2 (zu "laut" für
   viele kurze Absaetze hintereinander), stattdessen wie .ws-kachel-small h2 die
   Systemschrift in kompakter Groesse. */
.ws-artikel-text h2{font-family:"Segoe UI",system-ui,-apple-system,sans-serif;font-weight:700;text-transform:none;font-size:18px;color:var(--ink);margin:28px 0 8px;}
.ws-artikel-text h2:first-child{margin-top:0;}
/* Eine Ebene unter .ws-artikel-text h2 - Unterabschnitte innerhalb eines Rechtstext-
   Kapitels (z.B. "Hosting und Server-Logfiles" innerhalb "III. Datenverarbeitung"). */
.ws-artikel-text h3{font-family:"Segoe UI",system-ui,-apple-system,sans-serif;font-weight:700;text-transform:none;font-size:15px;color:var(--ink);margin:22px 0 6px;}
.ws-artikel-text ul{margin:0 0 14px;padding-left:20px;}
.ws-artikel-text li{margin:0 0 6px;font-size:var(--ws-fs-body);}
.ws-zurueck{display:inline-block;margin:0 0 14px;font-size:var(--ws-fs-small);color:var(--ink-soft);text-decoration:none;}
.ws-zurueck:hover{color:var(--ink);}
.ws-badge{display:inline-block;font-size:11.5px;font-weight:700;color:var(--red-deep);background:var(--white);border:1px solid var(--line);border-radius:999px;padding:3px 12px;margin:0 0 8px;}

/* ---------- CTA — rot ---------- */
.ws-cta{background:var(--red);border-radius:22px;padding:56px;text-align:center;margin-bottom:70px;}
.ws-cta h2{font-size:28px;color:var(--white);margin-bottom:10px;}
.ws-cta p{color:#EAD3CE;font-size:var(--ws-fs-body);margin:0 0 24px;text-transform:none;}

/* ---------- FUSS ---------- */
.ws-fuss{padding:36px 0 50px;border-top:1px solid var(--line);}
.ws-fuss-row{display:flex;justify-content:space-between;font-size:var(--ws-fs-small);color:var(--ink-soft);flex-wrap:wrap;gap:10px;}
.ws-fuss a{color:var(--ink-soft);}
.ws-fuss-links{display:flex;flex-wrap:wrap;align-items:baseline;}
.ws-fuss-links a{margin-left:20px;}
.ws-fuss-hinweis{margin-left:20px;margin-top:0;color:var(--ink-soft);}
.ws-fuss-hinweis summary{cursor:pointer;color:var(--ink-soft);}
.ws-fuss-hinweis[open]{flex-basis:100%;margin-left:0;margin-top:8px;}
.ws-fuss-hinweis p{margin-top:8px;}

@media(max-width:900px){
  .ws-page{border-radius:0;}
  .ws-nav-toggle{display:flex;}
  .ws-topbar-mitte{display:none;position:absolute;top:100%;left:0;right:0;margin-top:20px;flex-direction:column;align-items:stretch;gap:18px;font-size:var(--ws-fs-lead);background:var(--white);border:1px solid var(--line);border-top:none;border-radius:0 0 14px 14px;padding:20px 22px 24px;box-shadow:0 12px 20px rgba(45,45,45,.08);z-index:20;}
  .ws-topbar-mitte.ws-offen{display:flex;}
  /* Dropdown im Burger-Panel: statisch aufgeklappt statt Hover, kein zweiter Klick nötig. */
  .ws-nav-item{padding-bottom:0;margin-bottom:0;display:flex;flex-direction:column;gap:12px;}
  .ws-nav-caret{display:none;}
  .ws-nav-drop{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:none;background:none;padding:0 0 0 16px;margin-top:0;min-width:0;gap:12px;}
  .ws-nav-drop a{padding:0;color:var(--ink-soft);}
  .ws-card-grid,.ws-item-grid{grid-template-columns:1fr;gap:0;}
  .ws-card{padding:18px 0;border-top:1px solid var(--line);}
  .ws-card:first-child{border-top:none;padding-top:0;}
  .ws-team-inner{flex-direction:column;align-items:stretch;padding:22px;gap:22px;}
  .ws-team-photo{flex:none;width:100%;}
  .ws-kachel-small{border-top:none;}
  .ws-item-grid{gap:16px;}
  .ws-hero h1{font-size:32px;}
  .ws-wrap{padding:0 22px;}
  .ws-hero,.ws-services,.ws-res,.ws-artikel,.ws-seite{padding:44px 0;}
  .ws-cta{padding:36px 24px;margin-left:22px;margin-right:22px;}
  .ws-photo-banner-inner{aspect-ratio:4/3;}
  .ws-photo-banner-overlay{padding:40px 24px 24px;}
  .ws-photo-banner-overlay blockquote{font-size:18px;}
  .ws-kachel-featured .ws-kopf{grid-template-columns:1fr;}
  .ws-featured-bild{min-height:200px;}
  .ws-featured-body{padding:28px;}
  .ws-featured-body h2{font-size:21px;}
  .ws-detail{padding:20px 22px;}
  .ws-fuss-row{flex-direction:column;}
}

@media(max-width:600px){
  .ws-featured-bild{min-height:150px;}
  .ws-featured-body{padding:22px;}
  .ws-featured-body h2{font-size:18px;margin-bottom:8px;}
  .ws-featured-body .ws-teaser{font-size:13.5px;margin-bottom:16px;}
  .ws-featured-body .ws-btn{padding:11px 20px;font-size:13px;}
}

/* ---------- BERATUNG (Angebot: Beratung & Workshops) - siehe HANDOFF.md ---------- */
.ws-mono{font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;}
/* Ersetzt zwei Stellen mit Inline-style="margin-bottom:0" (DESIGN.md-Verstoss, siehe
   .ws-stimmen-kopf und .ws-bk-head-row) durch eine Klasse. */
.ws-services-head-flush{margin-bottom:0;}

/* Kopfzeile "Der Baukasten": Text links (behaelt max-width:600px von .ws-services-head),
   rechts daneben ein austauschbares Deko-/Kennzahl-Element statt der vorher leeren
   Flaeche (Nutzer-Feedback 19.08.2026: "wo verlaeuft der Text, wirkt nicht wie Absicht"). */
.ws-bk-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:32px;flex-wrap:wrap;margin-bottom:44px;}
.ws-bk-head-row .ws-services-head{margin-bottom:0;}

/* Kreis: grosse Flaeche HINTER Kopftext und Akkordeon, nicht daneben (Nutzer-Feedback
   19.08.2026: "mindestens dreimal so gross, hinter das Element legen"). #baukasten
   traegt dafuer position:relative + overflow:hidden (Bleed bleibt auf den Abschnitt
   begrenzt), der Kreis selbst liegt mit negativem z-index hinter dem normalen Inhaltsfluss
   (Kopftext + Akkordeon-Karten), nicht nur hinter dem Gap-Kaestchen. */
/* z-index:0 (nicht nur position:relative) ist hier Pflicht: erst das erzeugt einen
   eigenen Stapelkontext, sonst rutscht der z-index:-1 des Kreises bis vor die Wurzel
   durch und landet hinter der kompletten weissen .ws-page-Karte statt nur hinter diesem
   Abschnitt - der Kreis war dadurch unsichtbar (Nutzer-Fund 19.08.2026). */
#baukasten{position:relative;z-index:0;overflow:hidden;}
.ws-bk-kreis-bg{position:absolute;top:-160px;right:-140px;width:620px;height:620px;border-radius:50%;background:var(--yellow);z-index:-1;}

/* Hero-Tapete als Parallax-Ebene: bewusst ueber den Hero-Rahmen hinaus vergroessert
   (top/bottom -90px), damit das Verschieben per Scroll (siehe beratung.php) nirgends eine
   Kante freilegt. Die Warm-Toenung liegt als eigene Ebene darueber (Nutzer-Entscheidung
   19.08.2026 fuer die "Warm"-Variante aus dem Vier-Wege-Vergleich). */
.ws-hero-parallax{position:absolute;left:0;right:0;top:-90px;bottom:-90px;z-index:1;will-change:transform;}
.ws-hero-tapete{display:block;width:100%;height:100%;}
.ws-hero-warm-tint{position:absolute;inset:0;z-index:1;background:var(--yellow);opacity:.16;mix-blend-mode:multiply;}
.ws-hero-scrim{position:absolute;inset:0;z-index:2;background:linear-gradient(100deg,var(--cream-bg) 0%,var(--cream-bg) 46%,rgba(251,246,235,.75) 60%,rgba(251,246,235,0) 78%);}

/* Hero-Foto: Foto deutlich groesser, bis zum rechten Rand, linke Kante ausgeblendet
   (mask-image) - darunter bleibt die Warm-Tapete sichtbar, kein harter Schnitt
   (Nutzer-Entscheidung 19.08.2026 fuer dieses Layout aus einem Drei-Wege-Vergleich). */
.ws-hero-photo-wide{position:absolute;top:0;right:0;bottom:0;width:68%;z-index:1;-webkit-mask-image:linear-gradient(to right,transparent,#000 22%);mask-image:linear-gradient(to right,transparent,#000 22%);}
.ws-hero-photo-wide img{width:100%;height:100%;object-fit:cover;display:block;}
/* ueber-uns.php: rechten, leeren Bildteil (Hintergrund/Baeume) etwas wegschneiden und naeher
   heranzoomen, damit Dominique im Ausschnitt praesenter ist (Nutzer-Feedback 21.08.2026). */
.ws-hero-photo-dominique img{object-position:32% 38%;transform:scale(1.15);transform-origin:32% 38%;}
/* kontakt.php: rechten, leeren Bildteil (Gebaeude/Himmel) wegschneiden, damit die beiden
   Personen im Ausschnitt praesenter sind (Nutzer-Feedback 21.08.2026, analog zu Dominique oben).
   KORREKTUR (Nutzer-Fund): eine vorherige Fassung nutzte einen NICHT-uniformen Scale
   (scaleX != scaleY), was das Bild in die Breite VERZERRTE statt es zu beschneiden - das war
   ein Fehler, nicht "Beschneiden ohne Verzerrung" (object-fit:cover behaelt das Seitenverhaeltnis
   IMMER bei; ein zusaetzlicher Transform muss deshalb uniform bleiben, sonst verzerrt er statt
   zu croppen). Jetzt uniformer Scale(1.12) wie beim ersten Entwurf; der Zoom-Wert ist durch die
   Vertikale gedeckelt (bei staerkerem uniformen Zoom wuerden Kopf oder Fuesse abgeschnitten -
   per Bildausschnitt-Vorschau ueberprueft, siehe HANDOFF.md). Fuer mehr Crop nach rechts bleibt
   deshalb nur, den Ursprung ganz an den linken Bildrand zu legen (object-position/transform-
   origin-x von 28% auf 0%) - das verschiebt den GESAMTEN, unveraenderten Crop-Betrag komplett
   auf die rechte Seite, ohne die Vertikale anzutasten. */
.ws-hero-photo-kontakt img{object-position:0% 42%;transform:scale(1.12);transform-origin:0% 42%;}

/* Mobiler Foto-Band-Ersatz fuer .ws-hero-photo-wide (aktuell nur beratung.php) - unter
   900px verschwindet das bleedende Desktop-Foto (siehe @media-Regel weiter unten), an
   seiner Stelle zeigt diese ruhige Karte zwischen Lead-Text und Buttons einen breiten
   Foto-Streifen. Nutzer-Entscheidung 22.08.2026 nach Live-Vergleich mehrerer Varianten
   (Badge/Hintergrund-Bleed/Ecke/Weissschleier voll-Karte-Verlauf) - "Band" gefiel am
   saubersten, siehe HANDOFF.md. */
.ws-hero-band-mobile{display:none;position:relative;margin:20px 0 4px;border-radius:16px;overflow:hidden;aspect-ratio:16/7;box-shadow:0 14px 28px -14px rgba(45,45,45,.3);}
.ws-hero-band-mobile img{width:100%;height:100%;object-fit:cover;object-position:center 32%;display:block;}

/* Grosser Riegel im Hero-Vordergrund (Startseite) - dasselbe freigestellte Produktfoto wie
   in der Tapete, hier einzeln und gross, IMMER 55 Grad gedreht (Nutzer-Vorgabe, feste
   Standard-Rotation fuer dieses Element, siehe HANDOFF.md - nicht frei waehlbar). Feste
   Pixel-Breite statt Prozent, damit die Rotations-Bounding-Box berechenbar bleibt und nicht
   am Hero-/Seitenrand hart abgeschnitten wird (Nutzer-Fund 19.08.2026: erste Fassung mit
   30%/max 340px ragte rechts+oben/unten über den Rand hinaus und wurde sichtbar
   "angebissen" statt weich zu wirken). Ab 1200px ausgeblendet statt erst ab 900px (bei
   1100px lag der Abstand zum Hero-Text nur noch bei ~7px, zu knapp - per
   getBoundingClientRect() in mehreren Breiten durchgemessen). */
.ws-hero-riegel-gross{position:absolute;top:50%;right:9%;width:190px;z-index:1;transform:translateY(-50%) rotate(55deg);filter:drop-shadow(0 24px 32px rgba(45,45,45,.22));}
@media(max-width:1200px){
  .ws-hero-riegel-gross{display:none;}
}

/* Modifikator fuer einen bewusst hohen Hero (Startseite/beratung.php/wissen.php, nicht
   generell auf .ws-hero). Bewusst ueber Innenabstand statt min-height/vh geloest - eine
   Bildschirmhoehen-Vorgabe liess auf hohen Monitoren die Logo-Zeile darunter komplett
   verschwinden (Nutzer-Feedback: "zu sehr gestreckt", Logos sollen unten anschneiden). */
.ws-hero-gross{padding:104px 0 84px;}
.ws-hero-gross h1{font-size:54px;}
@media(max-width:900px){
  .ws-hero-gross{padding:56px 0 44px;}
  .ws-hero-gross h1{font-size:34px;}
}

/* Baukasten: Themen-Cluster als Akkordeon (Register a la Aktenordner, siehe HANDOFF.md) */
.ws-ac-list{display:flex;flex-direction:column;gap:14px;}
.ws-ac-item{border:1px solid var(--line);border-radius:18px;background:var(--white);overflow:hidden;}
.ws-ac-head{width:100%;display:flex;align-items:center;gap:16px;text-align:left;background:none;border:none;cursor:pointer;padding:20px 24px;font:inherit;color:inherit;}
.ws-ac-head-text{flex:1;display:flex;flex-direction:column;gap:4px;}
.ws-ac-name{font-family:'Anton',sans-serif;font-size:19px;text-transform:uppercase;letter-spacing:.3px;}
.ws-ac-desc{color:var(--ink-soft);font-size:13.5px;}
.ws-ac-count{flex:none;background:var(--red);color:var(--white);font-size:12px;font-weight:700;padding:6px 14px;border-radius:999px;white-space:nowrap;}
.ws-ac-chevron{flex:none;width:22px;height:22px;transition:transform .25s ease;color:var(--ink-soft);}
.ws-ac-item.ws-offen .ws-ac-chevron{transform:rotate(180deg);}
.ws-ac-body{max-height:0;overflow:hidden;transition:max-height .3s ease;}
.ws-ac-item.ws-offen .ws-ac-body{max-height:900px;}
.ws-ac-modules{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;background:var(--line);border-top:1px solid var(--line);}
.ws-ac-module{background:var(--cream-bg);padding:22px 24px 24px;display:flex;gap:14px;}
.ws-ac-module h4{font-family:'Anton',sans-serif;font-weight:400;text-transform:none;font-size:16px;margin:0 0 6px;letter-spacing:0;}
.ws-ac-module p{color:var(--ink-soft);font-size:13.5px;margin:0;}
.ws-ac-grow{padding:6px 24px 22px;color:var(--ink-soft);font-size:13px;font-style:italic;}
.ws-modul-icon{flex:none;width:26px;height:26px;color:var(--red);margin-top:2px;}
.ws-modul-icon path,.ws-modul-icon circle,.ws-modul-icon rect{stroke:currentColor;fill:none;}
.ws-modul-icon .ws-gefuellt{fill:currentColor;stroke:none;}

/* Cross-Link zu den beiden anderen Angebots-Bereichen (Kommunikation/Events) */
.ws-cross-link{margin-top:30px;border:1.5px dashed var(--yellow-deep);border-radius:18px;padding:22px 26px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:var(--cream);}
.ws-cross-link-icon{flex:none;width:34px;height:34px;border-radius:50%;background:var(--red);color:var(--white);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;}
.ws-cross-link p{flex:1;min-width:240px;font-size:14.5px;margin:0;}
.ws-cross-link-actions{display:flex;gap:10px;flex-wrap:wrap;}

/* Prozess: Erstberatungs-Highlight (mit echtem Arbeitsfoto) + vier Schritte */
/* Ersetzt die vorherige volle Gelb-Bank durch eine kompakte Karte neben der
   Abschnitts-Ueberschrift (Nutzer-Entwurf 19.08.2026) - dasselbe Links-Text/
   Rechts-Element-Muster wie .ws-bk-head-row beim Baukasten, fuer Konsistenz. */
#prozess{padding-top:0;}
.ws-prozess-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:32px;flex-wrap:wrap;margin-bottom:44px;}
.ws-prozess-head-row .ws-services-head{margin-bottom:0;flex:1;min-width:280px;}
/* Breite = exakt zwei Kacheln aus .ws-prozess-grid darunter (4 Spalten, 22px Gap):
   zwei Spalten + eine Zwischenluecke = 50% - halber Gap (Nutzer-Vorgabe 19.08.2026). */
.ws-prozess-highlight-compact{flex:none;width:calc(50% - 11px);background:var(--yellow);border-radius:18px;padding:26px 28px;box-shadow:0 14px 30px -20px rgba(45,45,45,.35);}
.ws-prozess-highlight-compact .ws-schritt-num{color:var(--red);margin-bottom:8px;}
.ws-prozess-highlight-compact h3{font-size:22px;margin:0 0 10px;}
.ws-prozess-highlight-compact p{color:var(--ink);font-size:13.5px;margin:0 0 16px;}
.ws-prozess-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;position:relative;}
.ws-prozess-grid::before{content:"";position:absolute;top:34px;left:6%;right:6%;height:2px;background:repeating-linear-gradient(to right,var(--ink-soft) 0 8px,transparent 8px 16px);opacity:.35;z-index:0;}
/* Flex-Spalte, damit die Wochen-Pille unten buendig links sitzt statt direkt nach dem
   Text zu schweben - bei unterschiedlich langen Texten sonst auf vier verschiedenen
   Hoehen (Nutzer-Feedback 19.08.2026). */
.ws-schritt{position:relative;background:var(--cream-bg);border:1px solid var(--line);border-radius:18px;padding:24px 20px 22px;z-index:1;display:flex;flex-direction:column;align-items:flex-start;}
.ws-schritt-num{font-family:'Anton',sans-serif;font-size:46px;color:var(--yellow-deep);line-height:1;margin-bottom:6px;}
.ws-schritt h3{font-size:17px;margin:0 0 8px;}
.ws-schritt p{color:var(--ink-soft);font-size:13.5px;margin:0 0 12px;}
.ws-schritt .ws-mono{color:var(--red-deep);background:var(--yellow);padding:3px 8px;border-radius:999px;display:inline-block;margin-top:auto;}

/* Kundenstimmen - echte Rueckmeldungen, siehe assets/reviews/Testimonials.txt. Finale
   Form: Slider (Nutzer-Entscheidung 19.08.2026, "am allerbesten") - die Grid-Kachel-
   Variante ist raus. .ws-stimme-top/-person/-name/-rolle/-logo/.ws-zitat-* bleiben
   gemeinsame Bausteine, .ws-slide-foto ist bewusst 1:1 (quadratisch) UND rund, weil die
   Portraits selbst schon quadratisch mit einem eingeschriebenen Kreis sind - ein
   anderes Seitenverhaeltnis schneidet diesen Kreis seitlich an (Nutzer-Fund 19.08.2026). */
.ws-stimmen-kopf{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;}
.ws-stimme-top{display:flex;align-items:center;gap:14px;margin-bottom:18px;}
.ws-stimme-person{display:flex;flex-direction:column;flex:1;min-width:0;gap:2px;}
.ws-stimme-name{font-size:16px;font-weight:700;}
.ws-stimme-rolle{font-size:13px;color:var(--ink-soft);}
.ws-stimme-logo{flex:none;max-width:110px;max-height:46px;width:auto;height:auto;object-fit:contain;}
.ws-zitat-mark{font-family:'Anton',sans-serif;font-size:36px;color:var(--red);line-height:1;display:block;margin-bottom:4px;}

/* Slider: eine Stimme zeigt sich jeweils auf voller Breite, deshalb genug Platz fuer
   lange Zitate UND ein grosses Foto gleichzeitig. */
.ws-stimmen-slider{background:#F6DDC8;border-radius:24px;margin-top:40px;box-shadow:0 14px 30px -20px rgba(45,45,45,.4);overflow:hidden;}
.ws-slide{display:flex;align-items:center;gap:40px;padding:44px 48px 8px;}
.ws-slide[hidden]{display:none;}
.ws-slide-foto{flex:0 0 260px;aspect-ratio:1/1;border-radius:50%;overflow:hidden;}
.ws-slide-foto img{width:100%;height:100%;object-fit:cover;display:block;}
.ws-slide-text{flex:1;min-width:0;}
.ws-slide-text .ws-zitat-mark{font-size:48px;}
.ws-slide-text p.ws-zitat-text{font-size:19px;line-height:1.55;}
.ws-slide-text .ws-stimme-top{margin:22px 0 0;}
.ws-slide-text .ws-stimme-logo{max-width:150px;max-height:60px;}
.ws-slider-nav{display:flex;align-items:center;justify-content:center;gap:18px;padding:24px 32px 32px;}
.ws-slider-arrow{flex:none;background:var(--white);border:1px solid var(--line);width:38px;height:38px;border-radius:50%;font-size:20px;line-height:1;cursor:pointer;color:var(--ink);}
.ws-slider-arrow:hover{border-color:var(--red);color:var(--red);}
.ws-slider-dots{display:flex;align-items:center;gap:8px;}
.ws-slider-dot{width:9px;height:9px;border-radius:5px;background:var(--line);border:none;cursor:pointer;padding:0;transition:width .2s ease,background .2s ease;}
.ws-slider-dot.ws-aktiv{background:var(--red);width:22px;}

/* ---------- KOMMUNIKATION (Angebot: Kommunikation) - siehe HANDOFF.md ---------- */

/* Leistungs-Kacheln: flache 3-Spalten-Variante von .ws-ac-modules, reuses die
   .ws-ac-module-Kartenoptik 1:1 (Icon+Titel+Text) - Kommunikation hat 5 flache Module
   ohne Cluster-Gruppierung, deshalb kein Akkordeon wie bei beratung.php noetig. Das sechste
   Feld ist eine Cross-Link-Kachel zu beratung.php (Nutzer-Vorgabe 20.08.2026), deshalb der
   generische Inline-Link statt eines eigenen Buttons. */
.ws-mod-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden;}
.ws-inline-link{color:var(--red-deep);text-decoration:underline;text-underline-offset:2px;}
.ws-inline-link:hover{color:var(--red);}

/* LinkedIn-Circle: Foldout im selben Akkordeon-Look wie beratung.php (.ws-ac-item/
   .ws-ac-head/.ws-ac-body, Klasse dort schon definiert) - Nutzer-Entscheidung 20.08.2026
   ("B an dieser Stelle", "koennte das auch ein Foldout sein?"). Kopfzeile bekommt einen
   Farb-Akzent (Nutzer-Feedback 20.08.2026: "sollte der Header auch zu sehen sein, dass das
   aufklappt"), damit sie sich von den schlichten Modulen darueber abhebt statt zu
   verschwimmen. */
.ws-ac-head-akzent{background:var(--cream);}
.ws-ac-head-akzent .ws-ac-count{background:var(--red-deep);}
/* Abstand zum Leistungen-Grid darueber - ohne eigene Sektion (das Foldout haengt direkt
   unter .ws-mod-grid) fehlt sonst jeder Zwischenraum (Nutzer-Fund 20.08.2026: "der Abstand
   ist falsch"). Ueber data-cluster statt einer neuen Klasse gescoped, damit die
   gemeinsame .ws-ac-item-Basisregel (auch von beratung.php genutzt) unberuehrt bleibt. */
[data-cluster="circle"]{margin-top:32px;}

/* Grosser, informativerer Foldout-Inhalt (Nutzer-Vorgabe 20.08.2026: "Foldout etwas
   groesser machen, Inhalt darunter etwas groesser machen") - links zwei Themen-Gruppen mit
   den echten Call-Inhalten aus der Praesentation, rechts Kurztext + Kennzahlen + CTA. Zwei
   Gruppen statt einer vierteiligen nummerierten Liste (Nutzer-Entscheidung 20.08.2026: die
   vier Punkte sind kein strenger linearer Ablauf, eine Nummerierung haette das
   faelschlich suggeriert). */
.ws-circle-big{display:flex;gap:44px;flex-wrap:wrap;background:var(--cream-bg);border-top:1px solid var(--line);padding:36px 32px;}
.ws-circle-big-links{flex:1.1;min-width:260px;}
.ws-circle-big-rechts{flex:1;min-width:260px;display:flex;flex-direction:column;gap:16px;}
.ws-circle-big-rechts p{margin:0;color:var(--ink-soft);font-size:13.5px;}

.ws-circle-stats-numbers{display:flex;gap:20px;flex-wrap:wrap;}
.ws-circle-stat{flex:1;min-width:88px;text-align:center;}
.ws-circle-stat .ws-schritt-num{color:var(--red-deep);font-size:28px;margin-bottom:4px;}
.ws-circle-stat p{font-size:12px;color:var(--ink-soft);margin:0;}

.ws-circle-gruppen{display:flex;flex-direction:column;gap:26px;}
.ws-circle-gruppe-label{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--red-deep);margin-bottom:6px;}
.ws-circle-gruppe h5{font-family:'Anton',sans-serif;font-weight:400;text-transform:none;font-size:16px;margin:0 0 6px;}
.ws-circle-gruppe p{font-size:13px;color:var(--ink-soft);margin:0;line-height:1.55;}

/* Post-Fan "Unsere Posts hast du mit Sicherheit schon gelesen": schlichte, frei
   durchwischbare Bilderreihe - keine Rotation, keine Ueberlappung, keine Unterschrift
   (Nutzer-Vorgabe 20.08.2026, exakt nachgebaut nach mitgeschicktem Referenz-Screenshot:
   "Grafiken sind nebeneinander, nicht schraeg, keine Unterschrift, einfach nur die
   Bilder"). Rechter Rand blendet die letzte Karte weich aus (gleiche mask-image-Technik
   wie .ws-logos-track) - signalisiert passiv "hier geht's weiter", war Variante 1 im
   Vergleich mit einem expliziten Wisch-Hinweis und wurde vom Nutzer bevorzugt (20.08.2026).
   Bilder liegen im einheitlichen Format (300x490) vor - deckt sich seit 21.08.2026 exakt
   mit der Anzeigebreite (200px -> 400px -> 300px, 20.08.2026; Quellbilder urspruenglich
   nur 230px breit und dadurch hochskaliert/unscharf, vom Nutzer 21.08.2026 in 300px
   Breite nachgeliefert - siehe HANDOFF.md). */
.ws-post-fan{display:flex;gap:18px;overflow-x:auto;padding:8px 24px 28px;cursor:grab;scrollbar-width:none;touch-action:pan-x;-webkit-mask-image:linear-gradient(90deg,#000 0,#000 88%,transparent 100%);mask-image:linear-gradient(90deg,#000 0,#000 88%,transparent 100%);}
.ws-post-fan::-webkit-scrollbar{display:none;}
.ws-post-fan.ws-dragging{cursor:grabbing;}
.ws-post-fan-img{flex:none;width:300px;height:auto;border-radius:14px;display:block;pointer-events:none;}

/* Ueberschrift ohne die globale 600px-Deckelung von .ws-services-head - der Satz ist eine
   einzelne kurze Zeile und soll auch als solche stehen, nicht unnoetig umbrechen (Nutzer-
   Fund 21.08.2026: "die ist zweizeilig, obwohl sie sehr kurz ist"). Scoped auf #post-fan,
   damit die anderen .ws-services-head-Vorkommen ihre 600px behalten. Der Absatz darunter
   bekommt seine eigene, engere Lesebreite zurueck - nur die Ueberschrift soll die volle
   Breite nutzen. */
#post-fan .ws-services-head{max-width:none;}
/* 650px statt der globalen 600px: bei 600px brach der Satz auf drei Zeilen um, die dritte
   nur mit dem einzelnen Wort "Postings." (Nutzer-Fund 21.08.2026) - kein Ausrichtungs-
   Fehler (text-align war korrekt "start"/links), sondern ein reiner Zufall des
   Zeilenumbruchs bei dieser Breite. 650px bricht sauber auf zwei ausgeglichene Zeilen. */
#post-fan .ws-services-head p{max-width:650px;}

/* Post-Fan final: identischer Karten-Look (reuse .ws-post-fan-img), randlose Endlosschleife
   wie die Logo-Reihe (Inhalt im DOM verdoppelt, siehe PHP-Kommentar), aber per JS statt
   CSS-@keyframes bewegt (siehe Script unten) - noetig, damit sich die Reihe per Hover UND
   per Drag anhalten und manuell verschieben laesst (Nutzer-Vorgabe 21.08.2026). transform
   wird komplett vom Script gesetzt, hier nur Basis-Layout/Cursor. Ueberschrift davor nutzt
   das normale linksbuendige .ws-services-head, keine eigene Klasse noetig (Nutzer-Vorgabe
   21.08.2026 - eine zentrierte Version + vier Deko-Vergleichsvarianten wurden zuvor
   probiert und wieder verworfen). reduced-motion bekommt die manuelle Wisch-Reihe zurueck,
   Script bricht dafuer frueh ab. */
.ws-postfan-e-track{overflow:hidden;width:100%;padding:28px 0 4px;cursor:grab;touch-action:pan-y;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);}
.ws-postfan-e-track.ws-dragging{cursor:grabbing;}
.ws-postfan-e-slider{display:flex;gap:18px;width:max-content;}
@media(prefers-reduced-motion:reduce){
  .ws-postfan-e-track{overflow-x:auto;cursor:auto;}
}

/* Dashboard-Nachweis "Wir tracken auch": grosser Bildschirm, der von rechts ins Bild ragt
   (Nutzer-Vorgabe 20.08.2026: "sehr viel groesser, etwa 2/3 links sichtbar") - Bleed-Technik
   wie beim Hero-Foto (.ws-hero-photo-wide): eigene Sektion mit overflow:hidden, Bildschirm
   absolut positioniert AUSSERHALB von .ws-wrap, Text bleibt in .ws-wrap. Final auf ein
   Browser-Fenster gesetzt (Nutzer-Entscheidung 20.08.2026, war eindeutiger als
   Computerbildschirm erkennbar als eine Monitor-Illustration), Text explizit linksbuendig. */
/* min-height ist Pflicht: der Bildschirm ist absolut positioniert, zaehlt also NICHT zur
   Hoehe der Sektion, die sonst nur so hoch wie die Textspalte waere - dann schneidet
   overflow:hidden den Bildschirm oben/unten ab statt nur rechts (Nutzer-Fund 20.08.2026).
   640px deckt den groesstmoeglichen Bildschirm ab (66% von max. 1320px .ws-page-Breite). */
.ws-dash-proof-section{position:relative;overflow:hidden;min-height:640px;display:flex;align-items:center;}
/* .ws-wrap ist als Flex-Kind sonst nur so breit wie die Textspalte (shrink-to-fit) und
   landet dadurch mittig in der Section statt am Seitenrand wie bei allen anderen Sektionen
   (Nutzer-Fund 21.08.2026: "der Text vom Dashboard soll links liegen"). */
.ws-dash-proof-section > .ws-wrap{width:100%;}
.ws-dash-proof-bleed{position:absolute;top:50%;left:56%;transform:translateY(-50%);width:66%;max-width:920px;z-index:0;}
.ws-dash-proof-text{position:relative;z-index:1;max-width:460px;text-align:left;display:flex;flex-direction:column;gap:4px;}
.ws-dash-proof-text h2{margin-top:6px;}
.ws-dash-proof-text p{margin-top:8px;}

.ws-dash-proof-display{aspect-ratio:16/10;background:var(--cream-bg);border-radius:5px;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.ws-dash-proof-display img{width:100%;height:100%;object-fit:cover;display:block;}

.ws-dash-proof-browser{background:var(--white);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 34px 60px -24px rgba(45,45,45,.4);}
.ws-dash-proof-browser-bar{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--cream-bg);}
.ws-dash-proof-dot{width:9px;height:9px;border-radius:50%;flex:none;}
.ws-dash-proof-dot-rot{background:#EC6A5E;}
.ws-dash-proof-dot-gelb{background:var(--yellow-deep);}
.ws-dash-proof-dot-gruen{background:#61C454;}
.ws-dash-proof-url{margin-left:10px;font-size:11.5px;color:var(--ink-soft);background:var(--white);border:1px solid var(--line);border-radius:999px;padding:3px 12px;}
.ws-dash-proof-browser .ws-dash-proof-display{aspect-ratio:16/9;border:none;border-radius:0;}

/* Haekchen-Liste der Dashboard-Punkte aus der Praesentation (final, Nutzer-Entscheidung
   21.08.2026 - war Variante A von fuenf verglichenen, siehe HANDOFF.md). */
.ws-dash-proof-checks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.ws-dash-proof-checks li{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:var(--ink-soft);}
.ws-dash-proof-checks svg{flex:none;width:18px;height:18px;margin-top:1px;padding:2px;border-radius:50%;background:var(--red);color:var(--white);stroke:currentColor;fill:none;box-sizing:border-box;}

/* Mobil-Darstellung final ("Text ueber der Grafik", Nutzer-Vorgabe 21.08.2026) - nur unter
   900px sichtbar (Regel in der @media-Sektion), ersetzt dort die Desktop-Darstellung. War
   Variante B von drei verglichenen (A dunkler Scrim, C Verlauf unten - beide wieder
   entfernt, siehe PHP-Kommentar in kommunikation.php). Bild laeuft in normalem Fluss mit
   echtem Seitenverhaeltnis (komplett sichtbar, keine Hochskalierung - eine fruehere
   Fassung mit object-fit:cover in einer ueberhoehten Box hat das Bild verpixelt UND nur
   einen schmalen Ausschnitt gezeigt, Nutzer-Fund 21.08.2026). Die Karte ueberlappt das Bild
   klassisch von unten per negativem margin-top (-64px auf ein ~186px hohes Bild bei 331px
   Kartenbreite => Karte beginnt bei ~66% der Bildhoehe, "unteres Drittel"). Zwei
   Schatten-Ebenen (enger Kontaktschatten + groesserer weicher Schatten) sorgen dafuer, dass
   sich die Karte sichtbar abhebt (Nutzer-Fund 21.08.2026). H2 bekommt eine eigene
   Groessenangabe, weil dieser Block NICHT in .ws-services steckt (die globale
   ".ws-services h2"-Regel würde sonst nicht greifen). */
.ws-dpm-mobile-preview{display:none;}
.ws-dpm-stage{position:relative;overflow:hidden;border-radius:20px;margin:0 22px 40px;min-height:460px;box-shadow:0 20px 40px -18px rgba(45,45,45,.35);}
.ws-dpm-stage-b{display:block;overflow:visible;min-height:0;padding:0;box-shadow:none;}
.ws-dpm-img{width:100%;height:auto;display:block;border-radius:14px;}
.ws-dpm-karte{position:relative;z-index:2;margin:-64px 8px 0;width:auto;background:rgba(255,255,255,.72);backdrop-filter:blur(11px);-webkit-backdrop-filter:blur(11px);border-radius:18px;padding:22px 20px;box-shadow:0 3px 10px rgba(45,45,45,.28),0 26px 46px -14px rgba(45,45,45,.6);}
.ws-dpm-karte h2{font-size:26px;line-height:1.15;margin:6px 0 10px;}
.ws-dpm-karte p{margin:0 0 14px;}

/* Wiederverwendbares Muster fuer gestapelte, beschriftete Options-Vergleiche (z.B.
   Ueberschriften- oder Layout-Varianten vor einer Entscheidung) - allgemein gehalten,
   nicht nur fuer diese eine Stelle. */
.ws-variant{padding:22px 0;border-top:1px solid var(--line);}
.ws-variant:first-child{padding-top:0;border-top:none;}

/* Prozess mit nur 3 statt 4 Schritten (Kommunikation hat keinen vierten Schritt wie
   beratung.php) - eigener Modifikator statt .ws-prozess-grid zu veraendern, damit
   beratung.php unangetastet bleibt. */
.ws-prozess-grid-3{grid-template-columns:repeat(3,1fr);}

@media(max-width:900px){
  .ws-ac-modules{grid-template-columns:1fr;}
  .ws-ac-head{padding:16px 18px;flex-wrap:wrap;}
  .ws-prozess-highlight-compact{width:100%;}
  .ws-prozess-grid,.ws-prozess-grid-3{grid-template-columns:1fr 1fr;}
  .ws-prozess-grid::before{display:none;}
  .ws-mod-grid{grid-template-columns:1fr;}
  .ws-slide{flex-direction:column;align-items:center;gap:24px;padding:32px 28px 8px;}
  /* Bewusst grosszuegig (Nutzer-Vorgabe 19.08.2026: darf auf Mobil ruhig groesser
     werden, ein Anschneiden am unteren Kartenrand ist in Kauf genommen). */
  .ws-slide-foto{flex:none;width:80%;max-width:300px;}
  /* Alle drei Foto-Layouts unter 900px ausblenden - bei schmalem Screen bleibt sonst zu
     wenig Platz zwischen Foto und Textspalte, der Scrim reicht dort nicht zum Freistellen
     (Nutzer-Feedback 19.08.2026: Text auf schmalem Screen unlesbar). Uebrig bleibt die
     Warm-Tapete/-Toenung als reiner Farbhintergrund, immer lesbar. */
  .ws-hero-photo-wide{display:none;}
  .ws-hero-band-mobile{display:block;}
  /* Unter 900px reicht kein Platz mehr neben dem Text fuer den bleedenden Bildschirm in
     voller Groesse. Mehrere Mobil-Loesungen mit Text NEBEN/VOR dem Bild wurden probiert
     (Karte ueberlappt von unten, Karte vorne + Bild von rechts dahinter mit Luecke) - dem
     Nutzer gefiel keine davon ("gefaellt mir nicht", 21.08.2026). Die Desktop-Darstellung
     wird deshalb unter 900px komplett ausgeblendet, stattdessen erscheinen die drei
     .ws-dpm-*-Vergleichsvarianten weiter unten (Text DIREKT UEBER der Grafik statt
     daneben). */
  .ws-dash-proof-section{display:none;}
  .ws-dpm-mobile-preview{display:block;}
}
@media(max-width:600px){
  .ws-prozess-grid,.ws-prozess-grid-3{grid-template-columns:1fr;}
}

/* ---------- ÜBER UNS - siehe HANDOFF.md ---------- */

/* Foto-Credit: dezente Marke unten rechts im Bild, Text blendet per Hover/Fokus ein statt
   staendig zu stoeren. Braucht position:relative auf dem Eltern-Element (bei
   .ws-hero-photo-wide/.ws-photo-banner-inner bereits vorhanden). tabindex auf dem Span
   macht die Marke per Tastatur erreichbar (DESIGN.md "Fokus-Zustaende nicht vergessen");
   unter 900px kein Hover verfuegbar, deshalb Text dort dauerhaft sichtbar statt versteckt. */
.ws-photo-credit{position:absolute;bottom:12px;right:12px;z-index:3;display:inline-flex;align-items:center;gap:6px;background:rgba(45,45,45,.55);color:var(--white);border-radius:999px;padding:6px;line-height:1;cursor:default;}
.ws-photo-credit-icon{flex:none;width:14px;height:14px;opacity:.9;}
.ws-photo-credit-icon path,.ws-photo-credit-icon circle{stroke:currentColor;fill:none;}
.ws-photo-credit-text{max-width:0;overflow:hidden;white-space:nowrap;opacity:0;font-size:11.5px;transition:max-width .2s ease,opacity .2s ease;}
.ws-photo-credit:hover .ws-photo-credit-text,.ws-photo-credit:focus-within .ws-photo-credit-text{max-width:200px;opacity:1;margin-right:2px;}
@media(max-width:900px){
  .ws-photo-credit-text{max-width:200px;opacity:1;margin-right:2px;}
}

/* Geschichte: grosse Jahreszahl links (wiederverwendet .ws-schritt-num-Optik), Fliesstext
   rechts - bewusst kein eigener Kartenrahmen, da direkt unter dem Hero schon genug optische
   Trennung besteht. */
.ws-geschichte-row{display:flex;gap:48px;align-items:flex-start;}
.ws-geschichte-jahr{flex:0 0 150px;}
.ws-geschichte-jahr .ws-schritt-num{font-size:56px;color:var(--red);}
.ws-geschichte-jahr p{margin:2px 0 0;font-size:12.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em;}
.ws-geschichte-text{flex:1;max-width:680px;}
.ws-geschichte-text p{color:var(--ink);font-size:var(--ws-fs-lead);margin:0 0 16px;}
.ws-geschichte-text p:last-child{margin-bottom:0;}

/* Mission/Werte: 4-Spalten-Variante von .ws-card-grid, 4. Farbpunkt ergaenzt (die ersten
   drei nth-child-Regeln bestehen schon aus dem Leistungen-Grid auf index.php/wissen.php). */
.ws-card-grid-4{grid-template-columns:repeat(4,1fr);}
.ws-card:nth-child(4) .ws-dot{background:var(--red-deep);}

/* Team: eigenes Kartenraster mit rundem Portrait je Person - bewusst eigene Klassen
   (ws-team-card-*), nicht die .ws-team-*-Klassen der Startseiten-Teaser-Sektion
   wiederverwenden, da dort EIN gemeinsames Gruppenfoto + Liste statt drei Einzelkarten
   dargestellt wird (andere Struktur, siehe index.php). */
.ws-team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;}
.ws-team-card{text-align:center;}
/* Nutzer-Feedback 21.08.2026 (zweimal): Fotos etwas groesser als der urspruengliche
   150px-Entwurf, dann nochmal groesser (190px reichte dem Nutzer weiterhin nicht). */
.ws-team-card-photo{position:relative;width:240px;height:240px;border-radius:50%;overflow:hidden;margin:0 auto 18px;background:var(--cream-bg);}
.ws-team-card-photo img{width:100%;height:100%;object-fit:cover;display:block;}
/* Einzel-Zuschnitte je Foto (keine der drei Aufnahmen ist ein reines Studio-Portrait,
   deshalb pro Bild eigene object-position/Zoomstufe statt einer gemeinsamen Regel). Werte
   fuer Katharina/Lukas nach Nutzer-Feedback 21.08.2026 ("Gesicht zentrierter") nachjustiert. */
.ws-team-card-photo-dominique img{object-position:center 20%;}
.ws-team-card-photo-katharina img{object-position:center 28%;}
/* Lukas_Team.jpg zeigt ihn zusammen mit einer zweiten Person (Eventfoto) - object-position
   waehlt bewusst den linken Bildteil (er steht links im Foto), transform-origin ist relativ
   zur Box gerechnet, damit der Zoom exakt auf sein Gesicht zentriert (nicht auf den
   object-position-Ausschnittspunkt) - siehe HANDOFF.md fuer die Herleitung. */
.ws-team-card-photo-lukas img{object-position:0% 50%;transform:scale(2);transform-origin:39% 22%;}
.ws-team-card-name{font-weight:700;font-size:17px;color:var(--ink);margin:0 0 4px;}
.ws-team-card-role{font-size:13px;color:var(--red);font-weight:600;margin:0 0 12px;}
.ws-team-card-bio{font-size:var(--ws-fs-body);color:var(--ink-soft);margin:0;text-align:left;}

/* Netzwerke: EIN gemeinsames Info-Panel darunter, das per Klick auf einen Knoten den Inhalt
   wechselt - haelt die Seite trotz der bewegten Knoten bedienbar, kein einzeln
   aufklappendes Akkordeon pro Netzwerk. */
.ws-netz-panel{background:var(--cream-bg);border:1px solid var(--line);border-radius:20px;padding:32px 36px;}
.ws-netz-panel-name{font-family:'Anton',sans-serif;font-size:20px;text-transform:none;margin:0 0 10px;color:var(--ink);}
.ws-netz-panel-text{font-size:var(--ws-fs-body);color:var(--ink-soft);margin:0;line-height:1.65;}
.ws-netz-panel[hidden]{display:none;}

.ws-netz-node-base{border:none;background:none;padding:0;cursor:pointer;border-radius:50%;width:132px;height:132px;display:flex;align-items:center;justify-content:center;background:var(--white);box-shadow:0 8px 20px -8px rgba(45,45,45,.4);transition:box-shadow .15s ease,transform .15s ease;}
.ws-netz-node-base img{max-width:77%;max-height:77%;object-fit:contain;}
.ws-netz-node-base:hover{transform:scale(1.08);}
.ws-netz-node-base:focus-visible{outline:2px solid var(--red);outline-offset:3px;}
.ws-netz-node-base.ws-aktiv{box-shadow:0 0 0 3px var(--red),0 8px 20px -8px rgba(45,45,45,.4);}

/* "Verschmelzung": Blob-Ebene (gefiltert, dekorativ) UND Logo-Ebene (scharf) liegen exakt
   uebereinander (dieselben left/top-Werte, siehe PHP) - das Script haengt beiden denselben
   berechneten Transform an, dadurch "reiten" die Logos sichtbar auf den verschmelzenden
   Blobs statt selbst zu verzerren. filter:url(#ws-goo) braucht ein Composite-Umfeld ohne
   eigenen Blend-Kontext auf den Kindern, deshalb auf der ganzen Layer-Ebene statt einzeln
   je Blob. Element/Blobs/Logos nach WIEDERHOLTEM Nutzer-Feedback 21.08.2026 ("kaum
   erkennbar", dann nochmal "könnten größer sein") mehrfach vergroessert - inzwischen
   Node-Basis 64px->132px, Element 340px->600px hoch. */
.ws-netz-goo-wrap{position:relative;width:100%;height:600px;background:var(--cream-bg);border-radius:20px;overflow:hidden;}
.ws-netz-goo-layer{position:absolute;inset:0;filter:url(#ws-goo);}
.ws-netz-goo-blob{position:absolute;width:150px;height:150px;margin:-75px 0 0 -75px;border-radius:50%;background:var(--yellow-deep);}
/* Zentrum jetzt gelb statt rot - traegt die Marke "Riegel auf gelbem Kreis" (Nutzer-Vorgabe
   21.08.2026), der Riegel selbst liegt als eigenes, ungefiltertes Element daneben (siehe
   .ws-netz-goo-center-logo), nicht in diesem gefilterten Blob. */
.ws-netz-goo-blob.ws-netz-goo-center{width:230px;height:230px;margin:-115px 0 0 -115px;background:var(--yellow);left:50%;top:50%;}
.ws-netz-goo-logos{position:absolute;inset:0;}
.ws-netz-goo-logo{position:absolute;margin:-66px 0 0 -66px;}

/* Riegel-Logo im Zentrum: unfilterte Ebene ueber dem gelben Zentrums-Blob, Bildquelle ist
   das freigestellte Foto (600x1200, Hochformat), leicht gedreht fuer denselben "jaunty"
   Look wie das bestehende Header-Logo (marziplan-logo.png) statt stocksteif vertikal.
   Bewusst etwas groesser als der Blob-Durchmesser (leichtes Ueberbluten oben/unten) - das
   Header-Logo hat denselben Bleed-Look. */
.ws-netz-goo-center-logo{position:absolute;left:50%;top:50%;width:110px;margin:0 0 0 -55px;transform:translateY(-50%);z-index:2;pointer-events:none;}
.ws-netz-goo-center-logo img{width:100%;height:auto;display:block;transform:rotate(18deg);}

@media(max-width:900px){
  .ws-netz-goo-wrap{height:640px;}
  .ws-netz-node-base{width:100px;height:100px;}
  .ws-netz-goo-blob{width:112px;height:112px;margin:-56px 0 0 -56px;}
  .ws-netz-goo-blob.ws-netz-goo-center{width:172px;height:172px;margin:-86px 0 0 -86px;}
  .ws-netz-goo-logo{margin:-50px 0 0 -50px;}
  .ws-netz-goo-center-logo{width:82px;margin-left:-41px;}
}

@media(max-width:900px){
  .ws-geschichte-row{flex-direction:column;gap:16px;}
  .ws-geschichte-jahr{flex:none;display:flex;align-items:baseline;gap:10px;}
  .ws-geschichte-jahr .ws-schritt-num{font-size:36px;}
  .ws-card-grid-4{grid-template-columns:1fr;gap:0;}
  .ws-card-grid-4 .ws-card{padding:18px 0;border-top:1px solid var(--line);}
  .ws-card-grid-4 .ws-card:first-child{border-top:none;padding-top:0;}
  .ws-team-grid{grid-template-columns:1fr;gap:32px;}
  .ws-netz-panel{padding:24px 22px;}
}
/* ==========================================================================
   KAMPAGNE "WIRTSCHAFT WÄHLT BUNT" (wirtschaft-waehlt-bunt.php) - bewusst eigenes,
   dunkles Farbschema NUR für diese eine Seite (Nutzer-Vorgabe: "Farben dürfen andere
   sein"), trotzdem in dieser gemeinsamen Datei statt eigenem Stylesheet (DESIGN.md Regel
   3). Alle Klassen `wwb-`-präfixt, damit nichts mit dem Rest des Bereichs kollidiert.
   Nutzer-Feedback 03.09.2026: die weiße/cremefarbene Fläche außerhalb der dunklen
   Abschnitte (Kopf-/Fusszeile, Seiten-Rand) sah neben dem knalligen Kampagnen-Look "doof"
   aus - Kopf-/Fusszeile werden deshalb NUR auf dieser Seite über body.wwb-body mit
   umgefärbt (ws_seite_anfang() bekommt dafür den optionalen $bodyClass-Parameter, siehe
   _bootstrap.php), alle anderen Seiten bleiben unangetastet im Creme-Look. Akkordeon der
   Narrative UND der Materialien-Gruppen nutzt bewusst 1:1 die bestehenden
   .ws-ac-*-Klassen + deren Toggle-Skript (helle Karte auf dunklem Grund) statt eigener
   Komponente - siehe wirtschaft-waehlt-bunt.php. */
.wwb-section{--wwb-bg:#141117;--wwb-bg-alt:#1C1721;--wwb-mint:#4CDC9C;--wwb-mint-deep:#34B87E;--wwb-ink:#F5F1E8;--wwb-ink-soft:#B7AFC4;--wwb-line:#332C3D;background:var(--wwb-bg);padding:70px 0;}
.wwb-section-alt{background:var(--wwb-bg-alt);}
.wwb-section h1,.wwb-section h2,.wwb-section h3{color:var(--wwb-ink);}
.wwb-section p{color:var(--wwb-ink-soft);}
.wwb-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:var(--ws-fs-micro);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--wwb-mint);margin-bottom:18px;}
.wwb-btn-mint{background:var(--wwb-mint);color:#141117;}
.wwb-btn-mint:hover{background:var(--wwb-mint-deep);color:var(--wwb-ink);}
.wwb-btn-outline{border:1.5px solid var(--wwb-ink);color:var(--wwb-ink);background:transparent;}
.wwb-btn-outline:hover{border-color:var(--wwb-mint);color:var(--wwb-mint);}
.wwb-dl-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;}

/* Kopf-/Fusszeile umfärben (nur body.wwb-body, siehe Kommentarkopf oben). Die Elemente
   selbst bleiben strukturell die gemeinsamen .ws-topbar/.ws-fuss - nur Flächen-/Text-/
   Rahmenfarben werden hier für diese eine Seite überschrieben. */
body.wwb-body{background:#141117;}
body.wwb-body .ws-page{background:#141117;box-shadow:none;}
body.wwb-body .ws-topbar{border-bottom-color:#332C3D;}
/* marziplan-logo.png ist ein Kreis exakt einbeschrieben in ein WEISSES (nicht
   transparentes) Quadrat - auf hellem Grund unsichtbar, auf dieser dunklen Seite als
   Rahmen sichtbar (Nutzer-Feedback 03.09.2026). Kreis-Clip statt Bilddatei-Fix, damit die
   sitesweit geteilte Logo-Datei unangetastet bleibt. */
body.wwb-body .ws-marke-icon{border-radius:50%;}
body.wwb-body .ws-topbar-mitte{color:#B7AFC4;}
body.wwb-body .ws-topbar-mitte a:hover{color:#F5F1E8;}
body.wwb-body .ws-nav-drop a:hover{color:var(--red);}
body.wwb-body .ws-nav-toggle span{background:#F5F1E8;}
body.wwb-body .ws-fuss{border-top-color:#332C3D;}
body.wwb-body .ws-fuss-row{color:#B7AFC4;}
body.wwb-body .ws-fuss a{color:#B7AFC4;}
body.wwb-body .ws-fuss a:hover{color:#F5F1E8;}

/* ---------- HERO + COUNTDOWN ---------- */
.wwb-hero{padding:64px 0 70px;position:relative;overflow:hidden;}
.wwb-hero-row{display:flex;align-items:center;gap:56px;position:relative;z-index:1;}
.wwb-hero-text{flex:1;min-width:0;}
.wwb-hero h1{font-size:46px;line-height:1.08;}
.wwb-hero-lead{font-size:var(--ws-fs-lead);max-width:520px;margin-top:18px;}
.wwb-hero-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap;align-items:center;}
.wwb-hero-visual{flex:none;width:300px;}
.wwb-hero-visual img{width:100%;display:block;border-radius:18px;box-shadow:0 18px 40px rgba(0,0,0,.4);}

/* Mobil-Tapete: ersetzt die Desktop-Bildspalte (siehe 900px-Breakpoint) durch mehrere
   kleine, versetzt rotierte Grafiken lose im Hintergrund - analog zur Riegel-Tapete auf
   beratung.php/index.php (dieselbe Idee, hier per einfachen <img> statt SVG-Pattern, weil
   es nur 3 feste Positionen statt einer endlos kachelnden Fläche braucht). Nur <900px
   sichtbar, siehe Breakpoint. */
.wwb-hero-tapete{display:none;position:absolute;inset:-30px;z-index:0;pointer-events:none;}
.wwb-hero-tapete img{position:absolute;border-radius:14px;opacity:.15;}
.wwb-hero-tapete img:nth-child(1){width:170px;top:-20px;left:-40px;transform:rotate(-13deg);}
.wwb-hero-tapete img:nth-child(2){width:150px;top:110px;right:-36px;transform:rotate(10deg);}
.wwb-hero-tapete img:nth-child(3){width:140px;bottom:-40px;left:32%;transform:rotate(-7deg);}

/* Countdown steht rechts NEBEN dem Text (Nutzer-Vorgabe 03.09.2026), nicht mehr über dem
   Text - .wwb-warum-row ist der gemeinsame Flex-Container beider Spalten. Unter 900px
   stapelt sich das (Textspalte oben, Countdown darunter als eigene Reihe) - eigene, klar
   benannte Abstände in der @media-Regel statt der vorherigen, an dieser Stelle nicht mehr
   passenden margin-bottom. */
.wwb-warum-row{display:flex;gap:48px;align-items:flex-start;}
.wwb-warum-text{flex:1;min-width:0;}
.wwb-warum-text p{font-size:var(--ws-fs-lead);}
.wwb-warum-text p+p{margin-top:16px;}
.wwb-countdown{flex:none;width:230px;display:flex;flex-direction:column;gap:12px;}
.wwb-countdown-item{padding:10px 16px;border:1px solid var(--wwb-line);border-radius:12px;background:rgba(76,220,156,.07);}
.wwb-countdown-land{display:block;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--wwb-ink-soft);}
.wwb-countdown-tage{display:block;font-family:'Anton',sans-serif;font-size:21px;color:var(--wwb-mint);line-height:1.3;}
.wwb-countdown-datum{font-size:11px;color:var(--wwb-ink-soft);}

.wwb-regeln-list{margin-top:32px;display:flex;flex-direction:column;}
.wwb-regel{display:flex;gap:20px;padding:20px 0;border-top:1px solid var(--wwb-line);}
.wwb-regel:last-child{border-bottom:1px solid var(--wwb-line);}
.wwb-regel-num{flex:none;font-family:'Anton',sans-serif;font-size:22px;color:var(--wwb-mint);width:36px;}
.wwb-regel p{margin:0;color:var(--wwb-ink-soft);font-size:var(--ws-fs-body);}
.wwb-regel strong{color:var(--wwb-ink);}

/* ---------- MATERIALIEN: zwei Akkordeon-Gruppen (Sticker zuerst, dann Sharepics),
   Kopf zeigt eine einzelne Grafik als Vorschau statt Modul-Zähler - nutzt .ws-ac-item/
   -head/-body 1:1, nur der Kopf bekommt zusätzlich .wwb-mat-preview. ---------- */
.wwb-mat-list{margin-top:28px;}
.wwb-mat-preview{flex:none;width:64px;height:64px;border-radius:10px;object-fit:contain;background:#141117;}
.wwb-mat-body{padding:6px 24px 26px;}
.wwb-mat-body>p{margin:0 0 20px;font-size:var(--ws-fs-small);color:var(--ink-soft);}
.wwb-galerie-hinweis{font-size:var(--ws-fs-small);margin-bottom:20px;color:var(--wwb-ink-soft);}
.wwb-galerie-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;}
.wwb-galerie-item{display:block;border-radius:14px;overflow:hidden;border:1px solid var(--wwb-line);transition:transform .15s ease,border-color .15s ease;}
.wwb-galerie-item:hover{transform:translateY(-3px);border-color:var(--wwb-mint);}
.wwb-galerie-item img{width:100%;display:block;aspect-ratio:1/1;object-fit:contain;background:var(--wwb-bg);}
.wwb-mat-body .wwb-dl-row{margin-top:22px;}

.wwb-post-card{margin-top:28px;background:var(--wwb-bg);border:1px solid var(--wwb-line);border-radius:18px;padding:28px 28px 24px;position:relative;}
.wwb-post-text{white-space:pre-wrap;font-family:inherit;color:var(--wwb-ink);font-size:var(--ws-fs-body);line-height:1.7;margin:0;}
.wwb-copy-btn{position:absolute;top:20px;right:20px;}
.wwb-copy-btn.wwb-kopiert{background:var(--wwb-mint-deep);color:var(--wwb-ink);}

/* Narrative-Akkordeon: nutzt .ws-ac-item/-head/-body/-chevron 1:1 (helle Karte auf
   dunklem Grund, siehe oben) - nur der Body-Inhalt ist hier einfacher (Bild+Text statt
   Modul-Grid), deshalb zwei eigene Klassen statt .ws-ac-modules/.ws-ac-module. Bild ist
   der zum Narrativ passende STICKER (Nutzer-Vorgabe 03.09.2026), nicht das Sharepic. */
.wwb-ac-body-inner{padding:6px 24px 26px;display:flex;gap:22px;align-items:flex-start;}
.wwb-ac-thumb{flex:none;width:96px;border-radius:10px;display:block;}
.wwb-ac-body-inner p{margin:0;color:var(--ink-soft);font-size:var(--ws-fs-body);}
@media(max-width:600px){
  .wwb-ac-body-inner{flex-direction:column;}
  .wwb-ac-thumb{width:72px;}
}

.wwb-narrative-list{margin-top:28px;}
.wwb-cta-actions{justify-content:center;}

/* "Warum keine Nachhaltigkeit"-Hinweis: jetzt dieselbe Akkordeon-Optik wie die Narrative
   (.ws-ac-item, siehe oben), nur grün eingefärbt statt weiß - Nutzer-Vorgabe 03.09.2026,
   analog zum bestehenden .ws-ac-head-akzent-Muster (Cream-Variante auf kommunikation.php). */
.wwb-ac-gruen{background:var(--wwb-mint);border-color:var(--wwb-mint-deep);margin-top:24px;}
/* .wwb-ac-body-inner p verwendet sonst var(--ink-soft) (helles Graubraun, für weiße
   Karten gedacht) - auf Mint-Grün fast unlesbar (Nutzer-Feedback 03.09.2026). Dunkler
   Text, dieselbe Farbe wie die Mint-CTA weiter unten nutzt. */
.wwb-ac-gruen .wwb-ac-body-inner p{color:#141117;}

/* ---------- LOGO-WAND (mitmachende Unternehmen/Menschen) - Struktur schon fertig,
   Platzhalter-Kacheln bis echte Logos/Namen vorliegen (analog zu den Platzhalter-
   Kundenstimmen auf beratung.php vor deren Freigabe) - NICHT live schalten, bevor
   echte Logos eingesetzt sind. ---------- */
.wwb-logos-grid{margin-top:28px;display:grid;grid-template-columns:repeat(6,1fr);gap:14px;}
.wwb-logo-platzhalter{aspect-ratio:1/1;border:1.5px dashed var(--wwb-line);border-radius:14px;display:flex;align-items:center;justify-content:center;color:var(--wwb-ink-soft);font-size:11px;text-align:center;padding:8px;}

.wwb-cta{background:var(--wwb-mint);border-radius:22px;padding:56px;text-align:center;}
.wwb-cta h2{font-size:28px;color:#141117;margin-bottom:10px;}
.wwb-cta p{color:#1D3A2C;font-size:var(--ws-fs-body);margin:0 0 24px;max-width:560px;margin-left:auto;margin-right:auto;}
.wwb-btn-outline-dark{border:1.5px solid #141117;color:#141117;background:transparent;}
.wwb-btn-outline-dark:hover{background:#141117;color:var(--wwb-mint);}
.wwb-cta-hash{display:block;margin-top:18px;font-family:'Anton',sans-serif;font-size:15px;letter-spacing:.02em;color:#141117;}

@media(max-width:900px){
  .wwb-hero-row{display:block;}
  .wwb-hero-visual{display:none;}
  .wwb-hero-tapete{display:block;}
  .wwb-hero h1{font-size:36px;}
  .wwb-warum-row{flex-direction:column;gap:28px;}
  .wwb-countdown{width:100%;flex-direction:row;flex-wrap:wrap;}
  .wwb-countdown-item{flex:1 1 160px;}
  .wwb-galerie-grid{grid-template-columns:repeat(3,1fr);}
  .wwb-cta{padding:36px 24px;}
  .wwb-logos-grid{grid-template-columns:repeat(3,1fr);}
}
@media(max-width:600px){
  .wwb-galerie-grid{grid-template-columns:repeat(2,1fr);}
  .wwb-logos-grid{grid-template-columns:repeat(2,1fr);}
  .wwb-countdown{gap:10px;}
  .wwb-countdown-item{flex-basis:100%;}
}

@media(max-width:600px){
  .ws-einsatz-mini-grid{grid-template-columns:1fr;}
  .ws-nt-item{gap:14px;}
}
