/* Glowiszyn Landingkit – gemeinsames Design aller App-Landingpages.
   Vorbild mileguy.app: viel Weißraum, große ruhige Typo, abwechselnd helle und
   dunkle Bühnen, Farbe nur als Akzent, verschwommenes Leuchten im Hero.
   NICHT pro Projekt ändern – Quelle: ~/projects/_landingkit/kit.css (sync.sh).

   Zwei Fassungen: dunkel (Standard) und hell. Die Grundfarbe legt jede Seite mit
   window.APP.theme fest ('dark' | 'light'); Besucher schalten über das Sonne/Mond-
   Symbol um (kit.js, gemerkt in localStorage, <html data-theme="…">).
   Markenfarben setzt jede Seite per <style>:root{--brand…}</style> im <head>. */

:root {
    --brand: #00e5ff;        /* Akzent auf Dunkel */
    --brand-deep: #007f8f;   /* Akzent auf Hell (Kontrast ≥ 4.5:1) */
    --brand2: #ff2e63;       /* zweite Leuchtfarbe */
    --grad: linear-gradient(90deg, var(--brand) 0%, var(--brand2) 100%);
    --glow1: color-mix(in srgb, var(--brand) 34%, transparent);
    --glow2: color-mix(in srgb, var(--brand2) 26%, transparent);
    --on-grad: #0b0b0d;

    --ink: #1d1d1f;
    --ink-soft: #6e6e73;
    --paper: #ffffff;
    --paper-gray: #f5f5f7;
    --night: #000000;
    --night-soft: #0c0c0e;
    --night-text: #f5f5f7;
    --night-muted: #a1a1a6;

    /* ---- Fassung dunkel (Standard) ---------------------------------- */
    /* „Bühne dunkel“ = schwarz; im hellen Modus wird daraus eine getönte helle Fläche */
    --stage-bg: var(--night);
    --stage-soft: var(--night-soft);
    --stage-text: var(--night-text);
    --stage-muted: var(--night-muted);
    --stage-line: rgba(255, 255, 255, 0.16);
    --stage-hair: rgba(255, 255, 255, 0.09);
    --stage-accent: var(--brand);
    --stage-grad: var(--grad);

    --hero-bg: var(--night);
    --hero-text: var(--night-text);
    --hero-muted: var(--night-muted);
    --glow-strength: 1;

    --nav-bg: rgba(0, 0, 0, 0.8);
    --nav-brand: #ffffff;
    --nav-text: rgba(255, 255, 255, 0.82);
    --nav-text-strong: #ffffff;
    --nav-line: rgba(255, 255, 255, 0.08);
    --nav-menu-bg: rgba(0, 0, 0, 0.95);
    --nav-flag-active: rgba(255, 255, 255, 0.28);
    --nav-cta: var(--brand);

    --bar-bg: rgba(18, 18, 20, 0.9);
    --bar-text: var(--night-text);
    --bar-muted: var(--night-muted);
    --bar-line: rgba(255, 255, 255, 0.12);

    --device-frame: linear-gradient(150deg, #4a4a4f, #1b1b1e 42%, #3a3a3f);
    --title-grad: var(--grad);

    --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Inter", "Segoe UI",
        Roboto, system-ui, sans-serif;
    --maxw: 1000px;
    --maxw-wide: 1180px;
    --pad: clamp(20px, 5vw, 40px);
    --nav-h: 52px;
}

/* ---- Fassung hell -------------------------------------------------- */
html[data-theme="light"] {
    /* Die „dunkle“ Bühne wird zur ruhigen getönten Fläche – kräftig genug,
       damit sie sich klar vom weißen Hero und den grauen Bühnen absetzt */
    --stage-bg: color-mix(in srgb, var(--brand-deep) 9%, #e9edf4);
    --stage-soft: #ffffff;
    --stage-text: var(--ink);
    --stage-muted: var(--ink-soft);
    --stage-line: rgba(0, 0, 0, 0.12);
    --stage-hair: rgba(0, 0, 0, 0.08);
    --stage-accent: var(--brand-deep);
    /* Auf Weiß trägt kein Verlauf: abgedunkelte Markenfarben werden matschig.
       Deshalb das hervorgehobene Wort einfarbig in der dunklen Markenfarbe. */
    --stage-grad: var(--brand-deep);

    --hero-bg: #ffffff;
    --hero-text: var(--ink);
    --hero-muted: var(--ink-soft);
    --glow-strength: 0.6;

    --nav-bg: rgba(255, 255, 255, 0.82);
    --nav-brand: var(--ink);
    --nav-text: #4a4a52;
    --nav-text-strong: var(--ink);
    --nav-line: rgba(0, 0, 0, 0.08);
    --nav-menu-bg: rgba(255, 255, 255, 0.96);
    --nav-flag-active: rgba(0, 0, 0, 0.2);
    --nav-cta: var(--brand-deep);

    --bar-bg: rgba(255, 255, 255, 0.92);
    --bar-text: var(--ink);
    --bar-muted: var(--ink-soft);
    --bar-line: rgba(0, 0, 0, 0.12);

    --device-frame: linear-gradient(150deg, #d9dbe2, #b9bcc6 42%, #cfd2da);
    /* Auch im H1 kein Verlauf: auf Weiß wird die abgedunkelte Zweitfarbe matschig */
    --title-grad: var(--brand-deep);
}

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; overflow-x: clip; }

body {
    margin: 0;
    background: var(--stage-bg);
    color: var(--ink);
    font-family: var(--font);
    font-size: 17px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    overflow-x: clip;
}

[hidden] { display: none !important; }
img, svg { max-width: 100%; display: block; }
a { color: inherit; }
h1, h2, h3 { margin: 0; font-weight: 700; letter-spacing: -0.025em; line-height: 1.06; text-wrap: balance; }
p { margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }
[id] { scroll-margin-top: calc(var(--nav-h) + 8px); }

:focus-visible { outline: 2px solid var(--brand-deep); outline-offset: 4px; border-radius: 6px; }

.skip {
    position: absolute; left: -9999px; top: 0; z-index: 300;
    background: var(--ink); color: #fff; padding: 12px 18px; border-radius: 0 0 12px 0; text-decoration: none;
}
.skip:focus { left: 0; }

.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Grundraster & Bühnen ---------- */

.wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad); }
.wrap-wide { max-width: var(--maxw-wide); }
.center { text-align: center; }

section { position: relative; padding: clamp(80px, 12vw, 160px) 0; }

.s-light { background: var(--paper); color: var(--ink); }
.s-gray { background: var(--paper-gray); color: var(--ink); }
.s-dark { background: var(--stage-bg); color: var(--stage-text); }

/* ---------- Typo ---------- */

.eyebrow { font-size: clamp(16px, 1.9vw, 20px); font-weight: 600; letter-spacing: 0.01em; color: var(--hero-muted); margin-bottom: 14px; }

h1 { font-size: clamp(42px, 8vw, 90px); letter-spacing: -0.04em; }
h1 em, .grad-text {
    font-style: normal;
    background: var(--title-grad);
    -webkit-background-clip: text; background-clip: text; color: transparent;
}

.h2 { font-size: clamp(32px, 5.6vw, 64px); letter-spacing: -0.035em; }

.sub { font-size: clamp(18px, 1.9vw, 22px); line-height: 1.45; color: var(--ink-soft); letter-spacing: -0.01em; text-wrap: pretty; }
.s-dark .sub { color: var(--stage-muted); }
.hero .sub, .getpage .sub { color: var(--hero-muted); }

/* ---------- Navigation ---------- */

.nav-wrap {
    position: sticky; top: 0; z-index: 100;
    background: var(--nav-bg);
    backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px);
    border-bottom: 1px solid var(--nav-line);
}
.nav {
    height: var(--nav-h); display: flex; align-items: center; gap: 26px;
    max-width: var(--maxw-wide); margin: 0 auto; padding: 0 var(--pad);
}
.brand { display: inline-flex; align-items: center; gap: 9px; text-decoration: none; color: var(--nav-brand); font-weight: 700; font-size: 16px; letter-spacing: -0.01em; }
.brand img { width: 26px; height: 26px; border-radius: 7px; }
.nav-links { display: flex; gap: 26px; margin-left: auto; align-items: center; }
.nav a:not(.brand) { text-decoration: none; color: var(--nav-text); font-size: 13px; letter-spacing: 0.01em; transition: color 0.2s; }
.nav a:not(.brand):hover { color: var(--nav-text-strong); }
.nav-side { display: flex; align-items: center; gap: 16px; }
.nav .nav-cta { font-weight: 600; color: var(--nav-cta); }
.nav-toggle { display: none; background: none; border: 0; padding: 6px; color: var(--nav-brand); cursor: pointer; }
.nav-toggle svg { width: 20px; height: 20px; }

/* Sprachwechsel: SVG-Flaggen (Windows kennt keine Flaggen-Emoji) */
.langs { display: flex; gap: 6px; align-items: center; }
.lang-btn {
    display: grid; place-items: center; padding: 3px; border: 1px solid transparent; border-radius: 6px;
    background: none; cursor: pointer; opacity: 0.55; transition: opacity 0.2s, border-color 0.2s;
}
.lang-btn svg { width: 20px; height: 13px; border-radius: 2px; }
.lang-btn:hover { opacity: 0.9; }
.lang-btn.is-active { opacity: 1; border-color: var(--nav-flag-active); }
footer .lang-btn.is-active { border-color: rgba(0, 0, 0, 0.2); }

/* Hell/Dunkel-Umschalter (von kit.js erzeugt) */
.theme-btn {
    display: grid; place-items: center; width: 28px; height: 28px; padding: 0;
    border: 1px solid transparent; border-radius: 999px; background: none;
    color: var(--nav-text); cursor: pointer; transition: color 0.2s, border-color 0.2s, background 0.2s;
}
.theme-btn svg { width: 17px; height: 17px; }
.theme-btn:hover { color: var(--nav-text-strong); border-color: var(--nav-flag-active); }
footer .theme-btn { color: var(--ink-soft); }
footer .theme-btn:hover { color: var(--ink); border-color: rgba(0, 0, 0, 0.2); }

@media (max-width: 780px) {
    .nav-links {
        position: absolute; top: var(--nav-h); left: 0; right: 0;
        flex-direction: column; align-items: flex-start; gap: 0;
        background: var(--nav-menu-bg); backdrop-filter: blur(20px);
        padding: 8px var(--pad) 20px; display: none; border-bottom: 1px solid var(--nav-line);
    }
    .nav-links.open { display: flex; }
    .nav-links a { width: 100%; padding: 14px 0; font-size: 17px !important; border-bottom: 1px solid var(--nav-line); }
    .nav-toggle { display: block; order: 3; }
    .nav-side { margin-left: auto; gap: 12px; }
}

/* Schmale Handys: lange App-Namen brauchen den Platz – Sprachwahl bleibt im Footer */
@media (max-width: 420px) {
    .nav-side .langs { display: none; }
    /* Die Marke darf schrumpfen, sonst schiebt sie sich unter Umschalter und Menü
       (bei 320 px ab ~15 Zeichen, z. B. „Finance Tracker“). Als Block mit umflossenem
       Symbol greifen auch die Auslassungspunkte – in einem Flex-Element tun sie das nicht. */
    .brand {
        display: block; min-width: 0; flex: 0 1 auto;
        overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
        line-height: 26px;
    }
    .brand img { float: left; margin-right: 7px; }
    .nav-side { flex: none; }
}

@media (max-width: 380px) {
    /* „Laden“ oben ist auf dem Handy doppelt (Store-Knöpfe im Hero, Download-Leiste beim
       Scrollen) – der Platz gehört dem Markennamen, sonst wird er abgeschnitten. */
    .nav .nav-cta { display: none; }
    .brand { font-size: 15px; }
    .brand img { margin-right: 6px; }
}

/* ---------- Store-Knöpfe + QR ---------- */

.stores { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.stores.center { justify-content: center; }
.stores a { display: block; transition: opacity 0.2s, transform 0.2s; }
.stores a:hover { opacity: 0.85; transform: translateY(-1px); }
.stores img { height: 50px; width: auto; border-radius: 9px; }
.s-light .stores img, .s-gray .stores img { border: 1px solid rgba(0, 0, 0, 0.12); }
.hero .stores img, .s-dark .stores img { border: 1px solid var(--stage-line); }

.get-row { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 16px 30px; }

/* QR nur am Rechner: Wer das Handy in der Hand hat, tippt direkt auf den Store-Knopf */
.qr { display: none; align-items: center; gap: 14px; text-align: left; padding-left: 30px; border-left: 1px solid var(--stage-line); }
@media (min-width: 900px) and (hover: hover) and (pointer: fine) { .qr { display: flex; } }
.qr-code { width: 78px; height: 78px; flex: none; border-radius: 10px; overflow: hidden; background: #fff; }
.qr-code svg { width: 100%; height: 100%; }
.qr p { font-size: 14px; line-height: 1.4; color: var(--hero-muted); max-width: 22ch; }
.qr strong { display: block; color: var(--hero-text); font-weight: 600; }
.cta .qr p { color: var(--stage-muted); }
.cta .qr strong { color: var(--stage-text); }

.trust { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 22px; margin-top: 22px; font-size: 14px; color: var(--hero-muted); }
.trust li { display: inline-flex; align-items: center; gap: 6px; }
.trust svg { width: 14px; height: 14px; color: var(--stage-accent); }

.soon { margin-top: 14px; font-size: 14px; color: var(--hero-muted); }
.soon a { color: var(--stage-accent); }

/* ---------- Hero ---------- */

.hero { background: var(--hero-bg); color: var(--hero-text); padding: clamp(56px, 9vw, 110px) 0 0; overflow: hidden; text-align: center; }
.hero .glow, .cta .glow, .getpage .glow {
    position: absolute; top: 6%; left: 50%; transform: translateX(-50%);
    width: min(1100px, 130vw); height: 620px;
    /* closest-side: Verlauf endet sicher vor dem Boxrand, sonst schneidet der Blur eine harte Kante */
    background: radial-gradient(closest-side at 34% 45%, var(--glow1), transparent),
        radial-gradient(closest-side at 68% 55%, var(--glow2), transparent);
    filter: blur(90px); opacity: var(--glow-strength); pointer-events: none;
}
.hero .wrap { position: relative; z-index: 2; }
.hero .sub { font-size: clamp(19px, 2.3vw, 25px); max-width: 640px; margin: 26px auto 0; }
.hero .get-row { margin-top: 34px; }
.hero-device { margin: clamp(44px, 7vw, 76px) auto 0; max-width: 330px; position: relative; z-index: 2; padding: 0 20px; }
.hero-device .device { margin-bottom: -14%; }

/* ---------- Geräterahmen ---------- */

.device {
    position: relative; border-radius: 13.5%/6.3%; padding: 2.6%;
    background: var(--device-frame);
    box-shadow: 0 40px 90px rgba(0, 0, 0, 0.35), 0 2px 6px rgba(0, 0, 0, 0.25);
}
.s-dark .device { box-shadow: 0 40px 110px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(255, 255, 255, 0.06); }
html[data-theme="light"] .device { box-shadow: 0 30px 70px rgba(20, 24, 40, 0.18), 0 2px 6px rgba(20, 24, 40, 0.12); }
html[data-theme="light"] .s-dark .device { box-shadow: 0 30px 70px rgba(20, 24, 40, 0.22), 0 0 0 1px rgba(0, 0, 0, 0.05); }
.device img { width: 100%; height: auto; aspect-ratio: 780 / 1688; object-fit: cover; border-radius: 11%/5.2%; background: #0b0f19; }

/* ---------- Bühnen (Funktionen im Wechsel) ---------- */

.stage-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: clamp(36px, 6vw, 80px); align-items: center;
    max-width: var(--maxw-wide); margin: 0 auto; padding: 0 var(--pad);
}
.stage-grid.flip .stage-media { order: -1; }
.stage-media { width: 100%; max-width: 330px; justify-self: center; }
.stage-tag { font-size: 15px; font-weight: 600; letter-spacing: 0.02em; color: var(--brand-deep); margin-bottom: 16px; }
.s-dark .stage-tag { color: var(--stage-accent); }
.stage-copy .sub { margin-top: 22px; max-width: 34ch; }
.stage-detail {
    margin-top: 22px; padding-top: 18px; border-top: 1px solid rgba(0, 0, 0, 0.12);
    max-width: 34ch; font-size: 15px; line-height: 1.5; color: var(--ink-soft);
}
.s-dark .stage-detail { border-top-color: var(--stage-line); color: var(--stage-muted); }

/* ---------- Große Aussage ---------- */

.statement { padding: clamp(96px, 15vw, 200px) 0; }
.statement-title { font-size: clamp(34px, 6.2vw, 72px); letter-spacing: -0.04em; max-width: 19ch; margin: 0 auto; }
.statement .sub { margin-top: 26px; }

/* ---------- Ohne / Mit ---------- */

.compare-wrap { max-width: 900px; margin-top: clamp(38px, 5vw, 60px); }
.compare-head, .compare-rows li { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.compare-head { padding: 0 22px 12px; font-size: 14px; font-weight: 600; letter-spacing: 0.02em; color: var(--ink-soft); }
.compare-head span + span { color: var(--brand-deep); }
.compare-rows { border-radius: 22px; background: var(--paper-gray); overflow: hidden; }
.compare-rows li { padding: 20px 22px; align-items: center; }
.compare-rows li + li { border-top: 1px solid rgba(0, 0, 0, 0.07); }
.compare-a, .compare-b { display: flex; align-items: flex-start; gap: 10px; line-height: 1.4; }
.compare-a { color: var(--ink-soft); font-size: 16px; }
.compare-b { color: var(--ink); font-size: 17px; font-weight: 600; letter-spacing: -0.01em; }
.compare-a svg, .compare-b svg { width: 16px; height: 16px; flex: none; margin-top: 3px; }
.compare-a svg { color: #b0b0b5; }
.compare-b svg { color: var(--brand-deep); }
.compare-stores { margin-top: clamp(34px, 4vw, 48px); }

@media (max-width: 640px) {
    .compare-head { display: none; }
    .compare-rows li { grid-template-columns: 1fr; gap: 6px; padding: 18px; }
    .compare-a { font-size: 14px; }
}

/* ---------- Bento ---------- */

.bento {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
    margin: clamp(38px, 5vw, 62px) auto 0; max-width: var(--maxw-wide); padding: 0 var(--pad);
}
.tile {
    background: var(--paper); border-radius: 22px; padding: 34px 30px 36px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), 0 10px 34px rgba(0, 0, 0, 0.045);
    transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s;
}
.tile:hover { transform: translateY(-3px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 18px 46px rgba(0, 0, 0, 0.09); }
.s-dark .tile { background: var(--stage-soft); box-shadow: none; border: 1px solid var(--stage-hair); }
.tile .ico { width: 36px; height: 36px; margin-bottom: 20px; color: var(--brand-deep); }
.s-dark .tile .ico { color: var(--stage-accent); }
.tile .ico svg { width: 100%; height: 100%; }
.tile h3 { font-size: 20px; letter-spacing: -0.015em; margin-bottom: 8px; }
.tile p { color: var(--ink-soft); font-size: 16px; line-height: 1.5; }
.s-dark .tile h3 { color: var(--stage-text); }
.s-dark .tile p { color: var(--stage-muted); }

/* ---------- Fakten ---------- */

.facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(26px, 4vw, 40px); text-align: center; max-width: 900px; margin: 0 auto; }
.facts > div + div { border-left: 1px solid rgba(0, 0, 0, 0.1); }
.s-dark .facts > div + div { border-left-color: var(--stage-line); }
.facts .v { font-size: clamp(44px, 7vw, 76px); font-weight: 700; letter-spacing: -0.045em; line-height: 1; }
.s-dark .facts .v { background: var(--stage-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.facts .l { margin-top: 12px; font-size: 16px; color: var(--ink-soft); line-height: 1.45; }
.s-dark .facts .l { color: var(--stage-muted); }

/* ---------- FAQ ---------- */

.faq-title { max-width: 780px; margin: 0 auto; }
.faq { max-width: 780px; margin: clamp(30px, 4vw, 52px) auto 0; border-top: 1px solid rgba(0, 0, 0, 0.12); }
.faq details { border-bottom: 1px solid rgba(0, 0, 0, 0.12); }
.faq summary {
    list-style: none; cursor: pointer; display: flex; align-items: center; gap: 20px;
    padding: 24px 2px; font-size: clamp(17px, 2vw, 21px); font-weight: 500; letter-spacing: -0.01em;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
    content: ""; margin-left: auto; flex: 0 0 auto; width: 12px; height: 12px;
    border-right: 1.8px solid var(--brand-deep); border-bottom: 1.8px solid var(--brand-deep);
    transform: rotate(45deg) translate(-3px, -3px); transition: transform 0.25s ease;
}
.faq details[open] summary::after { transform: rotate(225deg) translate(-3px, -3px); }
.faq .answer { padding: 0 40px 26px 2px; color: var(--ink-soft); font-size: 17px; line-height: 1.55; max-width: 62ch; }
.s-dark .faq { border-top-color: var(--stage-line); }
.s-dark .faq details { border-bottom-color: var(--stage-line); }
.s-dark .faq summary { color: var(--stage-text); }
.s-dark .faq summary::after { border-color: var(--stage-accent); }
.s-dark .faq .answer { color: var(--stage-muted); }

/* ---------- Newsletter-Bänder (Marker newsletter:top/bottom bleiben erhalten) ---------- */

.nl-band { padding: clamp(40px, 6vw, 72px) 0; }
.nl-band.s-dark { background: var(--stage-bg); }
.nl-band .nl-embed { max-width: 560px; margin: 0 auto; padding: 0 var(--pad); }

/* ---------- Abschluss-CTA ---------- */

.cta { overflow: hidden; }
.cta .glow { top: 20%; opacity: calc(var(--glow-strength) * 0.8); }
.cta .wrap { position: relative; }
.cta .app-icon { width: 84px; height: 84px; border-radius: 20px; margin: 0 auto 30px; box-shadow: 0 20px 50px var(--glow1); }
.cta .h2 { margin-bottom: 20px; }
.cta .sub { max-width: 560px; margin: 0 auto; color: var(--stage-muted); }
.cta .get-row { margin-top: 38px; }
.cta .note { margin-top: 20px; font-size: 14px; color: var(--stage-muted); }
.cta .trust { color: var(--stage-muted); }

/* ---------- Footer ---------- */

footer { background: var(--paper-gray); color: var(--ink-soft); padding: 48px 0 52px; font-size: 13px; line-height: 1.5; }
.foot-grid {
    display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 30px;
    padding-bottom: 28px; border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.foot-brand .brand { color: var(--ink); margin-bottom: 10px; }
.foot-brand p { max-width: 30ch; }
.foot-col h4 { font-size: 13px; font-weight: 600; color: var(--ink); margin: 0 0 10px; }
.foot-col li { margin-bottom: 8px; }
.foot-col a { text-decoration: none; transition: color 0.2s; }
.foot-col a:hover { color: var(--ink); text-decoration: underline; }
.foot-note { padding-top: 22px; max-width: 860px; font-size: 12px; }
.foot-bottom { margin-top: 18px; display: flex; flex-wrap: wrap; gap: 10px 20px; justify-content: space-between; align-items: center; font-size: 12px; }
.foot-side { display: flex; align-items: center; gap: 10px; }

@media (max-width: 820px) {
    .foot-grid { grid-template-columns: 1fr 1fr; }
    .foot-brand { grid-column: 1 / -1; }
}

/* ---------- Download-Leiste (Handy) ---------- */

.getbar { display: none; }
@media (max-width: 780px) {
    .getbar {
        position: fixed; left: 10px; right: 10px; bottom: calc(10px + env(safe-area-inset-bottom, 0px)); z-index: 150;
        display: flex; align-items: center; gap: 12px; padding: 10px 10px 10px 12px; border-radius: 20px;
        background: var(--bar-bg);
        backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px);
        border: 1px solid var(--bar-line); box-shadow: 0 16px 40px rgba(0, 0, 0, 0.35);
        transform: translateY(calc(100% + 30px)); transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
    }
    html[data-theme="light"] .getbar { box-shadow: 0 16px 40px rgba(20, 24, 40, 0.18); }
    .getbar.show { transform: none; }
    body.has-getbar footer { padding-bottom: 110px; }
}
.getbar img { width: 40px; height: 40px; border-radius: 10px; flex: none; }
.getbar-copy { flex: 1; min-width: 0; line-height: 1.25; }
.getbar-copy strong { display: block; color: var(--bar-text); font-size: 15px; }
.getbar-copy span { display: block; color: var(--bar-muted); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.getbar-btn {
    flex: none; padding: 11px 18px; border-radius: 999px; background: var(--grad);
    color: var(--on-grad); font-size: 15px; font-weight: 700; text-decoration: none;
}

/* ---------- /get/ ---------- */

.getpage { position: relative; min-height: 100vh; display: flex; align-items: center; background: var(--hero-bg); color: var(--hero-text); overflow: hidden; padding: 60px 0; }
.getpage .wrap { position: relative; }
.getpage .app-icon { width: 84px; height: 84px; border-radius: 20px; margin: 0 auto 28px; }
.getpage .sub { margin-top: 14px; }
.getpage .stores { margin-top: 34px; }
.getpage-back { margin-top: 34px; font-size: 15px; }
.getpage-back a { color: var(--stage-accent); text-decoration: none; }

/* ---------- Scroll-Effekte ---------- */

@supports (animation-timeline: view()) {
    @media (prefers-reduced-motion: no-preference) and (min-width: 900px) {
        @keyframes device-rise { from { transform: translateY(38px) scale(0.965); } to { transform: none; } }
        .stage-media .device { animation: device-rise linear both; animation-timeline: view(); animation-range: entry 12% cover 42%; }
    }
}

.reveal { opacity: 0; transform: translateY(26px); transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.reveal.in, .no-js .reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .reveal { opacity: 1; transform: none; transition: none; }
}

/* ---------- Responsive ---------- */

@media (max-width: 900px) {
    .stage-grid { grid-template-columns: 1fr; gap: 44px; text-align: center; }
    .stage-grid.flip .stage-media { order: 0; }
    .stage-copy .sub, .stage-detail { max-width: 36ch; margin-left: auto; margin-right: auto; }
    .stage-media { max-width: 290px; margin: 0 auto; }
    .bento { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
    .bento { grid-template-columns: 1fr; gap: 10px; }
    /* Kachel quer: Symbol links, Text rechts – halbiert die Scrollstrecke */
    .tile { display: grid; grid-template-columns: 30px 1fr; column-gap: 16px; padding: 20px 20px 22px; border-radius: 18px; }
    .tile .ico { grid-row: span 2; width: 28px; height: 28px; margin: 1px 0 0; }
    .tile h3 { font-size: 18px; margin-bottom: 4px; }
    .tile p { font-size: 15px; }
}

@media (max-width: 560px) {
    .stores img { height: 46px; }
    .stores { gap: 10px; }
    .facts { gap: 10px; }
    .facts .v { font-size: 38px; }
    .facts .l { font-size: 13px; margin-top: 8px; }
}
