/* =========================================================================
   Leadesk — Redesign-Entwurf (inspiriert von humera.de: Layout, Animationen,
   Aufbau). ADDITIVE Datei — ergänzt assets/leadesk.css, ersetzt nichts.
   Muss NACH leadesk.css eingebunden werden.
   Farben/Radien/Ease kommen bewusst aus den bestehenden Custom Properties
   in :root (--navy, --cyan, --grad, --radius, --ease, ...) — keine neuen
   Marken-Farben. Alle Animationen fallen automatisch unter die bestehende
   globale prefers-reduced-motion-Regel in leadesk.css (*{animation:none!important}).
   ========================================================================= */

/* ---------- zusätzliche Reveal-Delays (bestehendes .reveal-System) ---------- */
.reveal.d4{transition-delay:.32s}
.reveal.d5{transition-delay:.40s}

/* ---------- 1) Mobile-Navigation: Vollbild-Overlay (humera-Hamburger-Menü) ----------
   Bestehende Seite hat aktuell KEINEN Ersatz für .nav-links unter 900px —
   echte Lücke, kein rein kosmetischer Punkt. */
.nav-burger{display:none;align-items:center;justify-content:center;width:40px;height:40px;
  background:none;border:none;cursor:pointer;padding:0;color:var(--ink);border-radius:10px}
.nav-burger:hover{background:var(--bg-soft)}
.nav-burger svg{display:block}
@media(max-width:900px){.nav-burger{display:inline-flex}}

.nav-overlay{position:fixed;inset:0;background:#fff;z-index:200;display:flex;flex-direction:column;
  padding:104px 24px 40px;transform:translateY(-10px);opacity:0;visibility:hidden;
  transition:opacity .28s var(--ease),transform .28s var(--ease);overflow-y:auto}
.nav-overlay.open{opacity:1;visibility:visible;transform:none}
.nav-overlay .wrap{width:100%}
.nav-overlay-list{display:flex;flex-direction:column}
.nav-overlay-list > a,.nav-overlay-list > div > .nav-ov-trigger{display:flex;align-items:center;justify-content:space-between;
  padding:18px 2px;font-size:23px;font-weight:800;color:var(--ink);border-bottom:1px solid var(--border);letter-spacing:-.01em}
.nav-overlay-list .nav-ov-sub{display:flex;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .3s var(--ease)}
.nav-overlay-list .nav-ov-group.open .nav-ov-sub{max-height:400px}
.nav-overlay-list .nav-ov-sub a{padding:12px 2px 12px 14px;font-size:16.5px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border)}
.nav-overlay-list .nav-ov-trigger svg{transition:transform .25s var(--ease);color:var(--muted)}
.nav-overlay-list .nav-ov-group.open .nav-ov-trigger svg{transform:rotate(180deg)}
.nav-overlay-cta{margin-top:28px;display:flex;flex-direction:column;gap:12px}
.nav-overlay-cta .btn{text-align:center;padding:15px 22px;font-size:16px}
body.nav-locked{overflow:hidden}

/* ---------- 3) Wort-für-Wort Scroll-Reveal (humeras Scroll-Text-Effekt) ----------
   Reines JS ohne Bibliothek: leadesk-redesign.js setzt pro Wort ein Opacity-
   Inline-Style anhand der Scroll-Position. Bei reduced-motion bleibt alles
   sofort voll sichtbar (siehe JS). */
.word-reveal{font-size:clamp(1.5rem,3.4vw,2.6rem);font-weight:800;letter-spacing:-.02em;line-height:1.25;color:var(--border)}
.word-reveal .w{color:var(--ink);opacity:.16;transition:opacity .05s linear;display:inline-block}
.word-reveal .w.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text}
.word-reveal .w.grad{-webkit-text-fill-color:transparent}

/* ---------- 4) Marquee / Vertrauens-Leiste (reines CSS, kein JS) ---------- */
.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.marquee-track{display:flex;gap:52px;width:max-content;animation:marquee 26s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.marquee-track .mitem{display:inline-flex;align-items:center;gap:10px;font-weight:700;color:var(--muted);
  font-size:14.5px;white-space:nowrap}
.marquee-track .mitem span:first-child{font-size:17px}

/* ---------- 5) Fade-Mask-Vorschau in Feature-/Modul-Karten ---------- */
.tile-preview{margin-top:16px;border-radius:12px;background:var(--bg-soft);border:1px solid var(--border);
  padding:12px 14px;-webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);
  mask-image:linear-gradient(to bottom,#000 55%,transparent 100%);max-height:118px;overflow:hidden}
.tile-preview .tp-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12.5px;color:var(--ink);font-weight:600}
.tile-preview .tp-row .dot{width:7px;height:7px;border-radius:50%;background:var(--acc,var(--cyan));flex:0 0 auto}

/* ---------- 6) Karussell mit "Peek"-Karten + Punkte (erweitert .gal/.gcard) ---------- */
.gal[data-carousel] .gcard{opacity:.5;transform:scale(.94);transition:opacity .4s var(--ease),transform .4s var(--ease)}
.gal[data-carousel] .gcard.is-active{opacity:1;transform:scale(1)}
.gal-dots{display:flex;gap:8px;justify-content:center;margin-top:6px}
.gal-dots button{width:8px;height:8px;border-radius:50%;background:var(--border);border:none;padding:0;cursor:pointer;
  transition:background .2s var(--ease),transform .2s var(--ease)}
.gal-dots button.on{background:var(--grad);transform:scale(1.35)}

/* ---------- 7) Segmentierte Zielgruppen-Tabs (nutzt bestehendes .seg) ---------- */
.persona-tabs .seg{margin-bottom:28px}
.persona-panels{position:relative}
.persona-panel{display:none;background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:36px;box-shadow:var(--shadow);border-top:3px solid var(--acc,var(--navy))}
.persona-panel.show{display:grid;grid-template-columns:1.1fr .9fr;gap:32px;align-items:center}
@media(max-width:760px){.persona-panel.show{grid-template-columns:1fr}}
.persona-panel h3{font-size:26px;margin-bottom:10px}
.persona-panel p{color:var(--muted);font-size:15.5px}
.persona-stat{background:var(--bg-soft);border-radius:var(--radius-sm);padding:22px;text-align:center}
.persona-stat .n{font-size:clamp(2rem,4vw,2.8rem);font-weight:800}
.persona-stat .l{font-size:13px;color:var(--muted);margin-top:4px}

/* ---------- 8) Story-Panel: getönte Fläche, Wort-Reveal + KI-Schalter-Demo ---------- */
.story-panel{border-radius:28px;padding:72px 40px;position:relative;overflow:hidden}
.story-panel.tinted{background:linear-gradient(165deg,var(--tint-cyan) 0%,var(--tint-navy) 100%)}
.story-panel .kpis{margin-top:44px}

.ai-demo{display:flex;flex-direction:column;align-items:center;gap:28px;max-width:520px;margin:0 auto;text-align:center}
.ai-switch{width:64px;height:36px;border-radius:999px;background:var(--border);position:relative;
  transition:background .5s var(--ease);flex:0 0 auto;cursor:default}
.ai-switch::after{content:"";position:absolute;top:3px;left:3px;width:30px;height:30px;border-radius:50%;
  background:#fff;box-shadow:var(--shadow);transition:transform .5s var(--ease)}
.ai-demo.on .ai-switch{background:var(--grad)}
.ai-demo.on .ai-switch::after{transform:translateX(28px)}
.ai-demo .checklist{text-align:left;width:100%}
.ai-demo .checklist li{opacity:.35}
.ai-demo.on .checklist li{opacity:1}

/* ---------- 9) Footer: dezente Punkt-Textur (nur Ziersektion, kein Bild) ---------- */
.dot-texture{position:relative}
.dot-texture::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.35) 1.5px,transparent 1.5px);
  background-size:22px 22px;opacity:.5;pointer-events:none}
.dot-texture.on-tint::before{background-image:radial-gradient(rgba(0,48,96,.16) 1.5px,transparent 1.5px)}

/* ---------- 10) Mobile-App-Bewerbung: Screenshot-Mock ("app-shot") + App-Store-Badge ----------
   Stilisierte Handy-Screen-Mockups, gleiche Bauweise wie die bestehenden .mock/.kb/.tasks-Mockups
   auf crm.html etc. — keine echten Screenshots eingebettet, nur Nachbau mit vorhandenen Farben. */
.app-shot{background:var(--bg-soft);border:1px solid var(--border);border-radius:22px;overflow:hidden;
  position:relative;width:78%;max-width:220px;aspect-ratio:9/17;max-height:320px;margin:0 auto 16px;box-shadow:var(--shadow);
  flex:0 0 auto}
.app-shot .as-notch{position:absolute;top:9px;left:50%;transform:translateX(-50%);width:56px;height:6px;
  border-radius:999px;background:var(--border);z-index:2}
.app-shot .as-inner{position:absolute;inset:0;padding:26px 12px 14px;display:flex;flex-direction:column;gap:8px}
.as-title{font-size:10px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:2px}
.as-row{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:9px;
  padding:7px 9px;font-size:11px;font-weight:700;color:var(--ink)}
.as-row .as-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--cyan)}
.as-row b{margin-left:auto;font-weight:800}
.as-chat{background:#fff;border:1px solid var(--border);border-radius:11px;padding:9px 11px;font-size:10.5px;
  color:var(--ink);line-height:1.4;max-width:88%}
.as-chat.me{margin-left:auto;background:var(--grad);color:#fff;border-color:transparent}
.as-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
.as-kpi{background:#fff;border:1px solid var(--border);border-radius:9px;padding:8px;text-align:center}
.as-kpi b{display:block;font-size:15px;font-weight:800;color:var(--ink)}
.as-kpi span{font-size:9px;color:var(--muted)}
.as-tabbar{margin-top:auto;display:flex;justify-content:space-around;padding-top:8px;border-top:1px solid var(--border)}
.as-tabbar span{width:16px;height:16px;border-radius:5px;background:var(--border)}
.as-tabbar span.on{background:var(--grad)}

/* App-Store-Badge: offizielles, live gehostetes Apple-Badge-SVG (Apple Media Services),
   keine Bild-Datei im Repo nötig, immer aktuell/lokalisiert. */
.app-badge{display:inline-flex;line-height:0}
.app-badge img{height:48px;width:auto;display:block}

/* ---------- 11) Mobile-Overflow: Grid-Items duerfen unter ihre Inhaltsbreite ----------
   .split ist ein Grid (1fr 1fr, s. leadesk.css). Grid-Items haben per Default
   min-width:auto und schrumpfen nicht unter ihren Inhalt. Das horizontal
   scrollbare Karussell (#appHomeGal) sprengt damit auf Mobil den Viewport
   (gemessen: Kind 1388px statt 358px). min-width:0 gibt das Schrumpfen frei;
   das Karussell scrollt weiterhin intern. */
.split > * { min-width: 0 }

@media(prefers-reduced-motion:reduce){
  .word-reveal .w{opacity:1!important}
}
