*{margin:0;padding:0;box-sizing:border-box}
/* Marken-Farbtokens (2026-08-02): per Pixel-Sampling aus media/logo.png ermittelt, reines
   Blau statt des vorherigen Blau-Violett-Verlaufs.
   ENTSCHEIDUNG (2026-08-02, Nutzer-Fund): --accent-grad war ein Verlauf (#001840->#18a0f0),
   zeigte aber auf mehreren Buttons/Badges einen deutlich sichtbaren hellen "Blitzer" - auch
   mit "in srgb"-Interpolation erzwungen (siehe Git-Historie) blieb der Effekt bestehen.
   Statt den Rendering-Fehler weiter zu verfolgen: --accent-grad ist jetzt eine SOLIDE Farbe
   (--accent-end-safe, #1177bb) - behebt den Blitzer ueberall, wo die Variable verwendet wird
   (btn-grad, step-n, steps.on), in einer einzigen Aenderung. Als Nebeneffekt wieder
   WCAG-AA-konformer Kontrast (~4.8:1 statt ~2.9:1 mit der reinen Logo-Farbe). */
:root{
  --accent-start:#001840;
  --accent-end-safe:#1177bb;
  --accent-link:#18a0f0;
  --accent-grad:var(--accent-end-safe);
}
body{background:#0f172a;color:#e2e8f0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:15px;line-height:1.55}
/* Konzept-Vorgabe 2026-08-16 §3.2: body darf bei offenem Mobile-Menue nicht im Hintergrund
   scrollen - Klasse wird in scripts/marketing.js toggleMobileNav()/closeMobileNav() gesetzt. */
body.nav-locked{overflow:hidden}
a{color:#38bdf8;text-decoration:none;cursor:pointer}
img.logo-img{height:48px;display:block}
/* Topbar */
.topbar{position:sticky;top:0;z-index:50;background:rgba(15,23,42,.92);backdrop-filter:blur(8px);border-bottom:1px solid #334155}
/* Grid statt Flex: 1fr/auto/1fr zentriert die Nav-Taskbar immer exakt zwischen Logo und
   CTA-Gruppe, unabhaengig davon wie breit die beiden Aussenseiten sind (kein manuelles
   Breiten-Abgleichen noetig - das macht Grid automatisch). */
.tb-in{max-width:1320px;margin:0 auto;padding:0 24px;height:80px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px}
.tb-in>.logo-link{justify-self:start}
/* OS-Taskbar-Optik: gruppierter Pill-Container, aktives Segment mit Marken-Gradient
   statt reiner Textfarbe (an den im Figma-Entwurf abgestimmten Nav-Stil angeglichen). */
.tb-nav{justify-self:center;display:flex;align-items:center;gap:2px;background:#1e293b;border:1px solid #334155;border-radius:12px;padding:4px}
.tb-nav a{color:#94a3b8;font-size:14px;padding:8px 14px;border-radius:8px;white-space:nowrap;flex-shrink:0;font-weight:500;transition:background .15s,color .15s}
.tb-nav a:hover{background:#334155;color:#f1f5f9}
.tb-nav a.on{background:var(--accent-grad);color:#fff;font-weight:600}
.tb-cta{justify-self:end;display:flex;gap:10px;align-items:center}
.btn{display:inline-block;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all .2s;text-align:center;white-space:nowrap}
.btn-grad{background:var(--accent-grad);color:#fff;border:1px solid transparent}
.btn-grad:hover{filter:brightness(1.12)}
.btn-line{background:none;border:1px solid #334155;color:#cbd5e1}
.btn-line:hover{border-color:#0284c7;color:#f1f5f9}
.btn-indigo{background:#0369a1;color:#fff}.btn-indigo:hover{background:#4338ca}
.btn-gray{background:#334155;color:#cbd5e1}.btn-gray:hover{background:#475569}
/* "Weiter"/Absenden-Button bis zur vollstaendigen, gueltigen Eingabe des Schritts (Nutzer-
   Vorgabe 24.08.2026) - .btn-indigo/.btn-grad haben sonst keine eigene :disabled-Optik, der
   Browser-Standard waere kaum sichtbar. */
.btn:disabled,.btn.btn-disabled{background:#334155!important;color:#64748b!important;cursor:not-allowed;filter:none!important}
/* height+inline-flex statt padding/line-height fuer die Box-Hoehe: line-height:normal ist
   font-metrics-abhaengig - das ☰/✕-Zeichen faellt auf eine andere Fallback-Schrift zurueck
   als Arial-Text und ergab dadurch eine sichtbar hoehere Box trotz identischem Padding/
   Font-Size (Nutzer-Fund 2026-08-02, per getComputedStyle verifiziert: 30.67px vs 28.67px).
   Eine feste Hoehe macht die Box unabhaengig vom Zeicheninhalt. */
.btn-sm{height:29px;display:inline-flex;align-items:center;justify-content:center;padding:0 14px;font-size:13px;border-radius:6px}
.burger{display:none;height:29px;align-items:center;justify-content:center;background:none;border:1px solid #334155;color:#cbd5e1;border-radius:8px;padding:0 14px;font-size:13px;cursor:pointer}
/* Einheitlicher Fokusring fuer alle Header-Controls (Burger/Login/Register/Sprachwahl) -
   ohne diese Regel folgt der Browser-Default-Fokusring einfach der jeweiligen Box, die vorher
   je nach padding/font-size unterschiedlich hoch war (Nutzer-Fund 2026-08-02). */
.btn:focus-visible,.burger:focus-visible,#weblang-select:focus-visible{outline:2px solid var(--accent-link);outline-offset:2px}
/* focusViewHeading() in scripts/marketing.js setzt bei jedem SPA-Seitenwechsel programmatisch
   Fokus auf die View-Ueberschrift (Screenreader-Ansage) - ohne eigene Regel zeigte das den
   Browser-Default-Fokusring: auf dunklem Hintergrund ein weisser Rand um den Titel, der beim
   naechsten Klick woanders wieder verschwindet (Nutzer-Fund 2026-08-16, z.B. "Kostenlos
   registrieren"). Bewusst :focus statt :focus-visible, da dieser Fokus immer programmatisch
   (nicht per Maus/Tastatur direkt auf die Ueberschrift) gesetzt wird.*/
.sec-title:focus,.big-title:focus{outline:2px solid var(--accent-link);outline-offset:6px;border-radius:4px}
/* Innerhalb des Hero-Bands (.pghero) faellt derselbe Fokusring gegen den blauen Verlauf als
   verwirrender zweiter blauer Rahmen auf (Nutzer-Fund 2026-08-16) - dort sichtbar unterdruecken,
   der Fokus selbst (Screenreader-Ansage) bleibt unveraendert bestehen, nur der optische Ring
   entfaellt hier gezielt. */
.pghero h1:focus,.pghero .big-title:focus{outline:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
section{padding:72px 0}
.sec-title{font-size:30px;font-weight:700;color:#f1f5f9;text-align:center;text-wrap:balance}
.sec-sub{color:#94a3b8;text-align:center;max-width:680px;margin:12px auto 0}
.legalpage{max-width:760px;margin:0 auto}
.legalpage h2{margin-bottom:20px}
.legalpage h3{color:#f1f5f9;font-size:16px;margin:26px 0 8px}
.legalpage p{color:#cbd5e1;font-size:14px;line-height:1.7}
.demo-banner{background:#422006;color:#fb923c;border-bottom:1px solid #7c2d12;padding:7px 16px;font-size:12px;text-align:center}
/* Hero mit animiertem Netz */
.hero{padding:96px 0 84px;text-align:center;position:relative;overflow:hidden}
.hero-net{position:absolute;inset:0;width:100%;height:100%;opacity:.55;pointer-events:none}
.hero:before{content:'';position:absolute;top:-220px;left:50%;transform:translateX(-50%);width:900px;height:480px;background:radial-gradient(ellipse,rgba(2,132,199,.25),transparent 65%);pointer-events:none;animation:glow 6s ease-in-out infinite alternate}
.pglow{position:relative;overflow:hidden}
.pglow:before{content:'';position:absolute;top:-200px;left:50%;transform:translateX(-50%);width:820px;height:420px;background:radial-gradient(ellipse,rgba(2,132,199,.22),transparent 65%);pointer-events:none;z-index:0}
.pglow>.wrap{position:relative;z-index:1}
@keyframes glow{from{opacity:.7}to{opacity:1;transform:translateX(-50%) scale(1.06)}}
.hero h1,.big-title{font-size:46px;font-weight:800;color:#f1f5f9;max-width:820px;margin:0 auto;line-height:1.35;text-wrap:balance;position:relative}
.hero h1 em,.big-title em{font-style:normal;background:linear-gradient(135deg,var(--accent-end-safe),var(--accent-link));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{color:#94a3b8;font-size:18px;max-width:660px;margin:20px auto 32px;position:relative}
.big-sub{color:#94a3b8;font-size:18px;max-width:660px;margin:20px auto 0;position:relative}
.eyebrow{color:#38bdf8;font-size:17px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:16px;position:relative}
.pagehero{margin-bottom:40px;text-align:center}
.cta-lead{color:#f1f5f9;font-size:20px;font-weight:700;text-align:center;margin:40px 0 20px}
.hero-banner{border:1px solid #334155;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px -20px rgba(2,132,199,.35)}
.hero-banner img{display:block;width:100%;height:auto}
.hero .cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;position:relative}
.trust{display:flex;gap:26px;justify-content:center;flex-wrap:wrap;margin-top:36px;color:#64748b;font-size:13px;position:relative}
.trust span:before{content:'✓ ';color:#4ade80}

/* Seiten-Hero-Band (Nutzer-Vorgabe 16.08.2026): volle Seitenbreite, Markenblau-Verlauf, traegt
   Eyebrow/H1/Subline jeder Hauptseite direkt auf dem Farbfeld statt nur Text auf dunklem
   Hintergrund - ersetzt die reine Glow-Deko von .hero/.pglow fuer die Seiteneinstiege. Gleiches
   Muster wie app/marketing/styles/modul-seite.css .mod-hero, hier sitéweit statt nur auf
   Modul-Seiten. */
.pghero{width:100%;background:linear-gradient(120deg,var(--accent-start),var(--accent-end-safe) 55%,var(--accent-link));padding:64px 0 56px;text-align:center}
.pghero .wrap{max-width:900px}
.pghero .eyebrow{color:#fff;opacity:.85}
.pghero h1,.pghero .big-title{color:#fff}
.pghero h1 em,.pghero .big-title em{background:none;-webkit-text-fill-color:initial;color:#0c1a2e;background:rgba(255,255,255,.9);padding:6px 8px;box-decoration-break:clone;-webkit-box-decoration-break:clone;border-radius:6px;-webkit-background-clip:initial;background-clip:initial}
.pghero p,.pghero .big-sub{color:rgba(255,255,255,.88)}
@media(max-width:640px){.pghero{padding:48px 0 40px}}

/* Farbige Icon-Chips statt reiner Outline-Boxen (Nutzer-Fund 16.08.2026: "nur H1/H2 und Text" -
   .ic war bislang eine dunkle Box mit duennem blauem Strich-Icon, kaum als Farbelement
   wahrnehmbar). Gleicher Verlauf wie die Hero-Baender/CTA-Buttons, damit es als ein
   durchgaengiges System wirkt statt neuer Einzelfarben. */
.ic{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,var(--accent-end-safe),var(--accent-link));border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 14px -4px rgba(17,119,187,.5)}
.ic svg{width:21px;height:21px;stroke:#fff;fill:none;stroke-width:1.8}

/* Abwechselnd getoentes Section-Band (Nutzer-Fund 16.08.2026): bricht die lange Abfolge
   gleichfarbiger Sections auf, ohne einen komplett neuen Farbton einzufuehren - dezenter
   Blauton, keine harte Kante zur Nachbarsection. */
.section-tint{background:#111c33}
/* Scroll-Reveal */
.rv{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}.hero:before{animation:none}.dash{animation:none!important}}
/* Cards — Icon/Nummer NEBEN dem Titel */
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px;align-items:stretch}
/* Zielgruppen-Prioritaet "Fuer wen" (Audit-Massnahme 2.2) - urspruenglich per Breiten-
   Asymmetrie (1.3fr/1fr/1fr) + Gradient-Button geloest; auf Nutzer-Wunsch (2026-08-02)
   zurueckgebaut auf gleich breite Karten, da der Gradient-Button einen sichtbaren
   Rendering-Fehler zeigte (siehe --accent-grad-Kommentar) und alle 3 Karten gleich gross
   wirken sollten. Unternehmen bleibt weiterhin optisch abgesetzt ueber den Akzent-Rahmen
   (border-color:var(--accent-end-safe) direkt am Kartenelement in index.html). */
.grid3-priority{grid-template-columns:repeat(3,1fr)}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:44px}
.card{background:#1e293b;border:1px solid #334155;border-radius:14px;padding:24px}
.card-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.card-head h3{font-size:17px;color:#f1f5f9;margin:0}
.card p{font-size:14px;color:#94a3b8}
.step-n{width:32px;height:32px;border-radius:50%;background:var(--accent-grad);color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
/* Timeline "7 Baustellen" (Audit-Massnahme 2.3, ersetzt 9 optisch identische Grid-Karten) */
.timeline{display:flex;flex-direction:column;max-width:760px;margin:0 auto}
.timeline-item{display:flex;gap:20px}
.timeline-node{display:flex;flex-direction:column;align-items:center;flex-shrink:0}
.timeline-line{width:2px;flex:1;background:#334155;margin-top:8px;min-height:24px}
.timeline-content{padding-top:3px;padding-bottom:28px}
.timeline-content h3{font-size:17px;color:#f1f5f9;margin-bottom:6px}
.timeline-content p{font-size:14px;color:#94a3b8}
.tg .card{display:flex;flex-direction:column}
.tg ul{list-style:none;margin:8px 0 20px}
.tg li{font-size:14px;color:#cbd5e1;padding:5px 0}
.tg li:before{content:'✓ ';color:#4ade80}
.tg .btn{margin-top:auto}
/* Marktplatz */
.msearch{display:flex;gap:12px;max-width:640px;margin:30px auto 0;flex-wrap:wrap;justify-content:center}
.msearch input{flex:1;min-width:240px;background:#1e293b;border:1px solid #334155;border-radius:10px;color:#f1f5f9;padding:12px 18px;font-size:14px}
.msearch input:focus{border-color:#0284c7;outline:none}
.catbar{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.cat{padding:7px 14px;border-radius:20px;border:1px solid #334155;color:#94a3b8;font-size:13px;cursor:pointer}
.cat.on,.cat:hover{border-color:#0284c7;color:#0284c7}
.byfilter{display:none;justify-content:center;margin-top:16px}
.byfilter span{background:#0c1a2e;color:#7dd3fc;border:1px solid #075985;border-radius:20px;padding:6px 14px;font-size:13px}
.byfilter b{cursor:pointer;margin-left:8px}
.mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:34px}
.tile{background:#1e293b;border:1px solid #334155;border-radius:14px;padding:22px;cursor:pointer;transition:all .2s;display:flex;flex-direction:column}
.tile:hover{border-color:#0284c7;transform:translateY(-3px)}
.tile-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:6px}
.mlogo{width:46px;height:46px;border-radius:11px;background:#0f172a;border:1px solid #334155;color:#38bdf8;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tile-head b{color:#f1f5f9;font-size:16px;display:block}
.byline{font-size:12px;color:#64748b}
.byline a{color:#7dd3fc}
.rating{display:flex;align-items:center;gap:8px;margin:8px 0 10px}
.rating .rstars{color:#fb923c;font-size:16px;letter-spacing:1px}
.rating .rnum{color:#f1f5f9;font-weight:700;font-size:15px}
.rating .rcount{color:#64748b;font-size:12px}
.installs{color:#64748b;font-size:12px}
.installs b{color:#94a3b8}
.tile p{font-size:14px;color:#94a3b8;flex:1;margin-top:4px}
.tile-foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px}
.badge{display:inline-flex;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600}
.b-info{background:#0c1a2e;color:#7dd3fc}.b-ok{background:#052e16;color:#4ade80}
.b-purple{background:#1e1b4b;color:#a5b4fc}.b-neutral{background:#1e293b;color:#64748b;border:1px solid #334155}
/* Modal */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:100;display:none;align-items:center;justify-content:center;padding:16px}
.overlay.open{display:flex}
.modal{background:#1e293b;border:1px solid #334155;border-radius:16px;width:780px;max-width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}
/* Werbekachel oberhalb des Modulnamens (wie bei WordPress-Plugin-Popups) - bis ein echtes
   Developer-Banner (m.banner_url) existiert, ein generierter Platzhalter aus Icon+Markenfarben;
   1:1 an app/css/components.css .mkt-banner angeglichen (Nutzer-Wunsch 2026-07-24: beide
   Oberflaechen identisch). */
.mo-banner{height:110px;display:flex;align-items:center;justify-content:center;gap:14px;background:linear-gradient(135deg,#0f172a,#1e293b 60%,#0284c7)}
.mo-banner .mkt-banner-icon{color:#38bdf8;opacity:.9}
.mo-banner .mkt-banner-name{color:#f1f5f9;font-size:22px;font-weight:700;letter-spacing:.3px}
.m-head{padding:18px 24px;border-bottom:1px solid #334155;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.m-head .mlogo{width:52px;height:52px}
.m-close{margin-left:auto;background:none;border:none;color:#64748b;font-size:24px;cursor:pointer;padding:2px 10px;border-radius:6px}
.m-close:hover{color:#f87171;background:#450a0a}
/* An .tab-nav/.tab-btn der App angeglichen (Nutzer-Fund 2026-07-24: eigenes Ad-hoc-Styling
   hier entsprach nicht dem App-CSS-Standard - selbe Optik/Farbwerte wie app/css/main.css). */
.m-tabs{display:flex;gap:2px;border-bottom:1px solid #334155;padding:0 16px;overflow-x:auto}
.m-tab{padding:8px 14px;background:none;border:none;border-radius:6px 6px 0 0;color:#94a3b8;font-size:13px;font-weight:400;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;margin-bottom:-1px;transition:background .15s,color .15s}
.m-tab:hover:not(.on){background:#243044;color:#cbd5e1}
.m-tab.on{color:#0284c7;border-bottom-color:#0284c7;font-weight:600;background:rgba(2,132,199,.08)}
.m-body{flex:1;overflow-y:auto;padding:24px}
.m-foot{padding:14px 24px;border-top:1px solid #334155;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.feat{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}
.feat span{font-size:13px;color:#cbd5e1}.feat span:before{content:'✓ ';color:#4ade80}
/* App-Fenster-Mockup als Screenshot-Platzhalter */
.appshot{background:#0f172a;border:1px solid #334155;border-radius:10px;overflow:hidden;margin-bottom:14px}
.appshot .win{display:flex;gap:5px;padding:8px 12px;border-bottom:1px solid #1e293b}
.appshot .win i{width:9px;height:9px;border-radius:50%;background:#334155}
.appshot .body{display:flex;min-height:130px}
.appshot .sb{width:90px;border-right:1px solid #1e293b;padding:10px 8px}
.appshot .sb div{height:7px;background:#243044;border-radius:3px;margin-bottom:8px}
.appshot .mn{flex:1;padding:12px}
.appshot .mn .t{height:9px;width:35%;background:#334155;border-radius:3px;margin-bottom:10px}
.appshot .mn .r{height:7px;background:#1e293b;border-radius:3px;margin-bottom:7px}
.appshot small{display:block;color:#475569;font-size:11px;padding:8px 12px;border-top:1px solid #1e293b}
.review{border-bottom:1px solid #243044;padding:14px 0}
.review b{color:#f1f5f9;font-size:14px}.review small{color:#64748b;display:block;margin:2px 0 6px}
.review p{font-size:14px;color:#cbd5e1}
.review .vb{background:#052e16;color:#4ade80;border-radius:4px;font-size:10px;padding:2px 6px;margin-left:6px}
table{width:100%;border-collapse:collapse;font-size:14px}
th{padding:10px 12px;font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #334155;text-align:center}
td{padding:11px 12px;color:#cbd5e1;border-bottom:1px solid #243044;text-align:center}
.tblwrap{overflow-x:auto}
/* Zugangsdaten-Tabelle (Sandbox): Zugang/Wert nie umbrechen (sonst reisst die Beschreibung
   optisch auseinander), Wert zusätzlich in der Breite gedeckelt + auf einheitliche Schrift
   vereinheitlicht (vorher teils monospace, teils Fliesstext) - Beschreibung bleibt normal
   umbrechend und bekommt so den meisten Platz. */
.credtable{table-layout:fixed}
.credtable th:nth-child(1),.credtable td:nth-child(1){width:24%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.credtable th:nth-child(2),.credtable td:nth-child(2){width:21%}
.credtable td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:monospace;font-size:12.5px}
.credtable td:nth-child(3){white-space:normal}
/* Preise */
.psel{display:flex;gap:12px;max-width:640px;margin:30px auto 0;flex-wrap:wrap;justify-content:center}
.psel select,.psel input{background:#1e293b;border:1px solid #334155;border-radius:10px;color:#f1f5f9;padding:12px 16px;font-size:14px;min-width:220px}
.psel select:focus,.psel input:focus{border-color:#0284c7;outline:none}
.pcard{background:#1e293b;border:1px solid #334155;border-radius:14px;overflow:hidden;margin-top:26px}
.pcard .ph{padding:16px 20px;border-bottom:1px solid #334155;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.setupnote{padding:10px 20px;color:#94a3b8;font-size:13px;border-top:1px solid #334155;background:#0f172a}
/* Pflicht-Hinweis Netto/MwSt + B2B-Zielgruppe (Nutzer-Vorgabe 2026-07-24) - ueberall wo Preise
   auftauchen: Preise-Seite, Marktplatz-Kachel-Grid, Modul-Detail-Popup (Konditionen-Tab). */
.b2b-note{color:#64748b;font-size:12px;line-height:1.6;border-top:1px solid #1e293b;margin-top:20px;padding-top:14px}
/* Vergleichs-Komponente 'Der ehrliche Vergleich' – als HTML/CSS statt Bild, texte data-i18n-bereit */
.vglgrid{display:grid;grid-template-columns:1fr 70px 1fr;align-items:stretch}
.vglcol{background:#1e293b;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;position:relative}
.vglcol.bad{border:1px solid #7f1d1d;box-shadow:0 0 24px -8px rgba(248,113,113,.35)}
.vglcol.good{border:1px solid #075985;box-shadow:0 0 24px -8px rgba(56,189,248,.4)}
.vglhead{padding:16px 18px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #334155}
.vglhead svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;flex-shrink:0}
.vglhead h3{font-size:20px;margin:0;font-weight:700}
.vglhead.bad{color:#f87171}
.vglhead.good h3{color:#f1f5f9}
.vgl-brand{width:26px;height:26px;border-radius:7px;background:#0f172a;border:1px solid #334155;display:flex;align-items:center;justify-content:center;color:#38bdf8;flex-shrink:0}
.vgl-brand svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8}
.vglrow{display:flex;align-items:center;gap:10px;padding:11px 18px;border-bottom:1px solid #243044;font-size:12.5px;min-height:46px}
.vglcol .vglrow:last-child{border-bottom:none}
.vgl-ic{width:28px;height:28px;border-radius:8px;background:#0f172a;border:1px solid #334155;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.vgl-ic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8}
.vgl-ic.bad{color:#f87171;border-color:#7f1d1d}
.vgl-ic.good{color:#38bdf8;border-color:#0c4a6e}
.vgl-label{color:#94a3b8;flex:1}
.vgl-val{font-weight:600;display:flex;align-items:center;gap:5px;text-align:right;white-space:nowrap}
.vgl-val.bad{color:#cbd5e1}
.vgl-val.good{color:#4ade80}
.vgl-check{width:14px;height:14px;stroke:#4ade80;fill:none;stroke-width:2.4;flex-shrink:0}
.vglvs{display:flex;align-items:center;justify-content:center;position:relative}
.vglvs:before{content:'';position:absolute;top:0;bottom:0;left:50%;width:2px;background:linear-gradient(#7f1d1d,#334155,#075985);opacity:.5}
.vglvs span{position:relative;z-index:1;background:#0f172a;border:2px solid #334155;color:#f1f5f9;font-weight:800;font-size:13px;width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 0 18px -4px rgba(56,189,248,.5)}
.vglcalc{display:flex;align-items:center;justify-content:center;gap:22px;flex-wrap:wrap;background:#1e293b;border:1px solid #334155;border-radius:14px;padding:20px 26px;margin-top:20px}
.vglcalc-item{display:flex;align-items:center;gap:12px}
.vglcalc-item div{font-size:12.5px;color:#94a3b8}
.vglcalc-item b{display:block;font-size:21px;margin-top:2px}
.vglcalc-item b.bad{color:#f87171}
.vglcalc-item b.good{color:#4ade80}
.vgl-ic.lg{width:40px;height:40px;border-radius:10px}
.vgl-ic.lg svg{width:22px;height:22px}
.vglcalc-arrow{color:#a78bfa;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid #4c1d95;background:#1e1b4b}
.vglcalc-arrow svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}
.vglfoot{text-align:center;color:#94a3b8;font-size:13px;margin-top:16px;display:flex;gap:8px;align-items:center;justify-content:center}
.vglfoot svg{width:18px;height:18px;stroke:#38bdf8;fill:none;stroke-width:1.8}

.faq details{background:#1e293b;border:1px solid #334155;border-radius:12px;margin-bottom:12px}
.faq summary{padding:16px 20px;cursor:pointer;color:#f1f5f9;font-weight:600;font-size:15px;list-style:none}
.faq summary:after{content:'+';float:right;color:#0284c7;font-size:18px}
.faq details[open] summary:after{content:'–'}
.faq .fa{padding:0 20px 16px;color:#94a3b8;font-size:14px}
/* Registrierung */
.reg-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px}
.formbox{background:#1e293b;border:1px solid #334155;border-radius:16px;max-width:560px;margin:36px auto 0;padding:30px}
.steps{display:flex;gap:8px;margin-bottom:26px}
.steps i{flex:1;height:4px;border-radius:2px;background:#334155}
.steps i.on{background:var(--accent-grad)}
.frow{margin-bottom:14px}
.frow label{display:block;font-size:12px;color:#94a3b8;margin-bottom:5px;font-weight:500}
.frow input,.frow select,.frow textarea{width:100%;background:#f8fafc;color:#0f172a;border:1px solid #cbd5e1;border-radius:8px;min-height:40px;padding:8px 12px;font-size:14px;font-family:inherit}
.frow input:focus{border-color:#0284c7;outline:none}
.frow.err input,.frow.err textarea{border-color:#dc2626;background:#fef2f2}
.ferr{display:none;color:#f87171;font-size:12px;margin-top:5px}
.frow.err .ferr{display:block}
.ferr.show{display:block}
.chk{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px;font-size:13px;color:#cbd5e1}
.chk input{width:17px;height:17px;margin-top:2px;flex-shrink:0}
.ptype-box{display:flex;gap:28px;border:1px solid #7dd3fc;border-radius:10px;padding:12px 16px;background:#e0f2fe}
.ptype-box .chk{display:flex;align-items:center;margin-bottom:0;gap:8px;line-height:1}
.ptype-box .chk input{margin:0;flex-shrink:0;vertical-align:middle}
/* Markennamen-Standard (verbindlich, gemerkt 2026-07-23): HUB=Versalien/plain,
   robotix=kleingeschrieben/nicht kursiv, .ai=kleingeschrieben/kursiv - alle in
   den Logo-Farben (HUB hell, robotix/.ai blau). */
.brand-hub{color:#f1f5f9}
.brand-rx{color:#38bdf8}
.brand-ai{color:#38bdf8;font-style:italic}
.fnav{display:flex;justify-content:space-between;margin-top:24px;gap:10px}
.success{text-align:center;padding:20px 0}
.success .okic{width:64px;height:64px;border-radius:50%;background:#052e16;color:#4ade80;font-size:30px;display:flex;align-items:center;justify-content:center;margin:0 auto 18px}
.login-box{background:#1e293b;border:1px solid #334155;border-radius:16px;width:380px;max-width:100%;margin:60px auto;padding:34px}
.login-box h2{color:#f1f5f9;font-size:22px;text-align:center;margin-bottom:6px}
.login-box .ls{color:#64748b;font-size:13px;text-align:center;margin-bottom:24px}
footer{border-top:1px solid #334155;padding:44px 0 30px;margin-top:40px}
.f-in{max-width:1180px;margin:0 auto;padding:0 24px;display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
footer .claim{color:#94a3b8;font-size:14px;max-width:360px;margin-top:12px}
footer nav{display:flex;gap:18px;flex-wrap:wrap}
footer nav a{color:#64748b;font-size:13px}
footer nav a:hover{color:#94a3b8}
.f-trust{display:flex;gap:20px;flex-wrap:wrap;margin-top:14px;color:#64748b;font-size:12px}
.f-trust span:before{content:'✓ ';color:#4ade80}
/* 4-Spalten-Footer (Konzept-Vorgabe 2026-08-16 §3.3): Marke, Produkt, Partner, Unternehmen -
   ersetzt die vorherige einzeilige Linkliste. footer nav/footer nav a oben bleiben gueltig,
   .f-col nav macht daraus je Spalte eine vertikale statt horizontale Liste. */
.f-cols{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:32px;width:100%;text-align:left}
.f-col h4{color:#f1f5f9;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:14px}
.f-col nav{display:flex;flex-direction:column;gap:10px;flex-wrap:nowrap}
.f-brand{display:flex;flex-direction:column;gap:10px}
.f-brand .claim{margin-top:0;max-width:none}
.f-bottom{width:100%;margin-top:32px;padding-top:20px;border-top:1px solid #1e293b;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
@media(max-width:959px){
  /* Konzept-Vorgabe §3.3: auf Mobilgeraeten die vier Bereiche untereinander, keine
     horizontale Linkzeile - eine Spalte genuegt, .f-col nav ist ohnehin schon vertikal. */
  .f-cols{grid-template-columns:1fr;gap:28px}
  .f-brand{align-items:flex-start;text-align:left}
}
.view{display:none}.view.on{display:block}
#toast{position:fixed;bottom:24px;right:24px;background:#1e293b;color:#94a3b8;border:1px solid #334155;border-radius:8px;padding:10px 18px;font-size:13px;transform:translateY(100px);transition:transform .25s;z-index:200}
#toast.show{transform:translateY(0)}
@media(max-width:1024px){.grid4{grid-template-columns:repeat(2,1fr)}.mgrid{grid-template-columns:repeat(2,1fr)}.hero h1,.big-title{font-size:38px}}
/* Developer-Subnav (Dropdown im Topbar, Desktop: Hover-Flyout) */
.tb-nav-item{position:relative;display:flex;align-items:center}
.tb-nav-item>.tb-sub{display:none;position:absolute;top:100%;left:0;margin-top:4px;background:#1e293b;border:1px solid #334155;border-radius:10px;padding:6px;min-width:210px;box-shadow:0 12px 32px -8px rgba(0,0,0,.5);z-index:60}
/* Unsichtbare Brücke über die 4px Lücke (margin-top oben) - sonst verliert die Maus beim
   Wandern von "Developer" zum Untermenü kurz :hover und das Menü schließt vorzeitig. */
.tb-nav-item>.tb-sub:before{content:'';position:absolute;top:-4px;left:0;right:0;height:4px}
.tb-nav-item:hover>.tb-sub,.tb-nav-item:focus-within>.tb-sub{display:block}
.tb-sub a{display:block;padding:8px 12px;border-radius:6px;font-size:13.5px;color:#94a3b8;white-space:nowrap}
.tb-sub a:hover{background:#0f172a;color:#f1f5f9}

/* Abdunkelung hinter der aufgeklappten Mobile-Nav (Nutzer-Fund 2026-08-02: ohne Backdrop
   wirkte das Dropdown wie eine schwebende Box, die mit dem Hero-Text verschwimmt). Liegt
   knapp unter .tb-nav (z-index 55), damit die Nav selbst weiterhin oben liegt. */
.tb-nav-backdrop{display:none;position:fixed;inset:0;top:80px;background:rgba(2,6,16,.55);z-index:54}
.tb-nav-backdrop.open{display:block}

@media(max-width:959px){
 /* Breakpoint per Konzept-Vorgabe 2026-08-16 §3.2 exakt auf 959px gesetzt (vorher 1200px) -
    "ab einschliesslich 959px und kleiner" gilt als mobil. Die beiden neuen Dropdown-Trigger
    ("Loesungen"/"Partner") ersetzen zwei vormals eigenstaendige Links, die Nav ist dadurch auf
    Desktop-Breiten zwischen 960-1199px schmaler als vorher und passt wieder in eine Zeile.
    .tb-in hat justify-content:space-between, damit .tb-cta beim Wegfallen von .tb-nav
    rechtsbündig bleibt statt ans Logo zu rutschen. */
 /* width:100% ist notwendig, obwohl left:0/right:0 bereits gesetzt sind - bei absolut
    positionierten Flex-Containern berechnen Browser die Breite sonst am Inhalt statt am
    Containing Block (Fund 2026-08-16, Konzept-Vorgabe §3.2 "Vollbreiten-Panel": das Menue
    war bislang nur inhaltsbreit, nicht wirklich volle Breite). */
 .tb-nav{display:none;position:absolute;top:80px;left:0;right:0;width:100%;z-index:55;background:#1e293b;
   border-bottom:1px solid #334155;box-shadow:0 24px 48px -16px rgba(0,0,0,.6);
   flex-direction:column;gap:2px;padding:10px;max-height:calc(100vh - 80px);overflow-y:auto}
 .tb-nav.open{display:flex}
 /* Einheitliche Zeilen-Optik statt "1 aktiver Button + Fliesstext" - jeder Link bekommt
    denselben Rahmen/Trenner, damit die Liste als zusammenhaengendes Menü statt als loser
    Text unter einem einzelnen Button wirkt (Nutzer-Fund 2026-08-02). */
 .tb-nav a{text-align:left;padding:13px 14px;border-radius:8px;font-size:15px;
   border-bottom:1px solid #334155}
 .tb-nav>a:last-of-type,.tb-nav-item:last-child>a{border-bottom:none}
 .tb-nav a.on{background:var(--accent-grad)}
 .tb-nav-item{width:100%;flex-direction:column;align-items:stretch}
 .tb-nav-item>a{display:flex;align-items:center;justify-content:space-between}
 .tb-nav-item>a:after{content:'▾';font-size:11px;color:#64748b}
 /* Touch/schmal: Submenu dauerhaft sichtbar statt Hover (kein Hover auf Touch-Geräten),
    aber als abgesetzte Gruppe (eigener Hintergrund + Einzug) statt bloss eingerückter
    Fliesstext - macht die Zusammengehoerigkeit zu "Developer" sofort erkennbar. */
 .tb-nav-item>.tb-sub{display:block;position:static;background:#0f172a;border:none;
   box-shadow:none;border-radius:8px;padding:4px;margin:2px 0 6px}
 .tb-sub a{padding:9px 12px;border-bottom:none}
 /* Echtes Akkordeon fuer "Loesungen"/"Partner" (Konzept-Vorgabe §3.2) - ueberschreibt die
    "immer offen"-Regel oben gezielt fuer .tb-nav-item.acc. Das bestehende Developer-Dropdown
    bleibt bewusst wie bisher dauerhaft offen (kein .acc), da sein Top-Level-Link selbst zu
    /developer/ navigiert und der einzige U-Punkt (API-Dokumentation) NICHT dasselbe Ziel ist -
    ein Toggle wuerde /developer/ auf Mobilgeraeten sonst nur noch ueber Umwege erreichbar
    machen (Bestehende-Funktionalitaet-Regel des Konzepts). */
 .tb-nav-item.acc>.tb-sub{display:none}
 .tb-nav-item.acc.open>.tb-sub{display:block}
 .tb-nav-item.acc.open>a:after{content:'▴'}
 .burger{display:flex}
 .tb-cta .btn-line{display:none}
 /* Login-Button + Sprachauswahl werden per relocateNavExtras() (scripts/marketing.js) bei
    geoeffnetem Menue tatsaechlich IN .tb-nav verschoben (Konzept-Vorgabe §3.2), nicht nur
    versteckt - hier nur die Optik als letzte Zeilen der Liste. */
 .tb-nav #weblang-select{width:100%;margin-top:6px}
 .tb-nav .btn-line{display:flex;width:100%;justify-content:center;margin-top:8px}
}
@media(prefers-reduced-motion:no-preference){
 .tb-nav{animation:tbnav-in .18s ease}
 @keyframes tbnav-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
}
@media(max-width:768px){
 .grid3,.reg-pick{grid-template-columns:1fr}.grid4{grid-template-columns:1fr}.mgrid{grid-template-columns:1fr}
 .hero{padding:60px 0 50px}.hero h1,.big-title{font-size:30px}.hero p,.big-sub{font-size:16px}.cta-lead{font-size:17px;margin:28px 0 16px}.eyebrow{font-size:14px}
 section{padding:48px 0}.sec-title{font-size:24px}.feat{grid-template-columns:1fr}
 img.logo-img{height:38px}
 .vglgrid{grid-template-columns:1fr;gap:14px}
 .vglvs{padding:2px 0}
 .vglvs:before{top:0;bottom:0;left:50%;width:2px;height:auto}
 .vglvs span{width:38px;height:38px;font-size:11px}
 .vglrow{font-size:12px;padding:10px 14px}
 .vglcalc{padding:16px 18px;gap:14px}
 .vglcalc-item b{font-size:18px}
}