/* Hilfe-Fenster (31.08.2026).
 *
 * Eine Datei fuer fuenf Seiten in zwei voellig verschiedenen Bildwelten: die
 * Startseite im dunklen "Nachtfest", die Organisator-Seiten im hellen
 * Apple-nahen Stil mit eigenem Dunkelmodus. Statt zwei Bausteine zu pflegen,
 * die auseinanderlaufen, liest dieser hier die Farben der Seite, auf der er
 * gerade haengt - ueber genau sieben Variablen.
 *
 * Voreinstellung sind die Marken der Organisator-Seiten (--surface, --ink,
 * --muted, --line, --accent), weil vier der fuenf Seiten so gebaut sind und
 * ihr Dunkelmodus damit von selbst mitkommt. Die Startseite setzt am <body>
 * data-kx-skin="nacht" und bekommt darueber ihre eigenen Toene. Die
 * Zuordnung haengt an einem Attribut statt an der Ladereihenfolge der
 * Stylesheets: sonst entscheidet die Reihenfolge zweier <link>-Zeilen
 * darueber, ob ein Fenster lesbar ist.
 *
 * Schriftgroessen ausschliesslich ueber eigene Stufen (--kx-fs-*), siehe
 * DESIGN.md "The Ramp-Has-No-Exceptions Rule". Eigener Namensraum, weil vier
 * der fuenf Gastseiten gar keine Leiter haben - eine fremde ueberschreiben
 * waere schlimmer als eine eigene mitbringen.
 */

.kx-auf,
.kx-dialog {
  --kx-grund: var(--surface, #FFFFFF);
  --kx-text: var(--ink, #1D1D1F);
  --kx-gedaempft: var(--muted, #6E6E73);
  --kx-linie: var(--line, #E6E6E6);
  --kx-akzent: var(--accent, #0071E3);
  --kx-auf-akzent: #FFFFFF;
  --kx-knopf: var(--kx-akzent);
  --kx-schatten: 0 24px 64px rgba(0, 0, 0, .22);
  --kx-radius: 14px;

  --kx-fs-klein: .8rem;
  --kx-fs-kompakt: .9rem;
  --kx-fs-basis: 1rem;
  --kx-fs-titel: 1.15rem;
}

/* Startseite: dieselbe Palette wie index.html, dort als Marken vorhanden.
 * Kein Schatten - DESIGN.md verbietet Haarlinie UND Schatten auf derselben
 * Flaeche, und im Nachtgrund traegt die Haarlinie die Form deutlich besser. */
[data-kx-skin="nacht"] .kx-auf,
[data-kx-skin="nacht"] .kx-dialog {
  --kx-grund: var(--karte);
  --kx-text: var(--creme);
  --kx-gedaempft: var(--gedaempft);
  --kx-linie: var(--linie);
  --kx-akzent: var(--messing);
  --kx-auf-akzent: var(--auf-messing);
  --kx-knopf: linear-gradient(135deg, var(--messing-hell), var(--messing));
  --kx-schatten: none;
  --kx-radius: 16px;
}

/* ---------- Der Knopf in der Funktionsleiste ---------- */

/* Pillenform und Haarlinie wie die Nachbarn (Sprache, Design, Speichern) -
 * ein Element, das sich in einer Werkzeugleiste anders verhaelt als seine
 * Nachbarn, liest sich als Fremdkoerper, nicht als Angebot. */
.kx-auf {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 5px 11px; min-height: 0; width: auto; margin: 0;
  border: 1px solid var(--kx-linie); border-radius: 999px;
  background: none; color: var(--kx-gedaempft);
  font: inherit; font-size: var(--kx-fs-klein); line-height: 1;
  cursor: pointer;
  transition: color .2s ease, border-color .2s ease;
}
.kx-auf svg { width: 16px; height: 16px; display: block; }
.kx-auf:hover { color: var(--kx-akzent); border-color: var(--kx-akzent); }
.kx-auf:focus-visible { outline: 2px solid var(--kx-akzent); outline-offset: 2px; }

/* Rueckfall fuer Seiten ohne Funktionsleiste: unten rechts, ausserhalb des
 * Leseflusses. Nur dann - eine schwebende Blase zusaetzlich zum Knopf in der
 * Leiste waere zweimal dasselbe Angebot auf einem Bildschirm. */
.kx-auf.kx-schwebend {
  position: fixed; right: 18px; bottom: 18px; z-index: 40;
  width: 46px; height: 46px; padding: 0; border-radius: 50%;
  background: var(--kx-grund); color: var(--kx-akzent);
  box-shadow: var(--shadow, none);
}

/* ---------- Das Fenster ---------- */

/* <dialog> statt eigener Overlay-Bastelei: Fokusfalle, Escape, Rueckgabe des
 * Fokus an den ausloesenden Knopf und die Sperre der Seite dahinter bringt
 * der Browser mit. Nachgebaut waere das viel Code, der genau die Faelle
 * verfehlt, in denen es zaehlt (Tastatur, Bildschirmleser). */
.kx-dialog {
  width: min(440px, calc(100vw - 32px));
  padding: 0; border: 1px solid var(--kx-linie); border-radius: var(--kx-radius);
  background: var(--kx-grund); color: var(--kx-text);
  box-shadow: var(--kx-schatten);
  font-size: var(--kx-fs-basis);
}
.kx-dialog::backdrop { background: rgba(0, 0, 0, .55); }

.kx-innen { padding: 22px 22px 20px; }
.kx-kopf { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.kx-dialog h2 {
  margin: 0; font-size: var(--kx-fs-titel); line-height: 1.25;
  color: var(--kx-text); font-family: inherit; font-weight: 600;
}
[data-kx-skin="nacht"] .kx-dialog h2 { font-family: 'Gloock', Georgia, serif; font-weight: 400; }
.kx-dialog p { margin: 8px 0 0; color: var(--kx-gedaempft); font-size: var(--kx-fs-kompakt); line-height: 1.5; }

.kx-zu {
  flex-shrink: 0; width: 30px; height: 30px; padding: 0; margin: -4px -4px 0 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 0; border-radius: 50%; background: none; color: var(--kx-gedaempft);
  cursor: pointer; line-height: 0;
}
.kx-zu:hover { color: var(--kx-text); }
.kx-zu:focus-visible { outline: 2px solid var(--kx-akzent); outline-offset: 2px; }

/* Bewusst ueber .kx-dialog vorangestellt, also mit hoeherer Spezifitaet als
 * noetig: Vier der fuenf Gastseiten formatieren <label> global (fett, eigene
 * Groesse, eigener Abstand). Ohne diesen Vorrang sieht dasselbe Fenster auf
 * jeder Seite anders aus - und zwar nicht nach Absicht, sondern nach Zufall. */
.kx-dialog .kx-feld { display: block; margin: 18px 0 0; font-weight: 400; }
/* Muss NACH der Zeile darueber stehen und dieselbe Genauigkeit haben:
   das voreingestellte "display:none" des Browsers fuer [hidden] ist
   schwaecher als ".kx-dialog .kx-feld" und wuerde sonst uebergangen - das
   E-Mail-Feld waere trotz hidden-Kennzeichnung sichtbar. */
.kx-dialog .kx-feld[hidden] { display: none; }
.kx-dialog .kx-feld > span {
  display: block; margin: 0 0 5px;
  font-size: var(--kx-fs-klein); font-weight: 400; letter-spacing: normal;
  text-transform: none; color: var(--kx-gedaempft);
}
.kx-dialog input[type="email"],
.kx-dialog textarea {
  display: block; width: 100%; box-sizing: border-box;
  font: inherit; font-size: var(--kx-fs-kompakt); line-height: 1.5;
  padding: 10px 12px; border-radius: 10px;
  border: 1px solid var(--kx-linie);
  background: var(--kx-grund); color: var(--kx-text);
}
.kx-dialog textarea { resize: vertical; min-height: 108px; }
.kx-dialog input:focus, .kx-dialog textarea:focus {
  outline: 2px solid var(--kx-akzent); outline-offset: 1px; border-color: var(--kx-akzent);
}

/* Der Honigtopf. Nicht display:none - manche Bots ueberspringen bewusst,
 * was ausgeblendet ist. So steht das Feld im Baum, ist bedienbar, und liegt
 * doch ausserhalb jedes Blickfelds; aria-hidden und tabindex halten
 * Bildschirmleser und Tabulator davon fern. */
.kx-topf {
  position: absolute; left: -9999px; width: 1px; height: 1px;
  overflow: hidden; opacity: 0;
}

.kx-fuss { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 18px 0 0; }
.kx-hinweis { margin: 14px 0 0; font-size: var(--kx-fs-klein); color: var(--kx-gedaempft); line-height: 1.45; }
.kx-hinweis a { color: var(--kx-akzent); }

.kx-senden {
  padding: 10px 20px; border: 0; border-radius: 999px;
  background: var(--kx-knopf); color: var(--kx-auf-akzent);
  font: inherit; font-size: var(--kx-fs-kompakt); font-weight: 600;
  cursor: pointer; width: auto; min-height: 0; margin: 0;
}
.kx-senden:hover:not(:disabled) { filter: brightness(1.06); }
.kx-senden:disabled { opacity: .6; cursor: default; }
.kx-senden:focus-visible { outline: 2px solid var(--kx-akzent); outline-offset: 2px; }

/* Zweiter Weg neben dem Senden-Knopf (31.08.2026).
   Bewusst die stille Variante und KEIN WhatsApp-Gruen: dieses Fenster
   erscheint auf fuenf Seiten mit teils sehr verschiedener Farbwelt, und
   laut DESIGN.md traegt die Seite nur einen Akzent. Wiedererkannt wird
   das Zeichen ueber seine Form. Der gefuellte Senden-Knopf bleibt damit
   der Hauptweg, ohne dass WhatsApp versteckt waere. */
.kx-knoepfe { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.kx-wa {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 16px; border: 1px solid var(--kx-linie); border-radius: 999px;
  color: var(--kx-text); text-decoration: none;
  font-size: var(--kx-fs-kompakt); font-weight: 600; white-space: nowrap;
}
.kx-wa:hover { border-color: var(--kx-akzent); color: var(--kx-akzent); }
.kx-wa:focus-visible { outline: 2px solid var(--kx-akzent); outline-offset: 2px; }

.kx-stand { margin: 0; font-size: var(--kx-fs-klein); color: var(--kx-gedaempft); min-height: 1.3em; }
/* Kein eigener Fehlerton: Die Organisator-Seiten haben mit --danger bereits
 * einen, und die Startseite darf laut DESIGN.md keinen zweiten Akzent neben
 * Messing bekommen - auch nicht fuer Zustaende. Dort traegt die Meldung also
 * Messing und ihr Gewicht aus dem Text. */
.kx-stand.kx-fehler { color: var(--danger, var(--messing-hell)); font-weight: 600; }

/* Nach dem Senden: das Formular verschwindet, die Bestaetigung nimmt seinen
 * Platz ein. Eine Erfolgsmeldung UNTER einem weiterhin gefuellten Formular
 * laedt zum zweiten Klick ein - und schickt dieselbe Frage ein zweites Mal. */
.kx-danke { text-align: center; padding: 8px 0 4px; }
.kx-danke svg { width: 34px; height: 34px; color: var(--kx-akzent); }
.kx-danke h2 { margin: 10px 0 0; }

@media (prefers-reduced-motion: no-preference) {
  .kx-dialog[open] { animation: kx-auf .18s cubic-bezier(.2, .7, .3, 1); }
  @keyframes kx-auf {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: none; }
  }
}

@media (max-width: 480px) {
  .kx-innen { padding: 18px 16px 16px; }
  .kx-fuss { flex-direction: column-reverse; align-items: stretch; }
  .kx-senden { width: 100%; }
  .kx-stand { text-align: center; }
  /* Auf dem Handy stehen beide Wege untereinander und gleich breit - nicht
     zwei halbe Knoepfe nebeneinander, die keiner sicher trifft. */
  .kx-knoepfe { flex-direction: column-reverse; align-items: stretch; gap: 8px; }
  .kx-wa { justify-content: center; }
}
