/* language.css */
/* The language control is the only addition to the existing page structure. */
.language-switch{display:flex;align-items:center;flex-shrink:0;gap:2px;padding:3px;border:1px solid var(--line);border-radius:24px;background:#fff}
.language-switch a{display:flex;align-items:center;justify-content:center;min-width:34px;min-height:32px;padding:3px 6px;border-radius:20px;color:#625970;font:600 12px/1.2 'DM Sans',sans-serif;text-decoration:none;transition:background .15s,color .15s}
.language-switch a[aria-current]{background:linear-gradient(110deg,#f0e3ff,#fde8f5);color:#7c25be}
.language-switch a:hover{background:#f4e8ff;color:#7325ad}
.language-switch a:focus-visible{outline:2px solid #9333ea;outline-offset:3px}
.nav{gap:18px}.nav-links{gap:18px}
@media(max-width:1320px){.nav-links{display:none}.burger{display:flex}.nav .logo{margin-right:auto}}
@media(max-width:600px){.nav{gap:10px}}
@media(max-width:420px){.wrap.nav{padding-left:16px;padding-right:16px;gap:6px}.nav .logo{font-size:14px;gap:3px}.nav .logo span{font-size:12px}.nav .logo .mark{width:26px;height:26px}.language-switch a{min-width:29px;min-height:30px;padding:3px 4px}.nav .burger{width:36px;height:36px;flex-shrink:0}}
/* features-overview.css */
/* Static overview illustration, scoped to the features hero. */
.phero.features-overview > .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:48px}
.features-overview .overview-art{margin:0;min-width:0;width:100%;max-width:540px;justify-self:end}
.features-overview .overview-art svg{display:block;width:100%;height:auto;overflow:visible}
@media(max-width:850px){.phero.features-overview > .wrap{grid-template-columns:1fr;gap:34px}.features-overview .overview-art{justify-self:center;max-width:480px}}
/* card-labels.css */
.fcard.has-addon-label{position:relative;padding-top:44px}.fcard.has-addon-label h3{padding-top:0}.fcard .addon-label{position:absolute;top:13px;right:17px;font-size:11px;line-height:1.4;font-weight:400;letter-spacing:0;text-transform:none;color:#9750c9;background:none;border:0;border-radius:0;padding:0;box-shadow:none}
/* a11y.css */
/* Kontrast-Korrekturen (WCAG 2.1 AA, 4,5:1 für normalen Text) – minimal abgedunkelt,
   Farbwelt der Designvorlage bleibt erhalten. Wird nach allen Vorlagen-Styles geladen. */
:root{--crm-gradient:linear-gradient(90deg,#9333ea 0%,#c026d3 50%,#db2777 100%)} /* vorher #d946ef/#ec4899: Weiß 3,46:1 */
.hero .hero-cta .trial{color:#736c79!important} /* vorher #78717e: 4,47:1 */
.preis-dark .fine{color:#6c6672} /* vorher #77707f: 4,09:1 */
/* Schriften: beide Dateien sind variable Fonts (Geist wght 100–900, DM Sans 100–1000).
   Die Vorlage deklarierte nur eine feste Stärke (800 bzw. 400) -> Browser fälschte Zwischen-/Fettstufen.
   Freigabe 29.09.2026. */
@font-face{font-family:Geist;src:url('/assets/geist.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:DM Sans;src:url('/assets/dm-sans.woff2') format('woff2');font-weight:100 1000;font-display:swap}
/* Zusatztext Online-Galerie (.gf-details): Absatz- und Zwischenüberschriften-Abstände
   (die Vorlage hat für Fließtext in .sec keine Abstände). ANNAHME 29.09. mit dem Text. */
.gf-details h2{margin:10px 0 18px}
.gf-details h3{margin:34px 0 10px;font-size:1.2rem;line-height:1.4}
.gf-details p{margin:0 0 14px;line-height:1.75;color:var(--ink-soft)}
/* Preis-Umschalter Jährlich/Monatlich (Freigabe Viktor 30.09.2026) */
.price-toggle{display:inline-flex;gap:4px;padding:4px;margin:18px 0 0;border:1px solid var(--line);border-radius:999px;background:#fff}
.price-toggle button{font:600 14px 'DM Sans',sans-serif;border:0;background:transparent;color:var(--ink-soft);padding:8px 16px;border-radius:999px;cursor:pointer}
.price-toggle button[aria-pressed="true"]{background:var(--violet-deep);color:#fff}
.price-toggle button:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
.price-toggle .save{font-size:12px;font-weight:700;margin-left:2px}
.plan [hidden]{display:none!important}

/* 30.09.2026: Hero-Claims leichter (vorher 800 aus design.css, dann 700) */
.hero-display,.phero-display{font-weight:500}

/* 30.09.2026: KI-Kennzeichnung – klein, aber lesbar (Art. 50 KI-VO) */
.photo{position:relative}
.ki-label{position:absolute;right:10px;bottom:8px;z-index:1;font:500 10px/1.2 "DM Sans",sans-serif;letter-spacing:.02em;color:#fff;background:rgba(20,14,28,.45);padding:2px 6px;border-radius:4px;pointer-events:none}

/* 30.09.2026: Rechtstabellen (AGB/Terms) auf dem Handy horizontal scrollbar statt Seitenüberlauf */
.legal-table{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}

/* 30.09.2026: Layout-Check (43 Seiten × 7 Breiten) */
/* Überschriften ohne einzelnes Wort in der letzten Zeile */
h1,h2,h3,.phero-display{text-wrap:balance}
/* Preis nie "39,99 / €" umbrechen */
.price b{white-space:nowrap}
@media(max-width:400px){.price b{font-size:3.3rem!important}}
/* Blog-Artikel: Text klebte am Rahmen */
article.legal-copy.post{padding:clamp(22px,4vw,56px)}
/* Handy: Hero-Bild lag unter dem Kleingedruckten der CTA */
@media(max-width:600px){.hero{min-height:0;padding-bottom:310px}.hero-art{inset:auto 0 30px;height:265px}}

/* 01.10.2026: Statusbox des Kontaktformulars (von Devops in design.css ergaenzt, 4fd43d4) - hier gesichert, weil design.css beim Build neu erzeugt wird */
.form-status{margin-top:20px;padding:16px 18px;border:1px solid;border-radius:12px;font-size:16px;font-weight:600;line-height:1.5}.form-status[data-state=success]{color:#176b3a;background:#edf9f1;border-color:#a9ddbb}.form-status[data-state=error]{color:#a42a2a;background:#fff1f1;border-color:#f1b7b7}

/* 02.10.2026: Footer auf schmalen Handys – Kontakt-Spalte über volle Breite, damit E-Mail und "Cookie-Einstellungen" nicht umbrechen */
@media(max-width:420px){.f-grid{gap:30px 16px}.f-grid>div:last-child{grid-column:1/-1}.f-grid a{font-size:14px}}

/* 02.10.2026: zweispaltiges Kartenraster (Tablet) – einzelne letzte Karte über die volle Breite */
@media(min-width:681px) and (max-width:940px){.g3>:last-child:nth-child(odd){grid-column:1/-1}}

/* 27.10.2026: Briefing „ChatGPT-Suche“ – Galerie-Seite (Tabelle, Kapitel) */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.video-chapters ol{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0}
.video-chapters a{display:inline-flex;gap:8px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;color:var(--ink);text-decoration:none;font-size:.95rem}
.video-chapters a:hover,.video-chapters a:focus-visible{border-color:var(--violet)}
.video-chapters time{font-variant-numeric:tabular-nums;color:var(--ink-soft)}
.gf-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;margin:24px 0 8px}
.gf-table{width:100%;border-collapse:collapse;font-size:.97rem;line-height:1.5}
.gf-table th,.gf-table td{text-align:left;vertical-align:top;padding:12px 14px;border-bottom:1px solid var(--line)}
.gf-table thead th{font-size:.85rem;letter-spacing:.04em;color:var(--ink-soft)}
.gf-table tbody th{white-space:nowrap}
@media(max-width:600px){.gf-table tbody th{white-space:normal}.gf-table th,.gf-table td{padding:10px 8px}}
/* 27.10.2026: Kundenansichten auf der Galerie-Seite */
.gf-shot{margin:22px 0 30px}
.gf-shot img{display:block;width:100%;height:auto;border-radius:12px;border:1px solid var(--line)}
.gf-shot figcaption{margin-top:8px;font-size:.85rem;color:var(--ink-soft)}
.gf-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.gf-steps span{display:block;margin-top:8px;font-weight:600;font-size:.92rem}
@media(max-width:700px){.gf-steps{grid-template-columns:1fr}}
/* 28.10.2026: Galerie-Seite nach Design-/QA-Review – Schritte gleich hoch, breitere Screenshots, Tabelle als Karten auf dem Handy */
#gallery-video{scroll-margin-top:100px}
.gf-shot{margin:28px 0 48px}
.gf-shot-narrow{max-width:520px}
.gf-steps{align-items:stretch}
.gf-steps img{aspect-ratio:1/1;object-fit:cover;object-position:top center;background:#fff}
@media(max-width:700px){.gf-steps{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:78%;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px}.gf-steps li{scroll-snap-align:start}}
.gf-table td{color:var(--ink-soft)}
.gf-table-wrap{margin-bottom:32px}
@media(max-width:600px){.gf-table thead{display:none}.gf-table,.gf-table tbody,.gf-table tr,.gf-table th,.gf-table td{display:block;width:auto}.gf-table tr{padding:14px 0;border-bottom:1px solid var(--line)}.gf-table tbody th,.gf-table td{padding:2px 0;border:0}.gf-table tbody th{font-size:1.05rem;margin-bottom:6px}.gf-table td+td{margin-top:8px}.gf-table td::before{content:attr(data-label);display:block;font-size:.8rem;letter-spacing:.04em;color:var(--ink-soft);font-weight:600}}
@media(max-width:600px){.video-chapters ol{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px}.video-chapters a{white-space:nowrap;font-size:.85rem;padding:6px 12px}}
/* 28.10.2026 (2): „Im Detail“ als Zeilen Text | Screenshot, Video auf Fensterhöhe, Hinweis unter den Buttons */
#galerie-video .wfs-player{max-width:min(100%,calc((100svh - 116px) * 16 / 9));margin-inline:auto}
.gf-trial,.phero p.gf-trial{margin:14px 0 0;font-size:15px;line-height:1.5;color:var(--ink-soft)}
.wfs-end .gf-trial{margin:0;text-align:center}
.gf-details .wrap{max-width:1180px}
.gf-intro{max-width:860px}
.gf-details h3{font-size:clamp(1.4rem,2.2vw,1.85rem);line-height:1.25;letter-spacing:-.02em;margin:0 0 14px}
.gf-row{margin-top:clamp(56px,7vw,96px)}
.gf-copy{max-width:760px}
.gf-media .gf-shot{margin:24px 0 0}
.gf-shot-narrow{max-width:360px;margin-inline:auto!important}
.gf-note{margin-top:clamp(56px,7vw,88px);max-width:860px;padding:24px 28px;border-left:3px solid var(--violet);background:var(--cream-deep);border-radius:12px}
.gf-note h3{font-size:1.15rem}
.gf-note p{font-size:.95rem;margin:0}
@media(min-width:1000px){
 .gf-row:not(.gf-row-full){display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:center}
 .gf-row.gf-row-rev{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.gf-row-rev .gf-copy{order:2}
 .gf-row:not(.gf-row-full) .gf-media .gf-shot:first-child{margin-top:0}
 .gf-row-full .gf-media .gf-shot{margin-top:28px}
 .gf-steps{gap:20px}}
@media(max-width:600px){.gf-shot-wide img{aspect-ratio:4/3;object-fit:cover;object-position:left top}}
/* 28.10.2026 (3): dritte Review-Runde – Achse, Abschlussblock, Tabellenlinks, Kapitel-Trefferflächen */
.wfs-end p.gf-trial{font-size:15px;line-height:1.5;max-width:none;margin:0}
.gf-trust,.wfs-end p.gf-trust{margin:22px auto 0;font-size:14px;line-height:1.5;color:var(--ink-soft);text-align:center}
.wfs-end-link{display:inline-flex;align-items:center;min-height:44px}
.gf-details .wrap{max-width:var(--wrap)}
.gf-details .wrap>*{max-width:1180px}
.gf-details .wrap>.gf-intro,.gf-details .wrap>.gf-note{max-width:860px}
.gf-copy{max-width:860px}
.gf-row{scroll-margin-top:100px}
.gf-table tbody th a{color:inherit;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}
.gf-table tbody th a:hover{text-decoration-color:var(--violet)}
.gf-note{border-radius:0 12px 12px 0}
.gf-steps+figcaption{margin-top:16px}
.video-chapters a{min-height:44px;align-items:center}
@media(max-width:600px){.gf-note{padding:20px}}
@media(min-width:601px) and (max-width:999px){.gf-row-rev .gf-media{display:grid;grid-template-columns:1.55fr 1fr;gap:20px;align-items:end}.gf-row-rev .gf-media .gf-shot{margin:24px 0 0!important;max-width:none}}
/* 27.10. Mobile Kopfzeile: Testen-Knopf statt Sprachumschalter; der Umschalter steht als erste Zeile im Burger-Menue. */
.nav .cta-kurz,.m-panel .m-lang{display:none}
@media(max-width:600px){.wrap.nav>.btn{display:inline-flex;align-items:center;height:40px;min-height:0;padding:0 14px;line-height:1;gap:6px;font-size:14px;white-space:nowrap;flex-shrink:0}.wrap.nav>.btn .cta-voll{display:none}.wrap.nav>.btn .cta-kurz{display:inline}.wrap.nav>.btn .arw{width:auto}.wrap.nav>.language-switch{display:none}.m-panel .m-lang{display:inline-flex;width:max-content;margin:0 0 10px}.m-panel .m-lang a{display:flex;font-size:13px;min-height:36px;min-width:44px;padding:4px 10px;border:0}}
@media(max-width:350px){.wrap.nav>.btn .arw{display:none}}
/* 29.10. Ergebnisse der Prüfung (Tester, Barrierefreiheit). Bedienziele auf dem Handy mindestens 44 px; bei Textlinks
   vergrößert eine unsichtbare Fläche das Ziel, ohne das Layout zu verschieben. Offenes Burger-Menü zeigt ×. */
.burger{position:relative}
.burger[aria-expanded="true"] svg{opacity:0}
.burger[aria-expanded="true"]::before,.burger[aria-expanded="true"]::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:1.6px;border-radius:1px;background:currentColor;transform:translate(-50%,-50%) rotate(45deg)}
.burger[aria-expanded="true"]::after{transform:translate(-50%,-50%) rotate(-45deg)}
.m-panel.open{max-height:calc(100vh - 72px);max-height:calc(100dvh - 72px);overflow-y:auto;overscroll-behavior:contain}
@media(max-width:760px){.home-text-link,.home-footnote-link{position:relative}.home-text-link::after,.home-footnote-link::after{content:"";position:absolute;inset:-11px -4px}.home-footnote-link::after{inset:-12px -10px}.price-toggle button{min-height:44px}.tour-pin::after{content:"";position:absolute;inset:-8px;border-radius:50%}}
@media(max-width:600px){.wrap.nav>.btn{height:44px}}
@media(max-width:420px){.nav .burger{width:44px;height:44px}}
/* 29.10. Paket 1b. Erster Bildschirm der Startseite kompakter: der Testen-Knopf rückt von ~452 auf ~370 px
   und bleibt auf den meisten Handys über dem Cookie-Banner sichtbar. */
@media(max-width:600px){.hero{padding-top:18px}.hero h1.key{margin-top:0;margin-bottom:10px}.hero .hero-display{font-size:clamp(2.3rem,9.6vw,3.4rem);margin-bottom:12px}.hero-lead{font-size:16px;line-height:1.5;margin-bottom:16px}}
/* Kopfzeile auf dem Handy deckend, sonst scheint Text durch */
@media(max-width:1000px){header{background:#fcfbf8}}
/* Laptops 1101–1320 px: Navigation statt Burger, "Startseite" entfällt (das Logo führt dorthin), Kopf-Knopf kurz */
@media(max-width:1320px) and (min-width:1101px){.nav-links{display:flex!important;gap:14px}.nav-links>a[href="/"],.nav-links>a[href="/en/"]{display:none}.burger{display:none!important}.wrap.nav>.btn .cta-voll{display:none}.wrap.nav>.btn .cta-kurz{display:inline}}
/* Zeilenumbrüche: keine einzelnen Wörter am Ende von Überschriften; feste <br> im Lead auf dem Handy aus */
h1,h2,h3,.hero-display,.phero-display{text-wrap:balance}
@media(max-width:600px){.phero p:not(.phero-display) br{display:none}}
/* Videokapitel auf Tablets in einer Reihe statt 4+1 */
@media(min-width:601px) and (max-width:999px){.video-chapters ol{display:grid;grid-template-columns:repeat(5,auto);justify-content:start}}
/* Pause-Knopf der Tour im Stil der Chips statt Browser-Standard */
.tour-toggle{-webkit-appearance:none;appearance:none;box-sizing:border-box;cursor:pointer;border-radius:999px;border:1px solid #e4e0e6;background:#fff;color:var(--ink-soft);font:500 12.5px/1 'DM Sans',sans-serif;min-height:32px}
.tour-toggle:hover{border-color:var(--violet)}
.tour-toggle:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
@media(max-width:760px){.tour-toggle,.tour-chip{min-height:44px}}
/* Kontrast der Hinweise unter den Preisen (4,18:1 -> 5,6:1) */
#preisdetails p,#preisdetails p strong{color:#675870}
/* Fußzeilen-Überschriften als Absatz (Überschriftenfolge), Aussehen wie bisher */
.f-grid .f-h{font-family:'DM Sans',sans-serif;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#bca9cf;margin:0 0 16px;font-weight:500;line-height:1.7}
/* Hero mobil: Dachzeile einzeilig und etwas weniger Abstand vor dem CTA, damit der CTA neben dem Cookie-Banner sichtbar bleibt */
@media(max-width:430px){.hero h1.key{font-size:11.5px;letter-spacing:.08em}.hero-lead{margin-bottom:12px}}
/* 06.11.2026 SEO R1: Block „So funktioniert's" auf Funktionsseiten (funktion_text.py) */
.ft-how h2{margin:10px 0 28px;max-width:28ch}
.ft-steps{list-style:none;counter-reset:ft;margin:0;padding:0;display:grid;gap:22px;max-width:820px}
.ft-steps li{counter-increment:ft;position:relative;padding-left:52px}
.ft-steps li::before{content:counter(ft);position:absolute;left:0;top:0;width:34px;height:34px;border-radius:50%;background:var(--violet-soft);color:var(--ink);font-weight:600;display:flex;align-items:center;justify-content:center;font-size:.95rem}
.ft-steps h3{margin:4px 0 6px;font-size:1.12rem;line-height:1.4}
.ft-steps p,.ft-outro{margin:0;line-height:1.75;color:var(--ink-soft);max-width:72ch}
.ft-outro{margin-top:28px}
/* FAQ-Antworten: keine Einzelwörter in der letzten Zeile */
.faq details p{text-wrap:pretty}
/* Sticky-CTA der Startseite ausblenden, solange das Handy-Menü offen ist (verdeckte sonst den letzten Menüpunkt) */
html:has(#mobile-nav:not([hidden])) .home-sticky-cta{display:none!important}
/* Preisumschalter und Preiszusatz nicht umbrechen */
.price-toggle button,.price>span{white-space:nowrap}
.price{flex-wrap:wrap;row-gap:2px}
/* Startseite 1001–1199 px: Lead und Testhinweis nicht über das Heldenbild laufen lassen */
@media(min-width:1001px) and (max-width:1199px){.hero .hero-lead,.hero .trial{max-width:28rem}}
/* 11.11. Blogartikel: Lesebreite ~70 Zeichen, Testkasten am Ende (Knopf ohne Link-Unterstreichung des Artikels) */
.legal-copy.post{max-width:42rem}
.legal-copy.post h1{font-size:clamp(1.75rem,3.6vw,2.6rem)}
.legal-copy.post .post-cta{margin:48px 0 0;padding:clamp(20px,3vw,32px);border:1px solid var(--line);border-radius:16px;background:var(--cream-deep)}
.legal-copy.post .post-cta p{margin:0 0 16px}
.legal-copy.post .post-cta .post-cta-title{font-size:1.25rem;line-height:1.35;font-weight:700;color:var(--ink);margin-bottom:6px}
.legal-copy.post .post-cta .btn{color:#fff;text-decoration:none}
/* 11.11. /preise, /en/pricing: Preiskarte näher an den Seitenkopf, damit Preis und Testen-Knopf früher sichtbar sind */
.phero + .sec:has(.plan-single){padding-top:clamp(28px,4vw,48px)}
.phero + .sec .plan-single{margin-top:0}
.phero:has(+ .sec .plan-single){padding-bottom:clamp(32px,4vw,48px)}
/* 11.11.2026 Gesamtaudit Paket C */
/* C3: Klickflächen mind. 24 px hoch (WCAG 2.2, 2.5.8) – unsichtbar per ::after vergrößert, kein Layoutsprung */
.f-grid a{min-height:24px}
.home-review figcaption a,.customer-quote figcaption a,.home-reviews-footer a,.home-gallery-top a,.gf-table tbody th a,.legal-copy ul a,.legal-copy p>a:only-child{position:relative}
.home-review figcaption a::after,.customer-quote figcaption a::after,.home-reviews-footer a::after,.home-gallery-top a::after,.gf-table tbody th a::after,.legal-copy ul a::after,.legal-copy p>a:only-child::after{content:"";position:absolute;inset:-4px -2px}
@media(min-width:761px){.home-text-link{position:relative}.home-text-link::after{content:"";position:absolute;inset:-4px -2px}}
/* Handy quer: Kopfzeile (sticky) 60 statt 87 px, Seitenkopf mit weniger Luft oben */
@media(orientation:landscape) and (max-height:500px){.nav{height:60px}.phero{padding-top:44px}}
/* Blog-Übersicht mit nur einem Beitrag: Karte breiter statt 2/3 Leerraum */
.fgrid>.fcard:only-child{grid-column:1/-1;max-width:760px}
/* Startseite Anfragen-Generator: fester Umbruch im H2 nur ab Tablet (auf dem Handy brach „Fotoshooting-/Anfragen“ hässlich) */
@media(max-width:600px){.home-marketing h2 br{display:none}}
/* 13.11.2026 Audit D6: Funktionsseiten ab 1024 px – weniger Luft im Seitenkopf, damit der Produktfilm schon im ersten Bildschirm anfängt
   (vorher bei 1366×768 komplett unter dem Rand). Textbreite 660 px (Einheitliche Textbreite) bleibt unverändert. */
@media(min-width:1024px){.wfs-hero{padding-top:52px}.wfs-hero.phero{padding-bottom:32px!important}.wfs-film{padding-top:32px}.wfs-film-heading{margin-bottom:20px}}
@media(min-width:1024px) and (max-height:820px){.wfs-hero{padding-top:36px}.wfs-hero .phero-display{font-size:clamp(2.7rem,4.4vw,4rem)!important}}
