/*
 * Homepage. Handy zuerst, Desktop ist der Ausbau.
 *
 * Die Farbwerte sind dieselben wie in der App (public/assets/app.css dort).
 * Das ist Absicht: wer von hier auf app.batzenbank.ch wechselt, soll nicht
 * das Gefuehl haben, das Produkt gewechselt zu haben. Aendert sich die
 * Palette dort, gehoert sie hier nachgezogen - es gibt bewusst keine
 * gemeinsame Datei, die beide Projekte teilen muessten.
 *
 * Drei Bloecke, und die Reihenfolge ist wichtig:
 *   1. nacktes :root                  hell, die Vorgabe
 *   2. prefers-color-scheme: dark     dunkel, wenn das Geraet es sagt
 *   3. [data-theme="dark"]            dunkel, ausdruecklich gewaehlt
 *
 * Block 3 steht hier nur der Vollstaendigkeit halber: die Homepage hat keine
 * Themenwahl, weil sie dafuer ein Cookie oder JavaScript braeuchte. Beides
 * will sie nicht.
 */

:root {
    color-scheme: light;

    --bg: #eef0ec;
    --surface: #ffffff;
    --surface-alt: #e3e7e0;
    --border: #dbe0d8;
    --border-strong: #bcc4b9;
    --text: #1e241f;
    --muted: #5f685f;
    --accent: #2f6b4f;
    --accent-soft: #dcebe2;
    --accent-text: #ffffff;
    --notice-bg: #fdf6e3;
    --notice-border: #e6d5a8;
    --notice-text: #6b5518;

    --radius: .5rem;
    --tap: 2.75rem;          /* 44px - kleinste bequem treffbare Flaeche */
    --gap: 1rem;
    --measure: 38rem;        /* Zeilenlaenge, ab der Text schwer lesbar wird */
    --page: 62rem;
}

@media (prefers-color-scheme: dark) {
    :root {
        color-scheme: dark;

        --bg: #131715;
        --surface: #1c221e;
        --surface-alt: #252c27;
        --border: #2c342e;
        --border-strong: #3c453e;
        --text: #e4e9e4;
        --muted: #98a29a;
        --accent: #79c79b;
        --accent-soft: #1e3529;
        --accent-text: #131715;
        --notice-bg: #2b2415;
        --notice-border: #4a3d1e;
        --notice-text: #e0cd9a;
    }
}

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

html {
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 1rem;
    line-height: 1.6;
}

h1, h2, h3 {
    line-height: 1.25;
    text-wrap: balance;
    margin: 0 0 .5em;
}

h1 { font-size: 1.75rem; }
h2 { font-size: 1.3rem; }
h3 { font-size: 1.05rem; }

@media (min-width: 40rem) {
    h1 { font-size: 2.4rem; }
    h2 { font-size: 1.6rem; }
}

p {
    margin: 0 0 1em;
    max-width: var(--measure);
}

a {
    color: var(--accent);
}

a:hover {
    text-decoration: none;
}

/* Sichtbarer Fokus. Wer mit der Tastatur navigiert, muss sehen, wo er ist. */
a:focus-visible,
.button:focus-visible {
    outline: 3px solid var(--accent);
    outline-offset: 2px;
    border-radius: 2px;
}

/* Sprungmarke: erst beim Fokussieren sichtbar. */
.skip {
    position: absolute;
    left: -100vw;
    top: .5rem;
}

.skip:focus {
    left: .5rem;
    z-index: 2;
    background: var(--surface);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius);
    padding: .5rem .75rem;
}

/* --- Kopf ------------------------------------------------------------- */

.topbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap);
    max-width: var(--page);
    margin: 0 auto;
    padding: var(--gap);
}

.wordmark {
    margin: 0;
    font-weight: 600;
    letter-spacing: .02em;
}

.langs {
    display: flex;
    gap: .25rem;
}

.lang {
    display: inline-flex;
    align-items: center;
    min-height: var(--tap);
    padding: 0 .7rem;
    border-radius: var(--radius);
    color: var(--muted);
    text-decoration: none;
    font-size: .95rem;
}

.lang:hover {
    background: var(--surface-alt);
    color: var(--text);
}

.lang-current {
    background: var(--accent-soft);
    color: var(--text);
    font-weight: 600;
}

/* --- Uebersetzungshinweis --------------------------------------------- */

.notice {
    max-width: var(--page);
    margin: 0 auto var(--gap);
    padding: .75rem var(--gap);
    background: var(--notice-bg);
    border: 1px solid var(--notice-border);
    border-radius: var(--radius);
    color: var(--notice-text);
    font-size: .95rem;
}

.notice strong::after {
    content: ":";
}

/* --- Inhalt ------------------------------------------------------------ */

main {
    max-width: var(--page);
    margin: 0 auto;
    padding: 0 var(--gap) 3rem;
}

section {
    margin: 0 0 2.5rem;
}

.hero {
    padding: 1.5rem 0 .5rem;
}

.lead {
    font-size: 1.15rem;
    color: var(--muted);
}

.band {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1.25rem var(--gap) .5rem;
}

.cards {
    display: grid;
    gap: var(--gap);
    grid-template-columns: 1fr;
}

@media (min-width: 48rem) {
    .cards {
        grid-template-columns: repeat(3, 1fr);
    }
}

.card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1.1rem var(--gap) .3rem;
}

.card p {
    color: var(--muted);
    font-size: .97rem;
}

.promise {
    max-width: var(--measure);
    margin: 0 0 1em;
    padding: 0;
    list-style: none;
}

.promise li {
    position: relative;
    padding: .55rem 0 .55rem 1.5rem;
    border-bottom: 1px solid var(--border);
}

.promise li:last-child {
    border-bottom: 0;
}

/* Der Haken ist Schmuck und wird deshalb vor Screenreadern versteckt. */
.promise li::before {
    content: "";
    position: absolute;
    left: .25rem;
    top: 1.15rem;
    width: .45rem;
    height: .45rem;
    border-radius: 50%;
    background: var(--accent);
}

.muted {
    color: var(--muted);
    font-size: .95rem;
}

.start {
    background: var(--accent-soft);
    border-radius: var(--radius);
    padding: 1.25rem var(--gap) .75rem;
}

/* --- Knoepfe ----------------------------------------------------------- */

.actions {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    max-width: none;
}

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--tap);
    padding: 0 1.1rem;
    border-radius: var(--radius);
    background: var(--accent);
    color: var(--accent-text);
    text-decoration: none;
    font-weight: 600;
}

.button:hover {
    filter: brightness(1.08);
}

.button-quiet {
    background: var(--surface);
    color: var(--text);
    border: 1px solid var(--border-strong);
    font-weight: 500;
}

/* --- Fusszeile --------------------------------------------------------- */

.footer {
    max-width: var(--page);
    margin: 0 auto;
    padding: var(--gap) var(--gap) 2.5rem;
    border-top: 1px solid var(--border);
    color: var(--muted);
    font-size: .95rem;
}

.footer-links {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1rem;
    margin-bottom: .5rem;
}

.footer-links a {
    display: inline-flex;
    align-items: center;
    min-height: var(--tap);
}

.footer-hint {
    margin: 0;
}

.footer-env {
    margin: .75rem 0 0;
    display: inline-block;
    padding: .15rem .5rem;
    border: 1px dashed var(--border-strong);
    border-radius: var(--radius);
    font-size: .85rem;
}
